| 1974 | } |
| 1975 | |
| 1976 | void GetAIPickups() |
| 1977 | { |
| 1978 | for (int i = 0; i < g_Level.NumItems; ++i) |
| 1979 | { |
| 1980 | auto* item = &g_Level.Items[i]; |
| 1981 | if (Objects[item->ObjectNumber].intelligent) |
| 1982 | { |
| 1983 | item->AIBits = 0; |
| 1984 | |
| 1985 | for (int number = 0; number < g_Level.AIObjects.size(); ++number) |
| 1986 | { |
| 1987 | auto* object = &g_Level.AIObjects[number]; |
| 1988 | |
| 1989 | if (abs(object->pos.Position.x - item->Pose.Position.x) < CLICK(2) && |
| 1990 | abs(object->pos.Position.z - item->Pose.Position.z) < CLICK(2) && |
| 1991 | object->roomNumber == item->RoomNumber && |
| 1992 | object->objectNumber < ID_AI_PATROL2) |
| 1993 | { |
| 1994 | item->AIBits |= (1 << (object->objectNumber - ID_AI_GUARD)) & 0x1F; |
| 1995 | item->ItemFlags[3] = object->triggerFlags; |
| 1996 | |
| 1997 | if (object->objectNumber != ID_AI_PATROL1) |
| 1998 | object->roomNumber = NO_VALUE; |
| 1999 | } |
| 2000 | } |
| 2001 | |
| 2002 | if (item->Data.is<CreatureInfo>()) |
| 2003 | { |
| 2004 | auto* creature = GetCreatureInfo(item); |
| 2005 | creature->Tosspad |= item->AIBits << 8 | (char)item->ItemFlags[3]; |
| 2006 | } |
| 2007 | } |
| 2008 | } |
| 2009 | } |
| 2010 | |
| 2011 | void BuildOutsideRoomsTable() |
| 2012 | { |
no test coverage detected