| 361 | } |
| 362 | |
| 363 | void PuzzleDone(ItemInfo* item, short itemNumber) |
| 364 | { |
| 365 | short* triggerIndexPtr = GetTriggerIndex(item); |
| 366 | short triggerType = (triggerIndexPtr != nullptr) ? (*(triggerIndexPtr++) >> 8) & TRIGGER_BITS : TRIGGER_TYPES::TRIGGER; |
| 367 | |
| 368 | if (triggerType == TRIGGER_TYPES::SWITCH) |
| 369 | { |
| 370 | item->ItemFlags[1] = true; |
| 371 | |
| 372 | item->ObjectNumber += GAME_OBJECT_ID{ ID_PUZZLE_DONE1 - ID_PUZZLE_HOLE1 }; |
| 373 | item->ItemFlags[5] = (int)ReusableReceptacleState::Done; |
| 374 | SetAnimation(item, 0); |
| 375 | item->DisableInterpolation = true; |
| 376 | item->ResetModelToDefault(); |
| 377 | } |
| 378 | else |
| 379 | { |
| 380 | item->ObjectNumber += GAME_OBJECT_ID{ ID_PUZZLE_DONE1 - ID_PUZZLE_HOLE1 }; |
| 381 | SetAnimation(item, 0); |
| 382 | item->Animation.RequiredState = NO_VALUE; |
| 383 | item->DisableInterpolation = true; |
| 384 | item->ResetModelToDefault(); |
| 385 | |
| 386 | AddActiveItem(itemNumber); |
| 387 | |
| 388 | item->Flags |= IFLAG_ACTIVATION_MASK; |
| 389 | item->Status = ITEM_ACTIVE; |
| 390 | } |
| 391 | } |
| 392 | |
| 393 | void PuzzleHole(ItemInfo* item, short itemNumber) |
| 394 | { |
no test coverage detected