Signs and Wonders Herald My Arrival

October 21st, 2018

The air is normally quite dry in Qatar with prevailing winds out of the desert. This dry breeze is quite nice for dealing with the heat; high efficiency for the body’s cooling system. However it’s a common occurrence for the wind to change and come in from the gulf for a while. When this happens it becomes uncomfortably humid. Your first clue that this has happened is that you’re walking along outside with naught but a light sweat on your brow and then 60 seconds later your shirt is soaked thru front and back and there is sweat dripping into your eyes. Plus the weather forecasts are accurate for temperatures but nothing else, so there’s no advance warning. Another reason I suppose I’m the only one walking around here besides laborers.

I soon noticed some differences in the daily temperature patterns. Instead of slowly rising through the morning and slowly falling in the evening, it gets hot very quickly after the sun rises and then falls off as soon as the sun gets low.

For me this turned out to mean that I could walk to the closest store at 3pm and and require a change of clothes and shower immediately upon my return, while had I left at 4:15pm I’d have not a drop of sweat on me. So this is part of my plans now: if I need the store, I go after 4.

So I was on my way to the mall to get some munchies about 4:20 one time during my first week and all of a sudden it got semi-dark, like an eclipse. Looking around I’m like wtf!? Then I saw the stand storm.

Figure 1. A sand storm blots out my sunshine

It was pretty far away at that point and I made it to Tawar before it really hit. It wasn’t until I started heading home after with my food that I got a good taste of it.

Now, I’ve never been in a sand storm before. I kind of assumed that there would be sand blowing around but, you know, if you squint you can keep most of it out of your eyes. Well no, it wasn’t like that at all. It was more like dust or baby powder. And also in retrospect, I might have taken a hint from all the people at the mall recording video of it as if they didn’t live in the desert. (Spoiler: yeah, they are actually super rare)

The walk home was awful. I couldn’t see anything. If I had been looking around it would look like good old fashioned snow storm white out, but you know, brown, so brown out, lol. But I wasn’t looking around, I was looking straight down at my feet, covering as much of my eyes as possible with the non grocery holding hand. Squinting didn’t help at all. I couldn’t feel it hitting my eyes, but a lot was getting in there, irritating and drying out my eyes something fierce. And with contacts I couldn’t make tears fast enough.

The first 5 minutes was the worst. After I turned down the next street the wind was less swirling around and more at my back. That was when the lightning started. I didn’t realize what it was at first. It was like a strobe light or flickering street lamp. And there was no thunder, but super bright. I would normally call it cloud to cloud lightning but when I looked up I could see the moon with perfect clarity above me and not a cloud in the sky, while I still could’t make out the buildings across the street.

Later when talking to people who have been here more than a year I found out that it’s been a long time since the last sand storm: this was their first for many of them.

That weekend I had a meetup with some expats who I later referred to as humans. It was in Festival City Mall, a very large mall that was big enough for me to get lost in twice. This is the ONE mall that has directory kiosks so you can find your way around. It has 2 of them, they run a touch screen system where you can zoom and pan with your fingers. The one I went to was frozen.

I did manage to find the Cheesecake Factory where we met. (Don’t ask me what it’s like getting directions from the security guards, of which there are always dozens on duty). Here’s a pic:

say cheesecake
Figure 2. Humans?

We talked for hours over breakfast, mainly about business, Qataris and life in Doha. Also about where to buy waffle makers, which turned out to be a store in the very same mall. I went there and they did indeed sell waffle makers but were sold out. No big loss though. They were selling a shitty tiny "one waffle at a time" maker worth about 17 USD for 80 USD. Yeah, like I’m gonna pay 80 bucks to sit around all day making one waffle at a time with some junk that doesn’t even have a timer.


So I went to leave and the Uber app was quoting me 10x the normal price. I went to the door and saw it was pouring rain and well flooded.

The drops in Doha are determined not to drain

I waited a while at the mall and then stayed for lunch, how bad could rain in Qatar actually be? Well it continued for hours and there was massive flooding. After it stopped the temp dropped into the 70s and since there was no way I’m paying 10x for a cab ride, I walked the hour and a half home. It was a quite nice walk, having a break from the heat. The flooding most of the way was minor after getting clear of the mall. This was one instance that required a detour:

walk around the puddle
Figure 3. Walk Around the Puddle
make way
Figure 4. Me enjoying a cool walk, yesterday

By the time I got close to home the sun was setting. That’s when I started to see more serious issues. There were cop cars blocking of the main road near my place. Turns out that the road was flooded to car window height at a point where there are no turn offs from the road. So there was almost a km of bumper to bumper traffic stopped that couldn’t go forward. One at a time the cops had them backing up from the rear and driving over the highway divider to get out. All the while new cars kept bypassing the barricade and cops cars and getting in the way from behind.

And there’s no rain gutters here that’s I’ve seen. What do? Here’s a pic of the carnage:

hope you have food in your car
Figure 5. Flood Road

In the above picture you can see 3 oncoming cars. Those cars were not moving. They thought they could drive through the water. And they did in fact succeed in driving through the water. But now they are stopped. And popping the hood ain’t gonna fix it.

You can also see the far lane of traffic. They were there through most of the night and the next day without moving. They couldn’t get enough cops to block off all the roads so derps in the rear kept them locked in.

How did they fix? they have tanker trucks sucking up the water and pumping it out into my vacant lot.

As I turned the corner off of sad blvd and onto my side road I snapped some pics of passable flooding.

actually safe for cars
Figure 6. Minor Flooding
less safe for pedestrians
Figure 7. More Minor Flooding

They ran the truck pumping 24-7 with 4 trucks for 3 days before it was cleared out. Here’s what it looked like the next day.

pump it
Figure 8. Man Made Lake
pump it real good
Figure 9. Pumping Away All Night Long

This is just the flooding at my street. We didn’t even get the worst of it. Elsewhere there was much worse flooding in Doha (archived)

After all that, we got a nice sunset.

good night
Figure 10. Another nice sunset

Hostile Work Environment

October 20th, 2018

I had some ideas in my head about how I would go about working as a visitor in Qatar. I’ve had quite a bit of experience working out of coffee shops, malls and coworks from a laptop, checking out new cities all while continuing to be productive and connected.

Yeah well none of that shit happened here.

First of all you can’t get power to charge your laptop. Anywhere. Electrical outlets in customer areas: it’s just not done here. From mom and pop cafes and restaurants to local chains and big chains, even malls. So whatever charge you have at the start is all you’re going to get until you get back home.

The next thing is public wifi. Before I talk about the public wifi, let me mention the residential internet. The internet here is censored. It’s a soft censorship though. The government mandates that ISPs block websites of porn, government criticizers, etc., but takes no active role. the ISPs seem to use a complaint list + DNS redirect to meet this requirement. You know when you hit a blocked site because you see this:

Arabs, tryna be cute
Figure 1., this morning

They also block voip phones, and audio / video calls on apps like messenger / whatsapp / skype / facetime. But they don’t have any bans on the tech to bypass the censorship. Everyone here uses a VPN to voice call over wifi. Video chatting with someone down the street while I’m connected to a VPN in the US and they are connected to a VPN in Europe is no problem. Entirely usable.

The residential bandwidth at my place is about 6 Mbps up and down for sites in Qatar, 4 Mbps download for US / Europe, but wildly varying upload speed for US / Europe. Sometimes 2 Mbps, other times 300 kbps.

That’s the story for home internet. The public wifi is a different story. Mainly it doesn’t exist. A few places have it, but you can’t count on it being present anywhere you might go. Malls have it and the airports have it. But what you get makes '90s dial up look good by comparison. Far more sites are blocked, bandwidth is too small to measure (that’s what she said), convoluted portal pages to navigate to complete the connection. It smells of elderberries and futility.

