Line 18: |
Line 18: |
| end | | end |
| | | |
− | -- Shelling hit rate.
| + | function Combat2.accuracy_value(ship, target, context) |
− | -- ship and target can be Ship, EnemyShip, ShipCapabilities, or a plain table.
| |
− | -- [[Category:Todo]]: detection based on _equipment, fuel modifier.
| |
− | function Combat2.hit_rate(ship, target, context) | |
− | | |
| ship = ship and ship.ship or ship | | ship = ship and ship.ship or ship |
| target = target and target.ship or target | | target = target and target.ship or target |
Line 29: |
Line 25: |
| return | | return |
| end | | end |
− |
| |
| local level = ship._level or 1 | | local level = ship._level or 1 |
| local luck = ship._luck or 0 | | local luck = ship._luck or 0 |
Line 38: |
Line 33: |
| 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_1 = (90 + 2 * sqrt(level) + sqrt(1.5 * luck) + accuracy) * morale * formation |
| + | local accuracy_value_2 = accuracy_value_1 + fit |
| + | local accuracy_value_3 = accuracy_value_2 * as_modifier * ap_modifier |
| + | return accuracy_value_1, accuracy_value_2, accuracy_value_3 |
| + | end |
| + | |
| + | -- Shelling hit rate. |
| + | -- ship and target can be Ship, EnemyShip, ShipCapabilities, or a plain table. |
| + | -- [[Category:Todo]]: detection based on _equipment, fuel modifier. |
| + | function Combat2.hit_rate(ship, target, context) |
| + | |
| + | ship = ship and ship.ship or ship |
| + | target = target and target.ship or target |
| + | context = context or {} |
| + | if not ship or not target then |
| + | return |
| + | end |
| | | |
− | local accuracy_value = floor(((90 + 2 * sqrt(level) + sqrt(1.5 * luck) + accuracy) * morale * formation + fit) * as_modifier * ap_modifier) | + | local _, _, accuracy_value = Combat2.accuracy_value(ship, target, context) |
| | | |
| local evasion = target._evasion or 0 | | local evasion = target._evasion or 0 |
Line 85: |
Line 97: |
| } | | } |
| local target = Ship("Destroyer Ro-Class") | | local target = Ship("Destroyer Ro-Class") |
− | mw.log(Combat2.hit_rate(ship, target)) | + | mw.log(Combat2.accuracy_value(ship, target)) |
| + | mw.log(Combat2.hit_rate(ship, target), "") |
| mw.log(Combat2.critical_hit_rate(ship, target)) | | mw.log(Combat2.critical_hit_rate(ship, target)) |
| end | | end |
| | | |
| return Combat2 | | return Combat2 |