To reproduce:
-Jump into a housing zone and stand in front of a house that you can edit.
-Create a mob, any mob, leave it as a jewel if you want.
-Shift right click on the house to bring up the edit menu
Now wait 30 or so seconds and the mob will vanish. /jump to the mob (that you can't see) and you'll notice the sky gets dark and shadows vanish. No kidding. The world has died and nothing can bring it back except going into the house and coming back out. The client, for some reason, has been told not to refresh any world objects. Furthermore it appears to be ignoring time and weather data as well. The NPC update thread is still broadcasting updates and I can even call a full refresh to send creates of all objects but they will not draw.
So what does enter and exit do?
On entering a house :
player.Out.SendEnterHouse(this);
player.Out.SendFurniture(this);
MoveTo up to a Z of aprox. 25000 (all house interiors exist above houses, offset by a few units).
It's interesting the move is done after the sends, but this seems to work.
On exiting a house:
player.MoveTo(OutdoorJumpPoint);
player.Out.SendExitHouse(this);
For testing purposes I have commented out code that sends messages and shows a house as occupied to make sure these have no effect, and they don't.
When a player pops open a housing menu this handler is called:
[PacketHandler(PacketHandlerType.TCP, 0x00, "Handles housing menu requests")]
public class HousingMenuRequestHandler : IPacketHandler
...
It sends various menu/windows depending on the packet values, for example:
- Code: Select all
case 0: // Exterior decoration (Garden)
if (!house.CanChangeGarden(client.Player, DecorationPermissions.Add))
return;
client.Player.Out.SendMerchantWindow(HouseTemplateMgr.OutdoorShopItems, eMerchantWindowType.HousingOutsideShop);
log.Debug("Window: HousingOutsideShop");
break;
At this point the client stops updating the world and only the house(s) and gardens continue to display.
Now I know entering and leaving a house works to fix the issue so I've tried blindly sending every house packet, but nothing works. The only way I can fix the redraw issue is to enter and leave a house, which must reset some magical flag on the client that says we can see world objects.
All I need to know is what that magical command is.
Does anyone have a live account with a house that is willing to log editing the garden?
Anyone see any other possible solution for this?
For now I'm going to display a warning to the player that they need to enter/exit a house to refresh the world when done editing.