If I was back home, I’d just flip on the wifi hotspot on my phone and start feasting on that data plan. Well the second phone I brought works with the local sim card, can do calls and data and even hotspot. The problem with it is that everywhere I go in Doha it shows 5 bars of signal and the E for edge network. The data speed is enough to do text based messaging and request an Uber. You’re certainly not going to load a web page anytime soon.

I think it must be my phone, even though it’s enabled for 2G/3G/4G. Other people don’t seem to have the same problem.

Another issue is the heat. I spent the whole summer going out on the motorcycle in mid 90 degree temps every day. I wasn’t expecting it to really mess with me here. I prefer the heat to the cold. But in the beginning I spent about every other day sleeping for 3+ hours in the middle of the day, exhausted. And still sleeping well every night. Part of it may be the calls to prayer, the latest being 2 hours after sunset and the earliest 6 hours and change later the next, morning. I may not be sleeping as much as I used to.

I didn’t know what what causing it at first. I didn’t have any symptoms of being sick aside from what felt like swollen tonsils for about 45 minutes. But now I’m pretty sure it was the heat that I didn’t respect enough. And not having AC at home for 3 days probably wasn’t helpful either. Two different Africans here told me that the Africa sun makes you darker but the sun here sucks your life. Which, OK whatever, but just the fact that sun drenched Africans think twice about going outside here says something.

One thing that I only half expected was the availability of information online here. I expected a lot to be missing, that most things don’t have websites here. And that’s totally true but the other thing is how much wrong information there is online. Basically you can’t rely on anything. Maps are hit or miss. So much of the information on websites here is not just outdated but flat wrong.

One thing in particular that is unreliable are business hours listed on any site. It could be listed as 8am-8pm, but sure as shit nobody’s going to be there between 1pm and 4pm. Malls are about the only thing you can be 100% sure will be open during the heat of the day / afternoon prayer time. It’s not that everything closes, or even that most things close. Just wherever you are going will be closed.

Another thing is the walkability of the city. On the one hand there are nice brick sidewalks about everywhere. On the other hand the level of new construction is off the charts and any two points on a map no matter how close can be separated by concrete barriers. They also love to put up big walls around construction here. That can literally go on for a mile.

And remember that there are villas everywhere once you get out of the downtown high rise area. And that villas have concrete walls that connect to neighbors. If there are construction barricades on one side and 20 foot villa walls on the other, you’re gonna be on that road for a long time, hope you didn’t need to make a turn, lol.

Nobody walks anywhere here. Downtown is flooded with people on weekends after dark. Other than that, I’ve walked for hours in this city without passing another pedestrian.

The rampant construction also makes calling an uber hard. They can’t find you a lot of the time when there are detours and re-routes all over. And when they quit trying, you get stuck with the cancel fee. Which feels like ten bucks if you don’t do the math.

On the plus side you can get about anywhere in the city for ~6 USD, one way, once your (Indian) driver actually finds you. It is double or triple that during bad traffic, but "rush hour" is generally much shorter in duration than in US cities. And bad traffic otherwise requires multiple car accidents on the same roadway. The $6 factors in the promo codes uber sends every week good for 15% off week days, expiring right before the heavy weekend usage.

First Steps in Doha

October 19th, 2018

I started out by exploring the area around my home base. A 10 minute walk to the north had me bumping into Tawar Mall.

Light Mall
Figure 1. Walking approach to Tawar Mall

Tawar is a pretty upscale mall, for Doha or anywhere in the US. It has what looks like polished marble floor outside at the south entrance, all around where the valet parking is. It’s 5 floors high, with a built in hotel that isn’t finished yet.

Dark mall
Figure 2. Tawar Mall at Night

There is a large grocery store at the north end. I later found out that all 12 malls in Doha have valet parking and a large grocery store. The food court is on the top floor.

Figure 3. Food Court at Tawar Mall

It has a place called "Planet Waffle And Pancake".

Figure 4. The waffle has rings like a planet, get it? But what’s with the windmill?

One thing they don’t have in Doha malls is a map station telling you where the stores are. So you basically have to walk the whole thing to know what’s there. I found some useful things in the mall. The grocery for one, is the closest one to me. Also a bunch of coffee shops and a Vodafone where I eventually got my local sim card. But the store was closed on that first visit.

I used up the morning exploring to north, around the mall. In the afternoon I went south. About 15 minutes walk to the south there is a strip mall type arrangement. It had nothing of interest to me at all. There was a pharmacy there and I made a mental note.

There was also a Burger King on the corner, with which I would later have a run in.

Figure 5. Have it your way

Pretty much all the signage for streets and businesses is in both English and Arabic. My understanding is that it would just about all be in English if not for zoning mandates requiring Arabic.

Initially I had thought that street addresses weren’t actually a thing in Doha. But it turns out that’s not true at all. Buildings all have a Street number, a building number, and a zone. It’s just that there are no street signs. All that info is kept on the building placard.

Figure 6. Good luck figuring out which street you’re on while driving around.

In contrast to the useful things to the north, my trek south was a bust. This may be a good time to note that it’s somewhat hot in Qatar. I dragged my tired ass home and collapsed for the night.

Over the next few days I started to meet people and collect the items I’d need to survive. One thing I needed was local currency: Qatar Riyals (QR). The QR is pegged to USD at a rate of 3.64 per each. In my mind I try to think of each QR as worth about a quarter, but it still hasn’t sunk in yet. I see something at the store priced at 15 QR and my mind tells me, "no way that’s worth 15 bucks!" But then I do the math.

When you do a currency exchange here, it’s a huge elaborate process. They need your passport (or Qatar ID) which they first scan and then they type in the info. I guess, you know, to be double sure. They also require your local address and phone number, which they take the time to type into the computer every time you go.

But once they are done with the TPS reports or whatever, they get to the tender reassignment operation: taking your paper that identifies as foreign and giving you some rainbow trans-tender. There is no fee for this service, so you could convert back and forth all day, really earning your way on to some watch list.

Line up
Figure 7. Bills in a Line

Interestingly, bigger bills are physically bigger in both dimensions and instead of numbers in all 4 corners, only half the corners have numbers. This was a huge pain for me because every time I flipped though a stack of bills to pay someone my habitual way of holding them prevented me from seeing the numbers.

Pile up
Figure 8. Bills in a Pile

One nice thing about the money here is that they don’t use coins. They just round up to the nearest QR.

The other thing I needed to pick up right away was a local sim card. The card cost 120 QR ($32). Unhelpfully, the sim card doesn’t come with any minutes or data, you have to go to the grocery store to buy that. Helpfully, the grocery store is 20 paces from the Vodafone in my mall.

Diana Coman - 2018-11-01 13:50:10

The windmill (at the Waffles place) might be in reference to flour/milling - I’ve met it before on flour packets of various sorts.

Qatar: Day Zero

October 11th, 2018

For some reason I decided to go to Qatar. It’s not like I’m a world traveler. In the 80’s I went to the Dominican Republic and in the 90’s Toronto. Other than that, I’ve just been bouncing around the USA. So, you know, this is all new to me.

The first leg of the journey was supposed to be a 7 hour flight from Raleigh to London. Then, after a 13 hour layover, another 6 hours to Doha Qatar.

Less than two hours after leaving Raleigh, right as we were heading out over the ocean, the plane banks hard left and you can see on the flight path display that we’d turned around. 5 minutes later the pilot came on and said that a warning light just came on for one of the subsystems of a backup system. And that even though all the primary systems are fine, he can’t fly more than an hour from land for safety reasons. Since we’d obviously be going more than an hour from land, JFK was our new destination for repairs.

Not so fast!
Figure 1. Flight Path of Despair

After 2+ hours sitting in a JFK terminal, and another ~45 waiting to take off we finally did get back underway. Aside from the delays, the flight was good. Both meals were actually quite tasty. I had the whole row of 3 steerage seats to myself to lay down and attempt slumber and I managed 2 hours sleep.

