Activating test strings in space

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?

Very nice.
It seems to me that you could set this up to be fundamentally similar to a NCB counter, although as I haven't really looked at those, I'm not certain.
A few minor problems that might occur are the "mission failed" string appearing at bad times, and the question of why missions do or don't stick around after failure.
...
ERK!
I just remembered the BIG problem with this. You see, there isn't just one of each mission. If you start a mission that has already been started, it will start again, giving you a second instance of the same mission. The OnStart sting is almost certain to be evaulated again. 😞
Looks like it may not work after all... 😞

First of all, I dont believe that, second of all, TECHNICALLY, for this application at least, it doesnt really matter. Extra copies of mission 2 at the end of the real mission can all be squished in the onfail of mission 1.

All that matters is that if you Fxxx a mission that isnt started, it wont do anything.

Yes, counters are possible, so long as missions arent duplicable.

Also, I suppose you could use aborting in stead of failure. This will definately mean that mission one is activated twice, but as I said, there are no negative consequences. You just have to be aware.

This post has been edited by NebuchadnezzaR : 22 April 2005 - 03:25 PM

Hmm, apparently, it can start duplicates. The idea still stands, there are just some odd problems with it.

I wonder if the Sxxx can force a delivery mission to start without a 'suitable nontransient spob' for example. I also wonder if the multiple copies can have different targets, though technically I know the target is stored in the pilot file.

im making a demo plugin now.

This post has been edited by NebuchadnezzaR : 22 April 2005 - 03:50 PM

Heres the text dump from Evnew, of a plugin i just made. If someonoe could turn it into a real plugin and compress it, i would be greatful. I dont have the right stuffing software and dont feel like working on that now.

There are a few missions that do stuff... altstarter is autoaborting that start 'started mission', mission killer is autoaborting that aborts 'started mission'.

This lets you see the whole mulicopy thing in action. The firstkill etc are supposed to be invisible, but thats stupid to do while you are testing stuff. Just buy the weapon from the outfitters (its really s###ty, not the point of the plug), jump to the east, and destroy all three planets. Check which missions are active as you do it. A desc pops up after you have killed all three, in any order. Theres no mission clean up, but it would be easy.

(obviously needs Absolute minimum to run)

Attached File(s)

This post has been edited by NebuchadnezzaR : 22 April 2005 - 04:18 PM