Refactor JunctionFiller logic to improve eligibility and rolling mechanics
Updated the JunctionFiller class to adjust the eligibility criteria for junction elements, ensuring that the roll for chance is determined after the selection of a variant. Enhanced the Passes method to exclude the rolling logic, which now occurs in a separate Rolls method. This change clarifies the flow of decision-making in junctions and ensures that the chance of the selected variant is accurately represented. Additionally, introduced new tests to validate the updated rolling behavior and its impact on junction processing.
This commit is contained in:
@@ -532,6 +532,14 @@ JunctionElement
|
||||
непрерывный отрезок позиций (иначе неясно, куда встаёт выбранная), обязательность и условия
|
||||
относятся к развилке целиком.
|
||||
|
||||
**Жребий бросается после выбора варианта, а не до.** Порядок здесь и есть смысл настройки: развилка
|
||||
из пяти заставок с `chance = 60` — это «заставка в шести случаях из десяти, каждый раз разная».
|
||||
Бросай кубик за каждую врезку отдельно, и получилось бы «какая-нибудь заставка почти всегда»
|
||||
(1 − 0,4⁵ ≈ 99 %). Поэтому сначала отсекают условия (смена шоу, интервал, окно суток, круглый час),
|
||||
потом развилка схлопывается в один вариант по весам, и уже он бросает единственный жребий своим
|
||||
`chance`. Разные шансы у вариантов допустимы и означают ровно то, что написано: сыграет шанс
|
||||
выбранного.
|
||||
|
||||
Оба жребия — `chance` и выбор внутри развилки — берутся из seed генерации (4.4), а не из живого
|
||||
`Random`. Иначе пересборка хвоста тасовала бы врезки на каждое применение, и диф из 6.6 показывал бы
|
||||
изменения там, где ничего не менялось.
|
||||
|
||||
Reference in New Issue
Block a user