Instead of a 6:30am arrival, it was after 11 London time when we touched down and after noon before I had my onward boarding pass in hand and finished dealing with Heathrow shenanigans at 2 different border crossings.

I met up with Diana Coman at Hyde park and we had lunch at a Russian restaurant that served a delicious Russian fish soup. Fish soup of my own recipe being a staple of my diet, which I now must update to include chives.

Italian Gardens
Figure 2. Italian Gardens in Hyde Park

With what time I had left, and with an updated time budget for Heathrow dealings, I managed to see the Wellington Arch:

Wellington Arch
Figure 3. Wellington Arch

Buckingham Palace:

Nice Logo
Figure 4. Buckingham Gate
Nice Hat
Figure 5. Buckingham Guard
Nice jacket
Figure 6. Buckingham Fountain

And other things:

Not so fast!
Figure 7. That was a cool thing
Not so fast!
Figure 8. Also a cool thing

Honestly the park areas of London felt all too familiar. Just like autumn back home in upstate NY. Having spent a good portion of the time walking back and forth through Green Park and Hyde Park, where the leaves turning color and the London planes look just like maples, and the overgrown grasses look very New Englandy to my eye. Quite different from North Carolina, Florida and Texas plant life.

My Qatar Airways flight left on time at 9:30pm and I spent the night flying over Europe. It was surreal having such a minimal and distant experience of so many places I’ve only heard about before. "This is Brussels, if you squint you can see the lights of Paris, and there is Frankfurt, and Vienna, and Budapest and Bucharest and Istanbul.."

I was struck by how the cities and towns all seem so evenly spaced relative to flying over the US. At least in western Europe, I didn’t spend the whole flight gazing out the window.

While flying over Turkey and Iraq I saw some things that I couldn’t explain. There were these bright lights on the ground, usually in groups of 2 or 3. They seemed much brighter than anything I saw in Europe. From 40k feet, my best estimate is that each of them were at least the size of a small house. My first thought was that they were massive fires. But then I kept seeing clusters of them regularly all the way to Kuwait.

Anyway, my Qatar Airways flight was very good. More and better staff and better food than American Airlines. I got the whole row of 3 seats to myself again and this time had enough room to straighten my legs so A350 must be wider than 777. They gave out the little gift bag with ear plugs, sleep mask, lip balm, etc. to everyone and not just first class. Metal utensils with meals. A+

Again only 2 hours of sleep though. Woke up to:

Persian Gulf Sunrise
Figure 9. Sunrise Over the Persian gulf.

I was hoping to see The Pearl, Losail Racetrack and Doha skyline from the air but they were all on the other side of the plane. this is what I saw while landing:

Landing in Doha
Figure 10. Landing in Doha

Here’s the view from my room.

Window Landscape
Figure 11. My View.

That picture makes it look much more sandy and washed out than it actually is. You can see a mosque off to the right. Here is the same mosque from closer:

A Nearby Mosque
Figure 12. Local Mosque.

And in the other direction, Doha skyline through the haze:

Persian Gulf Sunrise
Figure 13. Distant Hazy Skyline.

I had left Raleigh on Sunday and now it was Tuesday. Although it was the third day technically, for me, running on a pair of naps, it was just one long ass day. I didn’t do any more exploring on day zero, I slept the better part of the day and then later got an additional full night sleep.

Foxybot Enhancements Part 18: Build 35 Release

October 4th, 2018

Build 35

Inventory management by craft bot now uses proper 64bit types for handling stack counts and the conversion of counts to strings is done outside of csString.

In addition, the be yourself fix, originally published as a separate item, is incorporated into this bot build.

Feedback is welcome, please use #eulora.


This has been lightly tested. Further testing is expected to reveal if these changes actually fix the recurring crashes.

Foxybot Enhancements Part 17: Build 34 Release

October 1st, 2018

Build 34

Bundle bot debuts in this release.

Feedback is welcome, please use #eulora.


First I took the existing bundle code and added it to foxybot. But evidently things have changed enough that something broke. It compiles but doesn’t succeed when you run it.

