Commit Graph

6151 Commits

Author SHA1 Message Date
Swept
ae54ad188e Changes most uses of Color.Green to Color.LimeGreen for better visuals (#4666) 2021-09-20 21:50:02 -07:00
Swept
3e4a3a7597 Fixes typo causing flashlight_off.ogg not to play 2021-09-20 11:53:34 -07:00
metalgearsloth
a8908427a8 Remove some unused fields 2021-09-21 00:16:52 +10:00
Vera Aguilera Puerto
61d8852799 Update StackSystem to use Resolves. (#4664)
* Update StackSystem to use Resolves.

* Compile
2021-09-20 13:39:05 +02:00
metalgearsloth
4b2a4dbfb7 Update content for accurate grid bounds (#4632)
* A

* dummy comment why CI plz
2021-09-20 21:08:10 +10:00
Vera Aguilera Puerto
cda67df317 Fix some warnings relating to fields being unused. 2021-09-20 11:22:59 +02:00
metalgearsloth
578ed16b8f Remove IRelayMoveInput (#4663)
* Remove IRelayMoveInput

This interface gets called every time a movement key is pressed so it gets called a lot.

* Remove RelayMovementEntityMessage

Co-authored-by: metalgearsloth <metalgearsloth@gmail.com>
2021-09-20 11:06:48 +02:00
Visne
fcc1217e5d Stop using some obsolete stuff (#4657) 2021-09-19 23:40:22 -07:00
Vera Aguilera Puerto
a9b3b5136b Improves and cleans up TabletopSystem further. (#4633) 2021-09-19 11:07:35 +02:00
Vera Aguilera Puerto
08d6801ec5 Makes GasCanisterSystem use ECS BoundUserInterfaces. (#4608) 2021-09-19 09:32:38 +02:00
Ygg01
fa905f477d Fix Welder component interaction (#4634) 2021-09-19 15:15:34 +10:00
Vera Aguilera Puerto
e440df03db Adds parchís game board, improves tabletop system to support other games. (#4610) 2021-09-18 10:40:38 +02:00
Mads Glahder
08cfc3bb46 Fix construction from inside containers (#4595)
* Disallow construction of construction ghosts from inside a container

* Move IsInContainer check to before doing container ensuring

* Move IsInContainer check to HandleStartStructureConstruction to allow building items but not construct structures when inside a cozy locker

* Update Resources/Locale/en-US/construction/construction-system.ftl

Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
2021-09-18 10:38:42 +02:00
mirrorcult
62f6c8dd8e Wieldable/two-handed weapons (#4554)
* wielding kinda works

* rough out all the edges, wielding works nicely

* popups + loc

* increase damage & extra damage against whitelist

* small fixes

* forgot to actually do that

* reviews

* reviews + thing

* use resistances and not extradamageagainstwhitelist

* slashy

* make increasedamageonwield and melee hit events work with modifiersets

* Silly individual
2021-09-17 07:16:11 -07:00
Vera Aguilera Puerto
078a62762f Improves the JobSpecial system. (#4626)
* Improves the JobSpecial system.

* clean up code
2021-09-16 23:17:19 +10:00
Vera Aguilera Puerto
ce746dde35 Fix not being able to put most things in your pockets. 2021-09-16 12:16:14 +02:00
metalgearsloth
6e99c8efcd Move testbed to engine (#4611) 2021-09-16 13:02:50 +10:00
Pieter-Jan Briers
cd6c2bb373 Improve ExaminedEvent to handle newlines for you with helper methods. 2021-09-15 16:58:15 +02:00
Pieter-Jan Briers
9c7b061d13 Puddle IExamine event. 2021-09-15 16:39:34 +02:00
Pieter-Jan Briers
ce6e37bdd8 ECS-ify Construction[Ghost]Component IExamine. 2021-09-15 16:36:56 +02:00
mirrorcult
7cee263955 Landing velocity threshold (#4606)
* landing threshold

* on bodystatus change

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2021-09-15 20:58:45 +10:00
Ygg01
12430fbfcc Fix fire extinguisher to use spray solution (#4616)
* Fix fire extinguisher to use spray solution

* Fix FireExtinguisher more properly

* Re-add missing check to VaporSystem
2021-09-15 20:48:07 +10:00
Ygg01
c3d11fb3e1 Fix throwable solution (#4590)
* Fix throwable solution

* Revert previous commit

* Change Spillable and SpillBehavior

* Fix sloth's suggestion. Add more documents
2021-09-15 20:46:43 +10:00
Leon Friedrich
df584ad446 ECS damageable (#4529)
* ECS and damage Data

* Comments and newlines

* Added Comments

* Make TryChangeDamageEvent immutable

* Remove SetAllDamage event

Use public SetAllDamage function instead

* Undo destructible mistakes

That was some shit code.

* Rename DamageData to DamageSpecifier

And misc small edits

misc

* Cache trigger prototypes.

* Renaming destructible classes & functions

* Revert "Cache trigger prototypes."

This reverts commit 86bae15ba6616884dba75f552dfdfbe2d1fb6586.

* Replace prototypes with prototype IDs.

* Split damage.yml into individual files

* move get/handle component state to system

* Update HealthChange doc

* Make godmode call Dirty() on damageable component

* Add Initialize() to fix damage test

* Make non-static

* uncache resistance set prototype and trim DamageableComponentState

* Remove unnecessary Dirty() calls during initialization

* RemoveTryChangeDamageEvent

* revert Dirty()

* Fix MobState relying on DamageableComponent.Dirty()

* Fix DisposalUnit Tests.

These were previously failing, but because the async was not await-ed, this never raised the exception.

After I fixed MobState component, this exception stopped happening and instead the assertions started being tested & failing

* Disposal test 2: electric boogaloo

* Fix typos/mistakes

also add comments and fix spacing.

* Use Uids instead of IEntity

* fix merge

* Comments, a merge issue, and making some damage ignore resistances

* Extend DamageSpecifier and use it for DamageableComponent

* fix master merge

* Fix Disposal unit test. Again.

Snapgrids were removed in master

* Execute Exectute
2021-09-14 10:07:37 -07:00
Visne
973926fc9a Add chess (and mostly just tabletop backend stuff) (#4429)
* Add draggable tabletop component

* Use EntityCoordinates instead

* Don't send coordinates every frame

* Add chessboard + verb WIP

* Add documentation, verb networking works now

* Work so far
Need PVS refactor before being able to continue
Current code is broken

* viewsubscriber magic

* yes

* Fix map creation

* Add chess pieces, attempt prediction

* Add chess sprites and yml

* Clamping + other stuff

* fix

* stuff

* StopDragging() StartDragging()

* add piece grabbing

* Refactor dragging player to seperate event

* 🤣 Who did this 🤣💯👌

* 📮 sussy 📮

* Update chessboard sprite, scale piece while dragging

* yes

* ye

* y

* Close tabletop window when player dies

* Make interaction check more sane

* Fix funny behaviour when stunned

* Add icon

* Fix rsi

* Make time passed check more accurate

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Use EyeManager.PixelsPerMeter

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Add missing import

* Move viewport properties to XAML

* Make shared system and component abstract

* Use built in EntityManager

* Use RaiseNetworkEvent instead of SendSystemNetworkMessage

* Cache ViewSubscriberSystem

* Move unnecessary code to prototype

* Delete map on component shutdown instead of round restart

* Make documentation match rest of codebase

* Use ComponentManager instead of TryGetComponent

* Use TryGetComponent instead of GetComponent

* Add nullspace check to ClampPositionToViewport()

* Set world pos instead of local pos

* Improve server side verification

* Use visualizer

* Add netsync: false to sprites using visualizer

* Close window when chessboard is picked up

* Update to master

* Fix bug when opening window while another is opened

* Use ComponentManager

* Use TryGetValue

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2021-09-13 19:58:44 +10:00
metalgearsloth
f301e45163 Remove ILand (#4582)
* Remove ILand

* Make land not handleable

* Rename ILand
2021-09-12 16:22:58 +10:00
metalgearsloth
0137884e16 Take TryRepell behind the shed (#4584)
Singularity containment uses physics and just workstm
2021-09-10 15:26:38 +02:00
Paul Ritter
4c7670fe82 conveyor & recycler ecs (#4537)
* conveyor done, recycler still todo

* done, just need to suss out the physics part. pinged sloth about it

* ship it
2021-09-10 17:26:05 +10:00
Swept
c00e82462b Tweaks ambient sound values and improves some existing sounds (#4576)
* Updates singularity to use AmbientSound

* Removed hum from light tubes and tweaked vending/bulb ambience

* Adds more explosion sound effects

* Moves closet open/close.ogg and adds wooden closet sound effect

* Updates flashlight on/off sound

* Adds HL Scientist scream collection

* Tweaks APC Ambience

* Minor oversight on det locker

* Addressed reviews
2021-09-10 11:31:54 +10:00
Vera Aguilera Puerto
77fe21eb0d Refactors flashes to ECS, sunglasses protect you from being flashed. (#4579)
* Refactors flashes to ECS, sunglasses protect you from being flashed.

* VV ReadWrite for FlashImmunity Enabled.

* Use cached IEntityLookup.

* Consistent formatting.

* Fix flashbang duration.
Flash duration is a mess.

* Small area flash code cleanup.

* Flashable state is only sent to attached player.
2021-09-10 00:20:41 +10:00
Leon Friedrich
c19b32d2ee fix stomach bug (#4571) 2021-09-08 00:19:19 -07:00
metalgearsloth
ff40a7665d Ambient sound system (#4552)
* Ambient sound system

Client-side system that plays audio from nearby objects that are randomly sampled.

* Decent

* Tweaks

* Tweaks

* Comment this out for now

* reduce VM sound

* Fix rolloff

* Fixes

* Volume tweak
2021-09-07 18:47:23 +10:00
Vera Aguilera Puerto
68a78e94b7 Slight explosively depressurize cleanup. 2021-09-06 17:30:38 +02:00
Vera Aguilera Puerto
9f4ea1e5a9 Fix rare atmos crash when explosively depressurizing too many tiles. 2021-09-06 17:16:27 +02:00
Vera Aguilera Puerto
a8e7fb4977 Optimize atmos debug assert.
Seems I missed this one.
2021-09-06 16:55:05 +02:00
Ygg01
c209e3f29b Solution refactor (#4407)
* Rename SolutionContainerCaps -> Capability

* Move IExamine event to Chemistry System.

* ECS the ISolutionChange into SolutionChangeEvent

* Unify SolutionContainer into a single shared component

* Replace ISolutionInteraction with SolutionContainerComponent

* Move all methods from SolutionContainer to ChemistrySystem

* Refactor EntitySystem calls to Dependencies

* Refactor SolutionContainer to SolutionManager

* Fix yamls

* Fix test fails

* Fix post merge issues

* Fix various issues with SolutionManager

* More fixes

* Fix more components

* Fix events not being directed

* Fixes for Hypospray

* Separate removal and iteration on Metabolism

* Fix creampie problems

* Address some of sloth's issues

* Refactors for Systems

* Refactored solution location

* Fix tests

* Address more sloth issues

* Fix dependency

* Fix merge conflicts

* Add xmldocs for Capabilities components

* Remove HasSolution/TryGetDefaultSolution and Add/Remove Drainable/Refillable

* Replace Grindable/Juiceable with Extractable

* Refactor field names

* Fix Drainable

* Fix some issues with spillable and injector

* Fix issues with Grinder

* Fix Beaker having duplicate solutions

* Fix foaming

* Address some MGS issues

* Fix Uid issues

* Fix errors in solution Tranfer

* Fixed some extra values constant values

* Cola is drinkable now
2021-09-06 23:49:44 +10:00
metalgearsloth
8c5aaafee3 Stop atmos spamming physics bodies awake
ApplyLinearImpulse already wakes it up so there's no point for this besides slammin physics.
2021-09-06 02:22:23 +10:00
Ygg01
53b53c3e0e Cigarette ecs (#4495)
* Reorganized Shared.Storage folder

* Replace StorageCounter with Item Counter

* Change stack visuals setting data

* Fix mirrorcult suggestions

* Fix items from upstream

* Fix type formatting
2021-09-04 10:42:32 -07:00
Leon Friedrich
c7cfc8a90c fix dead alert (#4558) 2021-09-02 21:11:12 -07:00
Pieter-Jan Briers
3ee36350cb More IoC constructor removal 2021-09-01 13:29:52 +02:00
Pieter-Jan Briers
a3fc00dc29 Change some data definitions to not do IoC resolve in their constructors. 2021-09-01 13:23:52 +02:00
metalgearsloth
df7d6c4d90 PoweredLight uses PointLights for appearance (#4540)
* PoweredLight uses PointLights for appearance

Previously this just set PointLightComponent data via the visualizer which lead to desyncs in the data between client and server. If the server pointlight was dirtied at any point then the pointlight data set via appearance visualizers was bulldozed.

* Address review
2021-08-31 18:45:02 +10:00
Alex Evgrashin
4c873e53f2 Refactor ghost boo to ECS (#4511)
* Moved ghost boo to ecs

* Fixed small light exception

* No need to inject EM

* Moved cooldown and time to fields

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2021-08-31 18:33:55 +10:00
Vera Aguilera Puerto
fa48e2abae Move StackSystem Use method to SharedStackSystem 2021-08-30 12:31:28 +02:00
Vera Aguilera Puerto
d1fe278afc Stack components are now entirely logicless.
- GetState is handled in SharedStackSystem
- Adds friend attributes to the stack components
2021-08-30 11:49:09 +02:00
metalgearsloth
4e46cf7d27 Make content use EntityLookupFlags (#4531)
* Use lookup flags

* Woops
2021-08-29 14:23:11 +10:00
Swept
a3c19ad439 Replaces outdated code in GravitySystem.cs (#4505) 2021-08-28 00:36:30 +02:00
Paul Ritter
e11a9b282a machine linking refactor to ecs (#4323)
* started work

* some more work, ui working (somewhat)

* stuff

* reorganization

* some more reorg

* conveyors

* conveyors working

* finalized (dis)connection
added linkattempt
added feedback text
work on conveyors

* removed command
add rangecheck

* fixed inrange check

* handling

* ui no longer kanser, ship it

* adresses reviews

* reformats file

* reformats file

Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
2021-08-27 17:46:02 +02:00
ShadowCommander
20a3991227 Fix deconstruction when on a step in the middle of an edge (#4519) 2021-08-25 13:45:33 +02:00
Leon Friedrich
32d99eaba9 Damageable Refactor 3: Revenge of the Instamerge (#4524)
* Add DamageType And DamageGroup Prototypes

* Remove DamageTypePrototype Field "name" as its redundant

* Change I/DamageableComponent to use prototypes

* Update DamageContainer, ReisistanceSet and DamageChangeData

* Change Barotrauma Component to use DamageType from DamageSystem

* Update AsteroidRockComponent

* update some more components

* update some more components

* Fix m o r e c o m p o n e n t s and their damageType

* all thats left is bug/missing node hunting then verification.

* push changes

* update submodule

* Merge fixes

* push DGP for example

* update damagecomponent across shared and server

* fix a few bugs

* Fix Merge issues

* Refactor damageablecomponent update (#4406)

* Fixing merge.

I messed up part of the merge. this should fix it?

* Barotrauma now uses prototypeManager

As System.Runtime.CompilerServices also has a [Dependency], I think I had to use the full path [Robust.Shared.IoC.Dependency]

* FlammableComponent now uses prototypeManager

* SuicideCommands now use prototypeManager

* Changed  many files to use prototypeManager to resolve damaege prototypes

Yeah.... prototype references would be very nice. maybe this was all a waste of time.

* Grouping prototypeManager.Index with datafield definitions

This will make it easier to eventually add prototype references

* removed unused variable

* Moved lines around.

Lines now consistent with other TODO PROTOTYPE blocks

* Grouping more prototypeManager.Index with datafield definitions

* Removed unnecessary code

* Added more prototypeManager indexing

These ones weren't pointed out by DrSmug. But I think this is all of them? That or my regex is shit.

* Remove redundant _damage field

* Remove redundant _currentTemperature

* Moved variables down

* Added prototypeManager indexing to TemperatureComponent

* WeaponComponent/System now use ProtptypeManager

And as far as I can tell damageType is required, and therefore should never have been null anyway?

* Make ranged weapon clumsy fire effects datafields

And yes, the order in which the clumsy effects occur is very important.

* Made damage on vital body part loss a datafield

* Renamed several damageGroup variables to group

* Capitalised DamageListToDamageGroup

* Make radiation and explosion damage types datafields

* Renamed _supportedDamageGroupIDs and _supportedDamageTypeIDs

* Fixed mistakes

Frogot to remove prototypeManager index DamageTypeTrigger, and wrong variable visibility in TemperatureComponent

* Added necessary code

Is something tragically wrong?

* MeleeWeapon damageType is not actually required

* Fixing someone else's mistakes

A search comes up with nothing in the yaml files, and its not a required field. So no one uses it? Hopefully?

* Changed and renamed damageTypeToDamageGroup

Previously would incorrectly return the total container damage for each group, not the total in the group

* renaming varitables

* Renamed variable DamageClasses

* Added dictionary converting functions

* Added ID-keyed dictionaries

* Making MedicalScanner use ID dictionaries, instead of prototype dictionaries

Oh oh no. I've been able to avoid UI & networking up until now. I have no Idea what I am doing.

* Fix Medical Scanner

* Summary (required)

The joke here is that this fixes the empty summary.

* Removed DamageableComponent.GetDamageGroup/Type

* Renamed "damage classes" to groups.

* Update ChangeDamage description

* Replaced Heal() with SettAllDamage()

Heal() was just a confusing name,

* More Class -> Group renaming

* Replace Class with Group in yaml files

DamageClassTrigger does not appear in any yaml? only in testing?
DamageTypeTrigger appears only in human.yaml?
HealthChangeMetabolism is Mostly in medicine.yml and one in soad.yaml

Why the hell is Cola metabolizable by plants? Who is pouring cola on their plants!?!?

* Fix _prototypeManager being null errors.

* Changing comments

Where are the prototype references

* MetabolismComponent doesn't give free heals anymore.

* Changes HungerComponent healing.

Previously I think it would actually damage you.  Only did this as I though it was causing the fast healing. Turns out that was just BREATHING.

* Generalised a function in DamageableComponent and moved it to DamageGroupPrototype

previously DamageTypesDictToDamageGroupDict was private to DamageableComponent, but was also quite general (nearly a static function). As this sort of function may be needed by other components using DamageGroupPrototypes in the future, I moved it there as a static function instead.

* modified DamageableComponent.ChangeDamage()

ignoreResistances was renamed to ignoreDamageResistances to make it clearer that it had no effect on healing.

Now uses default argument for ignoreDamageResistances, so when healing you are not forced to specify an argument that does nothing.

Also made some general changes to ignoreResistances()

* Changed class->group and added missing damage type functionality to DamageContainerPrototypes

* Added Comments to damage.yml

* Misc Changes to DamageableComponent

* Differentiated between group support and group applicability

So far, every damage type is a member of one, and only one, damage group. So this change has no real effect so far.

* Added proposed alternative to ChangeDamage()

* fixed error in DamageGroupPrototype

* Changes to DamageableComponent

Lots of changes to comments.
Some variables renamed in IDamageableComponent and DamageableComponent (also required renaming in other files)

Some minor logic changes, mostly for incorrect descirptions of boolean return values.

Also further differentiating between ApplicableGroups and SupportedGroups... if that will ever even matter

* Generalised MedicalScannerComponent

If needed, can print miscellaneous damage types now

* Fixed HealthChangeMetabolism bug

* Changing Comments around

* More questions

* Made Barotrauma default to blunt

* Fix RejuvenateTest.cs

* Comments

* Coments and variable names

* fix some master-merge issues

* Removed redundant fields

* Misc changes for readbility of PR diff

* Consistent naming

* Fixed atmos damage bug

* Removed Ranting

* Fixed Hunger after I broke it

* Fixing Bugs

* Removed stupid question

* Removed more stupid questions

* Fix potential null errors.

* Made boolean return values consistent

Also renamed several functions, to make it clear they return a bool. Docs were also updated.

* Removed IoCManager.InjectDependencies()

* Removed unnecessary 'suffocation' prefix

* Fixed Spelling

Also removed accidentally left in logger call

* Fixed Medical Scanner

* Apply suggestions from code review

Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>

* Changing comments and whitespaces

* Made damage thresholds trigger  datafields required

* So many typos

* Changes to DamageableComponents

Changed documentation in IDamageableComponent

Made testing code more readable.

Relabelled groups as 'Applicable' either 'Fully Supported'

* Removed function and degeneralised

* Update DamageableComponent.cs

Removed unused parameters
Fixed Networking

* Added IoCManager.Resolve

* Now using alternative TryChangeDamage()

* Removed function from DamageGroupPrototype

* Removing comments

* Remove bad if statement?

* Fix damageChanged ordering

* Fix hurt server command

* Changed //TODO PROTOTYPE blocks

Now use PrototypeManager differently. Wherever possible, only retrieve the prototype once.

Also added default damage types to some more datafields

* Update Content.Shared/Damage/Container/DamageContainerPrototype.cs

Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>

* renamed _accumulatedHealth -> _accumulatedDamage and added TODOs

* Another class-> group

* Fix bug in generalisation of damage container prototypes

* Addes Tests to make sure I dont keep adding bugs to my own code.

* Changed Return values when setting

* Removed unused class

* Added more tests, split tests into three files

* Made damage types public and VV read-write-able

* Minor changes to DamageableComponent

Replaced internal use of GetDamagePerType with _damageDict and removed some unnecessary fields

* Fix Suicide, by adding IoC Resolve()

* Fix DamageGroupTrigger bug

* Fix typos in tests

* Change comments./docstrings & spacing

* Merge tests, use test prototypes

Co-authored-by: Leon Friedrich <60421075+leonsfriedrich@users.noreply.github.com>
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>

* Fix merge issues

Co-authored-by: Silver <Silvertorch5@gmail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
Co-authored-by: Leon Friedrich <60421075+leonsfriedrich@users.noreply.github.com>
2021-08-24 11:06:27 -06:00