Ambrosia Garden Archive
    • Circular Mission Strings?


      May be a silly question, but is it possible to have a circular mission string?
      eg. mission 1 triggers mission 2 triggers mission 3 triggers mission 1?

      Coming from a programmer's perspective, having a main loop in a program is required for the program to continually run. I can think of some uses where a plugin scenario might want to take advantage of such a loop, especially combined with if/then type conditional branching.

      ------------------
      Dawn of Infinity(formerly OpenEV): the open-source multi-player EV (url="http://"http://www.dawnofinfinity.org")http://www.dawnofinfinity.org(/url)

    • Sure you can. Just use the third mission to clear all the bits that had been set by the first two when the third completes.

      ------------------
      ((Ż'ˇ.¸(Ż'ˇ.¸Ť•-KAME-•ť¸.ˇ'´Ż)¸.ˇ'´Ż))
      I used to jog but the ice kept falling out of my glass.
      (url="http://"http://www.0three0.net/l-1551/")L 1551(/url) - The official site of RONIN and The Way and the ten thousand things

    • Yes it is possible.

      example:
      mďsn 1: Available !((b1 | b2) | b3) OnDone b1
      mďsn 2: Available !(b1 | b2) & b3 OnDone b1 !b3
      mďsn 3: Available !(b2 | b3) & b1 OnDone b2 !b1
      mďsn 4: Available !(b1 | b3) & b2 OnDone b3 !b2

      For a simple three mission loop. Mission 1 is an entrance mission, which then sets up the loop of 3, 4, and 2. Add in other logic to create exit states.

      (Edit)
      The loop actually would scale decently. The number of mission would always be n (number of missions in the loop) plus one. The number of bits in the OnDone would always be no more than two, and the number of availability bits would be n. However the time coding would look like n ^2 + n since there would be n +1 missions times n bits per mission. Not too bad for small loops, but it gets worse rather quickly.
      ------------------
      "If you can't feel the Force, you're not pushing it." -Prof. Li on the "Force"
      Got g?
      Ignorance killed the cat. Curiosity was framed.
      (url="http://"http://www.herdthinners.com/")You will be attacked by a beast who has the body of a wolf, the tail of a lion, and the face of Donald Duck.(/url)

      (This message has been edited by Chuckles (edited 11-25-2003).)

    • I beleive NCB are so powerful that they allow you to do practically anything, including very complex behavior if you refuse or fail a mission: "traitor" missions that appear at a specific time in the loop, loop that continues without ending except if you fail, then it would branch you to a new thing, failure of one mission causes you to be fired, resulting in the loop never being available again. It's so powerful compaired to the basic mission bits of EV(O)... For instance in Chuckles' example you could set mďsn 4 to set b4 on completion only 99% of the time, and 1% of the time it would cause something to go wrong (set b5) and the missions continue with something else that requires b5, and so on...

      ------------------
      M'enfin! Y'a personne qui parle français ici?
      Suport the ß! Replace all your ss's by ß's! -feature currently unused

    • Just a small point, Zacha Pedro. While NCB's are powerful, there is no way to make them activate a certain percentage of the time. The best we have is R(b1, b2), which is a 50-50 shot. However, you can make missions that activate X% of the time, and work with that to do your strange loops- X% of the time one mission activates, otherwise another, seemingly identical mission activates.

      (And just for the record- this is one of the reasons why I say mission writing in SS is so darn difficult)

      ------------------
      ~Charlie
      Sephil Saga Homepage: (url="http://"http://www.cwssoftware.com")www.cwssoftware.com(/url)

    • You could, however, activate more random missions randomly with R ( b1 , $ (b2, b3 ) ).

      ------------------

    • Do nested R()'s work? I've tried it but never was able to make a firm descision one way or the other. It seemed to kind of work- but not completely. It always seemed like the same bit would be set every time, or else all the bits would be set.

      ------------------
      ~Charlie
      Sephil Saga Homepage: (url="http://"http://www.cwssoftware.com")www.cwssoftware.com(/url)

    • Quote

      Originally posted by Masamune:
      **Do nested R()'s work? I've tried it but never was able to make a firm descision one way or the other. It seemed to kind of work- but not completely. It always seemed like the same bit would be set every time, or else all the bits would be set.

      **

      If they do, you could do some really complicated stuff...

      R(b0, R(b1, R(b2, R(b3, R(b4, b5), b6), b7), b8), b9)

      That would be scary...theoretically, it could have any of 10 bits set. But not really, if you think about it—it chooses one of two choices, chooses another of two choices, chooses another of two choices, etc.

      ------------------
      The programmer's code of entomology: there's always another bug.
      Microsquash™ Winblows™ users: stop asking for plugins. (url="http://"http://www.aznt.com/EVN/EVNEW/")Make one yourself.(/url)

    • Hey, Kids! Matt Burch says, "Don't kill the ncb evaluator with too many nested expressions!!"

      😄

      Trust me on this.

      Dave @ ATMOS

    • Quote

      )Hey, Kids! Matt Burch says, "Don't kill the ncb evaluator with too many nested expressions!!"

      😄

      Trust me on this.

      Grins evilly

      ------------------
      The programmer's code of entomology: there's always another bug.
      Microsquash™ Winblows™ users: stop asking for plugins. (url="http://"http://www.aznt.com/EVN/EVNEW/")Make one yourself.(/url)

      (This message has been edited by orcaloverbri9 (edited 11-27-2003).)

    • I've tried working with nested R() bits before.

      I can tell you conclusively that they do not work. It ignores the outside R() bit, and runs both of the nested functions.

      eg:
      R( r(A B) r(C D))
      can yield any of the following:
      A and C
      A and D
      B and C
      B and D

      If nested R() bits worked, the above would only yield one of the four, instead of two.

      ------------------
      "Trust me, this'll work..." - Me.
      "WARPCORE BREACH IN 10 SECONDS." - Computer.
      "... Of course, I could be wrong..." - Me.

      This post has been edited by Eugene Chin : 29 May 2008 - 10:25 PM

    • Ah, so that's what was happenning- I knew something wasn't working right.

      Still, you could use R(b1, b2) R(b3, b4) R(b5, b6), and then for the test string something like b1 & (b3 | b6) and get some creative possibilities- though it wouldn't be any good for random text, since that only uses one bit.

      ------------------
      ~Charlie
      Sephil Saga Homepage: (url="http://"http://www.cwssoftware.com")www.cwssoftware.com(/url)

    • Quote

      Originally posted by Masamune:
      **Ah, so that's what was happenning- I knew something wasn't working right.

      Still, you could use R(b1, b2) R(b3, b4) R(b5, b6), and then for the test string something like b1 & (b3 | b6) and get some creative possibilities- though it wouldn't be any good for random text, since that only uses one bit.

      **

      They say that bits are now no longer complicated and hard to work with...well, as far as I'm concerned, they're more complicated and harder to work with. 😉

      ------------------
      The programmer's code of entomology: there's always another bug.
      Microsquash™ Winblows™ users: stop asking for plugins. (url="http://"http://www.aznt.com/EVN/EVNEW/")Make one yourself.(/url)

    • You could have a couple of auto-aborting missions to achieve a similar effect. For example, in the OnStart fields, you could have:

      misn 128: R(S129, S130)
      misn 129: R(b1, b2)
      misn 130: R(b3, b4)

      That would randomly set one of b1, b2, b3, and b4.

      ------------------
      Get (url="http://"http://www.aznt.com/EVN/EVNEW")EVNEW(/url) - the free, open-source plugin EVN Editor for Windows!

    • Quote

      Originally posted by orcaloverbri9:
      **They say that bits are now no longer complicated and hard to work with...well, as far as I'm concerned, they're more complicated and harder to work with.;)

      **

      Well, when you've been studying digital logic for 5 years it's pretty darn simple. BUt if you haven't, I can see where some difficulty could arise!

      ------------------
      ~Charlie
      Sephil Saga Homepage: (url="http://"http://www.cwssoftware.com")www.cwssoftware.com(/url)

    • Quote

      Originally posted by Masamune:
      **Well, when you've been studying digital logic for 5 years it's pretty darn simple. BUt if you haven't, I can see where some difficulty could arise!

      **

      No, I know digital logic inside and out. But you have to agree it's true. It's like you think none of three plug-ins are cool, but there's a difference between cool and cool est.

      Good lord...now I'm making EV plug-in analogies...

      ------------------
      The programmer's code of entomology: there's always another bug.
      Microsquash™ Winblows™ users: stop asking for plugins. (url="http://"http://www.aznt.com/EVN/EVNEW/")Make one yourself.(/url)

    • Quote

      Originally posted by Masamune:
      **Just a small point, Zacha Pedro. While NCB's are powerful, there is no way to make them activate a certain percentage of the time. The best we have is R(b1, b2), which is a 50-50 shot. However, you can make missions that activate X% of the time, and work with that to do your strange loops- X% of the time one mission activates, otherwise another, seemingly identical mission activates.

      (And just for the record- this is one of the reasons why I say mission writing in SS is so darn difficult)

      **

      OOPS! Sorry, forgot that... But there's a way! If you want, for instance, something to happen only 6.25% of the time, you can set mïsn 4 to have On-anything- be R(b5,!b5) R(b6,!b6) R(b7,!b7) R(b8,!b8), the following mission in the loop check for (!b5|!b6)|(!b7|!b8)), and the mission that tells you something has gone wrong check for (b5&b6;)&(b7&b8;) (trust me, the two expressions are exclusive, and one is bound to be true, I know a fair bit of boolean illogic).

      ------------------
      M'enfin! Y'a personne qui parle français ici?
      Suport the ß! Replace all your ss's by ß's! -feature currently unused

    • You got it, Zacha. It just takes a little ingenuity, as you have displayed.

      Again, I just want to say that not being able to do nested {bX "1" "2"} expressions was a hideous oversight.

      ------------------
      ~Charlie
      Sephil Saga Homepage: (url="http://"http://www.cwssoftware.com")www.cwssoftware.com(/url)

    • Quote

      Originally posted by Masamune:
      **You got it, Zacha. It just takes a little ingenuity, as you have displayed.

      Again, I just want to say that not being able to do nested {bX "1" "2"} expressions was a hideous oversight.

      **

      If there's a will, there's always a way... almost 😉

      EDIT: Yeah! sig at last works, and is 800×600 compatible.
      ------------------
      The (url="http://"https://secure.ambrosiasw.com/cgi-bin/store/hazel.cgi?action=serve&item;=breakdown.html&BREAKDOWN;_SKUID=1480")Ambrosia Mac CD(/url) with other registrations- 5$; (url="http://"https://secure.ambrosiasw.com/cgi-bin/store/hazel.cgi?action=serve&item;=catalog.html&GROUPVIEW;=Games&DETAILSKUID;=1720&BAR;=2")Nova registration(/url) as it's such a great game - 30$
      The (url="http://"https://secure.ambrosiasw.com/cgi-bin/store/hazel.cgi?action=serve&item;=catalog.html&GROUPVIEW;=Ware&DETAILSKUID;=2630&BAR;=4")1337 EV Nova T-shirt(/url) - 22$; The (url="http://"http://www.ambrosiasw.com/cgi-bin/vftp/show.pl?product=evn&category;=utilities&display;=date&page;=2")NovaTools(/url) by wOOtWare to tinker with your Nova - FREE!
      Everything paid with Eurocard Mastercard; The feeling you're a Nova geek - priceless.
      There are things you can't buy or that are free, for everything else, there's indeed Eurocard Mastercard.

      (This message has been edited by Zacha Pedro (edited 12-04-2003).)

    • There's also another way to do it. Have whatever bit you set on completion start a cron (you can set the probability) that will clear the bit. This should let you set an NCB 99% of the time, or whatever amount you choose.