SMZ3: Fix distribution of SM prizes (#5303)

This commit is contained in:
Kaito Sinclaire
2025-09-05 07:21:08 -07:00
committed by GitHub
parent ef59a5ee11
commit 5b5e2c3567

View File

@@ -1,6 +1,5 @@
from enum import Enum from enum import Enum
from typing import List from typing import List
from copy import copy
from .Patch import DropPrize from .Patch import DropPrize
from .Region import RewardType from .Region import RewardType
@@ -91,7 +90,11 @@ class WorldState:
self.Green = 1 self.Green = 1
if (distribution is not None): if (distribution is not None):
self = copy(distribution) self.Boss = distribution.Boss
self.Blue = distribution.Blue
self.Red = distribution.Red
self.Pend = distribution.Pend
self.Green = distribution.Green
if (boss is not None): if (boss is not None):
self.Boss = boss self.Boss = boss
if (blue is not None): if (blue is not None):
@@ -111,11 +114,11 @@ class WorldState:
p -= self.Boss p -= self.Boss
if (p < 0): return (RewardType.AnyBossToken, WorldState.Distribution(self, boss = self.Boss - WorldState.Distribution.factor)) if (p < 0): return (RewardType.AnyBossToken, WorldState.Distribution(self, boss = self.Boss - WorldState.Distribution.factor))
p -= self.Blue p -= self.Blue
if (p - self.Blue < 0): return (RewardType.CrystalBlue, WorldState.Distribution(self, blue = self.Blue - WorldState.Distribution.factor)) if (p < 0): return (RewardType.CrystalBlue, WorldState.Distribution(self, blue = self.Blue - WorldState.Distribution.factor))
p -= self.Red p -= self.Red
if (p - self.Red < 0): return (RewardType.CrystalRed, WorldState.Distribution(self, red = self.Red - WorldState.Distribution.factor)) if (p < 0): return (RewardType.CrystalRed, WorldState.Distribution(self, red = self.Red - WorldState.Distribution.factor))
p -= self.Pend p -= self.Pend
if (p - self.Pend < 0): return (RewardType.PendantNonGreen, WorldState.Distribution(self, pend = self.Pend - 1)) if (p < 0): return (RewardType.PendantNonGreen, WorldState.Distribution(self, pend = self.Pend - 1))
return (RewardType.PendantGreen, WorldState.Distribution(self, green = self.Green - 1)) return (RewardType.PendantGreen, WorldState.Distribution(self, green = self.Green - 1))
def Generate(self, func): def Generate(self, func):