diff --git a/Source/inv.cpp b/Source/inv.cpp index 57e7c1271..ade22e604 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -890,8 +890,10 @@ void CheckQuestItem(Player &player, Item &questItem) { Player &myPlayer = *MyPlayer; - if (questItem.IDidx == IDI_OPTAMULET && Quests[Q_BLIND]._qactive == QUEST_ACTIVE) + if (questItem.IDidx == IDI_OPTAMULET && Quests[Q_BLIND]._qactive == QUEST_ACTIVE) { Quests[Q_BLIND]._qactive = QUEST_DONE; + NetSendCmdQuest(true, Quests[Q_BLIND]); + } if (questItem.IDidx == IDI_MUSHROOM && Quests[Q_MUSHROOM]._qactive == QUEST_ACTIVE && Quests[Q_MUSHROOM]._qvar1 == QS_MUSHSPAWNED) { player.Say(HeroSpeech::NowThatsOneBigMushroom, 10); // BUGFIX: Voice for this quest might be wrong in MP diff --git a/Source/objects.cpp b/Source/objects.cpp index cd2cb59e8..59ae790d5 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -1987,6 +1987,7 @@ void OperateBookLever(Object &questBook, bool sendmsg) Quests[Q_BLIND]._qactive = QUEST_ACTIVE; Quests[Q_BLIND]._qlog = true; Quests[Q_BLIND]._qvar1 = 1; + NetSendCmdQuest(true, Quests[Q_BLIND]); } if (questBook._otype == OBJ_BLOODBOOK && Quests[Q_BLOOD]._qvar1 == 0) { Quests[Q_BLOOD]._qactive = QUEST_ACTIVE; @@ -2005,7 +2006,8 @@ void OperateBookLever(Object &questBook, bool sendmsg) if (questBook._otype != OBJ_BLOODBOOK) ObjChangeMap(questBook._oVar1, questBook._oVar2, questBook._oVar3, questBook._oVar4); if (questBook._otype == OBJ_BLINDBOOK) { - SpawnUnique(UITEM_OPTAMULET, SetPiece.position.megaToWorld() + Displacement { 5, 5 }); + if (sendmsg) + SpawnUnique(UITEM_OPTAMULET, SetPiece.position.megaToWorld() + Displacement { 5, 5 }); auto tren = TransVal; TransVal = 9; DRLG_MRectTrans(WorldTilePosition(questBook._oVar1, questBook._oVar2), WorldTilePosition(questBook._oVar3, questBook._oVar4)); @@ -4513,6 +4515,7 @@ void DeltaSyncOpObject(Object &object) case OBJ_BLOODBOOK: case OBJ_STEELTOME: object._oAnimFrame = object._oVar6; + SyncQSTLever(object); break; case OBJ_BOOKCASEL: case OBJ_BOOKCASER: