Code: Select all
	if (PChar->getZone() == 0) 
	{
		WBUFB(data,(0x80)-4) = 1;
		WBUFW(data,(0x30)-4) = PChar->loc.prevzone;             // form zone
		WBUFW(data,(0x42)-4) = PChar->loc.prevzone;             // from zone
	    WBUFW(data,(0xAA)-4) = GetMogHouseID(PChar);            // Mog House id
		WBUFB(data,(0xAE)-4) = GetMosHouseFlag(PChar);          // Mog House leaving flag
	} else {
		WBUFB(data,(0x80)-4) = 2;
		WBUFW(data,(0x30)-4) = PChar->getZone();                // to zone
		WBUFW(data,(0x42)-4) = PChar->getZone();                // to zone
	    WBUFW(data,(0xAA)-4) = 0x01FF;
        WBUFB(data,(0xAC)-4) = csid > 0 ? 0x01 : 0x00;          //if 0x01 then pause between zone
		WBUFB(data,(0xAF)-4) = PChar->loc.zone->CanUseMisc(MISC_MOGMENU);	// флаг, позволяет использовать mog menu за пределами mog house
	}- Player creates a new character and starts in Sandy.
- Player logs out or has key error.
- Players prevzone is force set to Lower Jeuno using your suggestion.
- Players currzone has the chance to corrupt and become 0.
- Player times out, then logs back in which they log into their mog house even though they were in Sandy.
- Player leaves their mog house and they are now in Lower Jeuno due to their prev zone being set.
It's rare to happen, but having your zones corrupt to 0 in the database is not unheard of.
				
