mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-05 15:55:45 +00:00
Merge branch 'master' of github.com:OpenMW/openmw
This commit is contained in:
commit
007404e17f
@ -186,7 +186,7 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
||||
|
||||
mJournalInfos.addColumn (new StringIdColumn<Info> (true));
|
||||
mJournalInfos.addColumn (new RecordStateColumn<Info>);
|
||||
mJournalInfos.addColumn (new FixedRecordTypeColumn<Info> (UniversalId::Type_Journal));
|
||||
mJournalInfos.addColumn (new FixedRecordTypeColumn<Info> (UniversalId::Type_JournalInfo));
|
||||
mJournalInfos.addColumn (new TopicColumn<Info> (true));
|
||||
mJournalInfos.addColumn (new QuestStatusTypeColumn<Info>);
|
||||
mJournalInfos.addColumn (new QuestIndexColumn<Info>);
|
||||
|
@ -2,6 +2,8 @@
|
||||
set(GAME
|
||||
main.cpp
|
||||
engine.cpp
|
||||
|
||||
${CMAKE_SOURCE_DIR}/files/openmw/openmw.rc
|
||||
)
|
||||
|
||||
if (ANDROID)
|
||||
|
@ -198,9 +198,8 @@ namespace MWBase
|
||||
/// making it more likely for the function to return true.
|
||||
virtual bool isAggressive (const MWWorld::Ptr& ptr, const MWWorld::Ptr& target, int bias=0, bool ignoreDistance=false) = 0;
|
||||
|
||||
/// Usually done once a frame, but can be invoked manually in time-critical situations.
|
||||
/// This will increase the death count for any actors that were killed.
|
||||
virtual void killDeadActors() = 0;
|
||||
/// Resurrects the player if necessary
|
||||
virtual void keepPlayerAlive() = 0;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1292,23 +1292,10 @@ namespace MWMechanics
|
||||
continue;
|
||||
}
|
||||
|
||||
// If it's the player and God Mode is turned on, keep it alive
|
||||
if (iter->first.getRefData().getHandle()=="player" &&
|
||||
MWBase::Environment::get().getWorld()->getGodModeState())
|
||||
{
|
||||
MWMechanics::DynamicStat<float> stat (stats.getHealth());
|
||||
|
||||
if (stat.getModified()<1)
|
||||
{
|
||||
stat.setModified(1, 0);
|
||||
stats.setHealth(stat);
|
||||
}
|
||||
stats.resurrect();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (iter->second->kill())
|
||||
{
|
||||
iter->first.getClass().getCreatureStats(iter->first).notifyDied();
|
||||
|
||||
++mDeathCount[Misc::StringUtils::lowerCase(iter->first.getCellRef().getRefId())];
|
||||
|
||||
// Make sure spell effects with CasterLinked flag are removed
|
||||
|
@ -44,6 +44,8 @@ namespace MWMechanics
|
||||
|
||||
void updateCrimePersuit (const MWWorld::Ptr& ptr, float duration);
|
||||
|
||||
void killDeadActors ();
|
||||
|
||||
public:
|
||||
|
||||
Actors();
|
||||
@ -98,9 +100,6 @@ namespace MWMechanics
|
||||
int countDeaths (const std::string& id) const;
|
||||
///< Return the number of deaths for actors with the given ID.
|
||||
|
||||
///@see MechanicsManager::killDeadActors
|
||||
void killDeadActors ();
|
||||
|
||||
void forceStateUpdate(const MWWorld::Ptr &ptr);
|
||||
|
||||
void playAnimationGroup(const MWWorld::Ptr& ptr, const std::string& groupName, int mode, int number);
|
||||
|
@ -188,16 +188,10 @@ namespace MWMechanics
|
||||
|
||||
if (index==0 && mDynamic[index].getCurrent()<1)
|
||||
{
|
||||
if (!mDead)
|
||||
mDied = true;
|
||||
|
||||
mDead = true;
|
||||
|
||||
if (mDied)
|
||||
// Must increase death count immediately. There are scripts that use getDeadCount as reaction to onDeath
|
||||
// and rely on the increased value.
|
||||
// Would be more appropriate to use a killActor(actor) function, but we don't have access to the Ptr in CreatureStats.
|
||||
MWBase::Environment::get().getMechanicsManager()->killDeadActors();
|
||||
if (MWBase::Environment::get().getWorld()->getGodModeState())
|
||||
MWBase::Environment::get().getMechanicsManager()->keepPlayerAlive();
|
||||
}
|
||||
}
|
||||
|
||||
@ -242,6 +236,11 @@ namespace MWMechanics
|
||||
return mDead;
|
||||
}
|
||||
|
||||
void CreatureStats::notifyDied()
|
||||
{
|
||||
mDied = true;
|
||||
}
|
||||
|
||||
bool CreatureStats::hasDied() const
|
||||
{
|
||||
return mDied;
|
||||
|
@ -168,6 +168,8 @@ namespace MWMechanics
|
||||
|
||||
bool isDead() const;
|
||||
|
||||
void notifyDied();
|
||||
|
||||
bool hasDied() const;
|
||||
|
||||
void clearHasDied();
|
||||
|
@ -664,11 +664,6 @@ namespace MWMechanics
|
||||
return mActors.countDeaths (id);
|
||||
}
|
||||
|
||||
void MechanicsManager::killDeadActors()
|
||||
{
|
||||
mActors.killDeadActors();
|
||||
}
|
||||
|
||||
void MechanicsManager::getPersuasionDispositionChange (const MWWorld::Ptr& npc, PersuasionType type,
|
||||
float currentTemporaryDispositionDelta, bool& success, float& tempChange, float& permChange)
|
||||
{
|
||||
@ -1320,4 +1315,21 @@ namespace MWMechanics
|
||||
|
||||
return (fight >= 100);
|
||||
}
|
||||
|
||||
void MechanicsManager::keepPlayerAlive()
|
||||
{
|
||||
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr();
|
||||
CreatureStats& stats = player.getClass().getCreatureStats(player);
|
||||
if (stats.isDead())
|
||||
{
|
||||
MWMechanics::DynamicStat<float> stat (stats.getHealth());
|
||||
|
||||
if (stat.getModified()<1)
|
||||
{
|
||||
stat.setModified(1, 0);
|
||||
stats.setHealth(stat);
|
||||
}
|
||||
stats.resurrect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -162,9 +162,7 @@ namespace MWMechanics
|
||||
/// making it more likely for the function to return true.
|
||||
virtual bool isAggressive (const MWWorld::Ptr& ptr, const MWWorld::Ptr& target, int bias=0, bool ignoreDistance=false);
|
||||
|
||||
/// Usually done once a frame, but can be invoked manually in time-critical situations.
|
||||
/// This will increase the death count for any actors that were killed.
|
||||
virtual void killDeadActors();
|
||||
virtual void keepPlayerAlive();
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -64,8 +64,11 @@ void Script::load(ESMReader &esm)
|
||||
}
|
||||
|
||||
// Script mData
|
||||
mScriptData.resize(mData.mScriptDataSize);
|
||||
esm.getHNExact(&mScriptData[0], mScriptData.size(), "SCDT");
|
||||
if (esm.isNextSub("SCDT"))
|
||||
{
|
||||
mScriptData.resize(mData.mScriptDataSize);
|
||||
esm.getHExact(&mScriptData[0], mScriptData.size());
|
||||
}
|
||||
|
||||
// Script text
|
||||
mScriptText = esm.getHNOString("SCTX");
|
||||
|
1
files/openmw/openmw.rc
Normal file
1
files/openmw/openmw.rc
Normal file
@ -0,0 +1 @@
|
||||
IDI_ICON1 ICON DISCARDABLE "../launcher/images/openmw.ico"
|
Loading…
Reference in New Issue
Block a user