Ok, I see the problem. void __stdcall handleInGameFlag(hostMessage *m); is where h->imports->talk(makeArenaEnter(h->botInfo.initialArena, h->Me, h->billerOnline)); is done. So each time the S2C_ENTERINGARENA packet is sent to the bot, it runs the above function and then makes that call to the dll. The problem with the call is the botInfo.initialArena variable, it isn't being update with the new arena name when you do tell(...blah). A quick fix would be to add a strncpy(botInfo.initialArena, name, 64); botinfo.initialArena[63] = 0; to the function void Host::changeArena(char *name); But this isn't exactly the proper way of doing things. The server can deny an arena change by re-route players to another arena. But I could be wrong, I haven't really played around with all this stuff <_< . Edit: If you know C++, then you should have no trouble diagnosing these things. Just change your core and see if it works. Then contact catid with the problem.