1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#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;
}
|