diff --git a/Source/monster.cpp b/Source/monster.cpp index d31a7a1e456..15374770900 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1546,11 +1546,17 @@ void FollowTheLeader(Monster &monster) if (leader == nullptr) return; - if (monster.activeForTicks >= leader->activeForTicks) - return; + if (leader->activeForTicks > monster.activeForTicks) { + monster.position.last = leader->position.tile; + monster.activeForTicks = leader->activeForTicks - 1; + } - monster.position.last = leader->position.tile; - monster.activeForTicks = leader->activeForTicks - 1; + if (monster.ai != MonsterAIID::Gargoyle || (monster.flags & MFLAG_ALLOW_SPECIAL) == 0) + return; + if (leader->mode == MonsterMode::SpecialMeleeAttack && (leader->flags & MFLAG_ALLOW_SPECIAL) != 0) + return; + monster.flags &= ~MFLAG_ALLOW_SPECIAL; + monster.mode = MonsterMode::SpecialMeleeAttack; } void GroupUnity(Monster &monster)