Commit graph

2350 commits

Author SHA1 Message Date
fokkonaut 8440b051f7
forgot one thing 2019-03-12 19:36:33 +01:00
fokkonaut 3f628de592
Update menus_browser.cpp 2019-03-12 19:33:47 +01:00
def bbec3b1f2f Minor style fixes 2019-03-12 19:29:18 +01:00
def 6701000931 Rename Score board to Scoreboard for consistency 2019-03-12 19:00:47 +01:00
fokkonaut 5c1dfe6b65 Scoreboard headline for score can now be Time when on DDRace 2019-03-11 23:10:21 +01:00
Learath 6fa5d3fcce One color for all auth levels 2019-03-05 11:48:06 +03:00
Learath 548e9969b2 Add colors for authed players. Deprecates #1299 2019-03-02 13:50:33 +03:00
ChillerDragon 53e14d02f0 Remove unused graphics include in ghost.cpp 2019-02-22 11:27:25 +01:00
fokkonaut cf09fbd1ea Merge BW support into IsDDNet 2019-01-14 16:50:06 +01:00
fokkonaut fe4426b008 fixed ddrace score (time score) 2019-01-14 08:01:20 +01:00
fokkonaut 0e842359ad Add DDRace Score NETMSG 2019-01-14 08:01:20 +01:00
def f05c56d6ce Fix cl_dyncam_mousesens
should only have an effect ingame, not in menus or editor
2019-01-11 09:40:04 +01:00
def b3ca67e944 Minor code simplification 2019-01-10 15:54:42 +01:00
Dennis Felsing c16c50fa80
Merge pull request #1424 from ddnet/demo-markers
Demo browser: Show markers (fixes #329)
2019-01-09 08:54:42 +01:00
def faa3cc195d UTF8 nocase compare & use for chat TAB completion
- As suggested by Arseniy Zarche
- Also updated confusables to Unicode 12
2019-01-09 08:31:03 +01:00
def f9d9fee314 Demo browser: Show markers (fixes #329)
- Fetch Headers button
- Display Markers & Length columns
- Display footer info
- Don't rescan directory when not required
- Clean up code a bit
2019-01-09 08:25:03 +01:00
def 779a928faf CRaceDemo: Don't attempt to remove demo that hasn't been started 2019-01-07 14:36:17 +01:00
jupeyy 619a33a7d5 text kerning fix, add new text render flags for accurate positioning 2019-01-06 06:42:57 +01:00
def bcdec941da Update view target when spectating with chat open
Thanks to ReiTW for reporting and illustrating the bug:
https://www.youtube.com/watch?v=LKicYqtqJbQ
2018-12-29 00:05:05 +01:00
def 4217d5d536 Fix 5:4/4:3 skin prefix setting display 2018-12-23 22:58:41 +01:00
def bad0d53906 Move timing code to actual end of function 2018-12-23 22:58:37 +01:00
def 87fa394daa Add Christmas skin event for client 2018-12-23 22:58:30 +01:00
Dennis Felsing 0ad472df41 Make cort comparator conform to strict weak ordering
comp(p1, p2) == false was violated when both are nullptr
https://en.cppreference.com/w/cpp/named_req/Compare
2018-12-06 07:57:01 +01:00
Dennis Felsing 809afa265f Fix typo 2018-12-05 07:28:29 +01:00
Shengyu Zhang 464ef9e74b Fix crash when auto update is off
Since 2696ac134c, whether to include auto
update related code should only control by macro CONF_AUTOUPDATE.

This commit should fix #1374
2018-12-05 01:06:52 +08:00
def 6ad686eee2 Fix HUD (thanks to fokkonaut for reporting) 2018-11-24 22:57:15 +01:00
def 27865fdd89 Fix Race scoreboard ordering for times > 166 minutes (9999 seconds) 2018-11-21 21:26:05 +01:00
yangfl a1db76cdef Remove extra semicolons 2018-11-18 14:27:48 +08:00
def c0b60979ec style 2018-10-29 22:09:11 +01:00
Dennis Felsing 80f4b7934c
Merge pull request #1365 from Jupeyy/pr_bordercorner_fix
Border corner minimum fix
2018-10-29 22:08:43 +01:00
def faf388b853 Fix #1350 2018-10-29 22:03:57 +01:00
bors[bot] 1b0b36c6eb Merge #1316 #1341 #1349
1316: code improvement on gameclient.cpp r=def- a=Ryozuki



1341: Mark unused envelopes r=def- a=Learath2

Thought I'd do this one as well while looking at the editor code.

1349: Don't ignore CONNECT packets with data that we don't know r=def- a=heinrich5991

This specifically affects 0.6.5. Just treat them the same way as those
without any data.

Co-authored-by: Ryozuki <edgar@ryobyte.com>
Co-authored-by: Learath <learath2@gmail.com>
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2018-10-29 14:31:27 +00:00
jupeyy 95e8a031c7 style 2018-10-29 09:00:47 +01:00
jupeyy c666417fa0 less code 2018-10-29 08:44:55 +01:00
jupeyy 536bb4ad3d check minimum for width and height seperatelly 2018-10-29 04:21:35 +01:00
fokkonaut 1082ba77b0 increase max score that can be displayed in scoreboard 2018-10-11 22:19:26 +02:00
Ryozuki 09c82fba7a indent 2018-10-03 07:40:50 +02:00
Ryozuki 5c51e3b80d change to c style casts 2018-10-02 20:52:21 +02:00
Ryozuki be3cfe88e6 fix 2018-10-02 20:45:44 +02:00
Ryozuki 0a91fef8c8 fix tabs 2018-10-02 14:36:55 +02:00
Ryozuki e21a08f700 another improvement 2018-10-02 14:35:50 +02:00
Ryozuki 7efe2b436e code improvement on gameclient.cpp 2018-10-02 14:32:59 +02:00
fokkonaut 3240f6fbc5 fix bw support 2018-09-28 18:27:51 +02:00
Dennis Felsing a2e3496005
Merge pull request #1220 from heinrich5991/pr_ddnet_ui_skinprefix
Add some UI for the skin prefix stuff
2018-09-20 08:41:20 +02:00
heinrich5991 08b885dbbb Just render the skin prefix suggestions line by line
For three items, it's not worthwhile to put two of them in the same
line.
2018-09-20 07:50:17 +02:00
heinrich5991 13e3872dca Add clear button to skin prefix edit box 2018-09-20 07:48:14 +02:00
heinrich5991 9ff8b6e2df Factor out clear button from four different places 2018-09-20 07:43:05 +02:00
def ff8e97fbf8 Fix cl_nameplates_own with antiping on when spectating 2018-08-30 22:53:28 +02:00
Dennis Felsing d2dcb4fe84
Merge pull request #1270 from Jupeyy/pr_nan
Don't update particles, if no time passed
2018-08-24 10:14:38 +02:00
Dennis Felsing 13aa154d47 Revert "Rewrite stopper code a bit"
This reverts commit 4ee5c5a781.
2018-08-24 09:34:54 +02:00
jupeyy 6c10eb13c0 Don't update, if no time passed 2018-08-24 05:56:33 +02:00
Dennis Felsing d60b0db632 Revert "Add mapbug "stoppers-passthrough@ddnet.tw""
This reverts commit 25e86851d3.
2018-08-22 08:33:21 +02:00
bors[bot] 46bdc7af3e Merge #1252
1252: fix #1226 r=heinrich5991 a=fokkonaut



Co-authored-by: fokkonaut <35420825+fokkonaut@users.noreply.github.com>
2018-08-21 17:29:31 +00:00
fokkonaut 7a4fa97ef0 fuck this no-space-convention 2018-08-21 18:29:25 +02:00
fokkonaut 533d4fe574 allow for non-vanilla aswell and fixed some stuff 2018-08-21 18:27:34 +02:00
Dennis Felsing f8e1056ea4
Merge pull request #1258 from heinrich5991/pr_ddnet_stopper_fix
Fix stoppers while retaining backward-compatibility
2018-08-21 09:06:22 +02:00
Dennis Felsing e2eb4a66dc Add Filter for connecting players (fixes #1263) 2018-08-21 09:03:48 +02:00
heinrich5991 25e86851d3 Add mapbug "stoppers-passthrough@ddnet.tw"
This can be set for maps that rely on actually passing through stoppers.
2018-08-16 17:54:55 +02:00
heinrich5991 4ee5c5a781 Rewrite stopper code a bit
Remove the whole copy-and-paste mess.

A seemingly ineffective and apparently code block has been removed.
2018-08-15 17:47:07 +02:00
fokkonaut 53e4bd44b7 fix #1226 2018-08-13 20:54:01 +02:00
def 0518769500 fix cl_show_nameplates_own with antiping off ingame 2018-08-03 23:40:03 +02:00
Jupeyy d7bb03ee19 don't render all border all the time 2018-08-02 18:26:12 +02:00
heinrich5991 5c4e819e44 Use str_startswith, str_endswith instead of ad-hoc implementations 2018-07-26 14:18:23 +02:00
fokkonaut 32b6bd44f6 heinrich styling 2018-07-25 23:36:52 +02:00
fokkonaut e621a4a8a2 fixed, thanks heinrich 2018-07-25 22:41:24 +02:00
fokkonaut 59272476d6 fixed #1225 2018-07-25 21:14:10 +02:00
fokkonaut 63f2a091b6 vanilla skins only list now only shows vanilla skins 2018-07-25 14:13:07 +02:00
heinrich5991 6b1a037415 Add some UI for the skin prefix stuff
This displays four buttons below the edit box, one for resetting the
skin prefix, and the other three for activating the shipped variants
"kitty", "coala", "santa".

The "none" string is translatable, the variants names are not because
they correspond to file names.
2018-07-25 08:16:57 +02:00
Bojidar Marinov d08f03fecf
Changing vanila skins option no longer requires restart
Fixes #1216
2018-07-24 19:56:09 +03:00
fokkonaut b8b97eb740 added skin prefix (#1218) 2018-07-24 17:26:39 +02:00
yangfl 81a39c229b Fix typo 2018-07-10 17:29:02 +08:00
heinrich5991 925aff21d4 Fix all the header guards and adjust the script a little 2018-07-06 16:11:38 +02:00
bors[bot] 7c3e4e7f09 Merge #1187
1187: fix projectiles not rendering on mods based on ddnet r=heinrich5991 a=ZombieToad

for some reason the client doesnt render extrainfo projectiles if the gamemode wasnt ddnet

Co-authored-by: ZombieToad <25847476+zombietoad@users.noreply.github.com>
2018-07-06 12:27:33 +00:00
ChillerDragon 0ebf7b614d Oop! forgot one 2018-07-06 11:37:33 +02:00
ChillerDragon 4e9eac432c Better button id for dummy settings (thanks to deen) 2018-07-06 11:24:57 +02:00
ZombieToad 712fca8adc fixes
thnx to Hey, Fuck you!
2018-07-04 04:35:06 +01:00
ZombieToad 5e723f6199 fix projectiles not rendering on mods based on ddnet
for some reason the client doesnt render extrainfo projectiles if the gamemode wasnt ddnet
2018-07-04 04:19:36 +01:00
def daf83470cc Add cl_nameplates_own for demo recording 2018-06-26 22:30:28 +02:00
ZombieToad 7da716e3f0
fix server browser bug
ddnet client has the server browser while online
2018-06-17 03:26:23 +01:00
ZombieToad 13722d849d
fix server browser bug
it loaded favourite servers into ddnet serverlist if you used add_favorite or remove_favorite
2018-06-17 02:47:18 +01:00
Dennis Felsing 08c45ced0f
Merge pull request #1133 from ChillerDragon/ConsolePages
Add commands for switching pages in console
2018-06-06 09:48:00 +02:00
ChillerDragon 6564b93a35 Fix unwanted dummy fire
If the latest fire input and the current differ in any way it causes firing.
So if you switch dummy after hammerfly was used it causes a weaponfire.
This unwanted fireing caused many unlucky fails for me already.
So i swap the fire status on dummyswapping so the server doesn't see any difference even if hamemrfly was used.
2018-06-04 11:06:54 +02:00
ChillerDragon 8a761bfedf Add commands for switching pages in console
For now they were just hardcodet on page up and down keys.
The new command allows it to bind it for example on the f-keys for laptop users.
2018-06-03 11:48:08 +02:00
ChillerDragon e31f53f651 Fix ui for low mousesens 2018-05-01 17:51:36 +02:00
Dennis Felsing e561498617 fix... 2018-04-25 14:12:49 +02:00
Dennis Felsing 96ecbfcfa8 Add cl_show_hook_coll_always 2018-04-25 12:03:27 +02:00
bors[bot] 73a65a7026 Merge #1116
1116: Don't send buffer cmds to non OpenGL 3.3 backend r=def- a=Jupeyy



Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2018-04-15 18:00:54 +00:00
Jupeyy 5b4a889ae0 quad positioning to center of text 2018-04-15 19:35:56 +02:00
bors[bot] d77d18c98a Merge #1114
1114: Some text positioning r=def- a=Jupeyy

To be clear, the entity text was meant to be a bit higher, so the text of the overlay is not overwritten("FROM", "CFROM")?

Because there was -4.f added to the y coordinate. Atleast it looks pretty much the same as the old renderer now.

Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2018-04-11 10:27:07 +00:00
Jupeyy 8cc0de8d31 Some text positioning 2018-04-11 12:19:30 +02:00
bors[bot] 73cc3a147b Merge #1110
1110: Fix killmessage flag render r=def- a=Jupeyy



Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2018-04-09 20:28:24 +00:00
Jupeyy 2a6050eaf4 use killer team not victim 2018-04-09 22:11:51 +02:00
heinrich5991 f8277267a0 Remove mem_alloc and mem_free, use standard C functions instead
Replace `mem_free` by `free`, and `mem_alloc` by `malloc` or `calloc`
(the latter one being used to allocate a zeroed array of elements,
sometimes, this makes a call to `mem_zero` superfluous).

This results in having to remove `mem_stats` which previously recorded
the number of allocations and their size that the Teeworlds code did
directly.

Remove OOM handling in `src/game/client/components/binds.cpp`.

Remove needless copying in the CSV code in
`src/game/client/components/statboard.cpp`.
2018-04-09 11:56:39 +02:00
Jupeyy fbaedff1e6 reset color for the gameflags 2018-04-05 20:46:22 +02:00
Dennis Felsing 30588918c4
Merge pull request #1100 from Jupeyy/master
More GUI text positioning fixes
2018-04-04 08:40:22 +02:00
Jupeyy c7114e734c more ui text positioning fixes 2018-04-04 02:40:30 +02:00
def c8c4fd5617 Fix reconnect timer display... 2018-04-03 21:32:21 +02:00
Dennis Felsing dbc8321c56
Merge pull request #1098 from Jupeyy/master
Some text related fixes (color, positining)
2018-04-03 19:11:19 +02:00
def 07460ede9e cl_control_dummy -> cl_dummy_control 2018-04-03 18:12:27 +02:00
Jupeyy 1a74d8c039 ui fixes: text positining 2018-04-03 17:41:11 +02:00
Dennis Felsing ed33557a97
Merge pull request #1081 from Jupeyy/master
New buffer system and text renderer to support buffering of hud, text and map components, that are displayed ingame
2018-04-03 10:12:09 +02:00
Jupeyy 375b127f4e style fix 2018-03-21 16:02:11 +01:00
Jupeyy 887bcb52ff add window event listener for the client 2018-03-21 15:54:51 +01:00
Jupeyy 2cbb8af75b add window resize event, and fix some ui things 2018-03-21 15:53:29 +01:00
Jupeyy 71a4a20812 team name position fix 2018-03-15 03:59:57 +01:00
清歌 c976e6d017
Provide more controlable command for dummy
When g_Config.m_ClControlDummy id 1, we can control dummy by toggle g_Config.m_ClDummyJump or another to 1 or 0.
2018-03-14 20:14:18 +08:00
bors[bot] c65ffeb4ae Merge #1082
1082: Fix a bug with name bans r=Learath2 a=heinrich5991

Overlong nick names could be used to circumvent name bans.
2018-03-14 02:00:42 +00:00
heinrich5991 d7f6cf2892 Fix some system.c insanity
`str_utf8_isspace` now returns true if the passed code point renders as
a space, instead of when not.

Add `str_utf8_trim_right`, use this function and
`str_utf8_skip_whitespaces` in the server.

Add tests for the three functions
2018-03-14 02:27:15 +01:00
Jupeyy c1a962b870 add ui fixes to work with new text renderer 2018-03-13 21:59:07 +01:00
Jupeyy 0930a3b7de buffer quads, and use the new backend system (+ fix a bug when
rendering)
2018-03-13 21:57:46 +01:00
Jupeyy 790201f751 add buffering for the ingame visible components of the hud 2018-03-13 21:56:37 +01:00
Jupeyy db48a03898 add text buffering for nameplates and killmessages 2018-03-13 21:55:47 +01:00
Jupeyy 6919a9da40 add new sprite functions for easier sprite quad buffering, and add this
to teerendering
2018-03-13 21:53:54 +01:00
Jupeyy a59d7401b5 add buffering for dmg indicator, map items, particles and players 2018-03-13 21:52:44 +01:00
Jupeyy 59f9d021ce buffer ingame chat 2018-03-13 21:50:49 +01:00
Jupeyy 62c3074c88 add new text renderer engine to support text buffering, cursors, text
marking and less character texture updates
2018-03-13 21:49:07 +01:00
Jupeyy ced0ea3f82 set the gfx refresh rate limit higher for the console 2018-03-02 03:29:02 +01:00
Dennis Felsing 03792c1d0f
Merge pull request #1047 from Learath2/dd_pr_ctrldelete
Add ctrl-delete to chat. Closes #1032
2018-02-22 21:58:51 +01:00
Dennis Felsing 4cebe86ad8
Merge pull request #1049 from Learath2/dd_pr_scoreboardclan
A little more space for clan name. Fixes #724
2018-02-22 21:58:10 +01:00
Learath 7d1aaa735a A little more space for clan name. Fixes #724 2018-02-22 21:17:10 +01:00
Learath 4031e15fc8 Remove extra conditional
Stricter scope on temporary var.
2018-02-22 20:48:47 +01:00
Learath 20cac1c2bb Fix dyncam confusion. Closes #783
Remove "vanilla" dyncam toggle.
2018-02-22 20:40:14 +01:00
Learath 1f2e398819 Add ctrl-delete to chat. Closes #1032 2018-02-22 20:11:56 +01:00
Learath2 61f0461d46 Style 2018-02-13 17:15:16 +01:00
Learath2 8cfebaa0b2 Fix #1031 2018-02-13 03:45:43 +01:00
yangfl 1620fc9b0f Fix typo 2018-02-07 16:10:40 +08:00
def 151da9af97 Remove Emojis 2018-01-25 20:03:18 +01:00
Dennis Felsing fac054275c
Merge pull request #992 from Jupeyy/master
RAM usage reduction for map buffering and foreground layer count fix
2018-01-22 20:44:56 +01:00
Jupeyy 15cc8e2dc8 use type that can hold any pointer size 2018-01-16 10:18:14 +01:00
Jupeyy 99bb1cc7db add parentheses 2018-01-16 09:41:06 +01:00
Jupeyy e9a2fc1d6e reduce RAM allocation for map buffering, and fix forground layer count 2018-01-16 09:35:28 +01:00
def 949bb2d9fc Fix crash in emoji on map change, clear emojis 2018-01-15 19:08:51 +01:00
def 7ae5f33bdd fix cl_show_direction (thanks jupeyy) 2018-01-14 20:51:02 +01:00
def c8d4b605bf Improved cl_showfps, don't need average/current anymore 2018-01-14 17:21:50 +01:00
def 4682eaff56 Add option to turn off emojis (fixes #936) and add options in settings menu 2018-01-13 10:37:24 +01:00
def 484325f493 Fix nameplates with antiping (fixes #943) 2018-01-12 19:24:44 +01:00
def 77a999c0b1 Add cl_showemotes 2018-01-05 20:17:22 +01:00
def f1af7cff98 Still render chat input even when chat is disabled 2018-01-05 20:11:05 +01:00
def 3025ed35c9 Introduce cl_show_chat_system
Set to 0 to disable server messages
2018-01-05 20:10:39 +01:00
Jupeyy 9228e632e9 remove spaces 2017-12-03 11:50:43 +01:00
Jupeyy e314802c9c Initialize m_LastLoad in Constructor and reset it when a new map is
loaded(%current% can be loaded directly)
2017-12-03 08:01:17 +01:00
bors[bot] bad105c5e4 Merge #953
953: Overhauled job system r=Learath2 a=heinrich5991

The engine now takes `std::shared_ptr<IJob>`, this will ensure the
appropriate lifetime of the given parameters, it also allows for proper
destruction. Remove the now obsolete `IFetcher` interface and `CFetcher`
class.

Also adds some locks to `CUpdater`, previously it didn't have any locks
at all.
2017-11-27 23:34:54 +00:00
bors[bot] 41f6140179 Merge #945
945: Don't use nonstandard `#pragma pack` r=Learath2 a=heinrich5991

It's not needed in that place anyway.
2017-11-26 16:27:50 +00:00
bors[bot] f9e0b6b3fe Merge #931
931: Add Speedup tiles correctly at the border creation & remove tile layer extension restriction & fix the LastIndex buffer initlialization & setup non mipmap textures up correctly(texture completness) r=heinrich5991 a=Jupeyy

Allows speedups to be drawn on extended range(out of map range) too.
2017-11-26 13:32:05 +00:00
heinrich5991 94acac91a0 Overhauled job system
The engine now takes `std::shared_ptr<IJob>`, this will ensure the
appropriate lifetime of the given parameters, it also allows for proper
destruction. Remove the now obsolete `IFetcher` interface and `CFetcher`
class.

Also adds some locks to `CUpdater`, previously it didn't have any locks
at all.
2017-11-23 15:47:38 +01:00
heinrich5991 be80ccb7d6 Don't use nonstandard #pragma pack
It's not needed in that place anyway.
2017-11-18 00:24:44 +01:00
heinrich5991 ef0c1b266f Fix 3 / 2 using integer division 2017-11-03 22:10:04 +01:00
bors[bot] 5528cde5f6 Merge #869
869: Complete rework of the ghost and race recorder r=Learath2 a=Redix

This PR fixes a lot of issues with the ghost and race recorder, introduces a new ghost file format and implements some pretty useful features.

**A quick overview:**
 - When you cross the start line multiple times, both (ghost and recorder) will only restart if it is a non-solo server
 - If available, both will use the race timer to recognize the start instead of searching for the start line
 - Fastcap support for both
 - The recorder immediately starts when the Tee spawns, so the preparation steps (which are quite important for speedruns) will be included in the demo. If you do not cross the start-line within 20 seconds, it will stop the demo until you really start.
 - Better ghost menu (colors, reloading, deleting and saving ghosts)
 - The ghosts are more resistant against lags (old ones were sometimes completely useless due to small lags)
 - New ghosts files are significantly smaller
 - Cleanup, bugfixes..


**About the new ghost format (version 4/5):**
This format is used by Teerace for over a year now. The code for handling the binary files was moved to the engine. It includes an auto updater which creates a backup of all ghosts and converts them to the new format afterwards. The major differences from the format used by DDNet right now (version 2), are the ability to store multiple types of data, the usage of delta-encoding and a more portable header.

For whatever reason, the ghost stores values for every predicted tick, but without tick information, so lost snapshots can make them unusable. The new code uses the original values from the snapshots including ticks but it can also handle the old ones without. Since hardly any server uses the high bandwidth option this practically reduces the file size.

Like the demo recorder the ghost recorder directly stores the data to a file (every 50 snapshots) instead of writing the whole file at the end of the race. Indeed this can be changed with only a few lines if the old behavior is preferred.

The updater can handle version 2 (DDNet) and 3 (old teerace format, only slightly different from version 2) files. The updating already happens when the files are scanned for generating the list in the menu and not only when you activate them. The change from version 4 to 5 was only needed due to a bug in the implementation, the ghost loader can read both.

Some numbers about the file size: (map: hotrun, both about 30 seconds)

 - Old ghost: 30.4 kB (converted: 10.7 kB)
 - New ghost: 5.4 kB


**One thing about the race recorder:**
The old implementation compared the new file only with the first file it found for the particular map. The new one compares with all related demos and deletes them possibly, so that only the best demo is left. Since DDNet can also store the demos without name, this might also delete demos from other players, that you might have in your directory.
To prevent this I at least check whether the demo contains the player name if `cl_demo_name` is on. 
In my opinion the better solution would be to remove `cl_demo_name` and always use the player name.
2017-10-30 20:27:10 +00:00
Redix de1c0cf24d Fixed several issues with the ghost (thanks to Learath2) 2017-10-28 14:23:24 +02:00
def 04820b44f8 Simplify emoji 2017-10-28 09:08:17 +02:00