Topic: [Tool] WhereIsMyRobber - a "Homeland Robbers" tedium remedy  (Read 20443 times)


aat

« on: December 05, 2020, 02:57:07 PM »
WhereIsMyRobber

Have you haver got bored to death by looking for the robbers in the "Homeland Robbers" quest? Do you have some better use for your time, rather than exploring 20x20 tiles one by one? Then this is for you.

If you never had the pleasure the excruciating experience of this quest, you need to kill a group of robbers which are troubling some villagers. Yet, the real challenge of this quest is not the fight, but actually finding these robbers, for which you are given just a indicative area of their location.

But, despite being 4 robbers with a shelter, the robbers do not appear on the zoomed-out map; looking for trails on the zoomed-out map won't work either. Even standing on their actual location tile won't prompt the encounter on the zoom-in map, like instead occurs when you meet a squirrel or other animals.
How are we supposed to spot a squirrel hiding on a tree but miss a roaming squad of robbers I have no idea. Especially because the robbers are supposedly looking for victims to assault. Yet, you could spend days in the area without never being approached.

So, the only way to find them is zooming into every single individual tile of the area, hoping to be lucky. Obviously, it is not the most time-efficient way, given that there could be about 400 tiles to look into. 

In conclusion, I think this quest is too broken to be enjoyable, and I looked for some solution by digging into the game files.

Here I make available a simple Python script to find the nearest robbers, and give instructions on how to reach them.

Instructions

  • Install Python 3.8 or later versions from here. This is required to run the script
  • Copy the script into the folder of your savegame. This is the folder with the same name as your character that is located in the game folder
  • Save your game with your character near the area where the robbers are supposed to be found
  • Run the script by double clicking on it. On Windows, a Python window will open with a text prompt
  • Press enter in the text prompt, and the script will look for the nearest robber and give you instructions on how to reach it on the zoomed-out map

I have tested this on Linux. Please let me know if it works also on other platforms. There are no reasons it shouldn't but I am ready to fix it if there is some quirk


Visual example
The robber quest area
Spoiler: show


Where are they hiding?!
Spoiler: show


They were so close!!
Spoiler: show


On the specified tile, no tracks. Is it really the correct one?
Spoiler: show


Zooming-in reveals the robbers' shelter! The robbers must not be far
Spoiler: show


And there they are
Spoiler: show


Notes
  • The script does not know which robbers belong to the quest. It will simply show you the location of the robbers closest to you. That's why it's better you run it after you are near the quest area
  • If you keep pressing enter in the prompt, the script will display farther and farther robbers.

Technical details
For this script I have partially decoded the CRS and URS savegame files.
While it is not within the scope of this script, it is possible to use this script to reveal the location of any creature/human near the player. I have already decoded the "id" bytes for other entities different than robbers, like wolves, bears, njerpez, elks etc. But that would be cheating, and it would make exploring meaningless and the game boring.   

If you want to contribute to "decoding" the creature files, you can find the script repository here:
https://github.com/pietralbi/urw-data-scripts

I might make a small modification to make this work also for the "wounded adventurer quest", by locating the assaulting bear, since that quest is just as broken as this one. But at least the "wounded adventurer" gives you a hint on the terrain-neighbouring terrain where the shelter is, which limits a lot the tiles to explore.
« Last Edit: December 06, 2020, 02:44:07 AM by aat »

Night

« Reply #1 on: December 05, 2020, 11:51:08 PM »
Fantastic work, glad to see you're back ^^.

Took a look at the code, overall very good work.
notes:
Spoiler: show

I noticed you we're documenting the data for entities on the github page, maybe ill write something up for scraping purposes.

Uploading a txt file w/ what I've documented for the struct, I'll look into the github page later and see if I can add it there later.

Heres some notes on the file, for readability purposes.
« Last Edit: December 06, 2020, 01:08:37 AM by Night »
URW Character Menu - Cheating menu by a player, for the players.
URW Character Designer - Design your characters sprite!

aat

« Reply #2 on: December 06, 2020, 05:48:02 AM »
Hi Night, thanks for the feedback, and for sharing your documentation on the CRS file!

I'd like to cross check the entity struct with the OBJ file, maybe we can identify the inventory, with the possibility of injecting modded items on creatures and characters. Or even spawning new entities!

One thing I couldn't find is how the game knows that those are the robbers associated to the quest. Maybe their position on the entity array is stored somewhere?

Night

« Reply #3 on: December 06, 2020, 09:54:19 AM »
Hi Night, thanks for the feedback, and for sharing your documentation on the CRS file!

I'd like to cross check the entity struct with the OBJ file, maybe we can identify the inventory, with the possibility of injecting modded items on creatures and characters. Or even spawning new entities!

One thing I couldn't find is how the game knows that those are the robbers associated to the quest. Maybe their position on the entity array is stored somewhere?

