mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-25 03:40:40 +00:00
Restructure function updateGreetingState
This commit is contained in:
parent
5e44dd41eb
commit
8631b96680
@ -340,11 +340,12 @@ namespace MWMechanics
|
||||
|
||||
void Actors::updateGreetingState(const MWWorld::Ptr& actor, Actor& actorState, bool turnOnly)
|
||||
{
|
||||
if (!actor.getClass().isActor() || actor == getPlayer())
|
||||
const auto& actorClass = actor.getClass();
|
||||
if (!actorClass.isActor() || actor == getPlayer())
|
||||
return;
|
||||
|
||||
CreatureStats &stats = actor.getClass().getCreatureStats(actor);
|
||||
const MWMechanics::AiSequence& seq = stats.getAiSequence();
|
||||
const CreatureStats& actorStats = actorClass.getCreatureStats(actor);
|
||||
const MWMechanics::AiSequence& seq = actorStats.getAiSequence();
|
||||
const auto packageId = seq.getTypeId();
|
||||
|
||||
if (seq.isInCombat() ||
|
||||
@ -382,14 +383,15 @@ namespace MWMechanics
|
||||
static int iGreetDistanceMultiplier = MWBase::Environment::get().getWorld()->getStore()
|
||||
.get<ESM::GameSetting>().find("iGreetDistanceMultiplier")->mValue.getInteger();
|
||||
|
||||
float helloDistance = static_cast<float>(stats.getAiSetting(CreatureStats::AI_Hello).getModified() * iGreetDistanceMultiplier);
|
||||
float helloDistance = static_cast<float>(actorStats.getAiSetting(CreatureStats::AI_Hello).getModified() * iGreetDistanceMultiplier);
|
||||
const auto& playerStats = player.getClass().getCreatureStats(player);
|
||||
|
||||
int greetingTimer = actorState.getGreetingTimer();
|
||||
GreetingState greetingState = actorState.getGreetingState();
|
||||
if (greetingState == Greet_None)
|
||||
{
|
||||
if ((playerPos - actorPos).length2() <= helloDistance * helloDistance &&
|
||||
!player.getClass().getCreatureStats(player).isDead() && !actor.getClass().getCreatureStats(actor).isParalyzed()
|
||||
!playerStats.isDead() && !actorStats.isParalyzed()
|
||||
&& MWBase::Environment::get().getWorld()->getLOS(player, actor)
|
||||
&& MWBase::Environment::get().getMechanicsManager()->awarenessCheck(player, actor))
|
||||
greetingTimer++;
|
||||
@ -406,7 +408,7 @@ namespace MWMechanics
|
||||
{
|
||||
greetingTimer++;
|
||||
|
||||
if (!stats.getMovementFlag(CreatureStats::Flag_ForceJump) && !stats.getMovementFlag(CreatureStats::Flag_ForceSneak)
|
||||
if (!actorStats.getMovementFlag(CreatureStats::Flag_ForceJump) && !actorStats.getMovementFlag(CreatureStats::Flag_ForceSneak)
|
||||
&& (greetingTimer <= GREETING_SHOULD_END || MWBase::Environment::get().getSoundManager()->sayActive(actor)))
|
||||
turnActorToFacePlayer(actor, actorState, dir);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user