mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-09-18 08:56:10 -04:00
Merge branch 'StackValueAffectsFightTerm' into 'master'
Make item value affect theft observer's fight willingness Closes #8500 See merge request OpenMW/openmw!4673
This commit is contained in:
commit
aa652a20f0
@ -1232,33 +1232,39 @@ namespace MWMechanics
|
|||||||
victim.getClass().getCreatureStats(victim).notifyMurder();
|
victim.getClass().getCreatureStats(victim).notifyMurder();
|
||||||
|
|
||||||
// Bounty and disposition penalty for each type of crime
|
// Bounty and disposition penalty for each type of crime
|
||||||
float disp = 0.f, dispVictim = 0.f;
|
int bounty;
|
||||||
|
float disp, dispVictim;
|
||||||
if (type == OT_Trespassing || type == OT_SleepingInOwnedBed)
|
if (type == OT_Trespassing || type == OT_SleepingInOwnedBed)
|
||||||
{
|
{
|
||||||
arg = store.find("iCrimeTresspass")->mValue.getInteger();
|
bounty = store.find("iCrimeTresspass")->mValue.getInteger();
|
||||||
disp = dispVictim = store.find("iDispTresspass")->mValue.getFloat();
|
disp = dispVictim = store.find("iDispTresspass")->mValue.getFloat();
|
||||||
}
|
}
|
||||||
else if (type == OT_Pickpocket)
|
else if (type == OT_Pickpocket)
|
||||||
{
|
{
|
||||||
arg = store.find("iCrimePickPocket")->mValue.getInteger();
|
bounty = store.find("iCrimePickPocket")->mValue.getInteger();
|
||||||
disp = dispVictim = store.find("fDispPickPocketMod")->mValue.getFloat();
|
disp = dispVictim = store.find("fDispPickPocketMod")->mValue.getFloat();
|
||||||
}
|
}
|
||||||
else if (type == OT_Assault)
|
else if (type == OT_Assault)
|
||||||
{
|
{
|
||||||
arg = store.find("iCrimeAttack")->mValue.getInteger();
|
bounty = store.find("iCrimeAttack")->mValue.getInteger();
|
||||||
disp = store.find("iDispAttackMod")->mValue.getFloat();
|
disp = store.find("iDispAttackMod")->mValue.getFloat();
|
||||||
dispVictim = store.find("fDispAttacking")->mValue.getFloat();
|
dispVictim = store.find("fDispAttacking")->mValue.getFloat();
|
||||||
}
|
}
|
||||||
else if (type == OT_Murder)
|
else if (type == OT_Murder)
|
||||||
{
|
{
|
||||||
arg = store.find("iCrimeKilling")->mValue.getInteger();
|
bounty = store.find("iCrimeKilling")->mValue.getInteger();
|
||||||
disp = dispVictim = store.find("iDispKilling")->mValue.getFloat();
|
disp = dispVictim = store.find("iDispKilling")->mValue.getFloat();
|
||||||
}
|
}
|
||||||
else if (type == OT_Theft)
|
else if (type == OT_Theft)
|
||||||
{
|
{
|
||||||
|
bounty = static_cast<int>(arg * store.find("fCrimeStealing")->mValue.getFloat());
|
||||||
|
bounty = std::max(1, bounty); // Minimum bounty of 1, in case items with zero value are stolen
|
||||||
disp = dispVictim = store.find("fDispStealing")->mValue.getFloat() * arg;
|
disp = dispVictim = store.find("fDispStealing")->mValue.getFloat() * arg;
|
||||||
arg = static_cast<int>(arg * store.find("fCrimeStealing")->mValue.getFloat());
|
}
|
||||||
arg = std::max(1, arg); // Minimum bounty of 1, in case items with zero value are stolen
|
else
|
||||||
|
{
|
||||||
|
bounty = arg;
|
||||||
|
disp = dispVictim = 0.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make surrounding actors within alarm distance respond to the crime
|
// Make surrounding actors within alarm distance respond to the crime
|
||||||
@ -1296,7 +1302,7 @@ namespace MWMechanics
|
|||||||
else if (type == OT_Murder)
|
else if (type == OT_Murder)
|
||||||
fight = fightVictim = esmStore.get<ESM::GameSetting>().find("iFightKilling")->mValue.getInteger();
|
fight = fightVictim = esmStore.get<ESM::GameSetting>().find("iFightKilling")->mValue.getInteger();
|
||||||
else if (type == OT_Theft)
|
else if (type == OT_Theft)
|
||||||
fight = fightVictim = esmStore.get<ESM::GameSetting>().find("fFightStealing")->mValue.getInteger();
|
fight = fightVictim = esmStore.get<ESM::GameSetting>().find("fFightStealing")->mValue.getInteger() * arg;
|
||||||
|
|
||||||
bool reported = false;
|
bool reported = false;
|
||||||
|
|
||||||
@ -1457,7 +1463,7 @@ namespace MWMechanics
|
|||||||
if (reported)
|
if (reported)
|
||||||
{
|
{
|
||||||
player.getClass().getNpcStats(player).setBounty(
|
player.getClass().getNpcStats(player).setBounty(
|
||||||
std::max(0, player.getClass().getNpcStats(player).getBounty() + arg));
|
std::max(0, player.getClass().getNpcStats(player).getBounty() + bounty));
|
||||||
|
|
||||||
// If committing a crime against a faction member, expell from the faction
|
// If committing a crime against a faction member, expell from the faction
|
||||||
if (!victim.isEmpty() && victim.getClass().isNpc())
|
if (!victim.isEmpty() && victim.getClass().isNpc())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user