I did some playing around with your idea of variable detonation range and tried to apply it to missiles. Apparently the key file here seems to be the terminal_home file.
I put the DetRng code right at the beginning and so far it seems to work.
Script looks as follows:
Code:
var DetRng
IF INIT THEN {
DetRng = rnd 100
} ENDIF
IF ( TgtRng < DetRng ) THEN {
Detonate
} ENDIF
IF NOT INIT THEN {
; Home
SETPRIORITY 252
SETPERSIST 0 ; don't time out
TERMINALHOME
} ELSE {
DEBUGOUT OwnName
DEBUGOUT " Acquired "
DEBUGOUT TargetName
} ENDIF
I set up a test scenario with OHPs as targets. Set Harpoon damage to 442 and OHP armor to 450.
Test run with 20 Harpoons each fired at 1 OHP:
- 2x 100% destroyed
- 10x 98% damage
- 8x ranging from 43%-69% damage
It's intersting that the missiles managed to sink the ship 2 times, even though the damage value was less than the ship's armor (?).
I also did a quick test with some CV-targets and as far as I've seen the script suffers from the same 'bug' as your torpedo script, when hitting large targets.
However, I think random damage is mostly useful to simluate damage on targets that could theoretically be killed by a single missile/torpedo and since big targets do require several missiles to kill them anyway, I consider this not a major issue.