Line 17: |
Line 17: |
| -- Calculate shelling hit (normal and critical) rate. | | -- Calculate shelling hit (normal and critical) rate. |
| -- ship and target can be Ship, EnemyShip, ShipCapabilities, etc. | | -- ship and target can be Ship, EnemyShip, ShipCapabilities, etc. |
− | -- [[Category:Todo]]: ignoring equipment, type and fuel modifiers. | + | -- [[Category:Todo]]: |
| + | -- * ignoring equipment, type and fuel modifiers |
| + | -- * also use _fields instead of getter functions? then any record will do for ship and target |
| function Combat2.hit_rate(ship, target, context) | | function Combat2.hit_rate(ship, target, context) |
| | | |
Line 30: |
Line 32: |
| local luck = ship:luck() or 0 | | local luck = ship:luck() or 0 |
| local accuracy = ship:accuracy() or 0 | | local accuracy = ship:accuracy() or 0 |
| + | local fit = ship._fit or 0 |
| + | local as_modifier = ship._as_modifier or 1 |
| + | local ap_modifier = ship._ap_modifier or 1 |
| local morale = morale_modifier(ship:morale()) | | local morale = morale_modifier(ship:morale()) |
| local formation = context._formation or ship._formation or 1 | | local formation = context._formation or ship._formation or 1 |
− |
| + | |
− | local accuracy_value = floor((90 + 2 * sqrt(level) + sqrt(1.5 * luck) + accuracy) * morale * formation) | + | local accuracy_value = floor(((90 + 2 * sqrt(level) + sqrt(1.5 * luck) + accuracy) * morale * formation + fit) * as_modifier * ap_modifier) |
| | | |
| local evasion = target:evasion() or 0 | | local evasion = target:evasion() or 0 |