Some launchers like the M136 and RPG-18 are single-shot discardable launchers. I propose to make a OnFired event handler that exchanges the launcher with a "used" version after the shot. In order not to break older missions I propose to introduce a global variable "CUP_disableDisposableLaunchers" that, if true, lets the game behave like it used to.
Configs should get an extra entry
CUP_LauncherUsed = <classname>;
that indicates what the launcher gets replaced with when fired. The "used" launcher has all its magazine entries stripped.
Make an editor module that needs to be placed to get disposable launchers. That would give best compatibility to other solutions like ACE. The basic mechanism would be the same.