Demon, a monster catching roguelike, has a shiny new website! It's also had a large overhaul of character creation and you can nickname your allies now.

Hey, first of all, great job on your app, it's looking great!

I was looking around yesterday for a solution to the duplicate loot bug and I saw today that you posted a fix to github already. Reading through your code, it doesn't seem you're satisfied with your solution so I figured I'd check it out again, so here's some info that hopefully will help you (and if it's something that you've already tried feel free to ignore me! hehe)

SO: my first thought was the obvious one, look for valid text behind a string to see if it's being copypasted, but then I saw in your post here that you were aware of that solution (duh!) and apparently it doesn't always work out.

Then I tried looking for a pattern to finding strings that never returned duplicates and found the following:

Desktop client *note:** this held true for me using dx5, dx9 and opengl but I haven't tried it on a different pc or anything of the kind so its possible that it doesn't hold true in other environments, hopefully not though!

*Every message that showed up in the server log (and elsewhere) was immediately found in 4 different locations, I'm assuming you avoided these duplicates by searching for a specific part of the memory or you already had something else set in place to skip them.

*However, only one specific version of the message, the "real" one, was prefaced by these bytes 03 00 00 00 00 00 00. Here are some examples

00 B0 01 0F 03 00 00 00 00 00 00 --> 03:04 Your last visit in Tibia: 06. Feb 2016 06:28:50 CET.
00 3C 01 0D 03 00 00 00 00 00 00 --> 03:04 Your depot contains 109 items.
00 EC 01 0D 03 00 00 00 00 00 00  --> 03:06 Your depot contains 108 items.
00 B0 01 0F 03 00 00 00 00 00 00 --> 03:05 Your last visit in Tibia: 06. Feb 2016 06:57:27 CET.
00 F7 01 0E 03 00 00 00 00 00 00 --> 02:36 You see a grimy wooden plank.
00 12 01 0E 03 00 00 00 00 00 00 --> 02:36 You see a grimy wooden plank.
00 A9 01 0E 03 00 00 00 00 00 00 --> 02:36 You see dirt.
00 47 01 0E 03 00 00 00 00 00 00 --> 02:38 You see a grimy wooden plank.
00 09 01 0B 03 00 00 00 00 00 00 --> 02:39 You see a label.
00 67 01 0E 03 00 00 00 00 00 00 --> 02:40 You see a grimy wooden plank.
00 D8 01 08 03 00 00 00 00 00 00 --> 02:41 You see a label.It weighs 0.10 oz.
00 05 01 0D 03 00 00 00 00 00 00 --> 02:41 You see a bag (Vol:8).
00 49 01 0C 03 00 00 00 00 00 00 --> 02:42 You see a pick.
00 1F 01 0A 03 00 00 00 00 00 00 --> 02:44 You see a letter.

This was the case in every *server log** message I tried, other types of message had different patterns, so using a check like this should also trim useless chat messages altogether.

Flash client *note:**I tried this in chrome (and a slightly outdated version at that heh) and again, didn't test in a different computer.

Messages here are wacky as you mentioned in your code comments, flashing all over the place, but I found that there was also a "real" version of the message that was always kept in memory in the same spot and was both prefaced and followed by *at least three 00 bytes; searching the memory for any specific message surrounded by these, I never found any duplicates.

*Flash, as I'm sure you're aware, was created by the devil in hopes of expanding his dominion on earth.

/r/roguelikes Thread Parent Link - demon.ferretdev.org