I have been considering starting a new game of X3 after 1500+ hours, since my accumulation of mods over time has become cluttered and I'd like to try some new things. One thing is to alter the universal gamechanger that the jumpdrive is. Some things I already do:
* Make the JD much more expensive. I have it set to 2M credits.
* Make it equippable only on L cargo class (was XL, but I found only a few corvettes have XL )
I'd like to do more.
Is it possible to do any of the following? If so, some tips on how?
* Make jumpdrives take much longer to charge. Say 60 seconds instead of 10-15, so that standing still in combat to try and charge your JD is suicide.
* Make them use much more energy than they do, perhaps scaling with distance?
* Make them riskier in general, such as depleting shield energy or damaging the hull with every jump, thus discouraging it for nonstop use? Perhaps even distinguishing a combat jump (dangerous, unpredictable, might damage your ship) vs a planned jump (safer, takes a long time to charge, drains your shields completely)
* Give AI traders a chance to spawn with JD, and use it if they have it?
* Have a cooldown after the JD has been used, so that it can't be immediately re-used?
* Have one massive ship that serves as a fleet jump ship that can jump undocked but nearby ships around it? Like, if any allied jumps are within X meters, also jump them when you jump.
* Slightly unrelated... allow M6 and M8s to dock to M7Cs, or in general just make M7Cs better so there's a long term use for M8s (I found once I could afford M7M, M8 is just pointless anymore, which felt so sad to have all my Claymores in dock forever...)
One thing that I always found in the game is that ultimately I always had the AI at a tremendous disadvantage trade-wise once I got easy access to jumpdrives, since AI traders basically never jump. The only one that did was Litcube's PhanonCorp which unfortunately doesn't work completely right anymore.
I also dislike how the JD is a universal ticket out of combat. Some mods like Pirate's Guild are cool in that pirate caps will sometimes jump away if they are threatened, but generally speaking, every fight is to death, except for the player, who can jump out anytime in just a few seconds. AI ships told to jump will sit perfectly still while preparing to jump but still often make it.
I think with a little push I could probably figure out how to do much of these myself, but I figured I would first ask if anyone else has obvious answers they can point me to.
[AP] Extend jump time or make combat break it? Add JD to traders?
Moderators: Moderators for English X Forum, Scripting / Modding Moderators
Re: [AP] Extend jump time or make combat break it? Add JD to traders?
most of those are fairly easy and can be all done in a similar waysoulmata wrote:Is it possible to do any of the following? If so, some tips on how?
For these, instead of using the built in jump commands, which are hardcoded, you do it via a script instead.soulmata wrote: * Make jumpdrives take much longer to charge. Say 60 seconds instead of 10-15, so that standing still in combat to try and charge your JD is suicide.
* Make them use much more energy than they do, perhaps scaling with distance?
most ships that jump will call the main scripts, ie !move.jump. So modifying this and changing it to use your custom jump script instead would work.
you can simply use the command, put in environment, to do the jumping. Thats basically how my Advanced jumpdrive works, but it does the opposite (reducing energy and time)
you then just put a delay for how long you want it to take, and remove the amount of energy cells
pretty simple, if you do the above, then you just set the shield energy to 0 as part of the jump routinesoulmata wrote: * Make them riskier in general, such as depleting shield energy or damaging the hull with every jump, thus discouraging it for nonstop use? Perhaps even distinguishing a combat jump (dangerous, unpredictable, might damage your ship) vs a planned jump (safer, takes a long time to charge, drains your shields completely)
there are a few ways you could do this, most (non mission) ships are created via jobs, so editing job to add the jumpdrive is fairly easy. You could also do it in your custom jump script, the first time its called, give it a random chance to add a jumpdrive if its a non player ship.soulmata wrote: * Give AI traders a chance to spawn with JD, and use it if they have it?
Then just modify the auto jump to work on all AI ships
easy enough for your ship, again in the custom jump script you can add any delay, how ever, this could effect how the ai moves if they are expecting to jump and it doesn't work.soulmata wrote: * Have a cooldown after the JD has been used, so that it can't be immediately re-used?
Not to difficult either, i actually made something similar to this in an old Firelance mod. THe only difficult is figuring out what ships should actually jump with you, if you just take take everything thats close by.soulmata wrote: * Have one massive ship that serves as a fleet jump ship that can jump undocked but nearby ships around it? Like, if any allied jumps are within X meters, also jump them when you jump.
you need to edit the docking ports on the ship model to be able to take certain types of ships, not overly difficult to dosoulmata wrote: * Slightly unrelated... allow M6 and M8s to dock to M7Cs, or in general just make M7Cs better so there's a long term use for M8s (I found once I could afford M7M, M8 is just pointless anymore, which felt so sad to have all my Claymores in dock forever...)
I settled on merely increasing jump time.
It looked like the overwhelming use case for jump (minus some scripted jumps, like Kha'ak invasions) use !move.jump
Inside !move.jump, there are 2 chunks, one for bigships, one for small ships. Then there is a final check to make sure the ship can jump, before returning either an error or telling the ship to stay while it jumps.
So all I did was insert a wait into the ship type check
if [THIS]-> is of class [Big Ship]
= wait 20000 ms
$r = [THIS]-> use jump drive: target=$target
gosub Check.Jump.Capable:
end
... and it appears to work - EXCEPT for shift+J jumps. Is there any particular reason having every call to !move.jump delay 20s is going to be a problem? And, suggestions on where to look for making SHIFT+J also obey that?
It looked like the overwhelming use case for jump (minus some scripted jumps, like Kha'ak invasions) use !move.jump
Inside !move.jump, there are 2 chunks, one for bigships, one for small ships. Then there is a final check to make sure the ship can jump, before returning either an error or telling the ship to stay while it jumps.
So all I did was insert a wait into the ship type check
if [THIS]-> is of class [Big Ship]
= wait 20000 ms
$r = [THIS]-> use jump drive: target=$target
gosub Check.Jump.Capable:
end
... and it appears to work - EXCEPT for shift+J jumps. Is there any particular reason having every call to !move.jump delay 20s is going to be a problem? And, suggestions on where to look for making SHIFT+J also obey that?