unfortunately,
even with using the GUI~Editor, you'll have to train your brain to think in terms of "code logic", despite not writing it in code.
this is just simply the nature of designing a computer (programmed) game.
you have to think like a computer:
Conditionals: "if this, then do that, else do X", "foreach X, do Y", "if firsttime do this, otherwise do that", and etc
Comparisons: "if, this equals~not equals~greater than~lesser than~etc that, then do X", ie: "if (true=true), then do X", ie: "if (5=5), then do X"
Conversions (String Dictionaries): "if this, then, change to or become, that", ie: "water=fire;fire=water;earth=air;air=earth", ie: "january=winter; february=winter;march=spring;may=spring;etc", ie: "january=1;1=january;february=2;2=february;etc"
logical~virtual movement~actions using altering of attributes instead of actually in-game-moving of objects, such as a "gold coin" around (see algebraic substitutions -> "transactions" below).
and etc...
and you'll have to be good at math:
game mechanics (ie: your strength * skill * weapon_damage - monster endurance * skill * armor defense = your final_physical_damage) and game balancing of those mechanics
algebraic substitution for altering attributes (ie: player.strength = player.strength + 1, ie: "transactions", ie: buy: player.cash = player.cash - sword.cash and shop_owner.cash = shop_owner.cash + sword.cash)
and good at writing:
story~plot~events
and media:
art~graphics and sounds~music
-----------
first is the concept of using randomization (which is very useful for many things that you probably want to do):
(In Code): GetRandomInt (min,max)
Object.Attribute = Value_or_Expression
Expression: as we're using a built-in function: GetRandomInt (min,max)
don't worry about this being code syntax~format, as I'll tell you how to do this in the GUI~Editor later, but as of right now, we're just going over the useful concept of randomization. Anyways, what this built-in Function does is, for example:
Object: television
Attribute: topic_choice
Attribute Type: int (integer)
Value: 0
television.topic_choice = GetRandomInt (1,5)
it'll "randomly" select some number between 1 and 5, ie: 1, 2, 3, 4, or 5
(let's say it's "4")
television.topic_choice = 4
then, we'd use an "If" (or "Switch") Scripts:
if (television.topic_choice = "1") {
-> msg ("FOXNEWS")
} else if (television.topic_choice = "2") {
-> msg ("CNN")
} else if (television.topic_choice = "3") {
-> msg ("MSNBC")
} else if (television.topic_choice = "4") {
-> msg (""BBC")
} else if (television.topic_choice = "5") {
-> msg ("C-SPAN")
}
~OR~
The "switch" Script is (nearly) exactly the same as the multiple "ifs" above, it's just a slightly different structure, that's all.
switch (television.topic_choice) {
-> case ("1") {
->-> msg ("FOXNEWS")
-> }
-> case ("2") {
->-> msg ("CNN")
-> }
-> case ("3") {
->-> msg ("MSNBC")
-> }
-> case ("4") {
->-> msg ("BBC")
-> }
-> case ("5") {
->-> msg ("C-SPAN")
-> }
}
so, what would the game engine output? Answer: BBC
does this concept-wise make sense (and *hopefully* this code writing does too, hehe~wink) ???
what would the game engine output be, if the "randomization" [aka: GetRandomInt (1,5) ] function chose: 2, ??? Answer: CNN
----------
so, think of this just like using a phone, you type (or dial ~ I'm old, lol), in a specific number, and it calls someone specific. That's all we're doing in concept. How you want to generate the "number" you'll use to "call that specific person", I'll also be trying to explain some of these ways conceptually here as well, keep reading, hehe.
"randomization" is but one (though very useful) way to generate the "number".
-----------
you can use the above concept, or you can add slightly to it, to get a slightly different design-result:
(we're NOT using the "randomization" function here, instead, we're incrementing the number each time, for what the output will be, it'll follow a cyclical pattern)
Object: television
Attribute: watch_count
Attribute Type: int
Value: 1
if (television.watch_count = "1") {
-> msg ("FOXNEWS")
} else if (television.watch_count = "2") {
-> msg ("CNN")
} else if (television.watch_count = "3") {
-> msg ("MSNBC")
} else if (television.watch_count = "4") {
-> msg (""BBC")
} else if (television.watch_count = "5") {
-> msg ("C-SPAN")
}
television.watch_count = television.watch_count + 1
~OR~
switch (television.watch_count) {
-> case ("1") {
->-> msg ("FOXNEWS")
-> }
-> case ("2") {
->-> msg ("CNN")
-> }
-> case ("3") {
->-> msg ("MSNBC")
-> }
-> case ("4") {
->-> msg ("BBC")
-> }
-> case ("5") {
->-> msg ("C-SPAN")
-> }
}
television.watch_count = television.watch_count + 1
so each time we "watch" (Verb) the "television" (Object):
Old: television.watch_count = 1
television.watch_count (New) = television.watch_count (Old) + 1 (Value)
television.watch_count (New) = 1 (Old) + 1 (Value)
television.watch_count (New) = 1 + 1
New: television.watch_count = 2
Old: television.watch_count = 2
television.watch_count (New) = television.watch_count (Old) + 1 (Value)
television.watch_count (New) = 2 (Old) + 1 (Value)
television.watch_count (New) = 2 + 1
New: television.watch_count = 3
Old: television.watch_count = 3
television.watch_count (New) = television.watch_count (Old) + 1 (Value)
television.watch_count (New) = 3 (Old) + 1 (Value)
television.watch_count (New) = 3 + 1
New: television.watch_count = 4
etc etc etc
------
if (television.watch_count = "6") {
-> television.watch_count = 1
}
if (television.watch_count = "1") {
-> msg ("FOXNEWS")
} else if (television.watch_count = "2") {
-> msg ("CNN")
} else if (television.watch_count = "3") {
-> msg ("MSNBC")
} else if (television.watch_count = "4") {
-> msg (""BBC")
} else if (television.watch_count = "5") {
-> msg ("C-SPAN")
}
television.watch_count = television.watch_count + 1
~OR~
if (television.watch_count = "6") {
-> television.watch_count = 1
}
switch (television.watch_count) {
-> case ("1") {
->-> msg ("FOXNEWS")
-> }
-> case ("2") {
->-> msg ("CNN")
-> }
-> case ("3") {
->-> msg ("MSNBC")
-> }
-> case ("4") {
->-> msg ("BBC")
-> }
-> case ("5") {
->-> msg ("C-SPAN")
-> }
}
television.watch_count = television.watch_count + 1
---
alright, were you able to understand this too ???
---------------
Object: poolhall20
Attribute: response_choice
Attribute Type: boolean (boolean = flag)
Value: unknown
msg ("alright, were you able to understand this too ???")
get input {
-> // quest engine will automatically set: result = user's typed-in input during game play
-> poolhall20.response_choice = result
-> If (poolhall20.response_choice = "yes") {
->-> msg ("GOOD JOB !!!! hehe

")
-> } else if (poolhall20.response = "no") {
->-> msg ("HK did a bad job, boo hoo. HK tries to explain better the 2nd time around")
-> }
}
-----------
we can also get~select~choose a result~choice by:
1. having the user type in their input during game play (via the "get input" Script)
2. selecting the choice~result from a pop up menu window (via the "show menu" Script)
both of these automatically set the variable "result" (your choice~result) to:
(Variable = Value_or_Expression)
result = your choice
and for my example game for you below, I'll use the "get input" Script.
----------
Anyways, now that I scared you immensely, let's do this via the GUI~Editor, which is a lot less scary for you, lol
what are you using?
1. online version or offline~desktop version? (there's some differences and~or more~less features between the two of them)
~AND~
2. text adventure mode or gamebook~storybook mode? (there's some differences and~or more~less features between the two of them)
I can only help with the offline~desktop version and with text adventure mode, as that is all that I've used so far, lol.
I still use an older version of quest (540), but this shouldn't matter as I try to help you, hopefully...
err... I ended up just creating an example game for you, if you want me to help you do it yourself in the GUI~Editor, let me know, but here's the example game for you to study and play with (game code below ~ you can copy and paste this to a new game ~ ask if you need help on how to do this, or you can download the game .exe file, as an attachment, also, even further, below):
if it won't load~open~start up (as you're likely using the most recent version), either I have the wrong version number coded in (ask and we can help you with how to change this) or you'll have to make a few changes to the code to make it compatible with your version, again, ask us and we can help you do this too.
<asl version="550">
<include ref="English.aslx" />
<include ref="Core.aslx" />
<game name="Testing Game Stuff">
<gameid>d67ec73f-f879-4911-9d88-c02ea527c534</gameid>
<version>1.0</version>
<firstpublished>2013</firstpublished>
</game>
<object name="room">
<inherit name="editor_room" />
<object name="player">
<inherit name="editor_object" />
<inherit name="editor_player" />
</object>
<object name="television">
<inherit name="editor_object" />
<inherit name="switchable" />
<alias>tv</alias>
<switchedon type="boolean">false</switchedon>
<look type="script">
watch_function
</look>
<watch type="script">
watch_function
</watch>
<channel type="script"><![CDATA[
if (IsSwitchedOn (television)) {
msg ("What channel do you want to watch?")
msg ("(1) FOXNEWS (2) CNN (3) MSNBC (4) BBC (5) C-SPAN")
msg ("Type in the number of the channel that you want, please.")
get input {
if (IsInt (result)) {
if (ToInt (result) > 0 and ToInt (result) < 6) {
global_data_object.channel_choice = ToInt (result)
global_data_object.channel_name = StringDictionaryItem (global_data_object.channel_conversion, ToString (global_data_object.channel_choice))
msg ("You turn to " + global_data_object.channel_name + " channel.")
}
else {
invoke (television.channel)
}
}
else {
invoke (television.channel)
}
}
} else {
msg ("You can't change the channel, while the tv is still turned off.")
}
]]></channel>
</object>
</object>
<object name="global_data_object">
<inherit name="editor_object" />
<attr name="channel_choice" type="int">1</attr>
<channel_list type="stringlist">
<value>1</value>
<value>2</value>
<value>3</value>
<value>4</value>
<value>5</value>
</channel_list>
<channel_conversion type="stringdictionary">
<item>
<key>1</key>
<value>FOXNEWS</value>
</item>
<item>
<key>2</key>
<value>CNN</value>
</item>
<item>
<key>3</key>
<value>MSNBC</value>
</item>
<item>
<key>4</key>
<value>BBC</value>
</item>
<item>
<key>5</key>
<value>C-SPAN</value>
</item>
</channel_conversion>
<attr name="channel_name">unknown</attr>
</object>
<verb>
<property>watch</property>
<pattern>watch</pattern>
<defaultexpression>"You can't watch " + object.article + "."</defaultexpression>
</verb>
<verb>
<property>channel</property>
<pattern>channel</pattern>
<defaultexpression>"You can't change the channel of the tv."</defaultexpression>
</verb>
<function name="watch_function">
if (IsSwitchedOn (television)) {
msg ("You look at the tv and watch what is on the screen...")
if (global_data_object.channel_choice = 1) {
msg ("FOXNEWS")
}
else if (global_data_object.channel_choice = 2) {
msg ("CNN")
}
else if (global_data_object.channel_choice = 3) {
msg ("MSNBC")
}
else if (global_data_object.channel_choice = 4) {
msg ("BBC")
}
else if (global_data_object.channel_choice = 5) {
msg ("C-SPAN")
}
}
else {
msg ("You look at the tv and see a black screen, as it is turned off.")
}
</function>
</asl>