|Anonymous | Login | Signup for a new account||2018-12-11 15:16 CET|
|Main | My View | View Issues | Change Log | Wiki | Tavern | News|
|Viewing Issue Simple Details|
|ID||Category||Severity||Reproducibility||Date Submitted||Last Update|
|0011749||[DCSS] Bug Report||minor||always||2018-11-05 03:45||2018-11-05 20:01|
|Status||new||Product Branch||0.23 development branch|
|Summary||0011749: "Your [armour/shield] prevents you from hitting the foo" incorrect|
melee_attack::player_why_missed() gives you this message if your to-hit is lower than the target's EV and your to-hit plus your armour/shield penalty is greater than or equal to the target's EV.
This message is usually wrong, for several reasons:
1. The armour/shield penalty is deducted from your to-hit prior to the maybe_random2() call that, on average, more than halves to-hit. So player_why_missed() is pretending that the armour/shield penalties are more than twice as impactful as they actually are. So in the majority of cases where you get this message, your to-hit would have still been lower than the target's EV even without the penalties.
2. Even if the correct armour/shield penalty values were used, having a to-hit greater than or equal to the target's EV does not ensure that the attack will hit. There is a 2.5% chance of missing anyway.
3. Even if the correct armour/shield penalty values were used, having a to-hit less than the target's EV does not ensure that the attack will miss. There is a 2.5% chance of hitting anyway.
The result is that unspoiled players are misled about the severity of armour/shield accuracy penalties.
|Tags||No tags attached.|
edited on: 2018-11-05 20:02
player_why_missed describes why an attack, that has just been calculated to miss the enemy, has missed. Therefore the 2.5% chances have already been rolled. For this reason, there is a simple fix for point 2 (add a check for if(ev_margin<=-AUTOMATIC_HIT) at the start of the method), and point 3 has no effect because if the attack has rolled the 2.5% chance to hit anyway, this method will not be called.
You are very much correct with point 1; I think we have all been severely misled by this.
|2018-11-05 03:45||minmay||New Issue|
|2018-11-05 20:01||NormalPerson7||Note Added: 0032785|
|2018-11-05 20:02||NormalPerson7||Note Edited: 0032785|
|2018-11-08 13:18||TAS2012||Issue Monitored: TAS2012|
|Mantis 1.1.8[^] Copyright © 2000 - 2009 Mantis Group|