Jump to content

Question of probability


pasmon79

Recommended Posts

The randomness in game is very interesting. Let us consider the example of "RV repair facilty". In "rtsevents" it has 4 repair possibilities(engine,fuel,tyre,disnfect) each with 100%.

In the starting level(whichever) there is a favorable competition of any1/4, the second level introduces a competition of any 2/4 again with equal probbality, third with any 3/4 and later levels load options without any competition.

 

 

What if we make any one of the "repair possibilities" less favourable than the other(say 50%, keeping everyone at 100), will the game still expects to load all repair options after fourth round?

Edited by pasmon79
Link to comment
Share on other sites

  • Replies 50
  • Created
  • Last Reply

Top Posters In This Topic

Those are not probabilities. Set at 100%, they are certainties.

 

Alt lists that use 100% depend upon the Inputs field to determine actual application, and use tracking variables to determine the appropriate stages. Those are initially set in missions.xml under the mission to locate the RV, and updated in facilities.xml as repairs are carried out.

 

The number of repairs needed is set in enclaves.xml during map initialization as a basic scenario count.

The 'randomness' comes from the enclaves.xml action <Action ActionFlags="Repeats, WaitForNoMission" ActionId="NewLoop"

 

Alts in a list are always evaluated from top to bottom in order, and once one is selected the action is exited.

 

 

<Alt AltId="SelectFinished" AltOdds="100" />
<Alt AltId="SelectEngine" AltOdds="25" />
<Alt AltId="SelectClean" AltOdds="33" />
<Alt AltId="SelectTires" AltOdds="50" />
<Alt AltId="SelectRefuel" AltOdds="100.0" />
<Alt AltId="SelectFailsafe" AltOdds="100.0" />

 

Here it checks if everything is finished, 100% apply if input conditions met.

 

Then, it checks each of the four conditions... 25% for the first if not applied, 33% for the second, 50% for the third, 100% for the fourth... if the selected repair has been completed, it drops to the failsafe, 100% which simply sets no condition and it will wait until the next cycle to determine which remaining repair is needed.

 

For those four repair types, it is effectively 25% each, even though the numbers vary. This is because the first check is 25%, or 1 in 4.

The second check is 1 in 3, but takes into account that 25% have already been checked, so it is 1/3 of the remaining 75% left after the first check... 1/3*.75 = 25%

The third is 1 in 2, but also takes into account that 50% have already been checked, so it is 1/2 of the remaining 50% left after the first two checks. 1/2*.5=25%

And the fourth check is 1 in 1, but also takes into account that 75% has already been checked, so it is 1/1*.25 =25%

Edited by qmjs
Link to comment
Share on other sites

That is part of the daily reset process. Specifically, it is triggered in several places in enclaves.xml as <EventTrigger Event="SandboxEvent.Home_OfflineEvents" />, and the event itself is defined in rtsevents.xml as <Event Id="SandboxEvent.Home_OfflineEvents">

 

That is a long series of actions, and within it is <ExecuteAction ActionId="Foraging" />, which calls <Action ActionFlags="Subaction" ActionId="Foraging"

 

The event basically gives you between 4-11 food each day to represent the food found by survivors not directly under your control.

Link to comment
Share on other sites

During game-play i have often wondered why the heck i have not seen my player listed for mercy shot ever in both lifeline and breakdown. Then i got some clue from the black fever mod.

Here in "characters.xml" we have under

CharacterTrait BadgeName="" Flags="Hidden" Icon="" TraitId="Hurt" Badge="" IconId="">

<Evolve Event="HURT">
 <Evolve Event="HEAL">
<Evolve Event="NEXT_DAY">

 <Outputs>
<Console_Command Command="LOG: Hurt_NextDay" />
<Actor_HasTrait ActorIndex="" Trait="Trait.Status.MercyShot" />

It seems that we have a hurt event leading to possibility of Heal and in case not occured, then eventually "MercyShot", but what determines the chance of such events?

Edited by pasmon79
Link to comment
Share on other sites

To trigger the mercy shot mission, they have to be gravely wounded, gravely ill, or have black fever. Every daily reset, every character has a chance to heal or recover, and those have to fail. Because of the way the evolve events for hurt and sick in characters.xml are written, they have a significantly high total chance of recovering, as long as the enclave has medicine resources and an infirmary.

 

The recoverfromsick and recoverfrom injury events run every 30 minutes, giving an additional chance to recover.

Essentially, to get the mercy shot, a character has to be badly wounded or sick, the enclave need to be without an infirmary, and with no medicine, and then pass though two successive daily resets.

 

In terms of the unlock for the hero, it is easiest to generate by not really playing... start a community, collect no medicine, do not build an infirmary, and wait until someone is sick or injured, log out, wait until the next day (or 14 hours), log in, log out again and wait again.

Edited by qmjs
Link to comment
Share on other sites

  • 2 weeks later...

I have still not understood the randomizingness in this game. In the foraging event defined as

 <Alts>
          <Alt AltId="Foraging_15" AltOdds="100.0" />
          <Alt AltId="Foraging_13" AltOdds="100.0" />
          <Alt AltId="Foraging_11" AltOdds="100.0" />
          <Alt AltId="Foraging_9" AltOdds="100.0" />
          <Alt AltId="Foraging_7" AltOdds="100.0" />
        </Alts>

how does the game randomizes the choice of one foraging event out of five, when they are all set at 100%?

Link to comment
Share on other sites

That is not a random list. It is a conditional list. It checks a variety of conditions, and sets the output based on those conditions.

 

It means that the alt event foraging_15 will happen 100% of the time if the input conditions are met, in this case:

<Inputs>
<Check InputAmount="15" InputFlags="" InputId="Capacity.Labor" />
</Inputs>

 

if the first event does not meet the conditions, it checks the second event, and continues until it finds one that does meet the conditions. If none of the listed event conditions are met, it proceeds with the outputs for the list itself, whcich in this case has no effects.

Edited by qmjs
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...