Well, I had an idea about how I wanted it to allow exact specification of ingredients and how I wanted it to use my two-table setup from craft bot so as to completely avoid needing to look in inventory. So I threw out the existing code and modeled bundle bot after craft bot. And also craft bot is fresh in my mind.


The command to use is:

/bot bundle nTimes m/M/i

m = use minimum quantity for all ingredients

M = use maximum quantity for all ingredients

i = infer the ingredient quantities


/bot bundle 2000 M

The min and max work exactly how you would expect if you have used foxybot for mining or crafting. Infer is something new that is intended to also do exactly what you’d expect given the name, but in any case is described below.


Bundle bot has similar requirements to craft bot, but with some important differences.

  • You must have a bp equipped.

  • You must have an empty work container on the ground within reach and it must not be the type named in your equipped bp.

  • In addition to the above container, you must have a craft-table on the ground within reach holding your bundle ingredients.

  • The craft-table holding your ingredients must have an open slot.

The work container must not be the one named in the bp so that the actual crafting can never take place mistakenly, since bundle bot only makes the bundles. Once each bundle is made, it is stored back in the storage table. This is what the required empty slot in the storage table will be used for.

Note that bundle bot does not look at quality and does not mix bundles of the current run into existing bundles or even those of an immediately prior run. At each run, it will put all the bundles into the first empty slot identified at the start of the run.

Also there is no interaction with the storage system and therefore no need to be near an NPC. You can make bundles out in the field with a single craft-table and use an exploration marker as the work container. This works provided the above requirements are met, i.e. the marker is empty, within reach and is not of the type specified in the bp.

How It Works

When in min or max mode, the moving of ingredients to the work container proceeds exactly as with mining and crafting. The bot looks for a stack of each ingredient in turn, from top to bottom, whose stack size is at least the size needed for the recipe. In this case, as with craft bot, it is the storage table that is searched for ingredients.

As such, when in min or max mode, you can have multiple stacks of the same or different quality for each ingredient and you don’t necessarily have to compute the exact number bundles to make. If you use an arbitrarily large number for nTimes , the bot will just quit when materials run out.

Infer mode works differently. It is meant to address the desire to specify exact quantities per ingredient since using the max for everything can be wasteful. When running in infer mode, bundle bot takes a moment at the beginning of the run to examine each ingredient in the recipe and compare it to the stack size on-hand to compute how many to use to to get the number of bundles you requested.

For example if the bp calls for 3 to 5 waters and 4 to 11 numina and if you typed in:

/bot bundle 1000 i

If you have 3000 waters and 9000 numina in your storage table, then the bot will infer that you want to use 3 water and 9 numina per bundle.

Specifically, it divides stackCount by nTimes using integer division to compute the quantity. The fact that it uses integer division with no decimal means that in the above example, bundle bot will infer the same 3 and 9 even if you had stack sizes 3999 & 9999.

If the quantity inferred for any ingredient is larger than the max allowed then bundle bot will use the max instead. This is meant as a convenience so that if you know you will use the max for an ingredient, you can move a large stack to your table without having to compute the exact number.

If, on the other hand, the quantity inferred is less than the minimum, the bot will abort before starting (only in infer mode), giving details of what it computed and what the minimum is.

Another difference with infer mode is that the bot only looks at the first slot (searching top to bottom) that contains each ingredient. While max and min will use all available stacks in order, again, infer only uses the first. This is primarily to keep the calculations simple. It also makes it possible to have large stacks at the bottom of your table and for any ingredient you want to limit to below max, move some specific count to a slot above and then run bundle bot.


Bundle bot works quite quickly and could make many bundles before you have a chance to realize any mistake. For this reason, at the beginning of every run bundle bot prints a report of what it will make and how many of each ingredient it will use. It then waits for 15 seconds before beginning the run. This should give you enough time to type in /bot stop if the bot is about to do something that is not what you want.


  • This has been tested a low number of times, using recipes of a single ingredient that allow a quantity of between 1 and 2, because that’s all I’m able to do currently.

  • Build 31 is still recommended for bot exploring.

