You have a few people with some time willing to help, I feel like we were close to figuring it out. I would like to see your issue properly resolved, I think it would make a good addition. Is there a way to modify the amount of torpedoes fired and insert something along the following lines:
ceasefire == 0 [this would be the base state of the launcher, ie. no active ceasefire on ptube]
maxload = maximum torpedo load - 1
currentload = maximum torpedo load - current torpedo load
if currentload = maxload: return (ceasefire==1) [this would be the turn off for ptube]
if ceasefire == 1: dont launch anymore torpedoes until (grab the reload delay on the tube) amount of time. [this would be the code turning off the ptube for the specified timeframe, 40 seconds in your case]
(above code is not to be copied, just a general outline of the idea)
I think that should be possible by temporarily disabling the tube for the reload delay value of the tube referenced in the ship script so that the last torpedo is never fired (set num ready to 11 so you fire 10 and leave 1 in the launcher until after reload delay); you may need to call forwardtube.getreloaddelay()
As for where to put that code, I would think it would go into ConditionTorpsReady under the TorpFired definition, so every time a torpedo is fired it will check to make sure that current torpedo load is greater than or equal to >= 1. If 1, disable the launcher for ptube.getreloaddelay() seconds