Hi so I am very new to twine and coding and ive come up on a bit of a block. I am trying to make stats. Like oposing stats and a little window to see the stats. I have no idea how to do it. I am using the most recent version of twine and sugarcube. I am also trying to get a bar to show what direction the stats are leaning if that makes sense. Thank you
First of all, as you say you’re new to Twine and Sugarcube, here’s a link to the section about variables: https://www.motoslave.net/sugarcube/2/docs/#twinescript-variables.
- The good news about opposed variables: you basically only want one variable.
In a passage you name StoryInit:
<<set $Force to 5>>
Anytime you’re variable goes up or down:
<<set $Force to +=1>> <<if $Force gt 10>> <<set $Force to 10>> <</if>>
<<set $Force to -=1>> <<if $Force lt 0>> <<set $Force to 0>> <</if>>
The opposed variable is always equal to (in this example 10- $Force), so anytime you think you need the opposed variable to be greater than 5, you actually need $Force to be lesser than 5.
Note you can set any maximum you want, if you want the opposed variables to go from 0 to 100 you can, or even from 3 to 6 if you wish so.
- With the StoryCaption message you can set a link to the character stats, this link will appear in the left sidebar.
<<link "Player statistics" "Stats">><</link>>
In the Stats passage you can show any characteristics you want:
Strength: $Force Weakness: <<print 10-$Force>>
It will show as
And you might want to add a <
<back>> macro in the Stats passage in order to allow the reader to go on.
- About the bar … I don’t know how to, someone else will have to step on this one!
The stats page was something i was having alot of trouble with for some reason so thank you!
Additional to souppilouliouma excellent advice on how to use an
<<if>> macro to stop the value of “stat” variable going outside a pre-determined range (eg. 0 to 10)…
You can use the
Math.clamp() function when you’re change the variable’s value using the
<<set>> macro to achieve a similar outcome.
/* Increase "force" by one, making sure value doesn't go above 10 */ <<set $Force to Math.clamp($Force + 1, 0, 10)>> /* Decrease "force" by one, making sure value doesn't go below 0 */ <<set $Force to Math.clamp($Force - 1, 0, 10)>>
The following is a simple test that shows the above works as expected.
<<set $Force to 9>> before: $Force <<set $Force to Math.clamp($Force + 1, 0, 10)>> after 1st: $Force <<set $Force to Math.clamp($Force + 1, 0, 10)>> after 2nd: $Force <<set $Force to 1>> before: $Force <<set $Force to Math.clamp($Force - 1, 0, 10)>> after 1st: $Force <<set $Force to Math.clamp($Force - 1, 0, 10)>> after 2nd: $Force
Ok cool so looking all this over I think ill probably stick with normal variables instead of opposed. When creating my variables though say Charisma do i put that in my stats page? And how do I start it with 0?
To create your variables, make a passage named
StoryInit and set the starting value of all your stats there (i.e.
<<set $Charisma to 0>>).
Also, if you want to display ChoiceScript-style opposed stat bars, I wrote a bit of code for that over in this thread.
Awesome! Thank you! I actually moved to twine from choice script so its a bit of a learning curve especially since i had everything choice script pretty much sorted.