Diana Coman - 2018-10-02 07:01:57

"The craft-table holding your ingredients must have an open slot." → what is an open slot?

Mocky - 2018-10-02 15:42:06

The table can’t be full. It needs at least one open space for the new bundles to be placed.

Diana Coman - 2018-10-03 08:55:47

Ah, that’s an …​empty slot! Although I can see the appeal of the vast open slots of euloran tables :P

Mocky - 2018-10-04 02:03:02

Yes, empty slot. That does sound better.

Foxybot Enhancements Part 16: Build 33 Release

September 16th, 2018

Build 33

This release brings a craft bot bug fix and a change in the way crafting output is sent to storage.

Feedback is welcome, please use #eulora.


The previous build sends to storage any new piles in inventory after /takeall. This build changes that to send both new and changed piles. Changed piles are sent in full.


  • FIXED: Bot stops for lack of ingredient when ingredient is in table slot zero.


It turns out that explore bot is, prior claims not withstanding, actually a victim of its own failure. Further testing has revealed that precision movement is situational at best. The situation being that planeshift tells you one thing while the reality is often a different thing. Also the new dance moves with which I was so taken initially do not always work to reveal a hidden marker, leaving bot dancing without end. Like that song you used to like but now they play it too much on the radio.

For the these reasons, build 31 is recommended for bot exploring.

Just Be Yourself

September 15th, 2018

So there I was, just minding my own business.

Part 1

I was working this morning on making craft bot keep track and store not just new piles of loot but changed piles of loot also. The code was done, it wasn’t a big change, and it actually worked. It recognized changed piles, reported the difference as new loot in the bot window, sent the storage request and the full piles ended up in storage. But it also crashed the client. Somehow. Not in the newly written code, somewhere after.

I looked at the code, studied it. Studied the diff. No clue. I put in some debug statements and fired the client back up. But the client thought I was a different player. Known issue. Happens occasionally. If you keep playing like that the client ends up sending ever more conflicting data to the server. Stuff messes up.

So I logged out and back in. Same problem. I tried again. Several times. Then several dozen. Then I realized that I didn’t remember why I was trying to log in. Then I got pissed off.

Part 2

I have no idea how this got started, but back in the day there was this legend that my pancakes were even more delicious when I made them while 'stressed out'. When you have that many ankle biters kicking around, these things are bound to happen. Of course, they don’t tell you about it, they just whisper in hushed tones and try to intentionally irritate you while you’re making the griddles sing.

Eventually one of them tipped their hand by grinning at me and asking if I was stressed yet.

For all I know it’s actually true.

Part 3

src/client/gui/pawscharpick.cpp(154) One line to save name at auto login
//if this is the name we have requested for autologin
//choose it immediately
if(!connecting && ( requestedAutoPickId == i ||
				(requestedAutoPickId == -1 && name == lastCharName) ||
				name == requestedAutoPickName))
	connecting = true;
	psCharacterPickerMessage msg(name);
+	psEngine::playerName = name;

src/client/gui/pawscharpick.cpp(374) One line to save name at normal login
    // Send the name of the character to the server.
    csString charname(1->GetText() );

    psCharacterPickerMessage msg(charname);
+   psEngine::playerName = charname;

src/client/pscelclient.cpp(262) One
if statement to check the name
// Extra steps for a controlled actor/the main player:
if(!local_player || local_player->GetEID() == msg.entityid)
+	if (!psEngine::playerName.Compare(
+	{
+		Error1("Ignoring Actor message. The main player Actor must be loaded first.");
+		return;
+	}

	// This triggers the server to update our proxlist

	//update the window title with the char name

Diana Coman - 2018-10-03 09:10:01

Yes! Hopefully this IS part of the released bot bundle, right?

Mocky - 2018-10-04 02:06:29

No, it’s separate. But I can add it to future builds.

  1. pawsButton*)FindWidget(name []

Foxybot Enhancements Part 15: Build 32 Release

September 14th, 2018

Build 32

This release makes craft bot pull materials from a craft-table instead of inventory, and puts output into storage.

Feedback is welcome, please use #eulora.


The craft bot no longer looks in inventory for bundles and ingredients, it looks in a spare craft-table. Therefore, you must have a spare craft-table in addition to the crafting container named in your bp. The full requirements are as follows:

  • You must have a bp equipped (as before)

  • You must have the container named in your bp on the ground within reach and it must be empty

  • In addition to the above container, you must have a craft-table on the ground within reach holding your craft ingredients.

  • You must be within range of the NPC for training and storage of outputs.

The bot looks first for a bundle and then for ingredients. It looks in the table slots from left to right, top to bottom. You can have your ingredients and bundles in multiple piles, if one pile runs out it will move on to the next. However, it will never pull from multiple piles for the same ingredient in a single round. It will pull from the first pile that meets the quantity requirement.

You can have as many or as few bps equipped as you want. The only technical requirements are that you have at least one but not so many that you are over weight. If you run out of bps in your mind slot during the run, the bot will equip more from your ingredients table. It will equip them from the first pile it finds (again in slot order) with a name matching what you had equipped to start the run. It will equip the number needed to finish the run, or the number of bps in the pile, or 100, whichever is smallest. Therefore, you can have multiple piles (presumably with different qualities) and they will be consumed in order.

During each round, a /takeall is done of crafting output and then each new pile in inv is sent to storage via the NPC. If the full output of one round puts you overweight, the bot is not yet smart enough to deal with this, and will get stuck.

The requirement to target your craft container has been lifted. Just drop it on the ground and the bot will handle the targeting. If it is not within reach, the bot will complain and fail to start.

The bot will train you when you rank up, as before.

If a crafting round yields items that drop to the ground, the bot has been programmed to notice and stop. However, this has not been tested since I can’t really do this myself. Maybe the bot stopping for this condition is not really needed, since those items will be under your guard. Possibly you got enough items in the same round to put you overweight and stop the bot anyway. I wasn’t sure what else to do here, and I don’t have a way to test it.


Some miscellaneous additions snuck in also. Precision bot step size while exploring has been added. By default the bot moves 1.0 game units each round in either walk or run mode. Distance is parameterized, however, and is used by the code that makes the bot dance toward tardy claim markers to hasten their arrival. The bot now dances the full distance to the spot in one step and then immediately dances back to where it came from. This happens so quickly that it has the pleasing effect of appearing to not be happening at all. The bot log claims that bot is stepping toward marker, it appears to stand still, and the marker appears and bot continues to build it.

I added the stepping back as part of the precision movement, to avoid drift that tends to accumulate over time and ensure that the bot is within reach of all the tables at all times. I’m very happy with the dancing now and with how quickly it causes claim markers to appear. But there is a bot glitch that still needs to be ironed out in this regard, as the bot has become a victim of its own success. It makes the claim marker appear so quickly that sometimes it will try to build the claim before the server has fully registered its movement back to the original spot. Thus when the build begins the server will notify the client that its position is back at the marker, and client will comply! and so the dance back is unhappened, and drift continues.

The solution, yet to be implemented, is to wait a proper amount of time before attempting to build the claim for the bots movements to be valid. Yet bot has already become so slow at my hands, I hate to slow it further!

Also added was some hygiene with reading server messages. I didn’t even know this was needed until its lack started choking multiple bots feeding from the same trough!


I consider this release experimental for both crafting and mining. The few mining changes could impact reliability over time and I haven’t tested for that. Also this is a first release of this crafting stuff and could be well fubar. Enjoy!

Foxybot Enhancements Part 14: Build 31 Release

September 11th, 2018

Build 31

This release contains 2 bug fixes.

Feedback is welcome, please use #eulora.

Fixes This Release

  • FIXED: crafting bot fails to find craft-table

  • FIXED: bot window message for lbn pickup mis-reports the count of picked up items