<<print $variable>> Not working?

0 votes
asked Nov 8, 2017 by Macer200 (120 points)
Sugarcube 2.1.3

This is all code that should be affecting the problem:

First passage:

<<set $u = {
soldier: 100,
moral: 80,
hunger: 30,
food: 250,
fight: 0,
recruit: 0

<<set $R = {
soldier: 0

Passage 2

Your soldier count <<print $u.soldier>>.
Your soldier's moral <<print $u.moral>>%.
Your soldier's hunger <<print $u.hunger>>%.
Your amount of food <<print $u.food>>.
<<set $R.soldier = Math.round($soldier / 3)>>
How many fights you have been in <<print $u.fight>>.
How many days it has been since you last recruited from a village or town <<print $u.recruit>>.

Your options:
[[Celebrate]] - <<print $R.soldier>>

<<if $u.recruit <= 0>>
[[Look for towns nearby]]


For some reason the code <<print $R.soldier>> doesn't print anything. And in test mode it doesn't show a '<<print>> #' at all. and there is no red errors anywhere. Did I mess up on something?

1 Answer

0 votes
answered Nov 8, 2017 by greyelf (91,830 points)

Your Math.round($soldier / 3) expression is referencing a $soldier variable which hasn't been initialised (at least not in the example you gave), this will cause that expression to result in a NaN (Not a Number) error.

This means that the $R.soldier property now equals a value of NaN, and it appears the <<print>> macro doesn't output that value.

If you assign a value to the $soldier numerical variable before the Math.round() function is called then the <<print>> macro will be able to display the value of the $R.soldier property.

<<set $soldier to 1>>


Welcome to Twine Q&A, where you can ask questions and receive answers from other members of the community.

You can also find hints and information on Twine on the official wiki and the old forums archive.

See a spam question? Flag it instead of downvoting. A question flagged enough times will automatically be hidden while moderators review it.