Menu

LEX File Exchange
EA Support Files
SC4 Wikipedia
Network Addon Mod
Dependencies
Chat
Welcome, Guest. Please login or register.
Did you miss your activation email?

October 17, 2021, 03:33:21 AM

Login with username, password and session length

Author Topic: Decoding the "Goofy Stat Response Curve" data?  (Read 146 times)

0 Members and 1 Guest are viewing this topic.

Offline MoltresRider

Decoding the "Goofy Stat Response Curve" data?
« on: October 01, 2021, 11:05:08 PM »
I have been playing around with ilives and I started to get familiar with query editing as well as adding more functionality to lots.

One thing that I have been experimenting with lately is the Goofy Stat Response Curve data. However, I have yet to fully understand it.

I have some knowledge of programming from way back in high school and I am the family's tech guy. I also have been able to do very complex things with various computer programs that most did not think was possible. I know my way around computer logic but I kinda do not understand this one. Looking for some help.

From a post already on the forums:


That requires the property Goofy Stat Response Curve.
E.g, if you want "Engines Repaired" to be, say somewhere between 0 and 10,
you could give the Goofy Response Curve the following four values:

-100, 0, 0, 2, 50, 5, 100, 10

Mathematically that would first generate a random number between -100 and 100,
which would then be mapped to a number between 0 and 10 with the following chances:

  • 50% chance for a number between 0 and 2
  • 25% chance for a number between 2 and 5
  • 25% chance for a number between 5 and 10

That mapped number can then be referred to in a query with the id=0x0000106b

I studied "-100, 0, 0, 2, 50, 5, 100 10" for days and some things do not add up for me on how the calculations works. I am requesting some elaboration.

Other than what is explained, the best that I could come up with was:

  • a 0 and 2 is a range
  • 50 is a percent
  • 5 is a continued range
  • 10 is max number

What I have yet to figure out is, why is 0 repeated twice in a row. I do not understand the purpose of the second 0. I assumed that the first 0 means 0%

I attempted to create a goofy stat with the following:

  • 70% chance for a value between 70 & 80
  • 15% chance for a value between 80 & 85
  • 15% chance for a value between 85 & 90

by entering the following values: "-100, 0, 70, 80, 70, 85, 100, 90" and I tested the query.

However, I was given a value of 42 so my logic was incorrect. So then I assumed that the first 0 was lowest value and second 0 was a %.

So I changed the values around: "-100, 70, 0, 80, 70, 85, 100, 90" and tested the query.

I was given a result of exactly 80. While yes, this IS within range but to me, getting 80 on the first try seems kinda weird. I have no clue if I got it right or not

So I decided to break down and separate values from both the OP and my attempt to further figure out what they mean:

This is how I ended up doing that:

  • -100, 0, 0, 2, 50, 5, 100, 10
  •       0, 0, 2, 50  5,            10
  •       0, 0, 2,     5,              10
  • -100                      100     
  •                 50                     

Followed by trying to figure them out using my attempt"
  • -100, 70, 0, 80, 70, 85, 100, 90
  •           70, 0, 80, 70, 85,        90
  • -100                              100       =Generated number range?
  •          70      80                           =Range?
  •                           70                    =Percent chance of range?
  •                 85              =15% 80-85?
  •                 85         90 =15% 85-90%
  •        70                                 90 =Min and Max?


Am I getting warmer? Can I further explanation to help better understand this?

If "-100, 70, 0, 80, 70, 85, 100, 90" is correct for the percentages listed above, say that I wanted it to be

  • 70% chance for a value between 70 & 80
  • 20% chance for a value between 80 & 85
  • 10% chance for a value between 85 & 90

instead. What do I need to change/add to make that happen?

Any help would be appreciated.