mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-29 22:20:33 +00:00
Merge branch 'fargothsayshello' into 'master'
Don't turn to face the player to say hello if there is no hello response Closes #8132 See merge request OpenMW/openmw!4339
This commit is contained in:
commit
24a0e42594
@ -190,6 +190,7 @@
|
||||
Bug #8085: Don't search in scripts or shaders directories for "Select directories you wish to add" menu in launcher
|
||||
Bug #8097: GetEffect doesn't detect 0 magnitude spells
|
||||
Bug #8124: Normal weapon resistance is applied twice for NPCs
|
||||
Bug #8132: Actors without hello responses turn to face the player
|
||||
Feature #1415: Infinite fall failsafe
|
||||
Feature #2566: Handle NAM9 records for manual cell references
|
||||
Feature #3501: OpenMW-CS: Instance Editing - Shortcuts for axial locking
|
||||
|
@ -66,7 +66,7 @@ namespace MWBase
|
||||
|
||||
virtual void goodbye() = 0;
|
||||
|
||||
virtual void say(const MWWorld::Ptr& actor, const ESM::RefId& topic) = 0;
|
||||
virtual bool say(const MWWorld::Ptr& actor, const ESM::RefId& topic) = 0;
|
||||
|
||||
virtual void keywordSelected(std::string_view keyword, ResponseCallback* callback) = 0;
|
||||
virtual void goodbyeSelected() = 0;
|
||||
|
@ -620,25 +620,25 @@ namespace MWDialogue
|
||||
return false;
|
||||
}
|
||||
|
||||
void DialogueManager::say(const MWWorld::Ptr& actor, const ESM::RefId& topic)
|
||||
bool DialogueManager::say(const MWWorld::Ptr& actor, const ESM::RefId& topic)
|
||||
{
|
||||
MWBase::SoundManager* sndMgr = MWBase::Environment::get().getSoundManager();
|
||||
if (sndMgr->sayActive(actor))
|
||||
{
|
||||
// Actor is already saying something.
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (actor.getClass().isNpc() && MWBase::Environment::get().getWorld()->isSwimming(actor))
|
||||
{
|
||||
// NPCs don't talk while submerged
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (actor.getClass().getCreatureStats(actor).getKnockedDown())
|
||||
{
|
||||
// Unconscious actors can not speak
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
const MWWorld::ESMStore& store = *MWBase::Environment::get().getESMStore();
|
||||
@ -657,6 +657,7 @@ namespace MWDialogue
|
||||
if (!info->mResultScript.empty())
|
||||
executeScript(info->mResultScript, actor);
|
||||
}
|
||||
return info != nullptr;
|
||||
}
|
||||
|
||||
int DialogueManager::countSavedGameRecords() const
|
||||
|
@ -100,7 +100,7 @@ namespace MWDialogue
|
||||
|
||||
bool checkServiceRefused(ResponseCallback* callback, ServiceType service = ServiceType::Any) override;
|
||||
|
||||
void say(const MWWorld::Ptr& actor, const ESM::RefId& topic) override;
|
||||
bool say(const MWWorld::Ptr& actor, const ESM::RefId& topic) override;
|
||||
|
||||
// calbacks for the GUI
|
||||
void keywordSelected(std::string_view keyword, ResponseCallback* callback) override;
|
||||
|
@ -534,7 +534,8 @@ namespace MWMechanics
|
||||
if (greetingTimer >= GREETING_SHOULD_START)
|
||||
{
|
||||
greetingState = Greet_InProgress;
|
||||
MWBase::Environment::get().getDialogueManager()->say(actor, ESM::RefId::stringRefId("hello"));
|
||||
if (!MWBase::Environment::get().getDialogueManager()->say(actor, ESM::RefId::stringRefId("hello")))
|
||||
greetingState = Greet_Done;
|
||||
greetingTimer = 0;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user