It's possible they're marked somehow in the entity struct, a better way to identify them is maybe cross referencing their position with any new data related to the shelter/items generated around them, I'm not sure if it's generated fully when the quest begins but, I suspect if it is then the map tile with the items on ground+shelter is likely saved into ZOOMMAPS. then its just a matter of referencing that locations x/y to your robber's x/y.

There are a lot of steps needed in order to create new objects/entities and place them, etc. Entities item ID's seem to be located at 0x1B4, extending as far as 0x1CC. I have not yet found the quantity with certainty.

for item ID's, the ID (50042 for example) - 50000 = the index of the item in the Character.OBJ file, I believe the item struct is 172 bytes long, and I may or may not have posted some information on it elseware around here, but I have a majority of the struct mapped, with the exception of a few unknown values I have yet to identify, and some values I have not fully tested yet to determine their full scope.

As for cross referencing stuff, might edit one of the wiki's with struct information, as my experience so far using the fandom wiki has been pleasant and easy to share/edit.

Also I'm still around on discord if you want to chat directly of course ^^.
URW Character Menu - Cheating menu by a player, for the players.
URW Character Designer - Design your characters sprite!

rudy

« Reply #4 on: January 04, 2021, 05:32:58 AM »
Thank you so much! This quest was super unfun without this :(

KaumoHunter

« Reply #5 on: February 16, 2021, 03:40:09 AM »
Thank you so much! I was so close to rage quitting this game because of this stupid quest. Your script has single-handedly saved this game for me.

[rant]
Honestly, I don't understand this! I have never seen anybody defend this quest as being fun. I don't care how good the reward is, computer games are supposed to be fun. This quest is just ridiculously tedious. For a game that receives so much care and attention from its developer(s), I am completely baffled by how bad this piece of game design is.
[/rant]

JP_Finn

  • Honorary Lifetime Supporter
  • Member
  • *
  • Posts: 1226
  • Total likes: 666
  • Thawed Finn in SoCal
    • View Profile
« Reply #6 on: February 20, 2021, 03:58:31 AM »
@KaumoHunter its not a secret, that Sami has added certain quests to test the morals of the “characters”. He also has on several occasions concluded that one does not have to finish a quest. Or even accept it in first place.

Let’s think of it this way: you can write a document on an Word/TextPad/Vi/emacs/Nano. Send emails. That’s the limit of your computer science capabilities. Your boss comes and asks if you can haul over the in-house Outlook server to Office 365, tonight?  Should you accept the quest, or decline?
 ???

Personally, if I visit a random village en route from winter cabin to summertime homestead(or vice versa), and they offer me a task to go search for something or fight robbers, I just decline. The game will present the quest to my character again later.
I accepted a bird thief quest, searched all suitable tiles in the circle on F6, twice. Couldn’t find the feathers. I let the quest expire. I might get it later again.
« Last Edit: February 20, 2021, 06:25:47 AM by JP_Finn »

Frostbit

« Reply #7 on: February 24, 2021, 08:26:32 PM »
I wish I'd seen this sooner...

I just finished the quest a couple days ago and had spent about three weeks tediously searching all the forests in the area without a trace. I had finished the last of my food over a week before so was beyond starvation and had given up. I happened to be in the exact center of the area refilling my skin in an open mire for the journey home, when I was suddenly surrounded by the group. I had no avenue for escape and nearly perished in the ambush. I barely managed to dispatch the ruffians and discovered why the injured adventurer usually holes up in the first village he comes to instead of crawling all the way home. That was one long journey, I assure you.

My character is still recuperating (and will be for some time). Next time, the advantage will be mine!

rudy

« Reply #8 on: January 02, 2023, 12:55:04 AM »
I'm bumping this, first, to confirm for others that it still works, some 2+ years later. And, second, because it's an invaluable tool that newer players should be aware of.

yeahjim

« Reply #9 on: January 18, 2023, 03:41:59 PM »
I looked up my old forum account and reset my password in order to say thanks for this!!

ineedcords

« Reply #10 on: January 18, 2023, 08:16:30 PM »
I looked up my old forum account and reset my password in order to say thanks for this!!

Yes, this tool is a fantastic idea, perfectly plugging a hole in the market.

I also like the prompt at the end, which is functional and valid but also humorous at the same time: "Do you want to find another robber near you? (Y/n)"
It defaults to YES, too. UnReal!  ;D
This could be a good day to utilize your squirrels hides.

GrimmSpector

« Reply #11 on: April 27, 2023, 03:44:46 PM »
Geez I need this for wounded adventurer ugh

Brygun

« Reply #12 on: May 04, 2023, 01:50:56 AM »

In conclusion, I think this quest is too broken to be enjoyable, and I looked for some solution by digging into the game files.


Jeepers, having just played it yeah it feels very broken.

when hunting angry bears don't you at least get bear tracks on the wilderness map?