From aa90229821b114f094c58f452a4d340208ef73cb Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Wed, 13 Oct 2021 16:32:58 +0200 Subject: [PATCH] :bug: Make monsters follow the leader --- Source/monster.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Source/monster.cpp b/Source/monster.cpp index 1c35431b6..50165c73b 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1896,6 +1896,22 @@ bool IsLineNotSolid(Point startPoint, Point endPoint) return LineClear(IsTileNotSolid, startPoint, endPoint); } +void FollowTheLeader(Monster &monster) +{ + if (monster.leader == 0) + return; + + if (monster.leaderRelation != LeaderRelation::Leashed) + return; + + auto &leader = Monsters[monster.leader]; + if (monster._msquelch >= leader._msquelch) + return; + + monster.position.last = leader.position.tile; + monster._msquelch = leader._msquelch - 1; +} + void GroupUnity(Monster &monster) { if (monster.leaderRelation == LeaderRelation::None) @@ -4246,6 +4262,7 @@ void ProcessMonsters() for (int i = 0; i < ActiveMonsterCount; i++) { int mi = ActiveMonsters[i]; auto &monster = Monsters[mi]; + FollowTheLeader(monster); bool raflag = false; if (gbIsMultiplayer) { SetRndSeed(monster._mAISeed);