From 7313b10cfa51a90f6fef84654eae03ec1a854977 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 31 Jan 2021 06:56:54 +0100 Subject: [PATCH] Fix Archbishop Lazarus entering a broken state when taking the teleport again Fixes #889 --- Source/monster.cpp | 5 +++++ Source/objects.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index 0deeb0c85..9de9ed4f4 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -4581,6 +4581,11 @@ void MAI_Lazurus(int i) } if (Monst->_mgoal == MGOAL_NORMAL || Monst->_mgoal == MGOAL_RETREAT || Monst->_mgoal == MGOAL_MOVE) { + if (gbMaxPlayers == 1 && quests[Q_BETRAYER]._qvar1 == 4 && Monst->mtalkmsg == 0) { // Fix save games affected by teleport bug + ObjChangeMapResync(1, 18, 20, 24); + RedoPlayerVision(); + quests[Q_BETRAYER]._qvar1 = 6; + } Monst->mtalkmsg = 0; MAI_Counselor(i); } diff --git a/Source/objects.cpp b/Source/objects.cpp index 6173a45a1..75ade9c2d 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -1866,7 +1866,7 @@ void Obj_Circle(int i) if (ox == 35 && oy == 36 && object[i]._oVar5 == 3) { object[i]._oVar6 = 4; ObjChangeMapResync(object[i]._oVar1, object[i]._oVar2, object[i]._oVar3, object[i]._oVar4); - if (quests[Q_BETRAYER]._qactive == QUEST_ACTIVE) + if (quests[Q_BETRAYER]._qactive == QUEST_ACTIVE && quests[Q_BETRAYER]._qvar1 <= 4) // BUGFIX stepping on the circle again will break the quest state (fixed) quests[Q_BETRAYER]._qvar1 = 4; AddMissile(plr[myplr]._px, plr[myplr]._py, 35, 46, plr[myplr]._pdir, MIS_RNDTELEPORT, TARGET_MONSTERS, myplr, 0, 0); track_repeat_walk(FALSE);