| 167 | } |
| 168 | |
| 169 | std::optional<bool> HasMiscItem(LaraInfo& lara, GAME_OBJECT_ID objectID) |
| 170 | { |
| 171 | auto HasBeetle = [&](int bit) |
| 172 | { |
| 173 | auto beetleComponents = lara.Inventory.BeetleComponents; |
| 174 | return beetleComponents &= 1 << bit; |
| 175 | }; |
| 176 | |
| 177 | switch (objectID) |
| 178 | { |
| 179 | //TODO does Lara "HAVE" a silencer if it's combined but not in her inventory? |
| 180 | case ID_SILENCER_ITEM: |
| 181 | return lara.Inventory.HasSilencer || SilencerIsEquipped(lara); |
| 182 | |
| 183 | case ID_LASERSIGHT_ITEM: |
| 184 | return lara.Inventory.HasLasersight || LaserSightIsEquipped(lara); |
| 185 | |
| 186 | case ID_BINOCULARS_ITEM: |
| 187 | return lara.Inventory.HasBinoculars; |
| 188 | |
| 189 | case ID_CROWBAR_ITEM: |
| 190 | return lara.Inventory.HasCrowbar; |
| 191 | |
| 192 | case ID_DIARY_ITEM: |
| 193 | return lara.Inventory.HasDiary; |
| 194 | |
| 195 | case ID_PC_LOAD_INV_ITEM: |
| 196 | return lara.Inventory.HasLoad; |
| 197 | |
| 198 | case ID_PC_SAVE_INV_ITEM: |
| 199 | return lara.Inventory.HasSave; |
| 200 | |
| 201 | case ID_STOPWATCH_ITEM: |
| 202 | return lara.Inventory.HasStopwatch; |
| 203 | |
| 204 | case ID_COMPASS_ITEM: |
| 205 | return lara.Inventory.HasCompass; |
| 206 | |
| 207 | case ID_WATERSKIN1_EMPTY: |
| 208 | return lara.Inventory.SmallWaterskin == 1; |
| 209 | |
| 210 | case ID_WATERSKIN1_1: |
| 211 | return lara.Inventory.SmallWaterskin == 2; |
| 212 | |
| 213 | case ID_WATERSKIN1_2: |
| 214 | return lara.Inventory.SmallWaterskin == 3; |
| 215 | |
| 216 | case ID_WATERSKIN1_3: |
| 217 | return lara.Inventory.SmallWaterskin == 4; |
| 218 | |
| 219 | case ID_WATERSKIN2_EMPTY: |
| 220 | return lara.Inventory.BigWaterskin == 1; |
| 221 | |
| 222 | case ID_WATERSKIN2_1: |
| 223 | return lara.Inventory.BigWaterskin == 2; |
| 224 | |
| 225 | case ID_WATERSKIN2_2: |
| 226 | return lara.Inventory.BigWaterskin == 3; |
no test coverage detected