0 votes
by (360 points)
edited by
Kinda a noob here. I wanted to make it where my game displays the year, day and time(hour:min). I want to be able to have so that if the player clicks on a link thats maybe [[cook food]] then make 30 min pass by. Something like that or if the player clicks on a passage [[go to sleep]] then a day goes by and the person wakes up at 7am or for a set amount of hours they want like [[sleep for 3 hours]]. And also is there a way for me to use the current time say its 7pm and a person clicks a passage [[leave house]] can I use an if statement in someway to make it say "Its to late to go outside" I'm using sugarcube, the latest version.

2 Answers

+1 vote
by (44.7k points)

You didn't say what story format you're using in your tags, so I'm going to assume you're using SugarCube.

Here's a bunch of code showing how to use the JavaScript Date object in Twine with SugarCube:

<<set $CurDate = new Date('August 19, 1975 23:15:30')>>$CurDate<br>
add 15 min<br>
<<set $CurDate = new Date($CurDate.setMinutes($CurDate.getMinutes() + 15))>>$CurDate<br>
<<=$CurDate.toLocaleString("en-US", { weekday: "long", month: "short", day: "numeric", year: "numeric", hour: "numeric", minute: "2-digit" } )>><br>
add 1 day <<set $CurDate.setDate($CurDate.getDate() + 1)>><br>
<<=$CurDate.toLocaleString("en-US", { weekday: "long", month: "short", day: "numeric", year: "numeric", hour: "numeric", minute: "2-digit" } )>><br>
set time <<set $CurDate.setHours(14)>><<set $CurDate.setMinutes(15)>><<set $CurDate.setSeconds(0)>><br>
<<=$CurDate.toLocaleString("en-US", { weekday: "long", month: "short", day: "numeric", year: "numeric", hour: "numeric", minute: "2-digit" } )>><br>
<<set $CurDate = new Date('June 14, 2018 15:30')>>
Current date/time: <<print getDayName($CurDate)>>, $CurDate<br>
<<set $Appointment = clone($CurDate)>>
<<set $Appointment.setDate($Appointment.getDate() + 1)>>
<<set $Appointment.setHours(18)>>
<<set $Appointment.setMinutes(0)>>
<<set $Appointment.setSeconds(0)>>
Raw Appointment date/time: <<print getDayName($Appointment)>>, $Appointment<br>
<<set _timeOptions = { weekday: 'long', year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric' }>>
Formatted Appointment date/time: <<print $Appointment.toLocaleString("en-US", _timeOptions)>><br>

Take a look at the JavaScript documentation I linked to above to see other ways you can manipulate the time.

+1 vote
by (8.9k points)

Also check out this thread

by (360 points)
Thanks man this was very helpfull