01:40 < bridge> hoi I heard, that if I open a TAS server, so a server for botting, it'd get banned by the masterserver, is there a reasoning for that? 01:41 < bridge> Avoiding trace 01:41 < bridge> Oh, mb I misread TAS "server" to TAS "player" 01:41 < bridge> lmao 01:41 < bridge> I guess to avoid having people running TAS? 01:42 < bridge> yeah we are so good in avoiding that 01:42 < bridge> How bad is it really? 01:42 < bridge> On a scale of 10? 01:42 < bridge> go to linear, check top5 01:43 < bridge> or tutorial 01:44 < bridge> Huhh, players with really low activity and less points to be called a pro 01:44 < bridge> Wouldn't these names be easily flagged as sus? 01:44 < bridge> a 3 way rank 1 tie on a 2 minute map is indeed "sus" 01:44 < bridge> :banhammer: 01:45 < bridge> so I'd argue to give the sus people a server and let them play there instead of legit servers 01:45 < bridge> we also have rus-block servers, for exactly that reason 💀 01:45 < bridge> Is there a player trust system, where based on logical outcomes of a player's activity, skill, number of finishes and interactions with other players could determine that that player is legit? 01:46 < bridge> Is there a player trust system, where based on logical outcomes of a player's activity, skill, number of finishes and interactions with other players could determine that that player is legit? (alongside with hardware or server-side info for comparision) 01:46 < bridge> Ngl i would side in a small trust system more, but you do you 01:47 < bridge> I am still in favour of accounts and antibot and stuff 01:47 < bridge> it's more like a honeypot 01:48 < bridge> afaik there are already such servers, and they are not getting banned. Are you sure there is such a rule? 01:50 < bridge> F.e, anytime a new rank with the same, or higher than r1 time is being uploaded to the database, first it goes through a "valid player" checkpoint where through the overall aspects of what a valid player can be will be measured against it. If it fails, flag it as sus and do not upload it. Otherwise, go with the next step, which would be verifying the rank by segmented identification. 01:50 < bridge> If for example we have a rank that matches time with two or more other demos (max 5 for simplicity), the first and last X seconds (x means amount) will be used as material to compare values. If the values being compared between the first and last X seconds are over 90% accuracy or whatever percentage you wanna use, then flag it as sus. Otherwise allow it, under a flag for human review requirement. 01:51 < bridge> afaik there were "HvH" servers that did get banned 01:51 < bridge> This both requires plenty of current TAS records to be measured with this "system", but I suggest to always measure new ones alongside it to catch false-positives 01:52 < bridge> but that's why I am asking here, is there such a rule, can I get permission? Later with an account system you can flag such players as in "TASsed a record" 01:52 < bridge> they might've been banned because they advertised a wrong player count or smth 01:53 < bridge> Wanna use some algorithm to detect AI runs? Hopefully in real time? 01:53 < bridge> so you want to incentivise players to not play under their correct name? Also, people can ofc as always use names of others 01:53 < bridge> its in the masterserver ruless 01:53 < bridge> the wrong player count or tas servers? 01:53 < bridge> > 7. Do not host public servers that encourage or facilitate cheating, including servers meant exclusively for TAS runs. 01:54 < bridge> https://ddnet.org/rules/master/ 01:54 < bridge> Is this restriction enforced by a gateway where contact with the masterserver owner is required, or anyone with a host is able to publicize their own servers to masterserver regardless of this rule? 01:55 < bridge> would be a server, where you could manually create a TAS without external tools, be considered cheating? 01:55 < bridge> `TAS` 01:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1389031637504757790/image.png?ex=68632405&is=6861d285&hm=e7b10daaf2ecb2cda5b649a1d453947bc278ffa858d4e0820c1f29959fbe3638& 01:55 < bridge> I want to point out that this is far from a "mall trust system". every step you explained is either non-trivial, ambiguous what you mean, or easily bypassed depending on the interpretation 01:56 < bridge> like it's the gameplay mechanic of the server, not meant to encourage cheating, but to test what's theoretically possible 01:56 < bridge> I would say yes. The intention for upholding a server is for creating a TAS, which would violate that very rule Teero just mentioned. 01:56 < bridge> is the "Tool" in "Tool assisted speedrun" then the server? 01:57 < bridge> it'd be even hard to say it's a TAS at all 01:57 < bridge> not cheating, but it obviously falls under 01:57 < bridge> > servers meant exclusively for TAS runs 01:57 < bridge> You fail to point out one thing. Whatever I mentioned so far, is an idea. A step in the right direction. This is the space to discuss ideas for a future implementation that are inspired by such ideas. 01:57 < bridge> Without ideas like mine, this will not happen 01:57 < bridge> if I set server speed to 1 tick per second for example 01:57 < bridge> I wrote it because you prefixed it with 01:57 < bridge> > Ngl i would side in a small trust system more, but you do you 01:58 < bridge> Well, after all it's my idea, ofc I stand by my own ideals 01:58 < bridge> Wouldn't you with yours? 01:59 < bridge> that's why I am asking before I implement anything (: 01:59 < bridge> what you gave was a rough idea, nothing specific and nothing particularly new afaik 01:59 < bridge> the point of my message was that what you describe is highly complex, not "small", as you described it in the earlier message 02:00 < bridge> Eh, more like a core foundation for the Tool 02:00 < bridge> I felt like you underestimated the complexity, which is why I felt the need to write something 02:00 < bridge> what I could do is open a "hub" server, which then proxies you to the TAS server, circumventing this rule, because the TAS server is not registered (just to post a stupid idea9 02:00 < bridge> obviously yes I'd say 02:00 < bridge> what I could do is open a "hub" server, which then proxies you to the TAS server, circumventing this rule, because the TAS server is not registered (just to post a stupid idea) 02:01 < bridge> No shit it's complex, if you didn't mention it to me rn, I wouldn't have lost my shit 02:01 < bridge> -.- I know. 02:01 < bridge> yy that's fine 02:01 < bridge> @patiga Not everything has to be complex. An idea can be simple, a plan can be as difficult as you want it to be. An implementation, has to be perfect. 02:02 < bridge> - Cellegen, 2025 02:02 < bridge> +1 that this sounds stupid and obviously doesn't align with the rules ^^ 02:03 < bridge> Or another exploit, is to send all of the info from the registered server to the TAS server, emulating the entire process. 02:03 < bridge> going to host my own masterserver with blackjob and hookers /s 02:03 < bridge> going to host my own masterserver with blackjack and hookers /s 02:04 < bridge> it does not *encourage or facilitate cheating* and the server isn't *exclusively* meant for TAS runs 02:04 < bridge> sooooo 02:04 < bridge> technically 02:04 < bridge> but common sense says no ig 02:04 < bridge> I am pretty sure the intend is clear and the devs have the last word :banhammer: 02:05 < bridge> devs?? devs have no rights 02:05 < bridge> You learn this the hard way 02:05 < bridge> the dev, like deen 02:05 < bridge> and heinrich 02:05 < bridge> and snail 02:05 < bridge> and all the other ones 02:05 < bridge> basically only murpiii xd 02:05 < bridge> @teero777 what you questionmark me 02:06 < bridge> I asked? What should I learn the hard way? Not to ask difficult questions? If I get banned for this from ddnet dc I'll be gone forever 02:06 < bridge> why not. i don't understand that statement 02:06 < bridge> so i questionmark 02:06 < bridge> Not towards you, but as for anyone reading it 02:06 < bridge> imo this doesn't need to be asked. it is quite obviously only for circumventing the rules. circumventing rules is not good conduct, which is also a stated possible ban reason 02:06 < bridge> Not towards you, but as for anyone reading it 02:06 < bridge> ... can be towards you too 02:07 < bridge> where are the rules written? My question would have been answered just by linking "look here at docs" 02:07 < bridge> (I mean not asked further with pings or smth like that, questions here are ofc totally fair play) 02:07 < bridge> https://ddnet.org/rules/master/ 02:07 < bridge> Teero linked them Ngl i would side in a small trust system more, but you do you 02:07 < bridge> You don't understand from a guy who's ideas from years to come has been rejected until Ryo decided to implement them? 02:07 < bridge> huh failed copy 02:07 < bridge> The only people I have true respect for are a few in here 02:07 < bridge> but Teero also linked them before 02:08 < bridge> You don't understand from a guy who's ideas from years back has been rejected until Ryo decided to implement them? 02:11 < bridge> Some older devs in here know that most of my ideas got rejected due to not talking their language. I didn't understand programming back then but the ideas were solid, it's just that they expected me to serve their implementation on a 5* silver plate with pre-coded systems ready to go alongside with 50 pages of documentary on how this will not affect performance. 02:11 < bridge> It kinda felt like this as a casual person, asking for small, and seemingly not complicated features to implement. 02:11 < bridge> @essigautomat just make a server without rules on gameplay. so it isn't advertising anything nor is it strictly for meant for TASes 02:12 < bridge> i mean every server would be violating rule 7 if it meant deleting all cheated runs immediately 02:12 < bridge> then you'd need to ban ddnet officials first 02:13 < bridge> yea, kog coming right after 02:13 < bridge> Even today, there is not such a pool EVER to have a feature be recommended to you all, since no one in their right minds would like to force their community to vote for something that might affect the playerbase, be it for the better or worse. 02:13 < bridge> Meaning my words about ideas on what to implement, including Map Editor changes too were either not understandable, too complicated or just simply not ideal for them to implement. Even Heinrich started to get annoyed with me about recommending changes, so I stopped caring for improving DDNet entirely. 02:13 < bridge> Is it clear now @teero777 ? 02:13 < bridge> I guess I _could_ create an "Anarchy" server ... 02:14 < bridge> i was about to say 02:15 < bridge> I though DDNet is anarchy 02:15 < bridge> yes but i don't know how that links to your original statement and i don't really care tbh 02:15 < bridge> I'd still moderate profanity and content 02:15 < bridge> That you learn the hard way to argue with the devs, who are the ones to say if it ever gets implemented or not. 02:16 < bridge> Your ideas will not get anywhere, since it's not THEIR ideas. 02:16 < bridge> but assa is a dev... 02:16 < bridge> Thats why speeders were added 02:16 < bridge> A dev or not, whoever knows this, should also know not to ask it. 02:16 < bridge> A dev or not, whoever knows this, should also know not to ask it or mention it. 02:16 < bridge> I did way more :pepeW: 02:17 < bridge> YOU WILL BE KNOWN AS THE SPEEDER GUY 02:17 < bridge> voice this 02:17 < bridge> Konsti had to literally convince Deen to care for implementhing his Weapons shield, and he even asked me to do art for it, cuz without it it would be declined. 02:18 < bridge> Essentially, without begging you are not getting shit. 02:18 < bridge> Without implenting, you are not getting shit 02:18 < bridge> except you open a github issue, then discuss the feature, implement it and make a pr. 02:18 < bridge> it's not that hard 02:18 < bridge> Even with mentioning ideas, you'll be getting that shit years later when a dev cares for it 02:18 < bridge> If I want something implement I have to argue with other devs to accept the change. It can be easy (like with speeders) or impossible (like basic editor math) 02:19 < bridge> Because to avoid responsibilities, you push it to those who care. 02:19 < bridge> I learned this from devs who don't care and say "just write it to github, idgaf" 02:19 < bridge> Then that same person just declines it for X amount of reasons. 02:19 < bridge> Yes, it didn't just happened to me :kek: 02:20 < bridge> 10 years were a looong time 02:21 < bridge> I see a similar thing in (not ddnet) map review. I wouldn't insta decline something if I think the feature might be usefull, but is implemented in a dogshit manner. Like let the people work on it 02:21 < bridge> As I am now a fellow Rust beginner (shut Ryo), working on my own project on Github and dealing with issues, this is literally how it goes 02:23 < bridge> Obv with math, it's never that easy. I hate math as much as the other kid next door so I get it 02:23 < bridge> But with like changes that were once present in a client, that was once open sourced? And others say to "get the source"? 02:23 < bridge> What to say? 02:24 < bridge> K client's camera smooth movement feature was a fucking long time being awaited till now 02:24 < bridge> The math one is the only one I am stalty about xD the reasoning was, that sooner or later sb would want to add more complex math so we reject basic math. 02:24 < bridge> 02:24 < bridge> And I was thinking like: Why can't we accept basic math then and reject complex math if anyone ever does the PR? 02:25 < bridge> I would let it slide if it would be for "better performance" to choose complex ones, but if the simple ones yield the same amount of computing cycles while being more understandable to the eye, you always choose the simplier one no? 02:26 < bridge> Even if it's about having the compiler write smarter instructions, would it be worth it? I ask this all the time xd 02:26 < bridge> in the end why would I touch this feature if it works, allocate your time better 02:27 < bridge> cellegen this is not about math in code. this was about math expressions in the text boxes of the editor 02:27 < bridge> Yeah... in my case, the reason behind it would be insanity 02:27 < bridge> So? 02:28 < bridge> I don't get what you want to point out 03:26 < bridge> why argue guys be friends 04:34 < bridge> hi louis 04:38 < bridge> li houis 04:56 < bridge> <23rrenes_> si louih 05:15 < bridge> li ouih 10:14 < bridge> morning 10:16 < bridge> morning Makefile enjoyers and others 10:16 < bridge> oh its drama monday? 10:16 < bridge> or was drama sunday 10:17 < bridge> https://www.youtube.com/watch?v=capJ9NLuW9E 10:17 < bridge> coding motivational music 10:18 < bridge> good morning ^^ not really drama I'd say 10:19 < bridge> i used to drink coffee with milk 10:19 < bridge> but not anymore 10:19 < bridge> just coffee, without anything else 10:19 < bridge> like old men 10:19 < bridge> im old 10:19 < bridge> altho this way i can rly sabour the coffee, and easier to tell good from bad 10:20 < bridge> and now i can be smug about real coffee drinkers and others 10:20 < bridge> :owo: 10:33 < bridge> I am just addicted to coffeine, like a lot of adults. Give me the strongest black coffee you got :owo: where does that heart pain come from? 10:34 < bridge> 🍵 12:14 < bridge> Heart pain? Just drink more, at some point the Tinnitus will be louder trust! 12:15 < bridge> Heart pain? Just drink more, at some point the Tinnitus will be louder and hurt more than your heart trust! 12:49 < bridge> which is a feature in tclient!!! 13:05 < bridge> https://www.makedeb.org/ 13:05 < bridge> I hope you improved a bit on my shady but robust implementation xD 13:06 < bridge> i used an external library 13:06 < bridge> which i had to bring back from the dead but 13:06 < bridge> https://github.com/SollyBunny/tinyexpr 13:07 < bridge> i doubt most of it used, but it was easier than writing a basic expression parser lmao 13:09 < bridge> @robyt3 its ready for review again >< 13:27 < bridge> Idk, but I mentioned rust 13:27 < bridge> Also gom ☕ 13:35 < bridge> somethings happening with my ddnet-libs 13:35 < bridge> ``` 13:35 < bridge> git submodule update --init --recursive 13:35 < bridge> fatal: transport 'file' not allowed 13:35 < bridge> fatal: Fetched in submodule path '../../ddnet-libs', but it did not contain 7f9799bc0a4d4c21a91e9659799f5ac6076d4367. Direct fetching of that commit failed. 13:35 < bridge> solly@edgl:~/Code/ddnet/build/buildtater$ 13:35 < bridge> ``` 13:36 < bridge> ``` 13:36 < bridge> diff --git a/ddnet-libs b/ddnet-libs 13:36 < bridge> index 7f9799bc0..563348e66 160000 13:36 < bridge> --- a/ddnet-libs 13:36 < bridge> +++ b/ddnet-libs 13:36 < bridge> @@ -1 +1 @@ 13:36 < bridge> -Subproject commit 7f9799bc0a4d4c21a91e9659799f5ac6076d4367 13:36 < bridge> +Subproject commit 563348e662d8beff95dc0da726b1338ac25ae709-dirty 13:36 < bridge> ``` 13:36 < bridge> it seems to be immune to git checkout ddnet/master -- ddnet-libs 13:37 < bridge> if i set ddnet-libs to master its a different hash 13:37 < bridge> ``` 13:37 < bridge> -Subproject commit 7f9799bc0a4d4c21a91e9659799f5ac6076d4367 13:37 < bridge> +Subproject commit 563348e662d8beff95dc0da726b1338ac25ae709 13:37 < bridge> ``` 15:05 < bridge> ```cpp 15:05 < bridge> void CPlayers::RenderHand6(const CTeeRenderInfo *pInfo, vec2 CenterPos, vec2 Dir, float AngleOffset, vec2 PostRotOffset, float Alpha) 15:05 < bridge> { 15:05 < bridge> vec2 HandPos = CenterPos + Dir; 15:05 < bridge> float Angle = angle(Dir); 15:05 < bridge> if(Dir.x < 0) 15:05 < bridge> Angle -= AngleOffset; 15:05 < bridge> else 15:05 < bridge> Angle += AngleOffset; 15:05 < bridge> 15:05 < bridge> vec2 DirX = Dir; 15:05 < bridge> vec2 DirY(-Dir.y, Dir.x); 15:05 < bridge> 15:05 < bridge> if(Dir.x < 0) 15:05 < bridge> DirY = -DirY; 15:05 < bridge> 15:05 < bridge> HandPos += DirX * PostRotOffset.x; 15:05 < bridge> HandPos += DirY * PostRotOffset.y; 15:05 < bridge> 15:05 < bridge> const CSkin::CSkinTextures *pSkinTextures = pInfo->m_CustomColoredSkin ? &pInfo->m_ColorableRenderSkin : &pInfo->m_OriginalRenderSkin; 15:05 < bridge> 15:05 < bridge> if(!g_Config.m_ClRainbowTees) 15:05 < bridge> Graphics()->SetColor(pInfo->m_ColorBody.r, pInfo->m_ColorBody.g, pInfo->m_ColorBody.b, Alpha); 15:06 < bridge> 15:06 < bridge> // two passes 15:06 < bridge> for(int i = 0; i < 2; i++) 15:06 < bridge> { 15:06 < bridge> int QuadOffset = NUM_WEAPONS * 2 + i; 15:06 < bridge> Graphics()->QuadsSetRotation(Angle); 15:06 < bridge> Graphics()->TextureSet(i == 0 ? pSkinTextures->m_HandsOutline : pSkinTextures->m_Hands); // CRASH HERE 15:06 < bridge> Graphics()->RenderQuadContainerAsSprite(m_WeaponEmoteQuadContainerIndex, QuadOffset, HandPos.x, HandPos.y); 15:06 < bridge> would anyone happen to know y 15:07 < bridge> i = 0, pSkinTextures->m_HandsOutline = {m_Id = 1276} 15:07 < bridge> notlocal char 15:08 < bridge> Ah i know why 15:08 < bridge> profile change sets the strings directly so the conchains dont fire 16:57 < bridge> nvm 17:16 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1389263220103053382/image.png?ex=6863fbb2&is=6862aa32&hm=3ac4494e5eb27ee83226a863f70ea7ad8159da0ed4ea0e44c96faa4e2a2fbd36& 17:16 < bridge> fucking gdb 17:16 < bridge> i didnt type run 17:16 < bridge> i didnt press arrow keys 17:16 < bridge> i just spammed enter 17:16 < bridge> )::: 17:19 < bridge> PEBKAC 17:21 < bridge> hehhh? 17:24 < bridge> tclient my beloved 17:24 < bridge> https://tenor.com/view/hugugu-gif-9232832848542120416 18:55 < bridge> :nouis: 19:26 < bridge> 🙂‍↕️ 19:41 < ws-client> @robyt3 oof i had 2 more ``network.cpp:40:44: runtime error: index -1 out of bounds for type 'unsigned char[1394]'`` since last time 21:15 < bridge> I was reading code related to demo slicing and this doesn't look right to me... 21:15 < bridge> https://github.com/ddnet/ddnet/blob/master/src%2Fengine%2Fshared%2Fdemo.cpp#L1309 21:16 < bridge> I think the markers should subtract start tick? 21:17 < bridge> No, markers are always the exact tick that they happened 21:17 < bridge> ^ meant to reply to this 21:19 < bridge> Okay guess I still didn't understand the demo format well enough 21:23 < bridge> so all the servers crashed 5min ago? 21:23 < bridge> ChillerDragon: This fixes `memcpy-param-overlap: memory ranges [0x7fffffff74a9,0x8000580e1445) and [0x7fffffff7cb1, 0x8000580e1c4d) overlap` but no idea about the index `-1` out of bounds, that one looks older than this code. 21:29 < bridge> #bugs maybe all servers shouldnt restart in middle of day 21:31 < dacbano> Hello cannot load servers. I'm getting this error in console: https://master1.ddnet.org/ddnet/15/servers.json failed. libcurl error (28): Operation too slow. Less than 8000 bytes/sec transferred the last 10 seconds. Is it possible to load that servers.json file manually? Because I can access it in the browser without any issues. 21:31 < bridge> The timing is too fitting, it might have been related to me testing this crash :pepeH: 21:31 < bridge> why are you testing on real servers 😭 21:33 < bridge> It didn't, but it probably broadcast the message to all servers even though I only had the LAN tab open :feelsbadman: 21:33 < bridge> XD 21:33 < bridge> possibly biggest XD in recent history, even 21:34 < bridge> literally killed every single server 21:37 < bridge> that's pretty crazy 21:37 < bridge> wait but I thought the servers don't receive direct connections from you anymore because that would leak ip? 21:38 < bridge> did you test with that off 21:38 < bridge> That was my assumption too from having the HTTP master for years, but it was wrong because I was using Teeworlds to test 21:39 < bridge> oh 21:39 < bridge> did it crash even servers outside the ddnet network? 21:40 < bridge> The crash is in Teeworlds 0.7 server info code, so it affected Chiller's server, DDNet and probably also vanilla 21:48 < bridge> why does this crash tho? 21:49 < bridge> I can't see how the token being negative causes a crash 21:49 < bridge> it converts it to a unsigned integer no? 21:50 < bridge> where 21:50 < bridge> If the token has a specific value, the packer is not reset, so it's size is not initialized. This was indicated by the asan error `memcpy-param-overlap: memory ranges [0x7fffffff74a9,0x8000580e1445) and [0x7fffffff7cb1, 0x8000580e1c4d) overlap` which has very large memory ranges 21:50 < bridge> If the token has a specific value, the packer is not reset, so its size is not initialized. This was indicated by the asan error `memcpy-param-overlap: memory ranges [0x7fffffff74a9,0x8000580e1445) and [0x7fffffff7cb1, 0x8000580e1c4d) overlap` which has very large memory ranges 21:50 < bridge> ah 21:50 < bridge> hell yeah robyt3 English pro 21:51 < bridge> oh 21:52 < bridge> why do we not reset the packer before passing it to GetServerInfoSixup? 21:53 < bridge> why does the packer have these values uninitialized at all 21:53 < bridge> Sometimes the packer is already initialized because a `CMsgPacker` is passed in 21:53 < bridge> In this case the clients are not packed into the server info 21:54 < bridge> but still, shouldn't the equivelent of Reset() happen in the Packer contstructor 21:54 < bridge> but still, shouldn't the equivelent of Reset() happen in the Packer constructor 21:54 < bridge> I get warnings about this 21:54 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1389333407296786602/image.png?ex=68643d10&is=6862eb90&hm=96c0fb72ac73aee6a3ccd95edea7da6ce475d567de9b4a543035284a088387b2& 21:55 < bridge> Generally, would be cleaner if the packer was always initialized, yeah 21:55 < bridge> Which is already the case for `CMsgPacker` which is a subclass of `CPacker` 22:03 < bridge> hi taterr 22:03 < bridge> hi 22:03 < bridge> wanna vc 22:03 < bridge> wanna vc? 22:03 < bridge> i have a cool demo 22:05 < bridge> the tee historian packer has this issue as well 22:05 < bridge> 15 minutes 22:16 < bridge> ``` 22:16 < bridge> 2025-06-30 22:16:39 I chat/server: *** [+] 734241682 | 17 22:16 < bridge> 2025-06-30 22:16:39 I chat/server: *** [-] 734241682 | (unsupported client) 22:16 < bridge> ``` 22:16 < bridge> 22:16 < bridge> Someone knows what an client is with version 17?:nouis: 22:16 < bridge> ``` 22:16 < bridge> 2025-06-30 22:16:39 I chat/server: *** [+] 734241682 | 17 22:16 < bridge> 2025-06-30 22:16:39 I chat/server: *** [-] 734241682 | (unsupported client) 22:16 < bridge> ``` 22:16 < bridge> Someone knows what an client is with version 17?:nouis: 23:10 < bridge> Bro connecting with teewar 0.17 23:17 < bridge> yes sry that was me 23:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1389354188265226412/image.png?ex=6864506b&is=6862feeb&hm=c3faefbeb7a6f81b19afbb23dab946c3d54c6f1c17bce8d7e7a09d9f97bedac3& 23:19 < bridge> wow 23:43 < bridge> does ddnet not predict deathtiles? 23:44 < bridge> ~~does ddnet not predict deathtiles?~~ just got tricked by stupid visuals 23:48 < bridge> It doesn't.