| 440 | } |
| 441 | |
| 442 | bool SameZone(CreatureInfo* creature, ItemInfo* target) |
| 443 | { |
| 444 | auto& item = g_Level.Items[creature->ItemNumber]; |
| 445 | auto* zone = g_Level.Zones[(int)creature->LOT.Zone][(int)FlipStatus].data(); |
| 446 | |
| 447 | auto& roomSource = g_Level.Rooms[item.RoomNumber]; |
| 448 | auto& boxSource = GetSector(&roomSource, item.Pose.Position.x - roomSource.Position.x, item.Pose.Position.z - roomSource.Position.z)->PathfindingBoxID; |
| 449 | if (boxSource == NO_VALUE) |
| 450 | return false; |
| 451 | item.BoxNumber = boxSource; |
| 452 | |
| 453 | auto& roomTarget = g_Level.Rooms[target->RoomNumber]; |
| 454 | auto& boxTarget = GetSector(&roomTarget, target->Pose.Position.x - roomTarget.Position.x, target->Pose.Position.z - roomTarget.Position.z)->PathfindingBoxID; |
| 455 | if (boxTarget == NO_VALUE) |
| 456 | return false; |
| 457 | target->BoxNumber = boxTarget; |
| 458 | |
| 459 | return (zone[item.BoxNumber] == zone[target->BoxNumber]); |
| 460 | } |
| 461 | |
| 462 | short AIGuard(CreatureInfo* creature) |
| 463 | { |
no test coverage detected