Code Examples

v4.0

Setting the "Age" of characters

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 updated