#strict 2 global func VerifyHostileSortDistance(int player) { var crew = GetCrew(player); var searchResult = crew->FindObjects( Find_OCF(OCF_CrewMember | OCF_Alive), Find_Hostile(player), Sort_Distance(crew->GetX(), crew->GetY())); var isOrdered = true; var namesMsg = "[", distancesMsg = "["; var prevObj, prevDistance; for (var obj in searchResult) { // Update messages var prefix; if (prevObj) prefix = ", "; else prefix = ""; namesMsg = Format("%s%s%s", namesMsg, prefix, GetPlayerName(obj->GetOwner())); var distance = crew->ObjectDistance(obj); distancesMsg = Format("%s%s%d", distancesMsg, prefix, distance); // Check if searchResult is in wrong order if (prevObj && distance < prevDistance) isOrdered = false; // Use current object and distance as previous values for next object prevObj = obj; prevDistance = distance; } namesMsg = Format("%s]", namesMsg); distancesMsg = Format("%s]", distancesMsg); Log("%s -> %s", namesMsg, distancesMsg); return isOrdered; } global func VerifyHostilityAllVsAll() { var verified = true; for (var i = 0; i < GetPlayerCount(); ++i) { for (var j = 0; j < GetPlayerCount(); ++j) { if (i == j) continue; var plrA = GetPlayerByIndex(i), plrB = GetPlayerByIndex(j); if (!Hostile(plrA, plrB, true)) { verified = false; Log("VerifyHostilityAllVsAll: %s is not hostile to %s", GetPlayerName(plrA), GetPlayerName(plrB)); } } } return verified; }