From 986650afc8d67541bc4a0f8540e6c5d948c75f2a Mon Sep 17 00:00:00 2001 From: Andrew James Date: Tue, 19 Jul 2022 23:59:59 +1000 Subject: [PATCH] Take Object by reference when operating quest objects (#5066) --- Source/objects.cpp | 60 +++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/Source/objects.cpp b/Source/objects.cpp index 2a9c1ce3a..66a92bd8b 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2531,34 +2531,34 @@ void OperateL3Door(const Player &player, int i) OperateL3LDoor(i, true); } -void OperatePedistal(Player &player, int i) +void OperatePedestal(Player &player, Object &pedestal) { if (ActiveItemCount >= MAXITEMS) { return; } - if (Objects[i]._oVar6 == 3 || !RemoveInventoryItemById(player, IDI_BLDSTONE)) { + if (pedestal._oVar6 == 3 || !RemoveInventoryItemById(player, IDI_BLDSTONE)) { return; } - Objects[i]._oAnimFrame++; - Objects[i]._oVar6++; - if (Objects[i]._oVar6 == 1) { - PlaySfxLoc(LS_PUDDLE, Objects[i].position); + pedestal._oAnimFrame++; + pedestal._oVar6++; + if (pedestal._oVar6 == 1) { + PlaySfxLoc(LS_PUDDLE, pedestal.position); ObjChangeMap(SetPiece.position.x, SetPiece.position.y + 3, SetPiece.position.x + 2, SetPiece.position.y + 7); SpawnQuestItem(IDI_BLDSTONE, SetPiece.position.megaToWorld() + Displacement { 3, 10 }, 0, 1); } - if (Objects[i]._oVar6 == 2) { - PlaySfxLoc(LS_PUDDLE, Objects[i].position); + if (pedestal._oVar6 == 2) { + PlaySfxLoc(LS_PUDDLE, pedestal.position); ObjChangeMap(SetPiece.position.x + 6, SetPiece.position.y + 3, SetPiece.position.x + SetPiece.size.width, SetPiece.position.y + 7); SpawnQuestItem(IDI_BLDSTONE, SetPiece.position.megaToWorld() + Displacement { 15, 10 }, 0, 1); } - if (Objects[i]._oVar6 == 3) { - PlaySfxLoc(LS_BLODSTAR, Objects[i].position); - ObjChangeMap(Objects[i]._oVar1, Objects[i]._oVar2, Objects[i]._oVar3, Objects[i]._oVar4); + if (pedestal._oVar6 == 3) { + PlaySfxLoc(LS_BLODSTAR, pedestal.position); + ObjChangeMap(pedestal._oVar1, pedestal._oVar2, pedestal._oVar3, pedestal._oVar4); LoadMapObjects("Levels\\L2Data\\Blood2.DUN", SetPiece.position.megaToWorld()); SpawnUnique(UITEM_ARMOFVAL, SetPiece.position.megaToWorld() + Displacement { 9, 3 }); - Objects[i]._oSelFlag = 0; + pedestal._oSelFlag = 0; } } @@ -3657,16 +3657,16 @@ bool OperateNakrulBook(int s) return false; } -void OperateStoryBook(int i) +void OperateStoryBook(Object &storyBook) { - if (Objects[i]._oSelFlag == 0 || qtextflag) { + if (storyBook._oSelFlag == 0 || qtextflag) { return; } - Objects[i]._oAnimFrame = Objects[i]._oVar4; - PlaySfxLoc(IS_ISCROL, Objects[i].position); - auto msg = static_cast<_speech_id>(Objects[i]._oVar2); - if (Objects[i]._oVar8 != 0 && currlevel == 24) { - if (!IsUberLeverActivated && Quests[Q_NAKRUL]._qactive != QUEST_DONE && OperateNakrulBook(Objects[i]._oVar8)) { + storyBook._oAnimFrame = storyBook._oVar4; + PlaySfxLoc(IS_ISCROL, storyBook.position); + auto msg = static_cast<_speech_id>(storyBook._oVar2); + if (storyBook._oVar8 != 0 && currlevel == 24) { + if (!IsUberLeverActivated && Quests[Q_NAKRUL]._qactive != QUEST_DONE && OperateNakrulBook(storyBook._oVar8)) { NetSendCmd(false, CMD_NAKRUL); return; } @@ -3676,22 +3676,22 @@ void OperateStoryBook(int i) Quests[Q_NAKRUL]._qmsg = msg; } InitQTextMsg(msg); - NetSendCmdParam1(false, CMD_OPERATEOBJ, i); + NetSendCmdParam1(false, CMD_OPERATEOBJ, storyBook.GetId()); } -void OperateLazStand(int i) +void OperateLazStand(Object &stand) { if (ActiveItemCount >= MAXITEMS) { return; } - if (Objects[i]._oSelFlag == 0 || qtextflag) { + if (stand._oSelFlag == 0 || qtextflag) { return; } - Objects[i]._oAnimFrame++; - Objects[i]._oSelFlag = 0; - Point pos = GetSuperItemLoc(Objects[i].position); + stand._oAnimFrame++; + stand._oSelFlag = 0; + Point pos = GetSuperItemLoc(stand.position); SpawnQuestItem(IDI_LAZSTAFF, pos, 0, 0); } @@ -4921,10 +4921,10 @@ void OperateObject(Player &player, int i, bool teleFlag) case OBJ_STORYBOOK: case OBJ_L5BOOKS: if (sendmsg) - OperateStoryBook(i); + OperateStoryBook(object); break; case OBJ_PEDISTAL: - OperatePedistal(player, i); + OperatePedestal(player, object); break; case OBJ_WARWEAP: case OBJ_WEAPONRACK: @@ -4935,7 +4935,7 @@ void OperateObject(Player &player, int i, bool teleFlag) break; case OBJ_LAZSTAND: if (sendmsg) - OperateLazStand(i); + OperateLazStand(object); break; case OBJ_SLAINHERO: OperateSlainHero(player, i); @@ -5108,10 +5108,10 @@ void SyncOpObject(Player &player, int cmd, int i) case OBJ_STORYBOOK: case OBJ_L5BOOKS: if (sendmsg) - OperateStoryBook(i); + OperateStoryBook(object); break; case OBJ_PEDISTAL: - OperatePedistal(player, i); + OperatePedestal(player, object); break; case OBJ_WARWEAP: case OBJ_WEAPONRACK: