Jump to content

evilC

Members
  • Posts

    15
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

evilC's Achievements

Refugee

Refugee (1/15)

3

Reputation

  1. evilC

    Loot table parser

    Probabilities are calculating, UI is written
  2. With a bunch of help from Graphko in Discord, I finally got it spitting out what appears to be correct data: LootLevel 1: Finding probability for loot level 1... ( --> indicates a valid path through to the item ) 3 paths were found PATH #1: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all --> (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas01, count=1 --> (Group groupToolsTiered) >>> PROBABILITY = Base: 0.5, Adjusted: 0.3703703703703703703703703704 (Group schematicsToolsCommon) >>> PROBABILITY = Base: 0.5, Adjusted: 0.3703703703703703703703703704 Item: name=resourceRepairKit, count=2,5, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2592592592592592592592592592 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) >>> PROBABILITY = Base: 0.03, Adjusted: 1.0000000000000000000000000000 (Group toolParts) >>> PROBABILITY = Base: 0, Adjusted: 0 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0, Adjusted: 0 PATH ABORTED, NOT POSSIBLE AT LOOT LEVEL 1 Path probability: 0 PATH #2: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 --> (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas03, count=1 (Group vehiclePartsTiered) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 (Group vehicleModSchematics) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 --> (Group groupRareToolsTiered) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 (Group schematicsToolsRare) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 Group: name=groupRareToolsTiered, count=1 (Group groupToolsTiered) >>> PROBABILITY = Base: 1, Adjusted: 1 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0, Adjusted: 0 PATH ABORTED, NOT POSSIBLE AT LOOT LEVEL 1 Path probability: 0 PATH #3: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 --> (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas03, count=1 (Group vehiclePartsTiered) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 (Group vehicleModSchematics) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 --> (Group groupRareToolsTiered) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 (Group schematicsToolsRare) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 Group: name=groupRareToolsTiered, count=1 --> (Group groupToolsTiered) >>> PROBABILITY = Base: 1, Adjusted: 1 (Group groupToolsT2) >>> PROBABILITY = Base: 0, Adjusted: 0 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) >>> PROBABILITY = Base: 0.03, Adjusted: 1.0000000000000000000000000000 (Group toolParts) >>> PROBABILITY = Base: 0, Adjusted: 0 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0, Adjusted: 0 PATH ABORTED, NOT POSSIBLE AT LOOT LEVEL 1 Path probability: 0 Total Probability: 0 LootLevel 102: Finding probability for loot level 102... ( --> indicates a valid path through to the item ) 3 paths were found PATH #1: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all --> (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas01, count=1 --> (Group groupToolsTiered) >>> PROBABILITY = Base: 0.5, Adjusted: 0.3703703703703703703703703704 (Group schematicsToolsCommon) >>> PROBABILITY = Base: 0.5, Adjusted: 0.3703703703703703703703703704 Item: name=resourceRepairKit, count=2,5, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2592592592592592592592592592 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) >>> PROBABILITY = Base: 0, Adjusted: 0 (Group toolParts) >>> PROBABILITY = Base: 0.62, Adjusted: 0.9538461538461538461538461539 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0.03, Adjusted: 0.0461538461538461538461538462 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsT2, count=2,3 Item: name=meleeToolShovelT2SteelShovel, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolPickT2SteelPickaxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolAxeT2SteelAxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeWpnSledgeT3SteelSledgehammer, count=1, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2011494252873563218390804598 --> Item: name=meleeToolSalvageT2Ratchet, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Path probability: 0.0098241477551822379408586305 PATH #2: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 --> (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas03, count=1 (Group vehiclePartsTiered) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 (Group vehicleModSchematics) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 --> (Group groupRareToolsTiered) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 (Group schematicsToolsRare) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 Group: name=groupRareToolsTiered, count=1 (Group groupToolsTiered) >>> PROBABILITY = Base: 1, Adjusted: 0.9708737864077669902912621359 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0.03, Adjusted: 0.0291262135922330097087378641 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsT2, count=2,3 Item: name=meleeToolShovelT2SteelShovel, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolPickT2SteelPickaxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolAxeT2SteelAxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeWpnSledgeT3SteelSledgehammer, count=1, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2011494252873563218390804598 --> Item: name=meleeToolSalvageT2Ratchet, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Path probability: 0.0005231001004352192835621025 PATH #3: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 --> (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas03, count=1 (Group vehiclePartsTiered) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 (Group vehicleModSchematics) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 --> (Group groupRareToolsTiered) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 (Group schematicsToolsRare) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 Group: name=groupRareToolsTiered, count=1 --> (Group groupToolsTiered) >>> PROBABILITY = Base: 1, Adjusted: 0.9708737864077669902912621359 (Group groupToolsT2) >>> PROBABILITY = Base: 0.03, Adjusted: 0.0291262135922330097087378641 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) >>> PROBABILITY = Base: 0, Adjusted: 0 (Group toolParts) >>> PROBABILITY = Base: 0.62, Adjusted: 0.9538461538461538461538461539 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0.03, Adjusted: 0.0461538461538461538461538462 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsT2, count=2,3 Item: name=meleeToolShovelT2SteelShovel, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolPickT2SteelPickaxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolAxeT2SteelAxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeWpnSledgeT3SteelSledgehammer, count=1, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2011494252873563218390804598 --> Item: name=meleeToolSalvageT2Ratchet, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Path probability: 0.0008047693852849527439416961 Total Probability: 0.0111520172409024099683624291 LootLevel 134: Finding probability for loot level 134... ( --> indicates a valid path through to the item ) 3 paths were found PATH #1: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all --> (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas01, count=1 --> (Group groupToolsTiered) >>> PROBABILITY = Base: 0.5, Adjusted: 0.3703703703703703703703703704 (Group schematicsToolsCommon) >>> PROBABILITY = Base: 0.5, Adjusted: 0.3703703703703703703703703704 Item: name=resourceRepairKit, count=2,5, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2592592592592592592592592592 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) >>> PROBABILITY = Base: 0, Adjusted: 0 (Group toolParts) >>> PROBABILITY = Base: 0, Adjusted: 0 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0.50, Adjusted: 1.00 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsT2, count=2,3 Item: name=meleeToolShovelT2SteelShovel, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolPickT2SteelPickaxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolAxeT2SteelAxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeWpnSledgeT3SteelSledgehammer, count=1, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2011494252873563218390804598 --> Item: name=meleeToolSalvageT2Ratchet, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Path probability: 0.2128565346956151553852703278 PATH #2: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 --> (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas03, count=1 (Group vehiclePartsTiered) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 (Group vehicleModSchematics) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 --> (Group groupRareToolsTiered) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 (Group schematicsToolsRare) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 Group: name=groupRareToolsTiered, count=1 (Group groupToolsTiered) >>> PROBABILITY = Base: 1, Adjusted: 0.6666666666666666666666666667 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0.50, Adjusted: 0.3333333333333333333333333334 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsT2, count=2,3 Item: name=meleeToolShovelT2SteelShovel, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolPickT2SteelPickaxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolAxeT2SteelAxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeWpnSledgeT3SteelSledgehammer, count=1, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2011494252873563218390804598 --> Item: name=meleeToolSalvageT2Ratchet, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Path probability: 0.0059865900383141762452107280 PATH #3: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) >>> PROBABILITY = Base: 1, Adjusted: 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 (Group groupPassNGas02) >>> PROBABILITY = Base: 1, Adjusted: (All, not forced) 1 --> (Group groupPassNGas03) >>> PROBABILITY = Base: 0.5, Adjusted: (All, forced) 0.5 Item: name=vehicleWheels, count=1, prob_template=low, force=True >>> PROBABILITY = Base: 0.20, Adjusted: (All, forced) 0.20 Group: name=groupPassNGas03, count=1 (Group vehiclePartsTiered) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 (Group vehicleModSchematics) >>> PROBABILITY = Base: 0.35, Adjusted: 0.4375 --> (Group groupRareToolsTiered) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 (Group schematicsToolsRare) >>> PROBABILITY = Base: 0.05, Adjusted: 0.0625 Group: name=groupRareToolsTiered, count=1 --> (Group groupToolsTiered) >>> PROBABILITY = Base: 1, Adjusted: 0.6666666666666666666666666667 (Group groupToolsT2) >>> PROBABILITY = Base: 0.50, Adjusted: 0.3333333333333333333333333334 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) >>> PROBABILITY = Base: 0, Adjusted: 0 (Group toolParts) >>> PROBABILITY = Base: 0, Adjusted: 0 --> (Group groupToolsT2) >>> PROBABILITY = Base: 0.50, Adjusted: 1.00 (Group groupToolsT3) >>> PROBABILITY = Base: 0, Adjusted: 0 Group: name=groupToolsT2, count=2,3 Item: name=meleeToolShovelT2SteelShovel, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolPickT2SteelPickaxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeToolAxeT2SteelAxe, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Item: name=meleeWpnSledgeT3SteelSledgehammer, count=1, prob_template=medLow, force=False >>> PROBABILITY = Base: 0.35, Adjusted: 0.2011494252873563218390804598 --> Item: name=meleeToolSalvageT2Ratchet, count=1, force=False >>> PROBABILITY = Base: 1, Adjusted: 0.5747126436781609195402298850 Path probability: 0.0119731800766283524904214559 Total Probability: 0.2308163048105576841209025117 Note that these values are 2.5x higher than reality, as I added a count="2,3" to groupToolsT2 so I could test that logic
  3. evilC

    Loot table parser

    It's taken a bunch of work, but I finally think I am in a position to start trying to actually calculate probabilities I have another thread going here where I am asking about how to calculate the probabilities - if anyone is interested in helping, please feel free to chime in
  4. @BFT2020 I think I now have the program in a state to try and make the same calculations as you do Here is what it is currently outputting for the above query: Showing probabilities for container passngasCrate Finding probability for loot level 1... ( --> indicates a valid path through to the item ) 3 paths were found PATH #1: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all --> (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas01, count=<Not Set> --> (Group groupToolsTiered) GroupReference: count=<Not Set>, prob_template=med >>> PROBABILITY = 0.5 (Group schematicsToolsCommon) GroupReference: count=<Not Set>, prob_template=med >>> PROBABILITY = 0.5 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) GroupReference: count=<Not Set>, prob_template=ProbT0 >>> PROBABILITY = 0.03 (Group toolParts) GroupReference: count=<Not Set>, prob_template=ProbT1 >>> PROBABILITY = 0 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2Cap >>> PROBABILITY = 0 PATH ABORTED, NOT POSSIBLE AT LOOT LEVEL 1 PATH #2: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 --> (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas03, count=<Not Set> (Group vehiclePartsTiered) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 (Group vehicleModSchematics) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 --> (Group groupRareToolsTiered) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 (Group schematicsToolsRare) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 Group: name=groupRareToolsTiered, count=1 (Group groupToolsTiered) GroupReference: count=<Not Set> >>> PROBABILITY = 1 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2 >>> PROBABILITY = 0 PATH ABORTED, NOT POSSIBLE AT LOOT LEVEL 1 PATH #3: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 --> (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas03, count=<Not Set> (Group vehiclePartsTiered) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 (Group vehicleModSchematics) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 --> (Group groupRareToolsTiered) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 (Group schematicsToolsRare) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 Group: name=groupRareToolsTiered, count=1 --> (Group groupToolsTiered) GroupReference: count=<Not Set> >>> PROBABILITY = 1 (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2 >>> PROBABILITY = 0 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) GroupReference: count=<Not Set>, prob_template=ProbT0 >>> PROBABILITY = 0.03 (Group toolParts) GroupReference: count=<Not Set>, prob_template=ProbT1 >>> PROBABILITY = 0 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2Cap >>> PROBABILITY = 0 PATH ABORTED, NOT POSSIBLE AT LOOT LEVEL 1 ALL PATHS HAVE ZERO PROBABILITY Finding probability for loot level 102... ( --> indicates a valid path through to the item ) 3 paths were found PATH #1: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all --> (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas01, count=<Not Set> --> (Group groupToolsTiered) GroupReference: count=<Not Set>, prob_template=med >>> PROBABILITY = 0.5 (Group schematicsToolsCommon) GroupReference: count=<Not Set>, prob_template=med >>> PROBABILITY = 0.5 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) GroupReference: count=<Not Set>, prob_template=ProbT0 >>> PROBABILITY = 0 (Group toolParts) GroupReference: count=<Not Set>, prob_template=ProbT1 >>> PROBABILITY = 0.62 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2Cap >>> PROBABILITY = 0.03 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsT2, count=<Not Set> meleeToolShovelT2SteelShovel >>> PROBABILITY = 1 meleeToolPickT2SteelPickaxe >>> PROBABILITY = 1 meleeToolAxeT2SteelAxe >>> PROBABILITY = 1 meleeWpnSledgeT3SteelSledgehammer >>> PROBABILITY = 0.35 --> meleeToolSalvageT2Ratchet >>> PROBABILITY = 1 Probability for path = ??? PATH #2: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 --> (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas03, count=<Not Set> (Group vehiclePartsTiered) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 (Group vehicleModSchematics) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 --> (Group groupRareToolsTiered) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 (Group schematicsToolsRare) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 Group: name=groupRareToolsTiered, count=1 (Group groupToolsTiered) GroupReference: count=<Not Set> >>> PROBABILITY = 1 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2 >>> PROBABILITY = 0.03 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsT2, count=<Not Set> meleeToolShovelT2SteelShovel >>> PROBABILITY = 1 meleeToolPickT2SteelPickaxe >>> PROBABILITY = 1 meleeToolAxeT2SteelAxe >>> PROBABILITY = 1 meleeWpnSledgeT3SteelSledgehammer >>> PROBABILITY = 0.35 --> meleeToolSalvageT2Ratchet >>> PROBABILITY = 1 Probability for path = ??? PATH #3: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 --> (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas03, count=<Not Set> (Group vehiclePartsTiered) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 (Group vehicleModSchematics) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 --> (Group groupRareToolsTiered) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 (Group schematicsToolsRare) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 Group: name=groupRareToolsTiered, count=1 --> (Group groupToolsTiered) GroupReference: count=<Not Set> >>> PROBABILITY = 1 (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2 >>> PROBABILITY = 0.03 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) GroupReference: count=<Not Set>, prob_template=ProbT0 >>> PROBABILITY = 0 (Group toolParts) GroupReference: count=<Not Set>, prob_template=ProbT1 >>> PROBABILITY = 0.62 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2Cap >>> PROBABILITY = 0.03 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsT2, count=<Not Set> meleeToolShovelT2SteelShovel >>> PROBABILITY = 1 meleeToolPickT2SteelPickaxe >>> PROBABILITY = 1 meleeToolAxeT2SteelAxe >>> PROBABILITY = 1 meleeWpnSledgeT3SteelSledgehammer >>> PROBABILITY = 0.35 --> meleeToolSalvageT2Ratchet >>> PROBABILITY = 1 Probability for path = ??? Is possible Finding probability for loot level 134... ( --> indicates a valid path through to the item ) 3 paths were found PATH #1: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all --> (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas01, count=<Not Set> --> (Group groupToolsTiered) GroupReference: count=<Not Set>, prob_template=med >>> PROBABILITY = 0.5 (Group schematicsToolsCommon) GroupReference: count=<Not Set>, prob_template=med >>> PROBABILITY = 0.5 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) GroupReference: count=<Not Set>, prob_template=ProbT0 >>> PROBABILITY = 0 (Group toolParts) GroupReference: count=<Not Set>, prob_template=ProbT1 >>> PROBABILITY = 0 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2Cap >>> PROBABILITY = 0.50 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsT2, count=<Not Set> meleeToolShovelT2SteelShovel >>> PROBABILITY = 1 meleeToolPickT2SteelPickaxe >>> PROBABILITY = 1 meleeToolAxeT2SteelAxe >>> PROBABILITY = 1 meleeWpnSledgeT3SteelSledgehammer >>> PROBABILITY = 0.35 --> meleeToolSalvageT2Ratchet >>> PROBABILITY = 1 Probability for path = ??? PATH #2: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 --> (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas03, count=<Not Set> (Group vehiclePartsTiered) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 (Group vehicleModSchematics) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 --> (Group groupRareToolsTiered) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 (Group schematicsToolsRare) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 Group: name=groupRareToolsTiered, count=1 (Group groupToolsTiered) GroupReference: count=<Not Set> >>> PROBABILITY = 1 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2 >>> PROBABILITY = 0.50 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsT2, count=<Not Set> meleeToolShovelT2SteelShovel >>> PROBABILITY = 1 meleeToolPickT2SteelPickaxe >>> PROBABILITY = 1 meleeToolAxeT2SteelAxe >>> PROBABILITY = 1 meleeWpnSledgeT3SteelSledgehammer >>> PROBABILITY = 0.35 --> meleeToolSalvageT2Ratchet >>> PROBABILITY = 1 Probability for path = ??? PATH #3: Container: name=passngasCrate, count=1 --> (Group groupPassNGas) GroupReference: count=<Not Set> >>> PROBABILITY = 1 Group: name=groupPassNGas, count=all (Group groupPassNGas01) GroupReference: count=1 >>> PROBABILITY = 1 (Group groupPassNGas02) GroupReference: count=1 >>> PROBABILITY = 1 --> (Group groupPassNGas03) GroupReference: count=<Not Set>, prob_template=med, force_prob=True >>> PROBABILITY = 0.5 Group: name=groupPassNGas03, count=<Not Set> (Group vehiclePartsTiered) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 (Group vehicleModSchematics) GroupReference: count=<Not Set>, prob_template=medLow >>> PROBABILITY = 0.35 --> (Group groupRareToolsTiered) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 (Group schematicsToolsRare) GroupReference: count=<Not Set>, prob_template=veryLow >>> PROBABILITY = 0.05 Group: name=groupRareToolsTiered, count=1 --> (Group groupToolsTiered) GroupReference: count=<Not Set> >>> PROBABILITY = 1 (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2 >>> PROBABILITY = 0.50 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsTiered, count=1 (Group groupToolsT1) GroupReference: count=<Not Set>, prob_template=ProbT0 >>> PROBABILITY = 0 (Group toolParts) GroupReference: count=<Not Set>, prob_template=ProbT1 >>> PROBABILITY = 0 --> (Group groupToolsT2) GroupReference: count=<Not Set>, prob_template=ProbT2Cap >>> PROBABILITY = 0.50 (Group groupToolsT3) GroupReference: count=<Not Set>, prob_template=ProbT3 >>> PROBABILITY = 0 Group: name=groupToolsT2, count=<Not Set> meleeToolShovelT2SteelShovel >>> PROBABILITY = 1 meleeToolPickT2SteelPickaxe >>> PROBABILITY = 1 meleeToolAxeT2SteelAxe >>> PROBABILITY = 1 meleeWpnSledgeT3SteelSledgehammer >>> PROBABILITY = 0.35 --> meleeToolSalvageT2Ratchet >>> PROBABILITY = 1 Probability for path = ??? Is possible At the moment, it separates the results into a number of "paths", with each path being a unique route through the groups. Some paths may go through the same groups, and I am unsure as to whether I need to combine them or what to calculate the probabilities. ie given that you have 3 paths: 1) groupPassNGas, groupPassNGas01, groupToolsTiered, groupToolsT2 2) groupPassNGas, groupPassNGas03, groupRareToolsTiered, groupToolsT2 3) groupPassNGas, groupPassNGas03, groupRareToolsTiered, groupToolsTiered, groupToolsT2 How would I calculate this? Can I calculate the probability for each path as a whole? Or, for example, do I need to parse groupPassNGas, then work out the probability of groupPassNGas01 or groupPassNGas03 being picked, etc... How would that work when the path lengths are different?
  5. Thank you, SMX does the job, and I only ever play locally or on my own server with EAC disabled, so that's a non-issue
  6. evilC

    Loot table parser

    The initial driver is for players to be able to answer the question "I really need item X - what is the best place to focus my efforts?" ie it is intended to tell you which containers you need to be looking in to have the best chance of finding a certain item.
  7. OK, that's gonna take a while to unpack, and obviously your grasp of statistics is way better than mine FWIW, in case you are interested, I have some sample code (Thread about it here) that parses the loot tables and builds a navigable tree - at the moment it does not really do anything useful, but at the moment I am just working on making it possible to gather all the data it needs to calculate probabilities.
  8. evilC

    Loot table parser

    I have been doing more work on this project, and have a branch where I process loot.xml and built a tree of all the containers / lootgroups / items in it, along with the associated probability entries. Again, still no UI, but if you are familiar with Visual Studio .NET apps, you can navigate the loot table tree using the de@%$# The tree is built in such a way that you can traverse it in either direction (From a container down to an item, or from an item back up to the container) - here you can see me inspecting the ratchet - it is in two loot groups, and I have navigated up to the first one - groupToolsT2 I currently have nothing which actually calculates the probability of something dropping, but this at least paves the way to being able to process the data very quickly without having to touch the XML for each operation. The branch is here if anyone wishes to have a play Next task is to try and get it to at least gather all the data for a specific item given a specific loot level, so that I can later have a stab at trying to calculate probabilities
  9. <lootgroup name="groupAmmoAdvancedGunslinger"> <item name="ammo9mmBulletBall" loot_prob_template="T0" count="20,40"/> <item name="ammo9mmBulletAP" loot_prob_template="QLTemplateT1" count="20,40"/> <item name="ammo9mmBulletHP" loot_prob_template="QLTemplateT1" count="14,30"/> <item name="ammo9mmBulletAP" loot_prob_template="QLTemplateT2" count="20,40"/> <item name="ammo9mmBulletHP" loot_prob_template="QLTemplateT2" count="14,30"/> <item name="ammo44MagnumBulletAP" loot_prob_template="QLTemplateT2" count="8,19"/> <item name="ammo44MagnumBulletHP" loot_prob_template="QLTemplateT2" count="6,14"/> </lootgroup> This references loot_prob_template="T0", which does not exist Also, not sure if this is an error, or me just not understanding how the file works: <lootgroup name="groupAmmoRegularGunslingerT1"> <item name="ammo9mmBulletBall" loot_prob_template="QLTemplateT0" count="15,30"/> <item name="ammo9mmBulletBall" loot_prob_template="QLTemplateT1" count="15,30"/> <item name="ammo44MagnumBulletBall" loot_prob_template="QLTemplateT1" count="6,14"/> </lootgroup> <lootgroup name="groupAmmoRegularGunslingerT2"> <item name="ammo9mmBulletBall" loot_prob_template="QLTemplateT0" count="20,40"/> <item name="ammo9mmBulletBall" loot_prob_template="QLTemplateT1" count="20,40"/> <item name="ammo44MagnumBulletBall" loot_prob_template="QLTemplateT1" count="8,19"/> </lootgroup> ammo9mmBulletBall appears twice in each list, with two different quality templates. Also worthy of note is that a quality template is used as a probability template - not quite sure what the deal is here...
  10. This is probably best illustrated by asking the following question: "Given I loot a Pass-n-Gas crate, what chance do I have of looting a Ratchet?" So we start off by looking at the crate. NOTE: In all these code blocks, a possible path to the ratchet is indicated by --> <lootcontainer id="90" name="passngasCrate" count="1" size="6,4" sound_open="UseActions/open_cardboard" sound_close="UseActions/close_cardboard" loot_quality_template="qualBaseTemplate"> <item group="groupPassNGas"/> </lootcontainer> Pretty simple - only one group. Now let's look at groupPassNGas Only one route to the ratchet, via groupPassNGas03, with a prob_template of med (50%): <lootgroup name="groupPassNGas" count="all"> <item group="groupPassNGas01" count="1"/> <item group="groupPassNGas02" count="1"/> --> <item group="groupPassNGas03" loot_prob_template="med" force_prob="true"/> </lootgroup> Again, only one path to the ratchet, with a prob_template of veryLow (5%) <lootgroup name="groupPassNGas03"> <item group="vehiclePartsTiered" loot_prob_template="medLow"/> <item group="vehicleModSchematics" loot_prob_template="medLow"/> --> <item group="groupRareToolsTiered" loot_prob_template="veryLow"/> <item group="schematicsToolsRare" loot_prob_template="veryLow"/> </lootgroup> Now things get interesting - two routes to the ratchet, one via groupToolsTiered (no prob specified) and one via groupToolsT2 (prob_template of ProbT2, which is level dependant - 0% under level 80, then climbing from 4% at level 80+) <lootgroup name="groupRareToolsTiered" count="1"> --> <item group="groupToolsTiered"/> --> <item group="groupToolsT2" loot_prob_template="ProbT2"/> <item group="groupToolsT3" loot_prob_template="ProbT3"/> </lootgroup> Route #1: groupToolsTiered This has other tiers involved, and one of them is via route #2 (groupToolsT2) <lootgroup name="groupToolsTiered" count="1"> <!-- <item group="groupToolsT0" loot_prob_template="ProbT0"/> --> <item group="groupToolsT1" loot_prob_template="ProbT0"/> <item group="toolParts" loot_prob_template="ProbT1"/> --> <item group="groupToolsT2" loot_prob_template="ProbT2"/> <item group="groupToolsT3" loot_prob_template="ProbT3"/> </lootgroup> Route #2: groupToolsT2 This is what actually holds the ratchet <lootgroup name="groupToolsT2" loot_quality_template="QLTemplateT2"> <item name="meleeToolShovelT2SteelShovel"/> <item name="meleeToolPickT2SteelPickaxe"/> <item name="meleeToolAxeT2SteelAxe"/> <item name="meleeWpnSledgeT3SteelSledgehammer" loot_prob_template="medLow"/> --> <item name="meleeToolSalvageT2Ratchet"/> </lootgroup> ============================================================================================= OK, so that's the whole path, so on to the questions: 1) What is force_prob? No idea on this one 2) How does it walk through the tree of probabilities, and especially, how come there are multiple probabilities of the same value in the same list? My initial thought was that it walked through in reverse order of the list, but that idea is kind of shot down in flames I think by some lists which are in the other order, and include other weirdness such as this: <lootgroup name="groupBuriedWeaponChest"> <item group="groupWeaponsAllScaled" prob="2"/> <item group="groupArmorScaled" prob="1"/> <item group="groupModAllScaled" prob="1"/> <item group="schematicsModsAndGeneralCommon" loot_prob_template="high"/> <item group="schematicsModsAndGeneralRare" loot_prob_template="low"/> </lootgroup> Really not sure WTF is going on here - how can anything have a probability of 200%? Whatever though, 3 items in this list all have a probability of >= 100% so this is very confusing. Another theory was that multiple items are going to be selected from that list, and each item can only be chosen once, however... <lootcontainer id="122" name="buriedSuppliesT2" count="2,3" size="8,9" sound_open="UseActions/open_chest" sound_close="UseActions/close_chest" loot_quality_template="qualBaseTemplate"> <item group="groupBuriedWeaponChest"/> </lootcontainer> Count of 2-3, so on first roll, weapons would be picked (As prob of 2), then on rolls 2-3 armor or mod would be picked (both have prob of 1) - so schematics could never be picked? Or maybe there is a buff that lets you get extra items, so only if you have a buff and get 4+ items could you ever get schematics? But that still leaves the question of, if you get 2 items, which of the prob1 items would you get? Whatever, if someone can help me work out what steps the game takes when parsing the loot tables, I would appreciate it
  11. evilC

    Loot table parser

    I found one of these on GitHub, but it has not been touched in >5 years, and no longer did anyrhing useful. So I spent an evening writing my own There's no GUI yet, all it does is build two lists: ContainerItems: For each Container, which items could it possibly contain eg "oven": [ "toolCookingPot", "toolCookingGrill", "resourceCoal", "foodRottingFlesh", "foodCharredMeat", "foodCanChicken", "foodCanMiso", "foodCanSoup", "foodCanPears", "foodCornMeal", "foodCanCatfood", "foodShamSandwich", "foodCanBeef", "foodCanChili", "foodCanDogfood", "foodCanSham", "foodCanLamb", "foodCanPasta", "foodCanPeas", "foodCanSalmon", "foodCanStock", "foodCanTuna", "resourceCropCoffeeBeans", "resourceCropGoldenrodPlant", "resourceCropChrysanthemumPlant", "foodCropBlueberries" ], ItemContainers: For each Item, which Container could it possibly spawn in eg "foodCropBlueberries": [ "cntBackpack", "oven", "cupboard", "cooler", "shamwayCrate", "foodPileSmall", "foodPileMed", "foodPileLarge" ], No probabilities are calculated, I have not worked out how to decypher it. If anyone understands how to do this, then feel free to chip in Here are the two files that it currently spits out (As of A20 b238) : https://filebin.net/ma9dueaqfxv6xc9z Source code https://github.com/evilC/7DTD-Loot-Viewer
  12. All the mods that I see that show food / water level on the HUD show it as a percentage, and I don't get why If you have a 50 food item, but the HUD shows food as being at 80%, you don't know if you would waste food by eating it now. I want it to show eg 50/100 (As it shows in the vanilla menu), so I know that by consuming 50 units of food now, it will fill me up without wasting any
×
×
  • Create New...