rendered paste bodyIndex: src/client/zonehandler.cpp===================================================================--- src/client/zonehandler.cpp (revision 5731)+++ src/client/zonehandler.cpp (working copy)@@ -184,8 +184,11 @@ if (celclient->GetMainPlayer()) oldsector = celclient->GetMainPlayer()->GetSector(); - if (oldsector && newsector)- connected = celclient->GetWorld()->Connected(newsector, oldsector);+ if (oldsector && newsector && celclient->GetWorld())+ {+ celclient->GetWorld()->BuildWarpCache(); // we need an up-to-date warp cache here+ connected = celclient->GetWorld()->Connected(oldsector, newsector);+ } ZoneLoadInfo* zone = FindZone(sectorToLoad); if (zone == NULL)Index: src/common/engine/psworld.h===================================================================--- src/common/engine/psworld.h (revision 5731)+++ src/common/engine/psworld.h (working copy)@@ -97,7 +97,6 @@ csArray<sectorTransformation> transarray; - void BuildWarpCache(); public: psWorld(); ~psWorld();@@ -129,6 +128,7 @@ static float Matrix2YRot(const csMatrix3& mat); void DumpWarpCache();+ void BuildWarpCache(); }; Index: src/common/engine/psworld.cpp===================================================================--- src/common/engine/psworld.cpp (revision 5731)+++ src/common/engine/psworld.cpp (working copy)@@ -151,7 +151,7 @@ return true; // No need to transform, pos ok. int i = engine->GetSectors()->Find((iSector*)from);- if (i == -1)+ if (i == csArrayItemNotFound) { return false; // Didn't find transformation, pos not ok. }@@ -172,7 +172,7 @@ return true; int i = engine->GetSectors()->Find((iSector*)from);- if (i == -1)+ if (i == csArrayItemNotFound) return false; csReversibleTransform* transform = transarray[i].Get((iSector*)to);