PDA

View Full Version : Randomizing torpedo damage


LoBlo
08-08-06, 01:32 PM
I've taken the suggestion of kage to heart ( http://www.subsim.com/radioroom/showthread.php?t=96322 ) and have been messing with the torphoming doctrine to try to randomize torp damage a bit. For far it works pretty good.

Here's how it works. In the torphoming doctrine, the torp is given a random "DetonationRange" between 0 and 100 meters at launch. The torp will now detonate at a random range from the target, sometimes still within the hull for full damage (if the detonation range is small it will still be inside the target hull), and sometimes right outside the hull for less damage (100meters from the centerline of the ship is most often just outside the hull form). The end result is that the amount of damage to the ship is more random and unpredictable sometimes full damage sometimes a bit less. The hit the ship will take can vary by a small percentage points.

If anyone would like to test it, here's a example of the changes merged with Luftwolf and Amizuars stellar torphoming doctrine. (assuming its ok with them).


; $Header: TorpHoming.txt Thu Jul 24 09:26:21 EDT 2003 mike $
; $Revision: 2 $
; $Copyrt1: Copyright (c) 2003, Sonalysts, Inc. All rights reserved. $
;
; torpedos not detonating on CMs (with exeption of towed CM) mod by Amizaur
;
; second version, game crashing fixed by breaking one big condition into two subconditions
; modded by LoBlo to produce more variation in explosive range Aug 8th 2006
var DetonateRange
IF INIT THEN {
DetonateRange = rnd 100
} ENDIF
IF Not LostTrack THEN {
IF GetEntVar "Enabled" THEN {
IF ownspd < ( maxSpd * 1.5 ) THEN {
IF ( TgtRng < 30 ) THEN {
IF ( TgtClass $= "Weap" ) AND NOT ( TargetName $= "Towed Decoy" ) THEN {
DebugOut "TorpHoming dropping CM now!"
Drop
} ELSE {
SetPriority 252
TerminalHome
} ENDIF
} ELSE {
SetPriority 252
TerminalHome
} ENDIF

IF ( TgtRng < DetonateRange ) AND NOT ( TargetName $= "Towed Decoy" ) AND NOT ( TgtClass $= "Weap" ) THEN {
Detonate
} ENDIF

} ENDIF
} ENDIF
} ENDIF


So for example a Oscar with an Armor rating of 400 hit by a mk48 with a weapon rating of 400 with sink with one hit about 30% of the time. The other 70% of the time it will be drastically crippled (with 85-95% damage) but will still be afloat. If the chance of sinking needs to be increased the ship armor rating can be reduced to 350 or 360. The same methods can be used for the Typhoon, surface ships, or any other platform. Sometimes a Mk54 will sink a SW in one hit. Most of the times it won't.

Unfortunatlely there is a minor bug already in that extremely large platforms like supercarriers and supertankers will almost always take full damage like previously because their hulls are so large that the detonation range will still be inside the hull like always. Expanding the detonationrange range a bit can rectify this but the result is that on smaller ships the torp hits are way outside their hull and looks unrealistic and a little cheap. Giving a seperate detonation range to a supership is one way to fix this problem and something that can be experimented on.

Needs testing. Please give feedback.

weasel
10-03-06, 05:18 PM
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:


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.