Commit Graph

206 Commits

Author SHA1 Message Date
Ghilker
95c8e00af7 cleanup _HELPERS/_lists.dm and all the necessary files (#61827)
Bring _HELPERS/_lists.dm to latest standards by:
-Adding proper documentation and fixing existing one
-Giving vars proper names
-Procs now use snake case as per standard (many files that use those procs will be affected)
2021-10-12 14:48:51 +01:00
Mothblocks
ec69a3433e Fix incorrect antagonists showing up on be_special (#61676)
Fixed not being able to disable specific antagonists randomly.
For me, this meant I was unable to toggle cultist and traitor. This might've been a migration bug, though it's safe to just sanitize it on read.
2021-09-25 09:32:40 +01:00
Mothblocks
b2cb5156b6 Sanitize quirks after being loaded (#61588)
Fixes #61468, where quirks being removed/renamed/rebalanced would fuck with your quirk settings.
2021-09-21 16:32:13 +01:00
Mothblocks
cde482bb24 Fix FPS and other preferences not properly applying after reconnect (#61542)
Fixes #61515. Preferences were only applied on load_preferences(), which only fires when the preferences datum is created. Preferences datums are cached, and so load_preferences is only called the once.
2021-09-19 12:15:47 -07:00
Mothblocks
940d9aa99d Cache savefiles just for a tick, likely fixing savefile misses (#61469) 2021-09-15 18:26:35 -07:00
Mothblocks
5a4c87a9fc tgui Preferences Menu + total rewrite of the preferences backend (#61313)
About The Pull Request

Rewrites the entire preferences menu in tgui. Rewrites the entire backend to be built upon datumized preferences, rather than constant additions to the preferences base datum.

Splits game preferences into its own window.

Antagonists are now split into their individual rulesets. You can now be a roundstart heretic without signing up for latejoin heretic, as an example.

This iteration matches parity, and provides very little new functionality, but adding anything new will be much easier.

Fixes #60823
Fixes #28907
Fixes #44887
Fixes #59912
Fixes #58458
Fixes #59181
Major TODOs

Quirk icons, from @Fikou (with some slight adjustments from me)
Lore text, from @EOBGames (4/6, need moths and then ethereal lore from @AMonkeyThatCodes)
Heavy documentation on how one would add new preferences, species, jobs, etc

    A lot of specialized testing so that people's real data don't get corrupted

Changelog

cl Mothblocks, Floyd on lots of the design
refactor: The preferences menu has been completely rewritten in tgui.
refactor: The "Stop Sounds" verb has been moved to OOC.
/cl
2021-09-15 10:11:11 +12:00
Ryll Ryll
ba59702cee Adds a preference to make flashes darken your screen (#60434) 2021-08-01 14:18:36 -07:00
Ryll Ryll
1524f80565 Fixes OOC heart commendations not saving between rounds (#59904) 2021-07-01 01:13:42 -07:00
Watermelon914
375a20e49b Refactors most spans into span procs (#59645)
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.

Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.

(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
2021-06-14 13:03:53 -07:00
Gamer025
f73d8a2bae Fixes a bunch of hotkey preferences bugs (#59492)
This fixes the problem of the keybind conflict message being shown over and over again until you manually save your preferences with correct keybinds + resetting to classic keys works now
You had to manually save your prefs because the code didn't save the new unbound keys to the prefs file
Classic mode was broken because the emote hotkeys didn't have classic_keys set to Unbound by default

New hotkeys are now actually set to Unbound if no default key is set
This was broken for emote hotkeys because classic_keys = list("Unbound") was missing for them
It was also broken because the code assumed conflicting keys if some Unbound key already existed ...
The code also used classic key defaults even if you had hotkey mode enabled thats fixed now too
2021-06-05 10:55:33 -03:00
Celotajs
978055b90d Warn player about cost of implant uplink (#58872)
Co-authored-by: celotajstg <celotajstg@users.noreply.github.com>
2021-05-05 02:18:23 -07:00
Seris02
ff2f6abe83 Sort the majority of the rest of the unsorted chat (#58821)
* FINALLY IT IS DONE FUCK

* tip of the round into ooc

* adds cyopod chat messages to the info chat filter

* last one I promise probably, mob spawner messages to info filter

* holoparasite, round will start in x and keybinding conflict to respective filters

* removed motd from constants, made it infoplain surrounded instead

* changed info to infoplain
2021-05-05 05:57:40 +03:00
Mothblocks
819726b693 Remove gender-specific preferences (#58785)
Makes hair (which already was, I think?), underwear, facial hair, and undershirts all available to all genders.

Random character generation is not changed. Eventually, I want to remake random characters to look more believable, but that is out of scope.

Gender-specific preferences are an outdated trope that make the code harder to work with.

This change is also important as a total makeover of the preferences menu and the preference internals are going underway. It is significantly easier to work with when a preference can simply be a list of things you can choose, rather than having to depend on another preference to decide what they can show. While I could make this change at that time, it is also important that the new preferences menu keep parity, and avoid bikeshed on a trifling detail.
2021-04-30 18:23:48 -07:00
cacogen
5ca89a4640 Clarifies keybinding conflict message (#58676)
Gives the heading an underline to separate it from the rest of the text and makes it title case so it stands out without overstating the urgency of the situation
2021-04-26 01:03:48 -07:00
Mothblocks
f44c20cdf4 Departmental officers are now put together, rather than separate, if possible (#57685)
Security officers will now be paired up together in the same department, across departments. This means that, instead of 4 officers being split across 4 departments, there'll now be 2 groups of 2.

Late-join officers will be put into any department with only 1 officer. If none exist, the least populous department will be chosen, with their preference having priority.

Updates the maps to have more spawns for departmental officers. Delta previously had none, and now has some. Fixed a bug where MetaStation's security departmental officer was a supply one instead.

Removes the "random" departmental preference. All security officers are now given a department. The "none" preference still exists, but just to show that you don't care which department you're put into.

Updates the config to comment out SEC_START_BRIG. This is what the configuration was already on live servers.

This is something that should likely be test merged, but it mucks with savefiles. Luckily, the only damage it does is changing random departments to none, so if a TM is reverted, only that will have to be changed.
2021-03-20 20:11:11 -04:00
Trigg
8a5c7c12e3 TGUI Select Equipment menu (#57673)
Co-authored-by: Triggeredboi <lucas.moreno2124@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-03-15 19:39:02 -07:00
Kokonut
3e46c081c9 Item hover outline FX (#57574)
Ported from BeeStation.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-03-11 16:34:59 -08:00
Qustinnus
93fdfa1ab4 Adds a hotkey that puts you in throw mode aslong as you hold it (#57331)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-03-08 05:17:19 -08:00
Qustinnus
e8a7bd566f Hovering your mouse over things now shows their name on the top of the screen (#56729)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-02-16 18:57:34 -08:00
Mothblocks
0f435d5dff Remove hideous inline tab indentation, and bans it in contributing guidelines (#56912)
Done using this command sed -Ei 's/(\s*\S+)\s*\t+/\1 /g' code/**/*.dm

We have countless examples in the codebase with this style gone wrong, and defines and such being on hideously different levels of indentation. Fixing this to keep the alignment involves tainting the blames of code your PR doesn't need to be touching at all. And ultimately, it's hideous.

There are some files that this sed makes uglier. I can fix these when they are pointed out, but I believe this is ultimately for the greater good of readability. I'm more concerned with if any strings relied on this.

Hi codeowners!

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2021-02-14 16:53:29 -08:00
Ryll Ryll
fa216eff39 Minor ERT refactor, introduces a few ERT admin options (#56345) 2021-02-12 21:07:57 -08:00
cacogen
f4eb665640 Make keybinding conflict spans less loud (#56707)
Each time new keybindings are added, we receive a message at the
beginning of each round telling us about keybindings we've set that
conflict with what the new ones default to. This is desirable. However,
it could take up less space while still drawing the eye.
2021-02-07 16:19:48 +00:00
Qustinnus
63399f90ee removes the test-merge only code from the combat mode commit (#56634)
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
2021-02-03 19:55:38 -08:00
Qustinnus
707fc287b4 Replaces intents with combat mode (#56601)
About The Pull Request

This PR removes intents and replaces them with a combat mode. An explanation of what this means can be found below
Major changes:

    Disarm and Grab intents have been removed.
    Harm/Help is now combat mode, toggled by F or 4 by default
    The context/verb/popup menu now only works when you do shift+right-click
    Right click is now disarm, both in and out of combat mode.
    Grabbing is now on ctrl-click.
    If you're in combat mode, and are currently grabbing/pulling someone, and ctrl-click somewhere else, it will not release the grab (To prevent misclicks)

Minor interaction changes:

Right click to dissasemble tables, racks, filing cabinets (When holding the right tool to do so)
Left click to stunbaton, right click to harmbaton
Right click to tip cows
Right click to malpractice surgery
Right click to hold people at gunpoint (if youre holding a gun)
Why It's Good For The Game

Intents heavily cripple both the code and the UI design of interactions. While I understand that a lot of people will dislike this PR as they are used to intents, they are one of our weakest links in terms of explaining to players how to do specific things, and require a lot more keypresses to do compared to this.

As an example, martial arts can now be done without having to juggle 1 2 3 and 4 to switch intents quickly.

As some of you who saw the first combat mode PR, the context menu used to be disabled in combat mode. In this version it is instead on shift-right click ensuring that you can always use it in the same way.

In this version, combat mode also no longer prevents you from attacking with items when you would so before, as this was something that was commonly complained about.

The full intention of this shift in control scheme is that right click will become "secondary interaction" for items, which prevents some of the awkward juggling we have now with item modes etcetera.
Changelog

cl Qustinnus
add: Intents have been replaced with a combat mode. For more info find the PR here: #56601
/cl
2021-02-04 16:37:32 +13:00
Qustinnus
c14b26fce4 Re-balances quirk values to be less impossible to nuance (#56037)
negative quirks were impossible to create because there was zero nuance between how bad traits were, for example if you got light drinker and family heirloom, two relatively easy quirks to manage, you can get freerunner. This meant a ton of neutral quirks had to be neutral quirks because giving them even -1 points would make it too easy to get good traits. I've bumped up most quirks by x4 to allow for more nuance between what quirks are actually worth. With some of them being lowered (Like family heirloom and light drinker) as theyre not really supposed to be worth so much for so little.

quick log of changes for CB:
- Every quirk not mentioned had it's point value increased x4 (e.g. 1 -> 4, 4 -> 16)
- mime / clown fan is 2 points (change of -50% with this pr)
- musician is 2 points (change of -50% with this pr)
- depression goes from -1 to -3 points (change of -25% with this pr)
- nyctophobiagoes from -1 to -3 points (change of -25% with this pr)
- junkie from -2 to -6 points (change of 25% with this pr)
- frail from -2 to -6 points (change of 25% with this pr)
- smoker from -2 to -6 points (change of 25% with this pr)
- unstable -2 to -10 points (change of 25% with this pr)
2021-01-21 11:48:54 -05:00
Emmanuel S
3b733918a8 Disconnect and Reconnect messages for deadchat (#55395)
adds messages to deadchat when a client with a mob disconnects or reconnects
2020-12-14 06:53:15 +00:00
LemonInTheDark
3c218846ef Properly sanitizes the pixel scaling pref (#54592)
It was being rounded to 1, which breaks one of the options.
I've added a float sanitize proc that accepts a degree to round to, I've set it to 0.5 in this case.
2020-10-25 22:12:45 -03:00
Couls
3599368503 Keybinding Conflicts now wait 5 seconds before being announced (#54152) 2020-10-03 14:33:56 -07:00
Couls
6855fb9fa8 newly added keybinds no longer need savefile updates (#54050)
Keybinds check if there are any new keybinds when loading preferences now
If there's a conflict it doesn't bind the key to anything
2020-09-29 13:21:13 -03:00
ArcaneDefence
2eb6b1362e Separates mothpeople antennae into a mutant bodypart (#53928)
Removes the antennae part of the original moth wing sprites and adds them back as a mutant bodypart.
Seeing as they were then separated I made it a preference so that players can choose which antennae sprite they would like to have, instead of being restricted solely to the ones built into the wing sprite.
2020-09-25 08:47:00 -03:00
Jared-Fogle
78b79aef36 Block movement now locks turning, migrate old save files to Ctrl (#53871)
The block movement key now correctly locks turning like it used to.

Old save files are now migrated to Ctrl if they didn't bind it to anything before. This correctly replicates the old behavior.
2020-09-23 03:42:41 -03:00
Rob Bailey
533201a9f1 Smooth Movement: Resurrection: Resurgence: Revengeance 4: The Return of Smooth Movement: Smooth Edition Director's Cut (#52515)
Automatic glide size adjustment based on move delay.
Essentially a port of https://github.com/yogstation13/Yogstation/pull/8132 but that was mostly my code with some fixes.

Why again? well it turns out the recent byond fixes to glide size actually worked and solved the issues that were unsolvable.
https://file.house/0B3u.mp4
Glide size no longer incorrectly scales at fps, so it works as intended at any framerate with the only stuttering being normal byond suck stuttering.
2020-08-27 18:34:11 -07:00
nemvar
7f5b6e3b34 Adds a recommended fps option. (#52850)
Adds a recommended fps option. Setting fps to -1 now sets client.fps to RECOMMENDED_FPS.
Sets recommended fps as the default option for new players.
Current value for recommended fps is 40.
2020-08-11 22:25:29 -03:00
Ryll Ryll
b7ae6fc64d Refactors Temporal Scarring, changes how it works, removes longtimer quirk (#52688)
* changes temporal scarring

* hhh why is there no ckey

* note

* oops

* fixed
2020-08-10 16:29:27 -03:00
Kyle Spier-Swenson
59e666078f Robust savefile versioning (#52549)
tl;dr: savefiles now update all character slots when the version is bumped, and saves the updated savefile to disk. It also backups the pre-update version.  Later on we can look at just using this backed up version if the server's savefile version goes down, indicating a revert.
2020-08-04 19:34:11 +02:00
skoglol
d9b88f5f66 Fixes keybind fuckup (#52406)
* Fixes keybind fuckup

* Right fix
2020-07-21 22:05:56 +02:00
skoglol
c2c6227fc8 Bumps minimum savefile version, fixes some forgotten hotkeys (#52312)
* Bumps minimum savefile version, fixes some forgotten hotkeys

* Removes job flags
2020-07-21 19:45:24 +02:00
L
9ee2907a68 runechat emotes 2020-07-19 22:11:44 -03:00
AnturK
24abb2ebf9 Adds keybindings sanity. (#51627)
* Adds keybindings sanity.

* Whoops

* clears the key if it's unsed
2020-06-15 20:54:18 +08:00
Ryll Ryll
0f6496a55c [READY] Adds Medical Wounds: Bamboo Bones and the Skin of Your Teeth (#50558)
About The Pull Request

This PR adds medical wounds, new forms of injuries that people can suffer that cause debilitation and complications, and often require more than what can be found in a medkit to treat. But let's be honest, big complicated walls of text about medical changes make people's eyes glaze over easily- so I created a handy infograph to explain the basics!

Also there's a full guide here!

dreamseeker_2020-04-18_20-42-19.png

The infograph may not be fully up to date with the specifics of the PR's status, but it'll be updated along with major changes so people have something to use as a crash course for familiarizing themselves with how wounds function. I also have another infograph with all 9 of the possible initial wounds coming, and will be up soon. You can also find the longform design doc here with more info on the broad details, including descriptions of treatments: hackmd whee
What this does

There's a lot to cover, but here's the bullet points of the main features and changes:

    Getting lots of damage on a limb can result in wounds, with more damage causing worse wounds. These can range from dislocated joints and minor cuts to compound fractures and fourth degree burns, and can affect you in different ways depending on what bodypart they're applied to (namely with broken bones).
    You can damage individual bodyparts on clothing (only jumpsuits for now) through the use of lasers and sharp weapons. Bodyparts that reach max damage are considered "shredded" and will not apply any protection for that zone until it is repaired with cloth. If all zones are disabled, the entire piece of clothing is shredded and unwearable until repaired with 3 cloth. Jumpsuits give a small amount of wound protection, and since sharp weapons and lasers generally get extra wound bonuses against bare flesh, even a plain jumpsuit provides decent protection from a few laser shots or scalpel stabs.
    Lasers gain a powerful niche versus unarmored/lightly armored carbons! As noted above, lasers can shred clothing and burn away zones of jumpsuits in 2 shots each, after which the target's bare flesh is exposed (barring other clothing), and lasers excel at dealing burn wounds against uncovered skin. Think big, nasty charring!
    Bleeding is now totally limb based, and gauze is as well. Bleeding is also 95% cut wound based, meaning sharp weapons make you bleed rather than just having 40+ brute on a limb.
    The more wounds and damage you get on a bodypart, the easier it'll be to gain more severe wounds. Wounds are arranged from Moderate, to Severe, to Critical in increasing severity, and you'll generally have to suffer the lesser ones before getting the worse ones.

dreamseeker_2020-05-15_03-15-59.png
Above: Someone having an incredibly bad day from bloodloss

dreamseeker_2020-05-04_22-29-29.png
Above: Scars from healed wounds

ShareX_2020-05-15_06-55-20.png
Above: Actual combat involving someone's head getting cracked

Here's a quick, if non-exhaustive, list of things I have left to do before I consider it feature complete

Finish adding treatments for each wound type/severity (mostly surgeries/triage for critical wounds)
Add second winds for bad injuries to give the victim a chance to get away
Flesh out severe & critical injuries in general
Find sprites for the bonesetter, bone gel, and anything else that might be needed
Add the medical items for treating the less severe wounds to the station
Polish code and remove any redundancies I left behind

    Quick balance pass to make sure nothing is horribly abuseable

Why It's Good For The Game

Adds a flexible new system for representing damage on carbons with injuries that can be treated in different ways. Moderate wounds from getting toolboxed or sliced with a scalpel can usually be treated by a buddy or even by yourself with the right tools, but getting flayed with a fireaxe or a laser gun emptied into your bare skin may require extra attention or even surgery in bad cases! Also makes laser guns cooler and more like 40k lasguns that can flash fry people (cool!)

This should also make spessmen more resilient and harder to kill outright, while still adding consequences and complications to getting hurt. Wounds aren't immediately fatal, but they can do things like slow down interactions, deal damage over time through infections, and generally make you more fragile until fixed. They can also give you a "second wind" on being applied that gives you a small adrenaline boost (or whatever) to help disengage and escape immediate danger.
Changelog

🆑 Ryll/Shaps
add: Introduces medical wounds, new injuries that can happen to fleshy carbons when they sustain lots of damage on a bodypart. There's quite a lot of change here, but you can read the guide at: https://tgstation13.org/wiki/Guide_to_wounds and an extended changelog is available here: https://hackmd.io/l_FI9b3tSqa_woDadewJXA
add: Introduces scars and temporal scarring! Healing a wound leaves a scar behind that can be seen by examining someone twice rapidly, and if Temporal Scarring is enabled in character prefs, surviving a round with scars will save them to be granted at roundstart another round! Let your body tell stories!
tweak: Bleeding is now fully bodypart-focused, and 95% of bleeding comes from cut wounds from sharp weapons. Gauze is applied on a limb-by-limb basis, and helps staunch bloodflow rather than totally stop it. Notably, you no longer bleed just from having 40+ brute damage on a limb.
del: Organic bodyparts are no longer disabled at maximum damage, but are easier to cause wounds to
add: O2 medkits in emergency lockers have been replaced with new emergency medkits with basic tools for diagnosing and treating wounds and basic damage
tweak: Herapin now rapidly increases bleeding on all open cuts, rather than causing bleeding by itself. The more cuts on the target, the more it will affect them.
tweak: Neckgrab table slams now hit the targeted limb rather than just the head, with a large chance to dislocate or break a bone
tweak: Sharp weapons and burning weapons can now shred zones on jumpsuits, disabling protection on that limb. Damaged clothes can be repaired with cloth.
tweak: Slaughter demons now deal less raw damage, but gain the ability to cause cut wounds, which becomes more powerful with each attack on a humanoid but resets when bloodcrawling.
/🆑
2020-06-12 23:47:33 +12:00
Ryll Ryll
6bf874839a Adds new body type pref (#51058)
* tgdb

* tgdb

* Auto stash before cherry pick of "balance changes, enables burn surgery, various body improvements"

* moves unnecessary list out of client

* describes a var

* corrects
2020-05-29 14:25:01 -03:00
MrDoomBringer
3546417d7f Improves player retention by leveraging existing assets to incentivize higher average playetime (#51297)
* im a player ok that means i play

* FINE

* you win this time, shaps

* makes floyd happy

* Update code/__DEFINES/misc.dm

* i was just playing cyberboss dont be mad at me

* changes one character in a comment
2020-05-27 18:29:42 -04:00
LemonInTheDark
a08f2113a4 Unfucks smallscreen, removes my stupidity (#51266)
* slightly less SHIT FUCK SHIT FUCK

* Turns out we do need this

* YaYeet

* That should do it
2020-05-25 23:38:10 -03:00
spessman-007
ab84042f94 [READY] Improve spelling (#51134)
* Improve spelling

* Spell isn't, ain't, shouldn't, hasn't, wasn't correctly

Co-authored-by: NewSta <spessman-007@users.noreply.github.com>
2020-05-25 02:13:37 +08:00
LemonInTheDark
1614501d23 Datum view and some other things (#51208)
* Datumizes all uses of change_view

* Cleanup and helper procs

* tweaks values to match the format, hint hint, (value - 0.5) works just fine

* And there's the rest

* woop, braindamage

* and one more

* fuck you menu file

* woops

* we should apply that

* fixes tooltip drift, thank you goon coders

* you can shake but you can't zoom
2020-05-25 01:53:51 +08:00
Ryll Ryll
753af7bda5 Adds friendly commendations (#51217)
* with message

* remove message, neaten up
2020-05-25 01:49:12 +08:00
Rob Bailey
a522c199c7 change default pref for viewport fitting (#50749)
About The Pull Request

Changes the pref for fitting viewport to automatic. This not being the default has always confused me, and should resolve some teething issues widescreen is having.
Changelog

cl
tweak: Auto fit viewport is now the default, and everyone's setting for this has been reset to the default. If you don't know what this means, it's safe to ignore.
/cl
2020-04-30 10:31:11 +12:00
Bobbahbrown
6578479184 [READY] Runechat: 'Runescape-like' Chat Message Overlays (It's back!) (#50608)
* first-version

* let's do those recommendations first

* color moment

* reorganization, prefs

* certified layer moment

* virtual speakers BEGONNE

* remove naughty bits, better sizing

* gimme the message mode

* rename that pesky pref and hide chat bubbles

* exponential decay moment

* async moment

* fixes

* fixes

* the players have decided they don't want to hear themselves on radio

* Fix bug with holograms incorrectly rendering messages

* rohesie's suggestion

* Color tweaks

* hallucinating now shows message properly

* pref moment

* updates

* rohesie's suggestions

* fix moment number 5

* less smelly more epic

* unfix the fixes and refix them

* a conscious change

* return of the prefs
2020-04-25 15:48:10 -03:00
skoglol
0df6ed819b increases prefs bitflag sanitize to 24 bits (#49993)
About The Pull Request

We didnt increase the sanitize range when we started using 24 bit bitfields, kept defaulting you if you happened to use any of the newer settings.
Why It's Good For The Game

Fixes #48978
Fixes #49988
Changelog

cl Skoglol
fix: OOC preferences should now be saving properly again.
/cl
2020-03-17 12:23:35 +13:00
KomradeSpectre
05b64182a9 Adds an End of Round Sound Toggle Preference (#49805)
* how about yee(naw)

* Fixes an issue with order in preferences.dm and adds a null check in ticker.dm

* updates the savefile max ver and adds a condition for it in update_preferences

* Puts the call sound(round_end_sound) outside of the loop into a variable that we insert the reference into the loop.
2020-03-14 12:34:04 +01:00