forked from teamnwah/openmw-tes3coop
Reset bounty and crime immediately when going to jail (Fixes #1892)
This commit is contained in:
parent
628600a0a5
commit
457b96a8af
3 changed files with 15 additions and 9 deletions
|
@ -871,7 +871,6 @@ namespace MWScript
|
||||||
{
|
{
|
||||||
MWBase::World* world = MWBase::Environment::get().getWorld();
|
MWBase::World* world = MWBase::Environment::get().getWorld();
|
||||||
world->goToJail();
|
world->goToJail();
|
||||||
MWBase::Environment::get().getWorld()->getPlayer().recordCrimeId();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -149,7 +149,7 @@ namespace MWWorld
|
||||||
mActivationDistanceOverride (activationDistanceOverride),
|
mActivationDistanceOverride (activationDistanceOverride),
|
||||||
mFallback(fallbackMap), mTeleportEnabled(true), mLevitationEnabled(true),
|
mFallback(fallbackMap), mTeleportEnabled(true), mLevitationEnabled(true),
|
||||||
mGodMode(false), mContentFiles (contentFiles),
|
mGodMode(false), mContentFiles (contentFiles),
|
||||||
mGoToJail(false),
|
mGoToJail(false), mDaysInPrison(0),
|
||||||
mStartCell (startCell), mStartupScript(startupScript)
|
mStartCell (startCell), mStartupScript(startupScript)
|
||||||
{
|
{
|
||||||
mPhysics = new PhysicsSystem(renderer);
|
mPhysics = new PhysicsSystem(renderer);
|
||||||
|
@ -2810,8 +2810,19 @@ namespace MWWorld
|
||||||
{
|
{
|
||||||
if (!mGoToJail)
|
if (!mGoToJail)
|
||||||
{
|
{
|
||||||
// Save for next update, since the player should be able to read the dialog text first
|
// Reset bounty and forget the crime now, but don't change cell yet (the player should be able to read the dialog text first)
|
||||||
mGoToJail = true;
|
mGoToJail = true;
|
||||||
|
|
||||||
|
MWWorld::Ptr player = getPlayerPtr();
|
||||||
|
|
||||||
|
int bounty = player.getClass().getNpcStats(player).getBounty();
|
||||||
|
player.getClass().getNpcStats(player).setBounty(0);
|
||||||
|
mPlayer->recordCrimeId();
|
||||||
|
confiscateStolenItems(player);
|
||||||
|
|
||||||
|
int iDaysinPrisonMod = getStore().get<ESM::GameSetting>().find("iDaysinPrisonMod")->getInt();
|
||||||
|
mDaysInPrison = std::max(1, bounty / iDaysinPrisonMod);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2822,13 +2833,8 @@ namespace MWWorld
|
||||||
|
|
||||||
MWWorld::Ptr player = getPlayerPtr();
|
MWWorld::Ptr player = getPlayerPtr();
|
||||||
teleportToClosestMarker(player, "prisonmarker");
|
teleportToClosestMarker(player, "prisonmarker");
|
||||||
int bounty = player.getClass().getNpcStats(player).getBounty();
|
|
||||||
player.getClass().getNpcStats(player).setBounty(0);
|
|
||||||
confiscateStolenItems(player);
|
|
||||||
|
|
||||||
int iDaysinPrisonMod = getStore().get<ESM::GameSetting>().find("iDaysinPrisonMod")->getInt();
|
|
||||||
int days = std::max(1, bounty / iDaysinPrisonMod);
|
|
||||||
|
|
||||||
|
int days = mDaysInPrison;
|
||||||
advanceTime(days * 24);
|
advanceTime(days * 24);
|
||||||
for (int i=0; i<days*24; ++i)
|
for (int i=0; i<days*24; ++i)
|
||||||
MWBase::Environment::get().getMechanicsManager ()->rest (true);
|
MWBase::Environment::get().getMechanicsManager ()->rest (true);
|
||||||
|
|
|
@ -143,6 +143,7 @@ namespace MWWorld
|
||||||
bool mTeleportEnabled;
|
bool mTeleportEnabled;
|
||||||
bool mLevitationEnabled;
|
bool mLevitationEnabled;
|
||||||
bool mGoToJail;
|
bool mGoToJail;
|
||||||
|
int mDaysInPrison;
|
||||||
|
|
||||||
float feetToGameUnits(float feet);
|
float feetToGameUnits(float feet);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue