Commit Graph

234 Commits

Author SHA1 Message Date
Pieter-Jan Briers
841bb101c5 Visualize melee weapon cooldowns in HUD. 2019-11-12 01:43:11 +01:00
Ephememory
7198a7c78d Add cooldown to MeleeWeaponComponent (#426) 2019-11-11 22:21:29 +01:00
metalgearsloth
de148fc98f Add hunger and thirst (#363)
* Add hunger and thirst

Based on the SS13 systems.
Food (Nutriment) / Drink -> Stomach -> Hunger / Thirst

* Cleanup rebase

* Cleanup stuff that was prototyped

* Address feedback

Still need to add a statuseffects system in a separate branch

* More cleanup on nutrition

Fix Remie's feedback and also damage tick.

* Re-implement nutrition with master

* Updated to use the StatusEffectsUI update
* Removed all clientside components as they only receive the UI updates now
* Implemented PR feedback
* Had to make a slight adjustment to the chemistry SolutionComponent given it doesn't have an Owner, same with Solution

Still TODO:
* Metabolisation effects
* Change drink contents to alcohol / wine etc.
* Add items to the dispensers
* For transparent containers use RecalculateColor

Could probably genericise DrinkFoodContainer as well to be a temporary item dispenser

* Fix broken bottle parent
2019-11-11 22:20:03 +01:00
Ephememory
0d30bc2676 Add Eris' keyboard sounds to R&D Console. (#427)
* Add Eris' keyboard sounds to R&D Console.

* woah buddy thats not c# standard

* fix weirdly capitalized keyboard method

* thats silly
2019-11-11 00:46:27 +01:00
rok-povsic
e5150d3714 Fix crowbar distance to work on adjacent tiles (#424)
* Fix crowbar distance to work on max 1.5 tiles

* Use existing distance methods

* Use the existing InteractionRange
2019-11-10 21:50:13 +01:00
Ephememory
7032c8a92e Checks if user is in combat mode before allowing firing. (#425) 2019-11-10 10:59:26 +01:00
metalgearsloth
0b5759abe6 Port Discordia gloves (#419)
Still need descriptions on the items to be done but the groundwork is there.
Could also do with layers for stuff that should light up in the darkness but I wasn't entirely sure what should and shouldn't.
2019-11-06 17:23:35 +01:00
DamianX
1e425f3c28 Basic wrenchable component (#418) 2019-11-06 17:22:55 +01:00
DamianX
4720353fa2 Basic rotatable component (#416)
* Basic rotatable component

* Added counter-clockwise verb

* RegisterIgnore
2019-11-06 17:22:26 +01:00
Víctor Aguilera Puerto
7d307832a0 Adds /me command. (#414)
* Adds /me command.

* Update Content.Server/Chat/ChatManager.cs

Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>
2019-10-30 21:49:07 +01:00
metalgearsloth
12cf5559c2 Refactor SpeciesUI into overlay and status effects (#381)
* Refactor SpeciesUI into overlay and status effects

All components that update the UI will need to use PlayerAttached for cases where the Mind transfers I think.

* Change overlay / status effects to use states

* Change TryRemoveStatus to RemoveStatus

Doesn't return a bool so not trying.
Addressing PJB's feedback.
2019-10-30 16:37:22 +01:00
Pieter-Jan Briers
e4f3ea7798 You can now walk over dead people. 2019-10-30 16:27:49 +01:00
DamianX
738fbdd376 Wire colors are now unique (#407) 2019-10-21 23:54:29 +02:00
Pieter-Jan Briers
9a1e4450d8 Make ID console fancier. 2019-10-21 22:54:16 +02:00
Pieter-Jan Briers
6630e454c6 Clean up reagent dispenser and make it slightly better. 2019-10-20 01:30:38 +02:00
Pieter-Jan Briers
9a38577a18 Improve autolathe & protolathe visuals.
Used correct Eris autolathe sprite.
Gave them an unlit layer.
2019-10-14 09:57:57 +02:00
Pieter-Jan Briers
f3f05b0396 Correctly implement opening animation for airlocks with open maintenance panel. 2019-10-14 00:20:01 +02:00
Pieter-Jan Briers
fd109436e5 Localize & fancify all the examine tooltips with markup. 2019-10-13 22:49:07 +02:00
Pieter-Jan Briers
5db8cda0b6 Add sound effect to machine panel opening/closing 2019-10-13 19:45:25 +02:00
Pieter-Jan Briers
d113a738de Make Airlock hacking shut power to the entire PowerDevice.
This makes the power device report as "not powered" in the examine tooltip.
2019-10-13 18:29:57 +02:00
Pieter-Jan Briers
445e88cce8 Airlocks do not self close when depowered.
Fixes #390
2019-10-13 17:13:16 +02:00
Pieter-Jan Briers
33e11c0c3a Highlight "not powered" orange in PowerDevice examine.
Also localizes it.
2019-10-13 17:01:53 +02:00
Pieter-Jan Briers
370f4e140d Using crowbar on powered airlock returns true on attackby.
Fixes #388
2019-10-13 16:56:43 +02:00
Pieter-Jan Briers
be9dc90738 Disable unlit layers on unpowered airlocks.
Fixes #389
2019-10-13 16:39:21 +02:00
moneyl
a5b19b10e0 Add rejuvenate command (#380)
* Add rejuvenate command

Takes one or more entity uids as input. Attempts to find a DamageableComponent on that mob and heal all damage on it.

* Add rejuvenate to right click menu

* Update engine submodule

* Make suggested changes

- Remove redundant error checks in rejuvenate console command, add in relevant ones along with shell messages so the user knows what's going on.
- Remove localization of group check on rejuvenate verb, since the translated version wouldn't be in groups.yml this would've broken the verb in other locales.
- Have the rejuvenate verb attempt to heal the user by default if no arguments were provided to it.

* More localization + help message formatting improvement

* Add more suggested changes
2019-10-13 15:30:44 +02:00
moneyl
427836fec9 Add basic chemical reactions (#376)
* Add basic chemical reaction system

What it adds:
- Reactions defined in yaml with an arbitrary amount of reactants (can be catalysts), products, and effects.

What it doesn't add:
- Temperature dependent reactions
- Metabolism or other medical/health effects

* Add many common SS13 chemicals and reactions

Added many of the common SS13 medicines and other chemicals, and their chemical reactions. Note that many of them are lacking their effects since we don't have medical yet.

* Add ExplosiveReactionEffect

Shows how IReactionEffect can be implemented to have effects that occur with a reaction by adding ExplosionReactionEffect and the potassium + water explosion reaction.

* Move ReactionSystem logic into SolutionComponent

No need for this to be a system currently so the behavior for reaction checking has been moved into SolutionComponent. Now it only checks for reactions when a reagent or solution is added to a solution. Also fixed a bug with SolutionValidReaction incorrectly returning true.

* Move explosion logic out of ExplosiveComponent

Allows you to create explosions without needing to add an ExplosiveComponent to an entity first.

* Add SolutionComponent.SolutionChanged event. Trigger dispenser ui updates with it.

This removes the need for SolutionComponent having a reference to the dispenser it's in. Instead the dispenser subscribes to the event and updates it's UI whenever the event is triggered.

* Add forgotten checks

`SolutionComponent.TryAddReagent` and `SolutionComponent.TryAddSolution` now check to see if `skipReactionCheck` is false before checking for a chemical reaction to avoid unnecessarily checking themselves for a reaction again when `SolutionComponent.PerformReaction` calls either of them.

* Change SolutionComponent.SolutionChanged to an Action

The arguments for event handler have no use here, and any class that can access SolutionChanged can access the SolutionComponent so it can just be an Action with no arguments instead.
2019-10-11 22:57:16 +02:00
metalgearsloth
bd5a4e33ab Port outerclothing from discordia (#382)
Inhand sprites are half-scaled of the sprite
2019-10-11 18:09:34 +02:00
Pieter-Jan Briers
d7360f8709 Fix some compiler warnings. 2019-10-10 15:48:11 +02:00
Pieter-Jan Briers
fa2d633313 Remove PickUpVerb completely from held items. 2019-10-10 11:53:37 +02:00
Pieter-Jan Briers
cf97ef7ad1 Give flashlights feedback about dead/missing cell. 2019-10-10 11:50:53 +02:00
moneyl
963bb28f0f Reagent dispensers (#360)
* Expose more private values of Solution and SolutionComponent

Expose SolutionComponent.ContainedSolution and Solution.Contents. Both needed by ReagentDispenserComponent.

* Implement IExamine for SolutionComponent

Allows players to see the contents of a solution by examining the entity which contains it.

* Implement ReagentDispenserComponent

Adds ReagentDispenserComponent. A component which can add or remove reagents from a solution container. It's written in a general way so that it can be used for things such as the Chemical dispensers in chemistry, but also the booze and soda dispensers in the bar. 

The chemicals it may dispense are defined in yaml, similar to the way that vending machines define which entities they can dispense, by defining a reagent pack.

* Add chemical dispenser and equipment

Adds the chemical dispenser, beaker, large beaker, dropper, and a few more chemicals.

* Add booze and soda dispensers.

Adds the booze and soda dispensers, and a few chemicals for them to dispense. There's no drink mixing or drunkenness yet.

* Update engine submodule.

* Remove unneeded and commented out code

Had a few WIP notes and debug code bits I forgot to remove beforehand.

* Make SolutionComponent._containedSolution and it's values private again

- Remove `SolutionComponent.ContainedSolution` property, replace with specific access functions to maintain safety.
- Make Solution.Contents return a `ReadOnlyCollection` instead of `_contents` to prevent uncontrolled access to the Solution values.
- Add `SolutionComponent.RemoveAllSolution()`

* Update Content.Shared/Chemistry/Solution.cs

Commits a suggestion from RemieRichards to match the coding style of the rest of the codebase. Using `IReadOnlyList` instead of `IReadOnlyCollection`.

Co-Authored-By: Remie Richards <remierichards@gmail.com>

* Update Content.Shared/GameObjects/Components/Chemistry/SolutionComponent.cs

Commits a suggestion from RemieRichards to match the coding style of the rest of the codebase. Using `IReadOnlyList` instead of `IReadOnlyCollection`.

Co-Authored-By: Remie Richards <remierichards@gmail.com>

* Add import for IReadOnlyList to Shared/SolutionComponent.cs

* Add documentation

* Improve localization

Improve use of ILocalizationManager.

* Resolve ReagentDispenserWindow._localizationManager before using it

Forgot to do this in the last commit, resulting in a crash. Oops.

* Add SolutionCaps.FitsInDispenser. Use in ReagentDispenserComponent.

Used to limit large containers like buckets or mop buckets from being placed in a dispenser. Both have large capacities (500) and weren't designed to hold certain chemicals like a beaker is, so for now they can be blocked from being put in a dispenser by giving them that flag.

* Add colors to new reagents

* Update engine submodule
2019-10-05 15:10:05 +02:00
Pieter-Jan Briers
02d509fc5f Shitty combat mode & animations. (#367)
* Combat mode UI & targeting zones.

* Fix inventory hud positioning.

* Crappy attack animations.

* Import TG combat sounds

* More work on arcs.

* Implement hit sounds.

* Lunging, hit effects, some more stuff.
2019-09-26 22:32:32 +02:00
moneyl
31487c1cf1 Disable speaking while unconscious/dead (#362)
* Disable speaking while unconscious/dead

Fixes #359

* Add CanSpeak ActionBlocker

Matches the existing technique for other actions like CanUse() and CanThrow().
2019-09-24 09:55:38 +02:00
moneyl
3e972b501a Fix explosives (#361)
Currently explosives do no damage to tiles or damage the wrong area of the map. This is because `Owner.Delete` is called before the adjacent tiles / entities are damaged. This results in the explosives grid always being 0, and it's position always being (0, 0), meaning that the tiles in range of the explosive are not properly calculated. This fixes that (Issue #358).
2019-09-24 09:54:24 +02:00
moneyl
0090af6b3b Disable footstep sounds for ghosts (#343)
* Disable footstep sounds for ghosts

Adds a check before playing footstep sounds to check if the mover is a ghost. Doesn't play footstep sounds if they are a ghost.

* Add FootstepSoundComponent

Adds FootstepSoundComponent. If a mob has this component, it will make footstep sounds. Otherwise they will not. As of this commit humans have this component and ghosts do not.
2019-09-20 19:42:45 +02:00
Acruid
e8485ee6c5 Added a new WirePlacerComponent. This is used on an item, and allows a client to place electrical wires in the world by AfterAttacking a a grid square without any other wires on it. 2019-09-19 11:47:45 -07:00
Pieter-Jan Briers
35e88ea62c Add unit test asserting that saving, loading & saving the map produces identical output. (#348)
Also fixed PowerProvider violating this.
2019-09-19 13:46:01 +02:00
DamianX
b496e8ef29 Fixed airlock maintenance panel showing when the airlock was open (#346) 2019-09-18 22:12:35 +02:00
Acruid
dd06c71735 Updates the content components to be compatible with the changes in 55a50ff7ba.
Updates engine submodule.
2019-09-18 11:36:58 -07:00
DamianX
364279e0f7 Added medical scanner (#338)
* Added medical scanner

* RegisterIgnore
2019-09-18 20:24:55 +02:00
moneyl
415ac8fa46 Replace non-existent prototype in ToolLockerFillComponent (#341)
Previously this component would sometimes try to use a non-existent prototype, `HelmetEngineering`. This would result in a server crash upon loading any map that uses the `Tool Locker (Filled)` component. This replaces that non existent prototype with `HatHardhatRed`, which does exist, and is something you might expect to find in a tool locker.
2019-09-17 17:56:37 -07:00
Acruid
fc5d7835c0 Updates various systems to the new InputCommandHandler delegate signature, implementing the new handled return value.
Modifies the construction system to use the newer InputHandler system, instead of the older ClickComponent system.
Updates the engine submodule.
2019-09-17 16:10:59 -07:00
Acruid
311f843ea1 Keeps the items inside a storage container spread out with a small local offset. Previously, all of the items were set to the container's position, resulting in a single pile.
Updates engine submodule.
2019-09-15 15:29:16 -07:00
Acruid
c56d56c2d1 Storage containers no longer eat the items out of a container, or eat world machines like APCs and Wires. Previously they would eat any entity that would fit inside them. This resolves https://github.com/space-wizards/space-station-14/issues/254. 2019-09-09 14:56:13 -07:00
Acruid
adb7e1b598 InventoryComponent now handles the ContainerContentsModifiedMessage sent when the underlying Entity Container system may have removed of of the InventoryComponent's entities. This resolves one of the underlying bugs in https://github.com/space-wizards/space-station-14/issues/254.
Updates engine submodule.
2019-09-09 10:46:20 -07:00
Acruid
5c40300474 Sanitize the OpenSlotStorageUIMessage handling on the server. 2019-09-06 16:28:21 -07:00
DamianX
0815050b2a Horrendously makes PowerDevice connect to the closest Provider (#326)
* Somewhat decently makes PowerDevice connect to the closest Provider

* Fix NullRef on server shutdown

* Fix null reference

* piss

* revert bad fix
2019-09-06 10:05:17 +02:00
DamianX
36078382e4 Airlock hacking (#329)
* Airlock hacking

* Added status text

* Whoops don't need this

* Update Content.Server/GameObjects/Components/Doors/AirlockComponent.cs

Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>

* ComponentReference ServerDoorComponent

* Suggested name
2019-09-06 10:05:02 +02:00
DamianX
6e2799f048 ID card console (#324)
* ID card console

* Container -> ContainerSlot
2019-09-06 08:12:44 +02:00
Víctor Aguilera Puerto
ba8b495ec0 Adds Research, unlockable technologies, Protolathes... (#264)
* Work on Research so far
More work on UI...
Fix ResearchClient and Protolathe UI stuff.
Fix infinite select -> request state -> select -> ... loop
Add UI to ResearchClient, etc.
Technology Database states, and a bit of work on the research console ui
A bit of work on Research Console UI
Protolathe sync
Stuff that actually does things
Protolathe databases yay
Alright got my motivation back
Yeah, no. It's almost 3 AM already
Fix serialization bug again
More work on stuff
Stuff
Adds files for most new components/systems.

* Protolathes actually work now

* Research. Just Research.

* Adds icons from Eris.

* Address reviews

* Change LatheMenu resize behaviour

* Update Content.Client/GameObjects/Components/Research/ResearchConsoleBoundUserInterface.cs

Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>

* Update Content.Client/Research/ResearchConsoleMenu.cs

Co-Authored-By: Pieter-Jan Briers <pieterjan.briers@gmail.com>

* Move IoC Resolve out of for loop

* Address review

* Localize stuff
2019-09-03 22:51:19 +02:00