mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-29 03:26:38 +00:00 
			
		
		
		
	Allow ModPCCrimeLevel to clear crimes and cap bounties
This commit is contained in:
		
							parent
							
								
									7922f0e7f8
								
							
						
					
					
						commit
						77cf9284b7
					
				
					 4 changed files with 11 additions and 6 deletions
				
			
		|  | @ -77,6 +77,7 @@ | |||
|     Bug #7380: NiZBufferProperty issue | ||||
|     Bug #7413: Generated wilderness cells don't spawn fish | ||||
|     Bug #7415: Unbreakable lock discrepancies | ||||
|     Bug #7416: Modpccrimelevel is different from vanilla | ||||
|     Bug #7428: AutoCalc flag is not used to calculate enchantment costs | ||||
|     Bug #7450: Evading obstacles does not work for actors missing certain animations | ||||
|     Bug #7459: Icons get stacked on the cursor when picking up multiple items simultaneously | ||||
|  |  | |||
|  | @ -1152,7 +1152,7 @@ namespace MWMechanics | |||
|         if (npcStats.getCrimeId() != -1) | ||||
|         { | ||||
|             // if you've paid for your crimes and I haven't noticed
 | ||||
|             if (npcStats.getCrimeId() <= world->getPlayer().getCrimeId()) | ||||
|             if (npcStats.getCrimeId() <= world->getPlayer().getCrimeId() || playerStats.getBounty() <= 0) | ||||
|             { | ||||
|                 // Calm witness down
 | ||||
|                 if (ptr.getClass().isClass(ptr, "Guard")) | ||||
|  |  | |||
|  | @ -1358,7 +1358,8 @@ namespace MWMechanics | |||
| 
 | ||||
|         if (reported) | ||||
|         { | ||||
|             player.getClass().getNpcStats(player).setBounty(player.getClass().getNpcStats(player).getBounty() + arg); | ||||
|             player.getClass().getNpcStats(player).setBounty( | ||||
|                 std::max(0, player.getClass().getNpcStats(player).getBounty() + arg)); | ||||
| 
 | ||||
|             // If committing a crime against a faction member, expell from the faction
 | ||||
|             if (!victim.isEmpty() && victim.getClass().isNpc()) | ||||
|  | @ -1923,7 +1924,8 @@ namespace MWMechanics | |||
| 
 | ||||
|                 if (reported) | ||||
|                 { | ||||
|                     npcStats.setBounty(npcStats.getBounty() + gmst.find("iWereWolfBounty")->mValue.getInteger()); | ||||
|                     npcStats.setBounty( | ||||
|                         std::max(0, npcStats.getBounty() + gmst.find("iWereWolfBounty")->mValue.getInteger())); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  |  | |||
|  | @ -445,10 +445,12 @@ namespace MWScript | |||
|             { | ||||
|                 MWBase::World* world = MWBase::Environment::get().getWorld(); | ||||
|                 MWWorld::Ptr player = world->getPlayerPtr(); | ||||
| 
 | ||||
|                 player.getClass().getNpcStats(player).setBounty( | ||||
|                     static_cast<int>(runtime[0].mFloat) + player.getClass().getNpcStats(player).getBounty()); | ||||
|                 int bounty = std::max( | ||||
|                     0, static_cast<int>(runtime[0].mFloat) + player.getClass().getNpcStats(player).getBounty()); | ||||
|                 player.getClass().getNpcStats(player).setBounty(bounty); | ||||
|                 runtime.pop(); | ||||
|                 if (bounty == 0) | ||||
|                     MWBase::Environment::get().getWorld()->getPlayer().recordCrimeId(); | ||||
|             } | ||||
|         }; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue