This bug was already reported here:
http://www.peqtgc.com/phpBB3/viewtopic.php?f=17&t=14123
The issue exists in Client::HandleEnterWorldPacket() from world/client.cpp.
So, from what little research I have done, it looks like the return home code is triggered if either button is clicked at the character selection screen.
That is, ew->return_home > 0 even if you click Tutorial and not Return Home which causes this if statement block to execute either way:
@line 712 of world/client.cpp
Code:
if(!pZoning && ew->return_home)
{
...
}
I haven't used a packet sniffer or anything, but this is what I've found:
If Tutorial is clicked:
ew->return_home == 256
ew->tutorial == 1
If Return Home is clicked:
ew->return_home == 257
ew->tutorial == 0
If Enter World is clicked:
ew->return_home == 0
ew->tutorial == 0
Temporary fix:
Code:
--- client.cpp 2013-09-30 13:17:34.767489537 -0700
+++ eqemu/projecteqemu-read-only/world/client.cpp 2013-09-30 15:10:22.625739979 -0700
@@ -709,7 +709,7 @@
return true;
}
- if(!pZoning && ew->return_home)
+ if(!pZoning && ew->return_home == 257)
{
CharacterSelect_Struct* cs = new CharacterSelect_Struct;
memset(cs, 0, sizeof(CharacterSelect_Struct));
@@ -723,7 +723,6 @@
if(cs->gohome[x] == 1)
{
home_enabled = true;
- return true;
}
}
}
@@ -755,7 +754,6 @@
if(cs->tutorial[x] == 1)
{
tutorial_enabled = true;
- return true;
}
}
}
To get this to work, I had to remove the two returns since I don't really know why you'd want to return after confirming that the player can enter tutorial/return home.
(Again, I've done little research, so I may be missing something.)
Magic numbers are scary, so if anyone here that is knowledgeable of the zoning system and opcodes could find a more permanent solution, then that would be great.