PathOfBuildingCommunity / PathOfBuildingCommunity/PathOfBuilding

Add support for average ailment stacks on capped ailments

Aperta
#6,298 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

enhancement
Lingua principale
Lua
Stelle
5.4k
Fork
2.4k
Merge medio
1g 12h
PR unite (30g)
26

Descrizione

Check for duplicates
  • I've checked for duplicate issues by using the search function of the issue tracker
Is your feature request related to a problem?

Ingame due to the probabilistic nature of inflicting ailments (<100% chance) your number of stacks inflicted can change between any given number e.g. 0-1 stacks for an ignite build with low chance. But as stacks are truncated at one almost always average stacks are less than one. Factoring this will give chance to inflict ailments a better indication in dps for low values.

image
Stacks vs Chance

Describe the solution you'd like

Proper calculation of these average stacks that is at least reasonably accurate like the simulation is. Getting a direct formula might be possible if you consider the maximum stack counts separately but it is a hard probability problem to solve.

Describe alternatives you've considered

No response

Additional context

Script to generate graph beforehand

import random

max = 1000000
chance = 0.5
intervalTime = 1/33
attackTime = 0.75
duration = 4
cap = 2

f = open("out.txt", "w")

for j in range(0, 100):
    stacks = [ ]
    chance = j / 100
    lastAttackTime = 0
    time = 0
    average = 0
    print(chance)
    for i in range(0, max):
        if lastAttackTime <= time:
            lastAttackTime = time + attackTime
            if random.random() < chance: 
                stacks.append(time)

        for v in stacks:
            if v + duration < time:
                stacks.remove(v)

        averageStack = min(cap, len(stacks))

        average += averageStack

        time += intervalTime
    average /= max

    f.write("{:.6f}".format(average))
    f.write("\n")

f.close()

Sheet with data https://docs.google.com/spreadsheets/d/15rNcc18PqFRU2f9NCbd-T0WU2-d0_iGT1Tb99I9ca4c/edit?usp=sharing

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Non viene indicato alcun file di implementazione, test o punto di ingresso. Inizia individuando nel codice di Path of Building il calcolo degli stack di ailment con limite e confrontalo con la simulazione fornita; il lavoro è completato quando vengono calcolati gli stack medi per gli ailment con limite e producono risultati ragionevolmente accurati con diverse probabilità di inflizione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
lua
Ambito
game-dev
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.