Going to college

College credits in EVN

Suppose one makes a mission string in which the pilot goes off to college. Of course, going to college involves accruing "college credits", and when the pilot has enough "credits" he can get a "degree." I'm wondering, how might this be implemented? I was thinking perhaps of creating an dummy outf (ID xxx) called “credits”. Suppose you complete a mission that gives you 3 credits. Then the misn would have Gxxx Gxxx Gxxx in the OnSuccess field.

My question is: if it takes, for example 60 credits to graduate, how might you make a “graduation ceremony”-type mission whose AvailBit field checks to see if you have at least 60 credits? And after you complete such a mission, is there a more elegant way to remove all your credits than writing “Dxxx” 60 times?

Or, is there a better way to implement this than using dummy outfs?

You need to use a counter method for that to work. Easy to do once you understand it, but it'll take some time to implement.
Check these two methods.

Instead of outfits, this could probably also be implemented using ranks. They wouldn't be visible in the outfitters this way, and with the right flags you could even use a "graduation" rank to take away all of your credits ranks...

The downside, though, is that you can't really have multiple copies of a "credits" rank, and you'd probably have to credit multiple ranks such as "1 credit", "2 credits", etc.

Thanks a lot for telling me about the counters, Pace. It’s exactly what I’m looking for. I'd like to do something with outfits and ranks, since then the player can look up how many credits he already has by pressing P. The BORC method seems to be better suited then. However, I'm not completely sure how the BORC method works. What is the purpose of b1? The trigger is set to fire when the counter (O1) exceeds a certain value, but O1 seems to be decreasing, not increasing. Does complete a 3 credit mission mean that you get a G2 G2 G2? Does CIC refer to Continuous, Iterative cron entry or exit? And what's the difference? Also, is the duration field be set to zero in all cases?

If it's too much of a trouble for you to address this for me, it's okay. I'll just use the regulus/aranor method instead, and a roundabout way to make it show up in the outf section.

I must admit the BORC method is one I never quite understood. The other method is much simpler for me.
If you were to use the Regulus/Aranor method, I would separate the thing in two: on one side, you have the normal counter; on the other, you have one outfit (and I'll get to Gutless's idea of ränks, which is a good one).

