Commit Graph

3924 Commits

Author SHA1 Message Date
brainfood1183 eb9e3974d0
Rodents can be Faxecuted (executed via Fax machine) (#21461)
* Rodents can be Faxecuted (executed via Fax machine)

* use brute instead of new group.

* fax visuals now use tags for mouse and hamster instead of comps

* fix for ubuntu, damn ubuntu bane of my life

* cant copy hamlet, can now faxecute mothroaches.

* fix

* fix

* fixes

* removed ifs now using switch, removed hastag now using string.

* fixes and no more switch

* cleanup

* more cleanup

* fix

* cleanup

* moved damage out of faxmachine and into own system and component.

* changes

* fixes and done i think.

* tidy

* Fixes

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2024-05-06 01:31:20 +02:00
Tainakov 619c00c22c
[Admin QOL] +Adminchat flag (#26930) 2024-05-06 01:26:44 +02:00
eoineoineoin 6b2fd62ee7
Add tooltips to artifact analyzer UI (#27393)
Add tooltips to indicate why "Extract" button is disabled.

Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
(cherry picked from commit b8a8d6f8fc8e0c1d83998c07a3265108d49de615)
2024-05-03 00:30:47 +02:00
Errant 1e2f97dc21
Vox sprite rework (#26985)
weh

(cherry picked from commit 257b04d27793b8c8853af57a9f53d361062d5d61)
2024-05-03 00:29:32 +02:00
Pieter-Jan Briers b2294a8cdc
Displacement map prototype (#26709)
Requires https://github.com/space-wizards/RobustToolbox/pull/5023

This uses the new engine features (above) to add a displacement map shader. This allows deforming a sprite based on another sprite.

Primary use case is automatically adapting human clothing sprites to different species, something we want to make species like Vox a reality.

A basic example of wiring this up with Vox has been added. The system is however incredibly simple and **will** need more work by a content developer to select and toggle displacement maps when appropriate. I am leaving that to somebody else. For example right now the displacement map is applied even if a species already has custom-fit sprites for a piece of clothing, such as the grey jumpsuit for Vox.

Basic Aseprite plugins to help with authoring displacement maps have also been made.

(cherry picked from commit 2f7d0dedbded99a8f3f538c887c3c17aaa667501)
2024-05-03 00:28:42 +02:00
Ty Ashley 1eace0955c
Persist Agent ID Job Icon between UI loads (#27379)
Modified the Agent ID Card to persist the selected Job Icon between UI loads

(cherry picked from commit 7d4d66887b1617e929a64d4e6fe5d6d88b5e5a58)
2024-05-03 00:26:03 +02:00
wafehling 338fc46f78
Added hotkey and controller to re-open end of round scoreboard (#25884)
* Added keybind for scoreboard, starting work

* Fixed the window appearing

* Added loc text

* Updated namespace for ScoreboardUIController.cs

* Switched to UISystemDependency

"- UIControllers can use [Dependency] as normal for IoC services and other controllers, but must use [UISystemDependency] for entity systems, which may be null as controllers exist before entity systems do." Jezithyr — 10/12/2022 1:20 PM

* Reverted back to functional state

* Replace with UISystemDependency

* Move RoundEndSummaryWindow to ScoreboardUIController

* Convert to EntitySystem

* Clean up command bind

* Move to RoundEnd directory

* Remove Nukeops rule when no nukies

* Cleanup

* Change to toggle hotkey

* Cleanup

* Revert "Remove Nukeops rule when no nukies"

This reverts commit 5d4bbca09f45110b24a674d59b505be87b602b67.

* Cleanup

* Make the Toggle hotkey work in lobby

* Fix error

---------

Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
(cherry picked from commit 8febdc5fc4851f44802bc675d90d3412bd0d4da6)
2024-05-03 00:19:00 +02:00
metalgearsloth 5ff62578ce
Fix magic mirror prediction (#27356)
(cherry picked from commit e1a52477706b6ebc2b4d74f5a98e6f913279e905)
2024-05-03 00:18:55 +02:00
metalgearsloth 7c857e7342
Fix network configurator memory leaking (#27346)
* Fix network configurator memory leaking

Doesn't dispose this window.

* Fix the other part

(cherry picked from commit 13c65378425e2d8254e8ed4e68061643b1245308)
2024-05-03 00:18:47 +02:00
metalgearsloth 1d63b4cfcb
Content update for UI prediction (#27214)
* Content update for UI refactor

* Big update

* Sharing

* Remaining content updates

* First big update

* Prototype updates

* AUGH

* Fix UI comp ref

* Cleanup

- Fix predicted message, fix item slots, fix interaction range check.

* Fix regressions

* Make this predictive

idk why it wasn't.

* Fix slime merge

* Merge conflict

* Fix merge

(cherry picked from commit 5896e6875266b22c565009b5d45f60ceb981d90a)
2024-05-03 00:15:32 +02:00
DrSmugleaf 6a95253b9d
Move job info changing methods for id cards to shared (#27337)
* Move job info changing methods for id cards to shared

* Revert "Move job info changing methods for id cards to shared"

This reverts commit 95cbc46b2d1934fa7bf5c72d7d3de9f9168992a1.

* Reapply changes

(cherry picked from commit c122fdf183a8228ccba69cb747a86626ca9b5391)
2024-05-03 00:13:05 +02:00
Leon Friedrich 56e17441ce
Fix client-side replay error (#27332)
(cherry picked from commit 0ae942101a9f79ff49c3ffb3bfe257daa76719ff)
2024-05-03 00:11:30 +02:00
Tayrtahn 07bfdf787a
Expand UseDelay to support multiple delays per entity; fix bible healing and bag pickup (#27234)
* Upgraded UseDelay to support multiple delays per entity

* Implement secondary delay for bibles.
Also some improvements to make it work nicely.

* Documentation is good

* Reserve the previous change; now Storage uses the special ID and Bible uses the default.

* .0

* Added VV support to UseDelayInfo

* Serialize better

* No register, just setlength

(cherry picked from commit b292905216948e0c85b04e8ef65a5291dd868eee)
2024-05-03 00:11:26 +02:00
ShadowCommander 58615df4ac
Add command to toggle ghost visibility on the client (#27314)
* Add command to toggle ghost visibility on the client

* Fix description

* Fix index of arg parsing

* Allow setting GhostVisibility directly

(cherry picked from commit cf45005471bbd07facbe2a5de841c08f3b8e84f0)
2024-05-03 00:10:53 +02:00
beck-thompson 2351ca213f
Radio jammer update! (#25912)
* Added selectable power level to radio jammer

* Cleaned up OnGetVerb

* Settings are now stored in the .yml file. Simplified stuff a lot!

* Minor fixes!

* Small little baby fix :)

* Added the power level switch to the examine menu and also removed the ftl file as it was in the incorrect location.

* Minor code cleanup

* Changed byte -> int

* Update sprite

* Fixed licence

* Added power LED that changes if the jammer is on low power.

* Removed tabs

* Changed github link to the commit

* Changed all the RemComp to RemComDeferred

* Moved NetworkedComponent to shared

* Changed radio jammer textures back with minor edits

* Added a space because it was annoying me

* Jammer now updates range for suit sensors properly! Thanks nikthechampiongr :)

* Removed useless comment

* Cleaned up code that updates the range of tracking devices.

* Fixed client namespace and removed newline

* Cleaned up ChangeLEDState and ChangeChargeLevel.

* Added comments

* Read only

* Fixed another comment

* Locked in

* Made server inherit shared

* Update Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs

* Update Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs

* review fixes

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
(cherry picked from commit d3b1178428e9e0e714e51523558335589078a76c)
2024-05-03 00:10:47 +02:00
Nemanja c4dc4fce95
fix analysis console bias button for real (#27299)
fix bias button for real

(cherry picked from commit 771661f478f5be07472434d32532f22aa7a8d8ab)
2024-05-03 00:06:06 +02:00
Pieter-Jan Briers a0bceb5c97
Various item status fixes/tweaks (#27267)
* Always display item status panel fully

Initial feedback from the UI changes seems to be that a lot of people go "why is there empty space" so let's fix that.

* Fix item status middle hand being on the wrong side

I think I switched this around when fixing the left/right being inverted in the UI code.

* Minor status panel UI tweaks

Bottom-align contents now that the panel itself doesn't dynamically expand, prevent weird gaps.

Clip contents for panel

* Fix clipping on implanters and network configurators.

Made them take less space. For implanters the name has to be cut off, which I did by adding a new ClipControl to achieve that in rich text.

* Update visibility of item status panels based on whether you have hands at all.

This avoids UI for borgs looking silly.

Added a new "HandUILocation" enum that doesn't have middle hands to avoid confusion in UI code.

* Use BulletRender for laser guns too.

Provides all the benefits like fixing layout overflow and allowing multi-line stuff. Looks great now.

This involved generalizing BulletRender a bit so it can be used for not-just-bullets.

* Fix geiger word wrapping if you're really fucked

(cherry picked from commit 7b90c08a2c7315b2c5a6cb17dfd82a5ac9863a53)
2024-05-03 00:01:56 +02:00
Nemanja aa0883658c
fix analysis console not saving bias button state (#27275)
(cherry picked from commit 49f1c8b197687024d572e61807050fea42518b35)
2024-05-03 00:00:31 +02:00
Plykiya 4a9176ab3a
Do-afters belonging to other players are now shaded (#27273)
Make do-afters belonging to other players shaded

Co-authored-by: Plykiya <plykiya@protonmail.com>
(cherry picked from commit 14bc59544296aced303e71258e4ee3de3637bdab)
2024-05-03 00:00:27 +02:00
lzk 5195be0d7b
Little analysis console rearrangement (#27244)
(cherry picked from commit 5b0c3ecf738c630df5e3909163fde3e494ec85bc)
2024-05-02 23:58:57 +02:00
DrSmugleaf fd40a7a33a
Add events for custom action target validation (#27230)
(cherry picked from commit b0e6ff67793723f1fd23e62eccde731d8aec5f4c)
2024-05-02 23:52:51 +02:00
DrSmugleaf c369b1c89d
Add SharedPopupSystem.PopupClient for cursor and coordinates (#27231)
(cherry picked from commit 81f2dc7cf90de43c6a854c28ae9243be1c8c7d4d)
2024-05-02 23:52:38 +02:00
deltanedas fccee49fbb
early merge projector rewrite/fixes (#1128)
* cant disguise to thing in a container

* copy cigarette visualiser

* prevent aghost throwing an error

* make disguises die in space

* fuck it rewrite it to not use polymorph

* fix action troll

* oop

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
2024-05-01 15:03:26 +00:00
no c315a78ff2
Species vision fixes (#1150)
Species vision fixes: no losing vision on nearby species vision haver getting gibbed, fix construction overlay
2024-04-28 22:09:58 +00:00
Hannah Giovanna Dawson 4edf577b1b
SS14-26480 Roll Traversal Distorter into regular Artifact Analyzers (#26545)
* SS14-26480 Roll Traversal Distorter into regular Artifact Analyzers

Bit of a grab-bag of cleanup of Xenoarchaeology prompted by #26480.

1. Traversal distortion biases are now "up" and "down" instead of "in" and "out".
2. Node generation has been tidied up to make it a little clearer how it works.
3. Traversal Distorters have been removed from the game along with their board.
4. Traversal distortion is now done by the artifact analyzers by default.
5. Some loc strings have been made clearer.
6. The Abnormal Artifact Manipulation tech has been made slightly cheaper.
7. The aformentioned tech is now localized as Artifact Recycling, given all it does is unlock the crusher.
8. The Xenoarchaeology guidebook entry has been given a bit of a rewrite, putting all information into
one page and making sure to cover the basics that otherwise would require someone typing "Liltenhead
artifact tutorial" into Youtube.

* Fix references to deleted guidebook entry

* Add fancy button to console because @EmoGarbage404 asked me to

* migration comprete

* Fixed a goober comment

* maint fails to resolve conflicts: more at 11

* Resolve PR comments

* Make UI nice

---------

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>

(cherry picked from commit f059714a75601c73c0b7b917d0faac35c99f96fe)
2024-04-21 23:46:34 +02:00
Pieter-Jan Briers 176e9b0a81
THE RETURN OF ITEM STATUS (#22986)
* THE RETURN OF ITEM STATUS

Item status is now inline with the hands again. You can now see item status for both hands at once.

If you have more than 2 hands, the last active hand of that side is displayed in the respective item status.

The item status for the active hand is also highlighted.

Item status has been given a new look so it looks unique and matches every UI theme.

* Shrink item status to 125px

This is going to require fixing the existing controls. Do that later.

* New bullet item status rendering

sex

* Make gun item status look just a little bit nicer.

Avoid only one or two bullets ending up on a single row of an item status.

* Delete Eris theme files

* More improvements

Fixed the fact that left/right were flipped around when assigning status panel locations. Involved renaming all the UI textures.

Redid how content margins are set from the theme. Less complex and cleaner now.

Made the item name always left-aligned, just looks better since other UI elements don't adapt anyways.

* Compact down item status text

Now it fits 3 lines of text on one line. Yay.

This is achieved by compacting RichTextLabels by reducing their line height and giving them a negative bottom margin.

* Add item status sprites for Ashen theme.

* Add status control to show beaker/bucket/jug solution/transfer volumes

Also PollingItemStatusControl I'll be using that more.

* Fix welder item status, clean up welder code

The item status control implementation was ancient and bad. That's why it was buggy.

Removed all the complex dated networking stuff for welders, we just sync the solution contents now anyways so none of that is needed anymore. This moves a buncha stuff to shared and just removes code.

Cleanup. The code was doing some really dumb stuff.

* Spray bottles show contents in item status.

* cowtools

* Fix plasmafire and clockwork themes.

Actual git gaslighting wtf.

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

(cherry picked from commit 58f025ba8043bcf5c32204b08eec8ae9e5d2bd41)
2024-04-21 23:41:08 +02:00
nikthechampiongr aafca1efc8
Make banpanel defaults use cvars (#27168)
* Make banpanel respect CCVars. Add CCVars for default ip/hwid/use last
details checkboxes.

* Move severity handling for server/role ban to another function

* Save sawmill

* Line goofyness

---------

Co-authored-by: Vasilis <vasilis@pikachu.systems>
(cherry picked from commit f96f92f54fe169d2e3a21356e07dfa50eca8b5d9)
2024-04-21 23:34:53 +02:00
DrSmugleaf c30f6b9659
Make remaining IPrototypes partial (#27157) 2024-04-21 23:33:58 +02:00
deathride58 13af11e3db
Adds the option to fit the viewport to vertical screenspace (#27061)
* Adds the option to fit your viewport to your vertical screenspace

* fixes documentation

* Removes commented-out leftover

* Hides the viewport width slider and also we dont know if the viewport width causing stretching/squishing was a bug present before but we fixed that while we were at it

* Removes commented out leftovers

(cherry picked from commit 396c6133664de50f8d85133b3680292fa1b95be0)
2024-04-21 23:32:41 +02:00
DrSmugleaf f0f410348c
Move storage binds and slot click handling to shared (#27135)
(cherry picked from commit 3c6722bd6fca55cfdee8dced11379641b443d542)
2024-04-21 23:31:37 +02:00
Nemanja 1d00da85fd
make filled inventory slots blank (#27150)
* blank filled slots

* Update InventoryTemplatePrototype.cs

(cherry picked from commit e5a5196b1f5cba8e0f05c374b2b7c58eea6f7361)
2024-04-21 23:21:54 +02:00
metalgearsloth 8bd58f68b5
More storage tweaks (#25970)
- Fix some prediction stuff.
- Fix some jank.
- UseDelay.
- Cap.

(cherry picked from commit b2b1926eccbae918c8d9702cfba40e54d1f4d870)
2024-04-21 23:20:53 +02:00
dffdff2423 107fc0ff25
Disable Communication Console Announcement Button for Too Long Messages. (#27145)
Disable comms console announce for long messages

Disable the "announce" button on the communications console for messages
above the cap. I did not touch broadcasting because I could not identify
an easy way to check the maximum length for it.

(cherry picked from commit cff80836503c8d7bd3ed0b018d9feff904114128)
2024-04-21 23:20:48 +02:00
Nemanja 0d88c372e9
add fuel costs back to finishing welding (#27030)
* add fuel costs back to welding

* ack

* meh

* eek!

(cherry picked from commit a47c5561a9632b6577abdc252f712d7f2da823e6)
2024-04-21 23:20:07 +02:00
Leon Friedrich ccd3357ded
Hide some map related logs from clients (#27127)
* Hide some map related logs from clients

* #if !DEBUG

* Fix typo

(cherry picked from commit 8245caaf613b8acbb045c14ceff1d9affa30e5b4)
2024-04-21 23:18:38 +02:00
NullWanderer 73e4780e6c
Revert "Fix character preview not updating on character change (#27043)"
This reverts commit f9f204a6d03e08cb0d189f7d64c031a025711430.
2024-04-21 22:18:58 +02:00
Krunklehorn 02567b4afa
Refactor status icons take 2, cyborgs don't see criminal status (#26207)
* Initial commit.

* review

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
(cherry picked from commit 460b588de5b1fc2aa8b1c8272ba1a90d99378731)
2024-04-21 22:11:15 +02:00
Tayrtahn 794302839d
Add ability to shake fizzy drinks so they spray in peoples' faces (#25574)
* Implemented Shakeable

* Prevent shaking open Openables

* Prevent shaking empty drinks. Moved part of DrinkSystem to Shared.

* DrinkSystem can have a little more prediction, as a treat

* Cleanup

* Overhauled PressurizedDrink

* Make soda cans/bottles and champagne shakeable. The drink shaker too, for fun.

* We do a little refactoring.
PressurizedDrink is now PressurizedSolution, and fizziness now only works on solutions containing a reagent marked as fizzy.

* Documentation, cleanup, and tweaks.

* Changed fizziness calculation to use a cubic-out easing curve.

* Removed broken YAML that has avoid the linter's wrath for far too long

* Changed reagent fizzy bool to fizziness float.
Solution fizzability now scales with reagent proportion.

* Rename file to match changed class name

* DoAfter improvements. Cancel if the user moves away; block if no hands.

* Match these filenames too

* And this one

* guh

* Updated to use Shared puddle methods

* Various fixes and improvements.

* Made AttemptShakeEvent a struct

* AttemptAddFizzinessEvent too

(cherry picked from commit cfa94be4c2044146298d07c703f3b71bc377ca63)
2024-04-21 22:08:21 +02:00
deltanedas c597aec3a8
prop hunt ss14 (real) (#26691)
* texture appropriation

* add code for projector

* add chameleon projector yml

* damage and actions

* prevent small props being killed round removing you (700 damage from a single shot)

* tweak default

* oop

* do appearance properly, need engine update

* fix bugs, blacklist pda

* remove status icons

* amou

* sus

* fix test + make props fast

* amouuuung

* remove funny log

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
(cherry picked from commit 395c33024cb9d4e80078e3ab3c70c1e92e7fd5bc)
2024-04-21 22:05:50 +02:00
chromiumboy 4fd43751ce
Navmap rework (#26713)
* Optimized the drawing of lines and tracked entities

* Optimized nav map updating and added thin wall support

* Added support for thin doors

* Removed floor tile seams, more line drawing optimizations

* Fixed split grids not updating correctly

* Cleaned up NavMapControl code

* Fix nav map header

* Converted nav map updates from system network messages to delta-states

* Addressed review comments

* Fixed timing issue where NavMapSystem would update before AirtightSystem did

(cherry picked from commit 009d06d97833b7700bcfaa534b20575fdbbd7db5)
2024-04-21 22:05:45 +02:00
slarticodefast a2e1dc8107
Show volume on the gas analyzer (#25720)
The gas analyzer now shows the volume of pipes, tanks, canisters and the environment.

Adjust gas analyzers so that the volume and number of moles shown corresponds to only the scanned element, e.g. a canister or single pipe in a pipenet.

(cherry picked from commit 5a5efa11cf1d68708a70d48a286cb97fde96afdf)
2024-04-21 22:05:43 +02:00
metalgearsloth 056400b0c1
Fix character preview not updating on character change (#27043)
I love lobby code :3

(cherry picked from commit f9f204a6d03e08cb0d189f7d64c031a025711430)
2024-04-21 22:05:15 +02:00
metalgearsloth cc5d741a09
Added Jukebox (#26736)
* Added Jukebox, along with music for jukebox

* Fixed Jukebox meta.json copyright

* Removed songs I couldn't find a license for.

* Renamed files to solve check failures from spaces

* Added missing attributions.yml

* Fixed lack of description in Jukebox

* Jukebox is now constructable.

* Change Jukebox menu to FancyWindow

* Moved Jukebox messages out of jukebox component

* Removed Jukebox OnValueChanged.

* JukeboxComp now uses AutoGenerateComponentState

* Removed state code, since it's auto generated

* Fixed various Jukebox code to match conventions.

* Updated Standard.yml to match changed song list.

* fixes

* Jukebox workin

* Fix

* Polishing

* Finalising

* Revert

* bad

* jukey

* Reviews

* name

* Update submodule to 218.2.0

---------

Co-authored-by: iNVERTED <alextjorgensen@gmail.com>

(cherry picked from commit 2db374988c91c6ce5f932b9cee1ba251cbfb22e5)
2024-04-21 22:04:54 +02:00
Hannah Giovanna Dawson 8d48570f0d
SS14-26950 Fix Waddling During Improper States (#26965)
* SS14-26950 Fix Waddling During Improper States

Fix some states when a clown can waddle when no clown should be able to waddle, no-matter their clowning powers.

1. You cannot waddle whilst weightless
2. You cannot waddle whilst stunned
3. You cannot waddle whilst slowed down due to stam damage
4. You cannot waddle whilst you're knocked down
5. You cannot waddle whilst you're buckled
6. You cannot waddle whilst crit
7. You cannot waddle whilst dead

There's some argument for being able to waddle whilst on the floor
and doing some bizarre floor-humping exercise but I'm not coding an animation layer system just to handle clowns doing the worm.

* Use a nicer "can move" check

(cherry picked from commit 3d0fc1067303635a743af04ef4c463abd0dba343)
2024-04-21 22:00:49 +02:00
Hannah Giovanna Dawson c690e55972
Clown shoes make you waddle, as God intended (#26338)
* Clown shoes make you waddle, as God intended

* OOPS

* Toned down, client system name fix

* Tidy namespacing for @deltanedas

* Refactor to handle prediction better, etc.

* Resolve PR comments.

(cherry picked from commit ef42fb38061b29d7202eb6d65f1b658aecc43452)
2024-04-21 21:58:28 +02:00
metalgearsloth f7e4c84143
Fix options menu crashing in replays (#26911)
Not having the nullable set properly is annoying but fixing that would probably be a significant amount of work.

(cherry picked from commit 4cb344cc307c33247492ba64cccca6dfe720540f)
2024-04-21 21:57:19 +02:00
Tayrtahn 7095f3e8a7
Add two-message overload to PopupPredicted (#26907)
Added two-message overload to PopupPredicted

(cherry picked from commit 9107d421bdd2600883780d02d521ebbbec06ac68)
2024-04-21 21:56:56 +02:00
DrSmugleaf 99ab8cea68
Fix rockets and lasers looking like they have nothing loaded (#26933)
(cherry picked from commit 13cef85a6e7d0f5873d1f66358ef742356541582)
2024-04-21 21:56:42 +02:00
DrSmugleaf b11f3a16d9
Fix guns that spawn without a magazine looking like they have one (#26922)
(cherry picked from commit 2d53cfeabcc977938f217c303ce46a79d7fe80c9)
2024-04-21 21:54:36 +02:00
TsjipTsjip cfe5153f5d
Health analyzer UI unit correction (#26903)
Correct Kelvin displayed on health analyzer UI, use T0C constant.

(cherry picked from commit 998bf453684ed91ae5971e41be72820c87b441ef)
2024-04-21 21:54:26 +02:00