This mod is not known to work with the latest version of Kerbal Space Program. Proceed with caution.
Introducing... TrekDrive, by ShadowWorks (NO LONGER WIP)
Inspired by RoverDude's Standalone Alcubierre Warp Drive, this warp drive aspires to operate in a Star Trek-like manner requiring at least two types of parts to operate: warp coils/nacelles and the heart of the drive, the warp core and warp field generator. I have seen in other threads here where people were trying to figure out how to require the use of warp nacelles to get that Star Trek feel to their KSP warp drives, and that's what I set out to do with this, my first plugin mod. Maybe a bit ambitious, but I think it turned out well. Now, on to the details.
Technical Aspects: The plugin includes three Part Modules: SW_ModuleWarpCoil, SW_ModuleWarpCore, and SW_ModuleWarpGenerator.
SW_ModuleWarpCoil: This module would typically be attached to a warp nacelle part, but could be added to any part for a design that perhaps doesn't use a nacelle, or similar structure. Requires: Warp plasma, which is generated by a warp core part using SW_ModuleWarpCore. Restrictions: Cannot be added to the same part as the SW_ModuleWarpGenerator. This is the restriction that requires at least two types of parts.
SW_ModuleWarpCore: A simple generator module that takes in deuterium (matter) and anti-deuterium (antimatter) to generate warp plasma and electric charge. (Could be replaced with a stock ModuleGenerator I suppose, but it's included all the same). Requires: Deuterium and Anti-Deuterium. Restrictions: None hardcoded.
SW_ModuleWarpGenerator: The heart of the warp drive that actually moves the ship at warp speeds. Just like RoverDude's Standalone Alcubierre Warp Drive, the drive uses translation, not acceleration, to move the ship through space. Also, like RoverDude's drive, I used a slightly modified version of his gravity braking code so that ships will slow down when they near gravitational bodies. Requires: At least one part implementing SW_ModuleWarpCoil that cannot be the same part implementing SW_ModuleWarpGenerator. This is what forces the requirement of multiple parts. Restrictions: All warp coils must be charged before the drive can be activated, and enough electric charge to run the drive is also necessary. If either of these is not true the drive cannot activate, or will automatically disengage.
NOTE: Some part on the vessel should have a container for warp plasma. In the included test parts the nacelles have their own warp plasma containers, but it can be on any part of the vessel.
How to Use: I have kept the operation of the drive entirely within the Part Action Windows (PAW) of each part. Follow these steps to activate the drive. Step 1: Activate the Warp Core by clicking the "Warp Core Status" toggle Step 2: Charge the Warp Coil(s) by clicking "Charge Warp Coils" in the coil PAW Step 3: Once the coils are charged click "Check Ready Status" on the Warp Generator (combined with the Warp Core Test Article here). The drive will not enter the "Ready" status until all the coils are charged, and will not do so if there are any other active Warp Generators. Step 4: Once the "Ready Status" reads "Ready", click "Engage Warp Drive" on the Warp Generator. This will change from "Drive Inactive" to "Drive Engaged"
Once the drive is engaged, any throttle input will move the ship at warp speeds. To return to non-warp operation, simply click the "Engage Warp Drive" toggle in the PAW to disengage the drive. Current warp factor is determined as a percentage of the drive's maximum warp rating, based on the amount of throttle: 50% throttle is half of the maximum warp, 100% throttle is maximum warp. E.g. for a drive with a maximum warp of 2, 50% throttle will be Warp 1, and 100% throttle will be Warp 2. The current warp factor is displayed in the Warp Generator's PAW
Step 5: Once you have reached your target destination simply throttle to 0%, or use "x" to cut the throttle. There is an "Orbit Mode" option in the Warp Generator PAW that defaults to "Easy", this places the vessel in as close to a circular orbit as possible when the throttle hits 0 after having been non-zero. That is, it doesn't continually change the orbit while the drive is active, only if it had been moving the ship and then stopped. If the Orbit Mode is toggled to "Realistic", it will simply use the vessel's velocity vector to determine the current orbit, in the same manner as RoverDude's Alcubierre drive.
Limitations: I tried to implement some limitations to make the drive less "cheaty". I took cues from Star Trek, particularly Star Trek: Enterprise, which dealt repeatedly with the limitations of the ship's warp drive. In the show, most problems occurred with the plasma injectors, but I though trying to code some kind of simulation of the injectors would be cumbersome and place unnecessary computational overhead. Other limitations that come to mind are the stability of the warp field, and the warp coil temperature. I opted for warp coil temperature to place a limitation on time at maximum warp.
Warp Coil Temperature: While the drive is active, and moving at warp speeds, to emulate the warp plasma cycling through the coils I have implemented an exponential function that increases the temperature of the warp coil part. The smallest amount of heating occurs at low warp, while the maximum heating occurs at maximum warp. There is a built-in warp coil efficiency that can be used to aid in cooling. The value in the config file is between 0 and 1, and the upper limit is enforced in the code to prevent config editing to make the coils cool themselves at high warp. If a value greater than 1 is used in the config, the plugin randomly chooses an efficiency in the correct range. So, you may get a decently efficient coil, or a really inefficient one. This is also done per coil, so you could have one coil that is really efficient and one that is terrible, which could hamper your warp travel to keep one coil from overheating and exploding (the stock behavior). The maxWarp parameter of the warp coil also plays a role in temperature calculation. A ratio is taken of the active drive's maxWarp to the warp coil's maxWarp to further scale the exponential function. If the warp coil's maxWarp is equal to the drive's, there is not scaling, if it is less, there is more heating, if it is greater it is less. The reasoning is that if you have a warp coil rated for Warp 1, and try to push it to Warp 2, it would burn out much faster, but if it's the other way around, it would be able to handle the temperature better.
Warp Coil Discharged: If the source of warp plasma runs out, or is shut off, the coils may completely discharge, if the user doesn't notice that warp plasma production has stopped. If the coils completely discharge (or their charge goes below the threshold set in their config) the drive will automatically disengage and either be automatically placed in a nearly circular orbit (Easy orbit mode), or be in a realistic orbit based on the vessel velocity vector.
Running out of Electricity: If there is not enough electric charge to run the Warp Field Generator, the drive will automatically disengage and enter an orbit based on the selected orbit mode.
Multiple Warp Generators?: If there are multiple parts on the vessel that implement SW_ModuleWarpGenerator, only one may be active at a time. If you try to activate a second warp generator when one is already active, it will not activate. If you disengage the active drive, you may then activate another.
Current State: The Phoenix warp ship is now playable. The launcher is included.
The balance may not be the greatest, but it's playable.
Community Resource Pack, Waterfall, and B9PartSwitch are now hard dependencies.
Warp Coil charge animation is now implemented.
The Enterprise-era Shuttlepod is implemented (no IVA yet), along with the NX-class starship and it's Refit version (no bridge IVA yet).
The Phoenix is pretty much in its final state while the NX-class is still undergoing development, but is fully usable.
Raw stats are from the beginning of time until now. Each follower and download entry represents one hour of data. Uneventful hours are omitted.