* Logging fixed + minor clean-up of ApcToggleBreaker method
* ATS is no longer targeted by BreakFlipRule
* Fixed typo
* Now uses Uid
* Now uses Uid
* Fixed look-up
* Added blacklist to BreakerFlipComponent to specify which entities shouldn't trigger the game rule
* small fix
* component outline
* System port
* super bonk detour
* working good!
* relay changes
* the death of clumsy
* why it stop working??
* now to test it
* tested it
* Actual genuine tests
* final checks
* buff up catch test
* annoying test fail
* refactor: minor whitespace and var rename changes
* refactor: changed comments on top of methods to xml-doc for ClumsyStatusEffectSystem
---------
Co-authored-by: iaada <iaada@users.noreply.github.com>
Co-authored-by: Fildrance <fildrance@gmail.com>
* Cancel if APC is in unpowered list
* Also prevent re-power via re-construction
* Revert useless dependency
* Reduced event time by 10-20 seconds
* Move to ApcSystem
* Also verify game rule is active
* Empty commit
* Move station and affected checking
* Check for main station grid
* Fix format warnings
* Somehow this got duplicated
* Make GetRuleAffectingEntity() also check for BecomesStationComponent
* Make APCSystem also check for ActivegameRuleComponent
* Removed redundant checks and duplicate logic
* Add GridEventEligibleComponent with flag for PowerGridChecks
* Propagate GridEventEligibleComponent.
* Revert GridEventEligible
* Use GetLargestGrid
* may god have mercy upon my soul
* stuff
* Revert "Always raise MobStateChanged on client (#45103)"
This reverts commit 1951b00875.
* keep the cleanup
* fuck you though
* review
* Update Content.Shared/DamageOverlay/SharedDamageOverlaySystem.cs
Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
* deltas
* queries
---------
Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
* init
* fixes, ghosting
* i dont know man
* popups, slight rework, actually works now
* review
* failn't
* partial review
* new sprites
* cleanup
* fix
* fix multiple gasps, allow stasis when dead
* typo
* yeah
* yeah
* wuh
* merge master part 2
* sub attribute
* first try?
* renames
* network
* identity
* fix ts
* fix imports
* applying state check
* temp
* may god have mercy upon my soul
* stuff
* Revert "stuff"
This reverts commit de7ec9cb9f761f5cd954921a0efa495388634d30.
* Revert "may god have mercy upon my soul"
This reverts commit 3e1aa567d47e0576daa6ed420dad29b80c112a31.
* Revert "temp"
This reverts commit 501dd6d4f6fd22c466e4abb2a284212636123c4a.
* Revert "applying state check"
This reverts commit 3c211f0a54812797987c7ab93a9b140f66a9088d.
* fix
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* radiosystem is funny
* review
Co-authored-by: slarticodefast <slarticodefast@users.noreply.github.com>
Co-authored-by: moonheart08 <moonheart08@users.noreply.github.com>
* dont forget your tests
* dont forget your loc
* networking
Co-authored-by: Tayrtahn <Tayrtahn@users.noreply.github.com>
* dont return because its breaks
* uh
* review
Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com>
* more predictions and cleanup
* refactor: just me, being picky about whitespaces and commetns formatting
---------
Co-authored-by: slarticodefast <slarticodefast@users.noreply.github.com>
Co-authored-by: moonheart08 <moonheart08@users.noreply.github.com>
Co-authored-by: Tayrtahn <Tayrtahn@users.noreply.github.com>
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com>
Co-authored-by: Fildrance <fildrance@gmail.com>
* Fix for mech control panel not closing on pilot exit.
* Added line spaces back to maintain formatting.
* Check for TryEject to see if we should actually close the UI.
* Added second _ui.CloseUI() to OnMechExit event, will properly close UI for pilot if they are forcefully ejected from the cockpit.
* refactor: as teleportation can work with entities out of PVS it cannot be predicted, so moving it to server
* refactor: use predicted random and remove unused IsFirstTimePredicted from XAEDamageInArea
* refactor: use predicted random and removed IsFirstTimePredicted from XAERandomTeleportInvokerSystem
* refactor: fix horrible mistake of having server comp networked
* refactor: fix XAEDamageInAreaSystem mispredicts
* refactor: move random teleport invoker to shared
* refactor: forgotten extra networked things
* Move server config, removed duped fields, add test
* Use Validate calls instead of setting the cvars
* grammar
* Apply ElectroJr's suggestions
* remove ServerConfigTest
* Uncomment the remaining commented out config vals
* Fix decal prediction
Tried to do it the clever way in after state handler but didn't reset properly so we do it the stupid way.
* a
* also these fixes
* What sitting on code does to a branch + no mo owner v2
* Replacing ViewVariables with AutoNetworkedField + Missed One V2
* Removing Virtual Methods & Renaming ForensicsSystem to SharedForensicsSystem (Also made it abstract) V2
* IProduceWidgets Review Changes & some of my own V2
* Lil Cleanup V2
* Part 1 of Review Changes (Only thing left is the BUI stuff and the constructor) V2
* It now WORKS!!! (Still needs the BUI and constuctor changes, ill figure it out later)
* Test (Removal of ServerSide VomitSystem.cs)
* Ok...
* Moved System BloodstreamSystem.cs to SharedBloodstreamSystem.cs & deleted client BloodStreamSystem.cs to make SharedBloodstreamSystem.cs sealed. (No Unregistered errors)
* Prediction
* Fix?
* No mo log error?
* Revert "No mo log error?"
This reverts commit 50c15a3deab6af9dffd7baed45820bae5558e41f.
* Constructor going up
* No ForensicScannerBoundUserInterface.cs (It doesnt wanna scan anymore but it doesnt crash)
* For Conflicts
* Guh
* Yea
* Organization & no ErrorHell (maybe)
* Dirtying
* Dirtying take 2
* Revert "Dirtying take 2"
This reverts commit 5735012e21f43808db3ae010fce268eac24d0583.
* the dirties dont do much here
* For Conflict
* Readded
* Another Conflict Commit Fix
* Conflict Fix Thrice
* Empty Space
* Keep it simple
* Add it back in
* Move BloodstreamSystem stuff thats causing the error back to system. This'll prob fix the conflict
* Conflict fix?
* Trust the fix
* Looked at other prediction PR's, they had better code.
* To not mix up the system in client
* Removing Conflict
* For conflict
* For the conflic fix, will be removed later
* Scuffed Fix
* Removal & Adding the Decouple
* Took some HEAVY pointers from SirWarocks work. The Roadblock has been CLEARED, DOAFTERS WORK NOW!!
* Cleanup & Optimizing, mostly comps.
* More Optimization, most of this is just imported Warock Code, his QOL included. Did not want to remove SolutionDNA's tho, mostly due to a Log.Debug in OnPrint.
* Forgot that the Print Refreshes, more of Warocks work.
* Removing Loc.GetString
* All of BloodStream to Shared, hopefully no errors.
* Sketchy Dirty Removed
* Removed Timer.Spawn, added FrameUpdate cause anything else only updated when the window opened, & a bit of cleanup.
* No mo Mispredict
* GenerateDnaEvent Predicted
* Forgot the user
* I knew it was real, bloodstutter is REAL and now GONE.
* Cant dirty NewEntityBloodData due to potential stutter, so its safer to put it all back into server. again...
* Clearer
* Thank you leahcat, no more identity leak.
* Routine Maintenance
* sealing the class
* it checks for this now?!
* While im here, FileScope Namespaces & removing unused namespaces
* Update Attribute Type (SirWarock Import), it works and is much easier to read.
* Forever Fixing Conflicts
* Readonly Genocide & Partial Maxing
* LGTM, BloodstreamSystem moved to SharedBloodstreamSystem!
* Sohn
* If OG Github back push this commit
* One Billionth Commit Fix
* Removed client/server stuff
* Made implicit
* NewLine & comment on why AutoGenCompState is true
* Updatin the rest of the Popups to use Entity
* I think that's what they meant? It looks cleaner at least.
* Mass Attribute for LocalEvents that are safe to change.
* Putting it back as abstract
* maybe?
* Guhh, rolling back empty client/server of BloodStream
* Removed Client/Server BloodstreamSystems, changed access modifier from protected to private, & renamed SharedBloodstreamSystem to BloodstreamSystem
* From Protected to Private
* Removed comment & made it explicit on what changed to true
* Guh, hopefully thats all of it...
* Forgot
* Review
* Test Push
* Line 316 in SharedForensicsSystem was causing the errors, better to play it safe
* Review Changes
* Update Content.Shared/Forensics/Events.cs
Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
* The only thing SolutionDNAs does is search and clears itself. I see no reason to keep it
* The print.disabled didnt properly disable when cleared. So ill just use the old if check
* Figured out the rest of the SubscribeLocalEvents and networking BloodData cause its fully in Shared
---------
Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
* ready
* oop forgot the HUD stuff
* woooo examinable generalized tooooo
* oop I forgot to rename the files
* bungled the merge, I guess
* this is called hubris
* Verin's comments
* PR comments
how did I use `ProtoId<> Hunger` in more than a few spots but then just say "thirst can stay a literal :^)"?
also changed a few spots to my beloved
```
functionInvocation(
one
param
per
line
)
```
```
* Satiation effect condition now with ADDED FUNCTIONALITY?? :o
* tfw you trust the markov chain recommendation because long generic type names are tough q-q
* TFW YOU TRUST THE MARKOV CHAIN BUT IT DOESN'T UNDERSTAND THE DIFFERING SEMANTICS OF MAX AND MIN AHHHHH
* tfw you think to yourself "i need to fix the effects", but then forget to and the code doesn't even compile.
* centralize satiation constants
* other small comments
* The enum is dead.
But at what cost?
* oop
* like 12 more ooperses
* green checks are mine by right; I have performed the rites; I have done my part; you will not deny me this succor
* oops I changed the semantics from `<=` to just `<` and didn't update the tests :)
* serialization has bested me :agony:
also PR comments
* never trust the auto merge :agony:
* literally just this
* force engine back to master because idk why it's different
* fix randomness and update master
* submodule fuckery
* fall before my might
* okay I ran the linter, ARE YOU HAPPY??
* cursed ovis, trouble me no more
* protoman stuff
* inb4 linter bonks me
* break non-critical stuff from the main satiation proto
* 
inb4 this breaks something somewhere lmao
* my two greatest PRs COLLIDE
I wonder why robust says it's changed :hmmclueless
* sanity is at an all-time low
* serialization, I guess
* I don't believe you
* field deltas on class \w*satiation\w*components
* PR comments
* 我做泥團子 😔
* doc + kill one property that's trivially accessible after the threshold caching changes
* fixes
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: AJCM-git <ajcm_mail@disroot.org>
* Job weight rework
Instead of global job priorities we do:
- Fill up minimum job slots first by priority. Has same-department / anyone / never fallbacks.
- Players get their jobs by pref, filling up up to roundstart values on gamemapprototype (AKA maximums)
Default weights are used if the map doesn't specify.
* a
* I square to god
* Ignore space tiles for rooves
If we get spacelight this looks better.
* Add spacelight
SS13 parity idk if wanted. Dampened the color a bit as it came off a bit strong.
* Apply suggestion from @metalgearsloth
* zap icon
* recipe todo
* add module
* add action image
* add electrified sprite to engi xenoborg
* add one pixel
* anti fun change
* remove useless action
* remove texture
* add shock delay
* check is done in the right place now
* pause stuff
* use custom serializer
* make shock only 3 seconds
* change values
* microbalance commit
* move down
* captalization
* SpookyExtinguish, oooooo
* comments, intensity
* Use allowedIntensity in GhostSystem
* commento-stuffed
* GhostComponent: return to BooCount for sanity
* unindento
* fix ghost component, dependency order (holy shit)
* More cleanup than feature at this point
* Add partial to PoweredLightSystem
* event field order, ghost system comments
* Separate spooky, consistency w.r.t. DoGhostEvent
* BooActionEvent handler to GhostSystem.Boo, fix ext
* featuring kenny blankenship and vic romano
* fix maximum value
* Fix BooIntensity comment
* remove whitespace
* comments, RevenantSystem: set handled
* "for a typical ghost"
* Address PR suggestions
* Use Handled, SpookyLight: BooIntensity->Intensity
* Use Handled in BooActionEvent handler, update name
* remove query
* address beck-thompson's requested changes + Handled
* ResponseIntensity setter, private Handled setter
* Check Handled, not !Handled
* there is a third
* the hell was this using placement
* Obsolete Extinguish, Try with Entity<T>
* why wasn't this using TimeOffsetSerializer
---------
Co-authored-by: iaada <iaada@users.noreply.github.com>
* loving it
* wording ig
* first pass
* makes more sense
* Update changeling.yml
* issuers to prototypes
* *screams!!!!!!!!!!!!!
* functional
* yes im salty about the order
* works!
* screw this text
* add it to rolls
* nah
* review
* partial review
* no more roundend text
* remove append stuff
* guh
* var
* Initial System and Comp implementation, moves FlammableSystem to Shared
* Revert "Initial System and Comp implementation, moves FlammableSystem to Shared"
This reverts commit 41b4ab839f97645705c733ca62c19851992caea1.
* Adds SharedFlammableSystem, adds hitscanignitesystem and hitscanignitecomponent
* Switching up method used
* Cleaning up system with notes
* THIS SHOULD WORK BUT WHY NOT
* converts random roll to proper function, adds firestacks field to HitscanIgniteComponent
* removed hitscanignite from laser
* Code cleanup, moving everything to Server
* more cleanup
* Expanded scope of PR, adding xenoborg module for Heavy xenoborg, firing burst ignite lasers
* typo
* Added xeno laser sprites
* passed adjustfirestacks into TryComp
* changed accuracy, recoil and damage values
* Altered accuracy values, removed lathe recipe
* fixing yaml errors
* new sprites for xenoborg burst fire laser, new sound for xenoborg burst fire laser, new icon for burst fire laser module
* Fixing sprite assignment
* typo
* sprite corrections, increased recharge speed
* sprite fixes and naming convention
* What did I doooo
* revert changes to submodule
* Remove changes to RobustToolbox
* Update Content.Server/Weapons/Hitscan/Systems/HitscanIgniteSystem.cs
Co-authored-by: Samuka <47865393+Samuka-C@users.noreply.github.com>
* Update Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/meta.json
Co-authored-by: Samuka <47865393+Samuka-C@users.noreply.github.com>
* Update Content.Server/Weapons/Hitscan/Systems/HitscanIgniteSystem.cs
Co-authored-by: Samuka <47865393+Samuka-C@users.noreply.github.com>
* Update HitscanIgniteSystem.cs
* Update HitscanIgniteSystem.cs
* Update borg_modules.yml
* Update HitscanIgniteSystem.cs
* Update borg_modules.yml
* module sprite change
* rename to xenoborg fire laser ray
* fix and balacne
---------
Co-authored-by: august-sun <45527070+august.sun@users.noreply.github.com>
Co-authored-by: Samuel-C <samuelcamilo8@gmail.com>
Co-authored-by: Samuka <47865393+Samuka-C@users.noreply.github.com>
Co-authored-by: beck-thompson <beck314159@hotmail.com>
* better
* VendingMachineComponent upd
* move components
* small fix
* move some fields to VendingMachineEjectComponent
* move some fields to VendingMachineVisualsComponent
* fix
* move some fields to VendingMachineDispenseOnHitComponent
* move NextEmpEject to VendingMachineEjectComponent
* upd
* split shared system to eject
* no more dummies for name
* fix contraband inventory
* small fix
* and again
* move VendingMachineDispenseOnHitComponent to server
* upd dispense
* upd
* move visuals to client
* fix
* move canshoot to server
* fix client
* fix
* upd
* fix merge
* fix
* upd1
* afterhandlestate
* upd
* more docs and protoid
* upd visuals
* upd components
* reorganize
* Entity<>
* revert AfterAutoHandleState
* No more permastuns
* Throwing rocks at the problem
* Update StunOnCollideSystem.cs
* Update Content.Server/Stunnable/Systems/StunOnCollideSystem.cs
Co-authored-by: SnappingOpossum <snappingopossum@outlook.com>
---------
Co-authored-by: SnappingOpossum <snappingopossum@outlook.com>
* feat: xeno artifact debug commands
* refactor: minor renaming + whitespaces
* refactor: do not allocate unless needed
* refactor: rename common xeno-artifact commands localization string
* refactor: extract reusable parts of code, change command to work with EntityUid and not with NetEntity
* refactor: renaming
* refactor: make all commands toolshed
* refactor: localization fix, command naming reverted to camelCase, xml-doc for new commands
* refactor: make toolshed tuple actually work
* refactor: remove unused code
* refactor: cache for EffectPrototypes
* refactor: fix unlcokNode command, remove engine copy-paste for TryParseEntity
* refactor: fix localization for toolshed
* refactor: remove unused dependency
* refactor: caching systems for XenoArtifactCommand where possible, comments clarification, whitespacing
* refactor: added readonly to SharedXenoArtifactSystem.EffectPrototypeIds
* refactor: use component to detect which proto is xenoarch effect
* refactor: fix missing partial for XenoArtifactCommand
* refactor: fix readonly on dependencies for XenoArtifactCommand
* refactor: fix missing partial for nested XenoArtifact related parsers
* refactor: cleanup after merge
* refactor: remove obsolete IPrototype.HasComponent call and unused using
* refactor: change xenoarch commands to lowercase (as convention dictates)
* refactor: XenoArtifactNodeParser and XenoArtifactTypeParser are now CustomCompletionParser (removed duplicate code)
* refactor: XenoArtifactNodeParser is now CustomCompletionParser, moved custom parsers to shared/toolshed/parsers
* refactor: todo for ent proto caching, moved XenoArtifactCommand to toolshed namespace
* refactor: fix xenoartifact:totalresearch command
* refactor: remove system caching, clean whitespaces
* fix: fix localization for xenoarch commands
* refactor: moved StatusEffectCompletionParser to shared, added same todo remark for cache of status effect entity prototypes.
* refactor: use proxy methods in command and _entityManager.System in all parsers
* refactor: mved commands and parsers into respective folders
* refactor: access restriction for cached EntityPrototypeIds
* refactor: todo link to issue, fixed DI in StatusEffectCompletionParser
---------
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
* add BlockHands
* and mechs
* move to another place
* small fix
* TrySpawnUnremoveableVirtualItemInHand
* upd
* fix docs
* VehicleHandBlockerComponent
* Move Ulam spiral generator to its own class
* Make UlamSpiral.Point return a zero vector for n<=0
* Add UlamSpiral.PointsForMaxDistance
* Fix TeleportLocationsSystem can teleport user into a wall
Uses an Ulam spiral pattern to check for valid locations around the target entity.
* Handle teleportation failures more gracefully
* Fix unconventional name for delay system field
* Fix client crashes when target entity is paused/in nullspace
* Show popup when teleportation destination is obstructed
---------
Co-authored-by: opl <4833621+opl@users.noreply.github.com>
* the great mindshield rework
* it just works :D
* glory to nyanotransen, I said with my very obviously fake mindshield.
* work on things to remove manual mindshield queries
* very wip impl
* yeah there we go apc destroyed mission accomplished
* some comments
* textures!
* i will stab the person who decided to spell it differently.
* rename things since i am crazy (i was also crazy once)
* minor spelling mistake :(
* Revert "minor spelling mistake :("
This reverts commit ece1f1c3509063d1c43b7f136509ed4df2cd62e7.
* Revert "rename things since i am crazy (i was also crazy once)"
This reverts commit e75411d4bb84e819ca525b9fa0fe1792b6ace0b6.
* Revert "i will stab the person who decided to spell it differently."
This reverts commit 696ffdc062094cc9e4cf382f1e39b4ae4e3d781d.
* fixed things + better texs
* aaaa
* INSANITY RAHHHHH
* e
* changing things a bit.
* testifying things actually no insanity
* cleaning
* only doing this cuz of heseintests failing
* cleanup
* Update Content.Server/Revolutionary/RevolutionarySystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Apply suggestions from code review
fucking suggestions WHY IS THE BUTTON THERE EVEN WHEN ITS DISABLED!!!!
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* half of things for scarky0
* event merging stub / beginning
* big rewrite
* there ya go scar
* e
* NETWORK YOU PRICK
* Update Content.Shared/Mindshield/SharedMindShieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/SharedMindShieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Server/Revolutionary/RevolutionarySystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/FakeMindshieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* e
* RAHHHH
* cleaning
* Update changeling.yml
* Update meta.json
* slarti 1/3
* slarti things 2
* le real fix
* commit & push
* Update Content.Client/Overlays/ShowMindShieldIconsSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Server/Implants/MindshieldImplantSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/SharedMindShieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/FakeMindshieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/Components/MindShieldStatusComponent.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* scarky0
* dirty
* fml
* robust thyself now
* minor fix
* stub
* Revert "stub"
This reverts commit c1204b88d3ae1bbdca2deeb075a9dd0d6c529326.
* s
* jrwebiwerhweir
* shrimple fix
* Apply suggestions from code review
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* yeeeuuuwhqeheueuuu
* rweifohgeterwt
* cleaning, compiling
* container bs and icons
* werewrewr
* fix
* crisis averted
* howd i forget this
* leave me ALONE
---------
Co-authored-by: nomdéraisonnablementlong <you@example.com>
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Co-authored-by: ScarKy0 <scarky0@onet.eu>
Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com>
* Dirty ApcPowerReceiver if state doesn't match defs
* surely this will work and isn't massive hubris
* SPACE
* docs & comments
* voltage, not charge
* no space
* jfc
* Resolve obsolete TransformComponent warnings
* all gas no lerp, a few unused imports
* Resolve TransformSystem via IEntityManager.System
* Revert to set anchored in ConstructionSystem.Graph
* pragma, no FIXME, redundant TransformSystems
* Remove unused variable
* Address sloth's suggestions
* oneliner rotation assignment
* Use spawn commands with rotation
* yet more spawnattachedto changes & cleanup
* Remove unused transform import
* more transform system cleanup, dump restock warn
* feat: ConditionalSpawnerComponent can now stack items it spawns automatically
* refactor: StackComponent quick cleanup, while we are at it
* refactor: replace custom code with StackSystem.SpawnMultiple
* refactor: update for RT changes
* refactor: update after merge
* refactor: cleanup + fix GetRadomOffset using full range
* fix: change GetRandomOffset to not pass negative offset to NextVector2Box, NextVector2Box negates value by itself
* refactor: now artifact spawns stacks of resrouces, as god intended
* refactor: modernize
---------
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>