How to make storybook using IF to send to two places?

TyCamden
In my actual program (a work in progress), I still have a problem. It is hard to explain. The code is below. Run it and choose:
1.) The man goes to work ;
2.) The man falls on the icy sidewalk ;
3.) Head to work * ;
4.) The man stops at 7-11...
You will see that instead of running the IF code, it just shows it on screen and stops the gamebook.
I want it so that if you saw this one earlier choice it will go to one section of code, and if you did not see the choice it will go to another.

problem "code":

@start intro

[[intro]]:
@set coffee=100

@title The Coffee Cup

A man takes his plastic coffee cup from the cupboard. His favorite one. It is insulated to keep his coffee warmer, longer. It is black, and without design, serious and businesslike. And a handle with a comfortable grip.

He fills his coffee cup. It is pleased.

"Man, do I feel good. But, where am I? What am I? I appear to be a coffee cup. But... I have no memory before this one. Well... what happens now?"

[[The man heads to work]]

[[The man likes sugar in his coffee]]

[[The man decides to drink tea]]

[[The man likes sugar in his coffee]]:

The man likes sugar in his coffee. He opens a pack, and dumps it in.

"What is this powder that is being poured into me? It is so sweet. But... how am I tasting it? Or seeing anything? I don't have facial features. Not even a mouth. So, I cannot he heard or understood. HEY! MAN WITH THE POWDER! Nothing."

[[The man heads to work]]

[[The man likes cream in his coffee]]

[[The man decides to drink tea]]:

The man says aloud, "I'm tired of coffee today. I think I'll have some tea."

His wife replies, "I just made some. It's still on the stove."

The coffee cup screams: NO ! I AM A COFFEE CUP ! NOT A TEA CUP ! DON'T DO IT !

But noone can hear him.

[[Tea it is]]

[[The man changes his mind again and has coffee]]

[[Tea it is]]:

He pours the coffee down the sink and rinses out the cup. He pours in some hot tea instead.

What does the coffee cup think about this? It does not. It no longer thinks at all. It is back to being just... a coffee cup.

The End.

[[The man changes his mind again and has coffee]]:

The man says aloud, "Nevermind. I'm running late."

"Whew, that was a close one. I don't think it be right, carrying tea. It's just... not in my nature."

[[The man heads to work]]

[[The man likes cream in his coffee]]:

The man likes cream in his coffee, so he pours some in.

"I'm being diluted by a white liquid!? It's not bad though."

The man stirs the drink.

The coffee cup laughs with delight. Oh. He is ticklish !

[[The man heads to work]]

[[The man heads to work]]:

The man grabs his keys, celphone, and coffee cup, and heads out the door to work.

The coffee cup is momentarily blinded by the sun. It is so bright outside, much brighter than indoors. And it is relecting off of the snow covering the man's yard. But it knows it is well insulated for his trip, and his contents well protected from the frigid winds.

[[The man falls on the icy sidewalk]]

[[The man gets into his car and heads to work]]

[[The man falls on the icy sidewalk]]:
set ("coffee", get("coffee") / 2 );
{if coffee<1: [[Finish]](YouLose)}

The man's shoes lose grip on the ice and he topples down. His coffee cup goes flying, and the lid pops off when it hits the sidewalk. Half of it is spilled, forever lost.

The coffee cup cries in pain, and feels dizzy, but it survives. It begins to question it's own mortality.

[[Head to work]](The man gets into his car and heads to work)

[[The man gets into his car and heads to work]]:

The man gets to his car, and into it as well. He places the coffee cup in the cup-holder of the car.

"I feel very safe here. Very secure indeed. Looks like we are going a bit on an adventure."

[[The man arrives at work]]

[[The man stops at 7-11]]

[[The man has a car accident]]

[[The man stops at 7-11]]:

The man stops at the 7-11.

if (squiffy.story.seen("The man falls on the icy sidewalk")) {
[[711hefellearlier]]
} else {
[[711nofallearlier]]
}

[[711hefellearlier]]:

@set coffee=100

He tops-off his coffee.

" I feel rejuvinated ! "

[[The man heads to work]](The man arrives at work)

[[711nofallearlier]]:

He grabs a donut to eat at work.

[[The man heads to work]](The man arrives at work)

[[The man arrives at work]]:

coffee = {coffee}

{if seen The man stops at 7-11:{manLate}}{else:{manOnTime}}

[[manLate]]:

set ("coffee", get("coffee")-20 );

The man arrives at work. He is late.

His boss warns him not to be late again.

He walks over to his desk and sits down. As he eats his donut, he drinks the coffee.


{if coffee<1: [[Finish]](YouLose)}

[[He has to use the bathroom]]

[[manOnTime]]:

set ("coffee", get("coffee")-10 );

The man arrives at work. He is almost late, but made it just in time.

He walks over to his desk and sits down. He drinks some of the coffee.

{if coffee<1: [[Finish]](YouLose)}

[[He has to use the bathroom]]

[[The man has a car accident]]:

x

[[He has to use the bathroom]]:

x

Dennis Carlyle
TyCamden wrote:In my actual program (a work in progress), I still have a problem. It is hard to explain. The code is below. Run it and choose:
1.) The man goes to work ;
2.) The man falls on the icy sidewalk ;
3.) Head to work * ;
4.) The man stops at 7-11...
You will see that instead of running the IF code, it just shows it on screen and stops the gamebook.
I want it so that if you saw this one earlier choice it will go to one section of code, and if you did not see the choice it will go to another.



I'm more comfortable just setting a 'flag' of my own, so I don't, so far, use the "has seen" thing in Squiffy. As far as the problem above goes, I did this to get it working:

------------------------------------------------
[[The man falls on the icy sidewalk]]:
set ("coffee", get("coffee") / 2 );

<!-- comment: this sets a flag you check later. -->
@set manFalls = 1

{if coffee<1: [[Finish]](YouLose)}
------------------------------------------------


[[The man stops at 7-11]]: --->>

(1) Delete "The man stops at the 7-11." text line you have at the beginning of the section. You have Javascript code in this section, and JS will *not* work in Squiffy unless it's the *first* thing in a section or passage. You can just add the "...stops at 7-11" line to the beginning of both the other sections -- fell earlier / did not fall earlier.
-->

(2) Use the "story.go" command. I don't know if "story.seen" works in JS, but I didn't use it. I used the flag "manFalls" that I set in the icy sidewalk section.

So the code ends up looking like this:

[[The man stops at 7-11]]:
if (squiffy.get("manFalls") == 1) {
squiffy.story.go("711hefellearlier");
}
else {
squiffy.story.go("711nofallearlier");
}

TyCamden
Thanks for the advice. Works GREAT now !

I used the flag idea (to be safe).

I also moved that text, to get the IF working properly, like you said. As follows:

[[711hefellearlier]]:

@set coffee=100

The man stops at the 7-11.

He tops-off his coffee.

" I feel rejuvinated ! "

[[The man heads to work]](The man arrives at work)

[[711nofallearlier]]:

The man stops at the 7-11.

He grabs a donut to eat at work.

[[The man heads to work]](The man arrives at work)


Thanks again!

This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums