Topic on User talk:Hautarche

Jump to navigation Jump to search

The "mean time between" Pyromaniac's random fire-starting sprees, as well as Gourmand's random food binges, is governed by a field called "randomMentalStateMtbDaysMoodCurve" in the XML. IN THEORY, this is a curve using the "SimpleCurve" code, scaling the mean number of days until next trait-induced mental state based on the pawn's mood. Now for a basic primer on SimpleCurve. SimpleCurve 'evaluates' a value-to-test (in this case the pawn's mood) and returns an answer-value. It evaluates differently depending on how many points (as in distinct <x,y> coordinates) it is given:

0) Zero points: the phrase "Evaluating a SimpleCurve with no points." shows up in the error log. The returned value is always 0.

!0) One or more points: the points are ordered in ascending order of x-values. If the value-to-test is not higher than the first point's x, the answer-value is the first point's y. If the value-to-test is not lower than the last point's x, the answer-value is the first point's y. Otherwise, we take the two points whose x-values the value-to-test is between, and then the answer-value is between the two points' y-values to the same extent that the value-to-test is between the two points' x-values (a linear interpolation).

We can ignore the linear interpolation thing, though, because IN PRACTICE: neither Pyromaniac or Gourmand are actually curves. Their randomMentalStateMtbDaysMoodCurves each only have one point (it is <0,50>)! Our value-to-test is mood, a value that ranges from 0-1. Following the path laid out by '!0)', our worst-case mood (0 mood), is not higher than the first point's x, since our first point is <0,50>; literally any other mood IS higher... but it is also not lower than the last point's x, since our last point is also <0,50>. Regardless of the pawn's mood, for these traits, the answer-value is the singular point's y-value i.e. 50.