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)
|
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;
|
return;
|
||||||
|
|
||||||
CreatureStats &stats = actor.getClass().getCreatureStats(actor);
|
const CreatureStats& actorStats = actorClass.getCreatureStats(actor);
|
||||||
const MWMechanics::AiSequence& seq = stats.getAiSequence();
|
const MWMechanics::AiSequence& seq = actorStats.getAiSequence();
|
||||||
const auto packageId = seq.getTypeId();
|
const auto packageId = seq.getTypeId();
|
||||||
|
|
||||||
if (seq.isInCombat() ||
|
if (seq.isInCombat() ||
|
||||||
@ -382,14 +383,15 @@ namespace MWMechanics
|
|||||||
static int iGreetDistanceMultiplier = MWBase::Environment::get().getWorld()->getStore()
|
static int iGreetDistanceMultiplier = MWBase::Environment::get().getWorld()->getStore()
|
||||||
.get<ESM::GameSetting>().find("iGreetDistanceMultiplier")->mValue.getInteger();
|
.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();
|
int greetingTimer = actorState.getGreetingTimer();
|
||||||
GreetingState greetingState = actorState.getGreetingState();
|
GreetingState greetingState = actorState.getGreetingState();
|
||||||
if (greetingState == Greet_None)
|
if (greetingState == Greet_None)
|
||||||
{
|
{
|
||||||
if ((playerPos - actorPos).length2() <= helloDistance * helloDistance &&
|
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().getWorld()->getLOS(player, actor)
|
||||||
&& MWBase::Environment::get().getMechanicsManager()->awarenessCheck(player, actor))
|
&& MWBase::Environment::get().getMechanicsManager()->awarenessCheck(player, actor))
|
||||||
greetingTimer++;
|
greetingTimer++;
|
||||||
@ -406,7 +408,7 @@ namespace MWMechanics
|
|||||||
{
|
{
|
||||||
greetingTimer++;
|
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)))
|
&& (greetingTimer <= GREETING_SHOULD_END || MWBase::Environment::get().getSoundManager()->sayActive(actor)))
|
||||||
turnActorToFacePlayer(actor, actorState, dir);
|
turnActorToFacePlayer(actor, actorState, dir);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user