So whenever you get a credit, you set b0 and gXXX.
Crön 1, with a duration of 1 day (because 0-day cröns can cause problems), kicks off if "b0 & !b1", and onEnd does "!b0 b1".
Crön 2, same duration:
- Avail: b0 & (b1 & !b2)
- onEnd: !b0 !b1 b2
Crön 3:
- Avail: (b0 & b1) & (b2 & !b3)
- onEnd: !b0 !b1 !b2 !b3
And so on until you reach 60 (i.e. you'll need to reach b6).

If you can get multiple credits in one go, I'd suggest having dedicated cröns.
For example, you want the player to get three credits.
Set b7, and gXXX gXXX gXXX.
Now, crön 3-1: if b7 & !(b1 | b2), then !b7 b1 b2
Crön 3-2: if (b7 & b1) & !(b2 | b3), then !b7 !b1 b3
Crön 3-3: if ((b7 & b1) & (!b2 & b3)) & !b4, then !b7 !b1 !b3 b4
Crön 3-4: if ((b7 & b1) & (b2 & b3)) & !b4, then !b7 !b1 !b3 b4
Actually, I now realise these last two can be put together in one.
So Crön 3-3: if (b7 & b1) & (b3 & !b4), then !b7 !b1 !b3 b4
And so on until you've explored all possibilities.

Now, regarding ränks, they would be a good way to say "graduated" and stuff like that.

And to remove all the credits once the year is done, I would set bit Z and create an iterative crön, set as follows:
- avail: bZ & oXXX
- onEnd: dXXX
Now, the problem with this is that it will take a long time to remove every credit. So it might still be good to have on invisible mďsn that does a good deal of "dXXXing" (copy & paste being your best friend here).

The main problem is that you'll then need a large number of cröns, because different courses give different amounts of credits (some courses give you 3, some 4, and some 5 credits – some even more), and so you'll need a set of cröns per amount of credits.
If someone has a better idea, either in general or about one step in particular, I urge them to speak 😉

Wow, this is a hell of a trip back. There was a time when everybody was going nuts over BORC (Boyd Outfit Resource Counter), BONC (Boyd Outfit/ncb Calculator), and RANC (Regulus/Aranor ncb Counter). There was also BITEC (Boyd If-Then-Else Counter), which as I recall did not work.

All of them (especially Boyd's) are fairly complicated and not worth it unless you really want a counter.

This post has been edited by orcaloverbri9 : 29 March 2008 - 09:45 AM

Aw, come on, Brian, the RANC method is not that complicated 😛 (it's the only one I understand)

Never heard of BONC nor BITEC though.

Just wondering, what's the point? Rather, what does one get by completing this string? Do you get a new ship? weapon, etc.? Or is this meant to be on par with the major strings? If not, would you be allowed to continue on to another major string? Would you get to skip anything on the major strings, such as the trading missions? Could it be expanded?

To my last question, I would say yes. I would think you could make this much bigger than this. You could add another major string. You could allow one's self to choose between all of the mission strings, including a new one you will have made. I think this is a pretty good idea, since it will open up all kinds of possibilities. Good luck on your "quest". May the gods, themselves, have great pleasure in assisting you.

Hmm, interesting approach, Pace. I was actually planning on using a more direct borrowing of Aranor's, as it seems more parsimonious with the resources:

outf1: credit outfit. Dummy outfit, allows player to see how many credits
they already have.
b1-4: credit bits. Internal use by game, to tell when graduation ceremony
mission should be offered.
b0: increment (toggle) bit: tells cron 1-4 to increase bits.
b5: graduation bit: tells cron 5 to take away all outfits.

Finish 1-credit-granting mission: G1 b0

(from Aranor)
Cron(X):
- EnableOn: b0 & (b2 & (b3 & b4))
- OnStart: ^b1
Cron(X+1):
- EnableOn: b0 & (b3 & b4)
- OnStart: ^b2
Cron(X+2):
- EnableOn: b0 & b4
- OnStart: ^b3
Cron(X+3)
- EnableOn: b0
- OnStart: ^b4 !b0

Graduate ceremony requires b1 & b2 & b3 & b4 (15 units required to graduate)
Complete graduation ceremony: apply Graduate rank; set bit b5

Take away all credits after graduation:
Cron(X+4)
- EnableOn: O1 & b5
- OnStart: D1

(Question: For Cron(X+4), if I set the CIC flag to 0x0001, will this be able to take away all the credits on one day?)

I was still thinking about how to implement a mission that gives multiple credits when I saw your post. Perhaps this:

outf2: temporary value; gives number of bits to increase.

complete 3 credit mission: G1 G1 G1 G2 G2 G2

Cron(X-1):
- EnableOn: G2 & !b0
- OnStart: D2 b0

Thus, the player's profile would immediately register an addition of 3 credits, but the internal bit-run counter would increase by 1 each day for 3 days.

What do you think about this?

To the person who asks: what is the point? What does one get by completing the string? I would respond: it's the journey that counts, not the destination. Imagine: going back to school to get a Ph.D. in Ass-Kicking. Earn credits by kicking ass across the galaxy. Defend you thesis - literally - in a climactic final battle. Starting other mission strings afterward and being addressed as "{b5 "Dr." {G "Mr." "Ms."}} <PN>" (btw is that nestled braces construction even possible?). But if you insist that there must be something more tangible in all this, I would say that the college string would be a good way to earn credits and combat experience early in the game. Other missions may be opened as a result, but for now I'm not going to get ahead of myself.

This post has been edited by rozinante : 29 March 2008 - 09:30 PM

Also, Jean-Luc, I imagine you are asking about how about how a college string would fit in the context of my upcoming Combat Missions plug (progress update: working on the bounty hunter storyline). I've concluded that the major strings would be significantly more difficult to overhaul than the minor strings, not just because there are more missions, but also because the nature of the plots themselves (excepting the aurorans) do not easily lend to an increased combat role. Thus, my short term plans are limited to sticking to overhauling the minor strings, for which I've already made significant progress. I've decided that, if one is looking to play a major string in the stock universe with a significant amount of combat, Arpia is the way to go for now. And thus I'm aiming to ensure that my plugin is compatible with arpia. Not a trivial task, since arpia uses up every single mission slot. For this reason, I'm sticking to modifying exisiting missions in stock nova. One thing I'm thinking about doing is completely replacing the tutorial string (which no one plays) and the terraforming string (the most boring ever) with completely new mission strings (maybe tangentially related to terraforming), including the college string mentioned above. There should be enough mission slots freed up that way to accommodate a large minor string (on par with wild geese/bounty hunters) in addition to the college string. At any rate, thanks for your support.

This post has been edited by rozinante : 29 March 2008 - 09:52 PM

A college string, eh? But EV already has bars. What more would you need? 😉

@rozinante, on Mar 30 2008, 03:28 AM, said in Going to college:

Hmm, interesting approach, Pace. I was actually planning on using a more direct borrowing of Aranor's, as it seems more parsimonious with the resources:

Actually, it's the same thing as mine, except that I thought you required 60 units to graduate. And another difference is that Aranor takes b1 as being the biggest (representing 8), where I started with b1 being the smallest (1).

@rozinante, on Mar 30 2008, 03:28 AM, said in Going to college:

Question: For Cron(X+4), if I set the CIC flag to 0x0001, will this be able to take away all the credits on one day?

I think not, but as I said, I'm not an expert on iterative cröns.

@rozinante, on Mar 30 2008, 03:28 AM, said in Going to college:

I was still thinking about how to implement a mission that gives multiple credits when I saw your post. Perhaps this:

outf2: temporary value; gives number of bits to increase.

complete 3 credit mission: G1 G1 G1 G2 G2 G2

Cron(X-1):
- EnableOn: G2 & !b0
- OnStart: D2 b0

Thus, the player's profile would immediately register an addition of 3 credits, but the internal bit-run counter would increase by 1 each day for 3 days.

True, it would work, but as you say, it would require a few days to finish working (whereas my method only takes a day, regardless of the number of credits involved).
It's up to you to see if you want to add the impression of time passing by before graduation, or if you want the player to get his/her diploma right away.

@rozinante, on Mar 30 2008, 03:28 AM, said in Going to college:

(btw is that nestled braces construction even possible?)

Not possible, unfortunately.

Yeah, after thinking about it, I guess it's true that our implementations are more or less the same.

Suppose after the conclusion of a three credit mission, I put in a DatePostInc value of 3 so as to allow enough time for the crons to execute three times. Will that work?

Also, instead of nested curly braces, how about something like "{b5 "Dr."} {(!b5 & G) "Mr."} {!(b5 | G) "Ms."} <PN>"?

@rozinante, on Mar 30 2008, 09:17 PM, said in Going to college:

Suppose after the conclusion of a three credit mission, I put in DatePostInc value of 3 so as to allow enough time for the crons to execute three times. Will that work?

Also, instead of nested curly braces, how about something like "{b5 "Dr."} {(!b5 & G) "Mr."} {!(b5 | G) "Ms."} <PN>"?

Nope, those nested expressions won't work, and neither will DatePostInc. Unfortunately.

I love your boolean algebra, though. 😄

Mind you, what you could do is make series of cröns. At the start of the game, you make one which sets either (say) b6 or b7 depending on whether the player is male or female, and one that activates when b5 gets set that clears both b6 and b7. By this, we ensure that only one of b5, b6 or b7 are ever set at the same time. Then you can make your expression {b5 "Dr."} {b6 "Mr."} {b7 "Ms."} <PN>. It's a bit clunky, though

Do it with ranks. Assign the player an invisible ränk with the title "Mr." if the player is male, or "Ms." if the player is female. When you finish your mission, you assign a higher-priority rank with the title "Dr.". Then your expression simply becomes <PSR> <PN>. Mind you, that could result in the wrong title being used if there's a higher-weight ränk in effect, but they're supposed to call you by your most important rank anyway. 🙂

@belthazar, on Mar 30 2008, 02:56 PM, said in Going to college:

I love your boolean algebra, though. 😄

heh, de morgan's laws are always lovable, especially in EV logic.

Quote

Mind you, what you could do is make series of cröns. At the start of the game, you make one which sets either (say) b6 or b7 depending on whether the player is male or female, and one that activates when b5 gets set that clears both b6 and b7. By this, we ensure that only one of b5, b6 or b7 are ever set at the same time. Then you can make your expression {b5 "Dr."} {b6 "Mr."} {b7 "Ms."} <PN>. It's a bit clunky, though

Do it with ranks. Assign the player an invisible ränk with the title "Mr." if the player is male, or "Ms." if the player is female. When you finish your mission, you assign a higher-priority rank with the title "Dr.". Then your expression simply becomes <PSR> <PN>. Mind you, that could result in the wrong title being used if there's a higher-weight ränk in effect, but they're supposed to call you by your most important rank anyway. 🙂

Wow, that's a lot more work for than I had anticipated. Good ideas though. Any ideas I end up using will be duly credited, of course.