Even without Continuous Time (tm)
Test Strings in Space (TSiS)
We all know that OnShipDone is tremendously useful to evaluate set strings in space. But what if that isnt enough? What if you want to test s###, too?
I just realised that you can actally have EVN evaluate test strings in space without use of crons or tatepostincs. The secret is the Sxxx Fxxx and Axxx operators: IF mission xxx is active, abort it. So you can do stuff like using Sxxx in a situation where mission xxx might already be active. If it is, nothing happens. If it isnt, it runs the onaccept field of the mission instantly. Im still puzzling over the different places this could be useful, but one thing ive come upon is the problem brought up a while ago: A mission to destroy three planets in the same system, with a bit set to be executed when the mission is completed, but it can be done in any order. The solution they used involved using datepostincs and such, which i think is rather unwieldy and messes things up like reinfinterval, for example.
The way to do it would be to put the same string in each of the planets in the ondestroy fields. Something like F001 F002 S002. In the onfail of mission 002 is S001, and in the onfail of 001 is whatever you need to happen when the mission is completed. Note the actual mission the player gets would be something else, like mission 003, with no goal. You could probably force that mission to fail with the onfail of mission 001, and have the failtext look like sucesstext, or whatever the hell its called.
This, however, requires a few things. To play it out, we will see what the engine needs to do.
The first kill of planet, the engine evaluates F001 F002 S002. Mission one is not active, so it does nothing, mission two is not active, so it does nothing. Mission two is not active, so it starts mission two. The second time. Mission one still not active. Mission 2 fails, starting mission 1. Mission two is still active, only failed, so it is not started again. Third kill. Mission one is forced to fail, doing whatever you wanted to do.
Untested engine assumptions: The engine must read from left to right. A failed mission will stay active and failed until (?) id guess, if there is a failtext, until the player gets back to return stellar. Maybe it gets rid of sooner if there isnt a failtext, i dont think we have a consensus on that. We also assume that a Failed mission cant be started, though for this application it doesnt really matter either way.
Anyway, I have just been working out all of the useful things you can do with this by using this method. The biggest problem is its use of the infinately valuble misn rescource, but I'm also working on ways of geting around that.
*TSiS and CTPiS are both registered
trademarks of Do s### In Space Enterprise,
a subsidiary of Inn0tech Enterprise,
solely owned by NebuchadnezzaR.
Feel free to steal, just know
We did it first.
Anyway, sorry for the UBB fun. Thoughts on this?