From 618bb6917b46db394f3fb5800ec3045d8ecef6e7 Mon Sep 17 00:00:00 2001 From: ErikasKontenis Date: Sun, 22 Nov 2020 14:07:52 +0200 Subject: [PATCH] fix monsters to not walk on fields when aggresive if they cannot push items --- src/tile.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/tile.cpp b/src/tile.cpp index 6240678..2c16f6a 100644 --- a/src/tile.cpp +++ b/src/tile.cpp @@ -521,6 +521,20 @@ ReturnValue Tile::queryAdd(int32_t, const Thing& thing, uint32_t, uint32_t flags } } + if (monster->hasCondition(CONDITION_AGGRESSIVE) && !monster->canPushItems()) { + if (hasFlag(TILESTATE_FIREDAMAGE) && !monster->isImmune(COMBAT_FIREDAMAGE)) { + return RETURNVALUE_NOTPOSSIBLE; + } + + if (hasFlag(TILESTATE_POISONDAMAGE) && !monster->isImmune(COMBAT_EARTHDAMAGE)) { + return RETURNVALUE_NOTPOSSIBLE; + } + + if (hasFlag(TILESTATE_ENERGYDAMAGE) && !monster->isImmune(COMBAT_ENERGYDAMAGE)) { + return RETURNVALUE_NOTPOSSIBLE; + } + } + if (!monster->hasCondition(CONDITION_AGGRESSIVE) && !hasBitSet(FLAG_IGNOREFIELDDAMAGE, flags)) { if (hasFlag(TILESTATE_FIREDAMAGE) && !monster->isImmune(COMBAT_FIREDAMAGE)) {