Commit Graph

5255 Commits

Author SHA1 Message Date
0x6273
37b8d78dac Body code cleanup (#24946)
* Fix test

* Kill float accumulators

* Use entity proxy methods

* DataField auto name generation where possible

* Kill comp properties

* Clean up server comps

* Make events record structs

* Clean up shared body code

* Clean up server body code

* Rename organ events to be same names as in med refactor
2024-03-27 17:48:37 -07:00
nikthechampiongr
4630e94c66 Minor cleanup of cuffablesystem (#26434)
* Fix cuffs breaking after they stop being pulled

* Do proper interaction check for UncuffAttempt

* Minor cleanup

Take as much out as possible from _net.IsServer() if blocks.
Misc cleanup
2024-03-26 15:15:08 -04:00
Nemanja
3b9c5d43ec Nerf ninja research stealing (#26421)
* nerf ninja steal objective

* fubar
2024-03-26 11:52:27 +11:00
Simon
771390bb67 Make all implants unable to be implanted more than once (#26250)
* Make mind shield implants unable to be implanted more than once

* Default AllowMultipleImplants to false and update implanters.yml

* Use TryComp instead of TryGetComponent

* Deny multiple implants for fun implants too.

* Make comment more precise
2024-03-26 01:16:19 +01:00
Hannah Giovanna Dawson
bf98a6a8bb SS14-17313 Chatfactor: Chat Censorship Systems (#25908)
* SS14-17313 Chat Censorship Systems

Adds some systems to manage chat censorship:

1. No-op: does nothing
2. SimpleCensor: a regex-free censor with a variety of rules to use
3. RegexCensor: a censor that uses regex.

This exposes a singleton backed by a builder pattern (ChatCensor) that
is set up, probably during the code init phase, and then globally available
for your censorship needs.

* Migrate to Shared

* Add a reset function to the builder.

* Resolve PJB's feedback; add unit tests
2024-03-26 10:50:20 +11:00
Tayrtahn
964c6d54ca Code cleanup: Purge obsoleted SharedPhysicsSystem methods (#26287)
Updated calls to SharedPhysicsSystem methods
2024-03-25 17:37:25 +11:00
nikthechampiongr
266cc85f57 Create DeviceNetworkJammerComponent & System as a general way for entities to act as jammers (#26342)
* Add DeviceNetworkJammerComponent & System

Allows for entities to "jam" DeviceNetwork packets.

Whenever a device attempts to send a packet, the
DeviceNetworkJammerSystem listens for the BeforePacketSentEvent.
From there if any entity with the jammer component is within range of
either the sender or receiver of the packet the event will be cancelled.
Additionally jammers can only block packets in certain networks. If a
packet is not being transmitted in one of the networks it can block then
even if the jammer is in range the event will not be cancelled.

The range is stored in the jammer component along with the networks it
can jam.

Jammable network ids are stored as strings which seems to be how custom
networks are stored (E.g. network ids for suit sensors).

To allow for all of this, the BeforePacketSentEvent was modified to
provide the NetworkId.

* Make JammerSystem for the radio jammer use the DeviceNetworkJammer. Remove redundant event.

* Replace calls to TryDistance with InRange
2024-03-24 21:59:16 -04:00
Leon Friedrich
31d70db547 Use entity queries in ambient sound & power receiver systems (#26410) 2024-03-24 17:52:05 -07:00
IProduceWidgets
451890b85b Fix admin verb to set unspawned ballisic ammo count (#26411)
Don't crash if an invalid value is given.
2024-03-24 17:45:01 -07:00
keronshb
4dced51f0d Fixes store purchase events and adds support to raise a directed event (#26389)
* fixes store event check

* raise directed product event
2024-03-24 19:07:05 +01:00
Leon Friedrich
ec761114ea Run fixgridatmos for cargo & emergency shuttle (#26382)
Fix cargo & emergency shuttle
2024-03-25 03:17:56 +11:00
nikthechampiongr
dca0c6694b Add stealthmins (#26263)
* Add stealthmin command.

* Update Content.Server/Administration/Commands/AdminWhoCommand.cs

As suggested by CE.

Co-authored-by: Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>

* Add admin notifications for admins toggling stealthmin.

* Localize stealthmin command

---------

Co-authored-by: Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>
2024-03-24 10:39:53 -05:00
KISS
54dd273f66 Landmine stepoff (#22962)
* make landmine work on stepping off

* update methods naming

* made both step modes possible

* updated stepoff event raise to not interfere with game physics internals

* added comments

* figuring out how audiosystem works

* added beep sound effect, updated how stepoff trigger works to make it more consistent

* updated source in attributions.yml

* made stepoff working every time

* introduced suggested changes

* updated janitor's WetSignMine to have audio

* made cleaner events and bashing my head at OnEndCollide event raise

* inverted conditional where applicable

* review

---------

Co-authored-by: Yurii Kis <yurii.kis@smartteksas.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2024-03-24 16:33:45 +11:00
Emisse
952b7f4c4e Haunted dungeon template (#23768)
* haunted dungeon

* Initial work

Still needs prefab gen work to make it interesting.

* ime a worm

* weh

* Work

* Slight tweaks

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2024-03-24 14:37:18 +11:00
DEATHB4DEFEAT
b9db06ebb1 Admin New Player Notification Sound (#24327)
play a sound to active admins when a new player joins
2024-03-24 13:46:45 +11:00
Tayrtahn
225bc3c5ae Fix bypassing vaulting clumsy check with verb action. (#24977)
* Fix bypassing bonking with verb

* Revert "Fix bypassing bonking with verb"

This reverts commit efa0f0f5777b893bcee5a852994cfa1e3fda3e71.

* Properly refactored BonkSystem.

* Oh hey, this is redundant now

* Better solution

* Reduced default bonk chance from 75% to 50%

* Also do a little grammar fix

* Moved BonkChance from BonkableComponent to ClumsyComponent.

* Revert "Moved BonkChance from BonkableComponent to ClumsyComponent."

This reverts commit 0acbd9273f20ec478692603781adf15e06e5ed41.

* Another little grammar fix

* Matched default bonk doAfter length to default climb doAfter length

* Fixed duplicate popups

* Check CanVault with verb use too. Add granularity to ClimbingComponent and remove Leg/Foot requirement.

* Don't show verb if you can't climb

* Removed CanForceClimb

* byref record struct
2024-03-23 20:29:43 +01:00
Leon Friedrich
18a35e7e83 Partial atmos refactor (#22521)
* Reduce atmos component queries

* Remove method events

* Cache airtight data

* Make MolesArchived nullable

* Fix airtight cache

* only get tile def once

* Immutable mixtures

* firelock queries

* misc

* misc cleanup

* Trim disconnected tiles

* Fix merge issues and bugs

* Why does the PR keep increasing in scope

* debug overlay

* Fix bugs

* Fix test, remove unused events

* Add setmapatmos command

* Fix overlays

* Add map check

* A

* Resolve conflicts with #26102

* Remove some obsolete methods
2024-03-24 03:34:56 +11:00
Tayrtahn
ae3d745430 Code Cleanup: Purge obsolete MapManager methods (#26279)
* GetGrid

* GridExists

* TryGetGrid
2024-03-22 18:08:40 +11:00
nikthechampiongr
a6c018d755 Fix puller being improperly unset when pulling stops. (#26312)
Fix puller not being improperly unset on PullableComponent while being unpulled.

When unpulled, the pullableComp has its puller field set to null after the message signifying the pulling has stopped
has been sent. Since the component has a field to determine whether its owner is being pulled which is determined by
the puller field, systems listening on the event would think that the owner of the component was still being pulled.
2024-03-22 12:59:18 +11:00
Plykiya
e627a0d24b Door Remote now shows Mode in UI (#26162)
* Prep for DoorRemote Status

* Door Remote Mode Messages

* plural opens and closes

* never trust webedits

---------

Co-authored-by: Plykiya <plykiya@protonmail.com>
2024-03-21 20:19:52 -04:00
Pieter-Jan Briers
d776c4b392 Improve admin message seen/dismiss state. (#26223)
Fixes #26211

Admin messages now have separate "seen" and "dismissed" fields. The idea is that an admin should be able to tell whether a user pressed the "dismiss for now" button. Instead of using "seen" as "show this message to players when they join", "dismissed" is now used for this.

Existing notes in the database will automatically be marked as dismissed on migration. A note cannot be dismissed without being seen (enforced via constraint in the database too, aren't I fancy).

As part of this, it has become impossible for a player to play without dismissing the message in some form. Instead of a shitty popup window, the popup is now a fullscreen overlay that blocks clicks behind it, making the game unplayable. Also, if a user somehow has multiple messages they will be combined into one popup.

Also I had enough respect for the codebase to make it look better and clean up the code somewhat. Yippee.
2024-03-21 16:15:46 +01:00
Tayrtahn
f4cb02fb0c Code cleanup: Purge calls to obsolete EntityCoordinates methods (#26292)
* Purge calls to obsolete EntityCoordinates methods

* Pizza defruited; rerun those tests!
2024-03-21 12:59:56 +11:00
Errant
e061cb3f8c Thrown soap/banana/(etc?) will fail to slip until it lands (#24494)
* throw miss

* event

* whoops

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

* fix popup duplication

* Separate cancellable event

* no popup, no problem

* remove leftover stuff

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2024-03-20 12:57:39 +01:00
Tayrtahn
4a83c36585 Code cleanup: Dirty(Comp) (#26238)
* Replaced uses of Dirty(Component) with Dirty(Uid, Component)
Modified some systems (notably pulling-related) to use uids.

* Missed a few

* Revert changes to pulling

* No
2024-03-19 23:27:02 -04:00
metalgearsloth
6de5fbfafb Fix build (#26258)
* Fix build

- Fixes a couple paint things that were broken.

* wat
2024-03-19 23:34:00 +11:00
nikthechampiongr
362d56981f Simplify DoAfterArgs behavior for movement and distance checks (#25226)
* Merge BreakOnWeightlessMove and BreakOnMove. Provide different theshold for weightless movement.

* Adjust WeightlessMovementThresholds. Put a thing I forgot to put in the doafterargs.

* Make DoAfterArgs only use OnMove to determine whether to check for
movement and MoveThreshold to determine the threshold regardless of
weightlessness. Gave DistanceThreshold a default value which will always
be checked now.

* Fix issue introduced by merge.

* Use interaction system for determining whether a distance is within range

* Fix incorrect doafter args introduced by previous merge.
Forgor to commit these.

* Exorcise ghost.

The execution system should have been deleted when I merged previously.
For a reason I cannot comprehend it came back, but only the execution
system.

* Exorcise ghost Pt. 2

* Allow for movement check to be overriden in zero g and adjust doafter args where needed.

You can now override checking for movement in zero g with the BreakOnWeightlessMove bool. By default it will check.
The following doafters were made to ignore the movement check in zero g:
- Healing yourself with healing items,
- Removing embedded projectiles,
- Using tools like welders and crowbars

* Adjust distance for cuffing/uncuffing to work. Make injections not break on weightless movement.

* Fix evil incorrect and uneeded comments
2024-03-19 21:09:00 +11:00
metalgearsloth
c584f6444a Pulling rework v2 (#24936)
* Pulling rework

Fixing up the FOUR systems managing pulling, all the shitcode, and also making it nicer ingame.

* More pulling cleanup

* stats

* More cleanup

* First draft

* More pulling

* weh

* Fix puller

* Pulling working

* Fix merge

* Dunked

* Self-merge time

* Fix hotkey

* Fix container changes

* oop

* Fix multi-pulling

* Move alerts cleanup.

* pulling fixes
2024-03-19 14:30:56 +11:00
SlamBamActionman
d7484ae9f5 Fix recycled containers deleting items inside them (#26045)
* Removes items from containers in reclaimers

* Made it into an event instead

* Sloth review comment

* Fix indentation and rename field
2024-03-19 13:36:21 +11:00
nikthechampiongr
22e9d6562f Fix SCRAM implant not working while cuffed. Incidentally fix freedom implant working while dead/crit (#25978)
* Fix SCRAM implant not being usable while in cuffs. Also fix freedom implant from working while dead/crit as a side effect

* Move check up to apply to all actions and do thing I forgor to do before

* Change check into an ActionBlocker check that also checks whether the user is sleeping.

* Make checking for Consciousness the default for actions

Went through and chose what I believe to be sensible defaults for actions that had CheckCanInteract.

* Fix typos my beloved

I had an unbelievable skill issue

* Fix major skill issue
2024-03-18 23:35:46 +01:00
Killerqu00
45d6c03407 Initial Infected can see each other (#25934)
initial infected icon
2024-03-18 15:57:36 -06:00
shamp
3884c2d2d2 Zombies can very slowly regen heat and shock damage (#25925)
Update ZombieComponent.cs
2024-03-18 15:47:39 -06:00
brainfood1183
e4d5e7f1ae Spray Paint (Review Ready) (#23003)
* Spray Paint (Draft)

* paint colors, paints in maints loot, cargo crate of paints.

* fix

* remove paint (sort of)

* moved paintcleaner into own system

* Moved paint to server (had to unfortunately)

* doafter now breaks when moving away.

* cant paint mobstatecomp

* loads of fixes

* fixes

* fixes

* nopaintshadercomp

* fixes

* fix

* use locale for paint remove string

* remove nopaintshadercomponent and use blacklist

* remove enabled.true from visualizer

* paint doafter event.

* add verbs for paint and remove paint and icon for paint verb.

* fixes

* no longer replaces shader when shader exists.

* replace forloop with foreach, check shader before adding and removing.

* paint doafter now separate so no copy paste code

* Entities in sprayed targets item slots are also now correctly sprayed.

* fix

* fix

* fix airlock psray painter now removes painted before painting door.

* spray paints now use openablecomponent.

* fix

* fix damn accesstypes.

* fix

* fix
2024-03-18 15:29:48 -06:00
DoutorWhite
8d40bc36a9 Improves Medical Hud interface and functionality (#26027)
* Improvements to the medical hud interface

* Adds an icon for SSD players

* Indentation fix

* Update sprites, changes direction and adds new status icon.

* Adds decomposing icon

* Code cleaning

* Changes Crit Icon sprite

* Simplifies the decision structure

* Changes copyright line

* Changes Critical Icon sprite

* Makes the Critical Icon border darker

* Changes sprites to /tg/ station

* Updates copyright

* Makes Dead Icon animation slight faster

* Code cleaning

* Remove some unused imports

* Code cleaning and rename icon

* Minor code cleaning
2024-03-19 00:56:12 +11:00
deltanedas
7561bef6a7 Move faction exception and everything it needs to shared (#25154)
* move faction prototype to shared

* move faction exception and member stuff to shared

* fix breaking changes for random stuff

* move pettable friend stuff to shared

* mostly fix

* final fixy

* dragonops

* final fixy II

* use querys and fix warpspeed fish (probably)

* fixer

* Rrrr!

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2024-03-18 18:23:25 +11:00
Kevin Zheng
153d2815fc Fix pressure damage calculations (#26217) 2024-03-17 21:16:31 -08:00
Golinth
21de5e9a08 Criminal Record Icons below Job Icons (#26203)
SS13 Criminal Record Icon Location REAL

Adds a new Offset DataField to the StatusIcon Prototype. It effects status icon location on a per-pixel level. Not sure what else it could be used for, but hey, nothing wrong with generalizing. Also moves the mindshield icon priority to one, to fix an unreported bug with them covering non-job icons.
2024-03-17 21:37:00 -04:00
Pieter-Jan Briers
b5138b245e Fix barotrauma calculations
The math for our pressure damage (barotrauma) system is directly taken from TG. The constants are the same and the math is almost the same. However there are two errors.

1. Pressure damage started being applied within the WARNING bounds, rather than the HAZARD bounds. This means you started taking low pressure damage at 50 kPa instead of the intended 20 kPa, and also the HUD icon didn't show "danger" like it should even if you were already taking damage.

2. The calculations for high pressure damage were wrong. These are supposed to be linearly scaled, but the function was wrong so the scaling didn't actually work properly (especially when considering the fixed bounds above). This appears to be the case because the function was taken from an incorrect comment in the original source, rather than the real math.

Both of these issues are now fixed to match the TG behavior. Note that this somewhat nerfs pressure damage in non-extreme circumstances. e.g. a room at 40 kPa now gives NO pressure damage, whereas previously it would do full space damage.

The description of the pressure alerts is wrong for "low" severity, but I can't be arsed to fix that right now. Alerts don't have a way to change the description depending on severity...
2024-03-17 22:37:28 +01:00
LordCarve
eeaea6c25b Unify Content's EntitySystem logging (#26216)
Use Log with generated sawmill name rather than explicitly named one for all non rule-based Content EntitySystems.
2024-03-18 07:30:27 +11:00
LordCarve
7d275a4b5e Obsolete Logger cleanup for EntitySystems part 2 (#26159)
* Kill the static InRangeUnOccluded

* Adjusted 4 more EntitySystems that were missed.
2024-03-17 18:31:09 +11:00
Ed
c35ff87e14 SlowContactsSystem to SpeedModifierContactsSystem mini rework (#26110)
* rework

* update logic
2024-03-17 13:27:22 +11:00
LordCarve
d8a7b33b43 Fix anomaly decay logs (#26180)
Fix anomaly decay logs (#26122)
2024-03-16 13:31:21 -04:00
Krunklehorn
8ecb78ee5a Fix StrippableSystem blunders (#26166)
* Fixes target hand check when no hands were needed.

* Adds missing CanStripX checks.

* Whitespace.

* Fixed bad math causing instant strips.
2024-03-16 14:50:53 +11:00
Hannah Giovanna Dawson
41093ab03c SS14-12462 Nerf food and drink vending machines (#25999)
* SS14-17183 Nerf vending machines

Vending machines provide too much food
(and drink) at the moment to the crew,
robbing the chef/bartender of a reason
to exist, and robbing the janitor of a reason
to want to refil vending machines early in
the round.

This PR adds a new "initialStockQuality" field
to vending machines and sets it at 0.33 for almost all
food and drink vendors. The intent at the moment
is to drop food and drink vending machine stocks
by somewhere around a half - two thirds of the time,
about two-thirds of the stock of a given item will be
missing.

This number can be tuned to discourage people relying
on vending machines and make round start
a bit more variable when hunting noms.

* Add comment to InitialStockQuality.

* Update Content.Shared/VendingMachines/VendingMachineComponent.cs

---------

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
2024-03-15 19:28:00 -04:00
Ed
4aa72af574 Convert "IgnoreWeatherComponent" into "BlockWeatherComponent" (#26135)
* ignore

* doc
2024-03-15 18:36:09 -04:00
Magnus Larsen
15a7520df1 Prevent dead players from turning bar stools (#24308)
Prevent dead users from turning their bar stools

Previously, players could always turn a bar stool or office chair they
were buckled into; even while stone cold dead!
2024-03-15 21:03:18 +11:00
Ed
986ac589b4 Fashion is my profession - Procedural jumpsuit variants (#25888)
* add color field to clothing layers

* add support to randomsprite

* bababa

* finalize spriting work

* add to game

* fix

* remove space

* edit patelle, +1 decor variant

* added only pants, some sprite fix

* inflation

* fix mixed

* not tested commit

* Revert "not tested commit"

This reverts commit 4a904df3452263e87c9cb819ab5d8cf411ebe468.

* naked human is fun

* update

* add new style

* some sprite pixel tweak

* Update meta.json
2024-03-15 18:37:12 +11:00
Krunklehorn
41ca8f3dfc StrippableSystem doafter overhaul (#25994)
* Initial commit

* Fixed short circuiting

* Use DebugTools

* Use Entity<TComp> more, and make them nullable

* Bring these two together
2024-03-15 13:57:52 +11:00
Pieter-Jan Briers
0ecc5e8c96 Throttle people trying to connect to a full server. (#20972)
* Throttle people trying to connect to a full server.

To reduce spam/load on the server and connection logs table.

Players are forced to wait 30 seconds after getting denied for "server full", before they can try connecting again.

This code is an absolute nightmare mess. I tried to re-use the existing code for the redial timer but god everything here sucks so much.

Requires https://github.com/space-wizards/RobustToolbox/pull/4487

* Use new NetDisconnectMessage API instead.

* Add admin.bypass_max_players CVar.

Just something to help with debugging the player cap on dev, I don't expect this to ever be disabled on real servers.
2024-03-14 19:00:47 +11:00
Mr. 27
3cb1c585c5 Pipebombs and IED rework (#25705)
* inital

* 2-9

* add crafting function, rename ied to fire bomb

* add firebomb ignition

* fikss

* change damage values

* add note

* fix tests i think

* ok

* good

* Review

* warning

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2024-03-14 15:27:08 +11:00
Mr. 27
3981173a15 Zombie wideswing and misc fix (#26064)
* inital

* b

* Update MeleeWeaponComponent.cs

* Update Content.Shared/Zombies/ZombieComponent.cs

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2024-03-13 21:02:10 +11:00