From ce9605957a1fc4ce8430962a6e7ac43bbb71dfc6 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Tue, 25 Apr 2017 01:11:01 +0300 Subject: [PATCH] [Client] Use different way of preventing attacks on players in dialogue --- apps/openmw/mwmechanics/aicombat.cpp | 19 +++++++++++++++ apps/openmw/mwmechanics/aicombataction.cpp | 27 ---------------------- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/apps/openmw/mwmechanics/aicombat.cpp b/apps/openmw/mwmechanics/aicombat.cpp index d14a8f49c..155776fcb 100644 --- a/apps/openmw/mwmechanics/aicombat.cpp +++ b/apps/openmw/mwmechanics/aicombat.cpp @@ -12,6 +12,7 @@ #include #include "../mwmp/Main.hpp" #include "../mwmp/MechanicsHelper.hpp" +#include "../mwgui/windowmanagerimp.hpp" /* End of tes3mp addition */ @@ -240,6 +241,24 @@ namespace MWMechanics currentCell = actor.getCell(); } + /* + Start of tes3mp addition + + Because multiplayer doesn't pause the world during dialogue, disallow attacks on + a player engaged in dialogue + */ + if (target == MWBase::Environment::get().getWorld()->getPlayerPtr()) + { + if (MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_Dialogue)) + { + storage.stopAttack(); + return false; + } + } + /* + End of tes3mp addition + */ + bool forceFlee = false; if (!canFight(actor, target)) { diff --git a/apps/openmw/mwmechanics/aicombataction.cpp b/apps/openmw/mwmechanics/aicombataction.cpp index ee49231f2..cc1434d52 100644 --- a/apps/openmw/mwmechanics/aicombataction.cpp +++ b/apps/openmw/mwmechanics/aicombataction.cpp @@ -13,16 +13,6 @@ #include "../mwworld/actionequip.hpp" #include "../mwworld/cellstore.hpp" -/* - Start of tes3mp addition - - Include additional headers for multiplayer purposes -*/ -#include "../mwgui/windowmanagerimp.hpp" -/* - End of tes3mp addition -*/ - #include "npcstats.hpp" #include "spellcasting.hpp" #include "combat.hpp" @@ -764,23 +754,6 @@ namespace MWMechanics ESM::Position actorPos = actor.getRefData().getPosition(); ESM::Position enemyPos = enemy.getRefData().getPosition(); - /* - Start of tes3mp addition - - Because multiplayer doesn't pause the world during dialogue, disallow fights with - a player engaged in dialogue - */ - if (enemy == MWBase::Environment::get().getWorld()->getPlayerPtr()) - { - if (MWBase::Environment::get().getWindowManager()->containsMode(MWGui::GM_Dialogue)) - { - return false; - } - } - /* - End of tes3mp addition - */ - const CreatureStats& enemyStats = enemy.getClass().getCreatureStats(enemy); if (enemyStats.getMagicEffects().get(ESM::MagicEffect::Invisibility).getMagnitude() > 0 || enemyStats.getMagicEffects().get(ESM::MagicEffect::Chameleon).getMagnitude() > 0)