0 votes
asked by (200 points)

Hi I'm pretty new to twine but I'm making an encounter system. Everything works except for the health system. I have $health set to 100 initially at the begining of the game. During my encounter I am trying to get the health to decrease by 25 each time the monster lands a succesful attack. For whatever reason when I try to test it crashes and gives me an error message. This is the following code for if the monster lands a successful attack (I have the same exact code with different variable names for if you hit the monster). 


HP: (print: $health)
Werewolf HP: (print: $werewolfHP) 
(display: "To Hit")

	(if: $attackNumber is 0)[
		(set: $attackNumber to 6)
	(set: $attackNumber to $attackNumber - 1)
	(set: $chance to (random: 1, $attackNumber) )

(if: $chance is 1 ) [The werewolf lunges at you with its fangs and claws! Take 25 damage!
(set: $attackNumber to 0)
(set: $health to "$health - 25")] 

(else:)[You evade the werewolf's attack!] 


1 Answer

0 votes
answered by (60k points)

Lose the quotes around the math. You only need quotes for strings, and that's an expression. Setting what Harlowe thinks is a number to a string is bound to cause errors.


(set: $health to $health - 25)

<!-- or -->

(set: $health to it - 25)

You may want to check and make sure you aren't doing that elsewhere, too .

commented by (200 points)
If I run


it - 25 then I get an error that it isn't a number


If I set $health - 25 then the whole thing crashes


regardless of if I use quotations or not
commented by (60k points)
You must be quoting it elsewhere in the code, thus it isn't a number when it's encountered.
commented by (200 points)
The whole code I initially put is the code in it's entirety. The only other place I reference $health is at the begining of the story. Could that be causing it?
commented by (60k points)
It could be if you've quoted the value.
commented by (137k points)


You should be initialising your $health variable within your story's startup tagged special passage like so:

(set: $health to 100)

... obviously the 100 in the above example should be replaced with whatever number you want.

commented by (200 points)
I put (set: $health to 100) at the begining of the story, like not in that passage, but at the begining of the game. Would I have to reiterate that within my encounter set up?
commented by (200 points)
@Chapel thank you for your help. I'm new to twine though I've made a very basic game before. If you could help me a little further I'd really appreciate it.

I went through everything and changed all instances of $health to "#" to $health to $health to # (without quotations, all instances) now it's says "the string "100" isn't the same type of data as the number 25►I tried to perform an operation on some data, but the data's type was incorrect."


So I don't know what that means or what to do?
commented by (200 points)
OMG I got it to work. Thank you all for all your help!
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.