Comment on page
Code Examples
v4.0
Gametime works with negative
gametime
values as well. You can set up random ages with code like this.NewGameSetup.cs
using static InfinityPBR.LegendOfTheStones.Game;
using static InfinityPBR.Modules.Timeboard;
using static InfinityPBR.Modules.StatsRepository;
//.....
foreach (Player player in game.data.players)
{
var years = 18 * timeboard.gametime.GameTimePerYear;
var months = timeboard.gametime.GameTimePerMonth
* Random.Range(0, timeboard.gametime.MonthsPerYear - 1);
var days = timeboard.gametime.GameTimePerDay
* Random.Range(0, timeboard.gametime.DaysPerMonth - 1);
var age = years + months + days * -1;
// Use the "Properties" feature of Game Modules to easily grab
// the uid of the Stat scriptable object.
var ageStatUid = Properties.Stats.MainStats.AgeUid;
// Set the age to be the gameTime value for when the player was born
player.stats.Get(ageStatUid).SetPoints(age);
// ...
// Later we can convert the gameTime value to years
// This subtracts the birth gameTime (Stored in the stat "Age") from
// the "Now()" gametime, and gets the year from the result gameTime.
// We call "false" at the end to avoid adding the startYear to the
// year value.
var agePoints = player.stats.Get(ageStatUid).Points;
var playerAgeInYears
= timeboard.gametime.GetYear((Now(false) - agePoints), false);
}
Last modified 5mo ago