Adding damage rando v2 options to timespinner rando (#503)
This commit is contained in:
parent
3f691d6977
commit
b0b41711d4
|
@ -1,6 +1,7 @@
|
||||||
from typing import Dict
|
from typing import Dict, Union
|
||||||
from BaseClasses import MultiWorld
|
from BaseClasses import MultiWorld
|
||||||
from Options import Toggle, DefaultOnToggle, DeathLink, Choice, Range, Option
|
from Options import Toggle, DefaultOnToggle, DeathLink, Choice, Range, Option, OptionDict
|
||||||
|
from schema import Schema, And
|
||||||
|
|
||||||
class StartWithJewelryBox(Toggle):
|
class StartWithJewelryBox(Toggle):
|
||||||
"Start with Jewelry Box unlocked"
|
"Start with Jewelry Box unlocked"
|
||||||
|
@ -54,9 +55,120 @@ class LoreChecks(Toggle):
|
||||||
"Memories and journal entries contain items."
|
"Memories and journal entries contain items."
|
||||||
display_name = "Lore Checks"
|
display_name = "Lore Checks"
|
||||||
|
|
||||||
class DamageRando(Toggle):
|
class DamageRando(Choice):
|
||||||
"Each orb has a high chance of having lower base damage and a low chance of having much higher base damage."
|
"Randomly nerfs and buffs some orbs and their associated spells as well as some associated rings."
|
||||||
display_name = "Damage Rando"
|
display_name = "Damage Rando"
|
||||||
|
option_off = 0
|
||||||
|
option_allnerfs = 1
|
||||||
|
option_mostlynerfs = 2
|
||||||
|
option_balanced = 3
|
||||||
|
option_mostlybuffs = 4
|
||||||
|
option_allbuffs = 5
|
||||||
|
option_manual = 6
|
||||||
|
|
||||||
|
class DamageRandoOverrides(OptionDict):
|
||||||
|
"Manual +/-/normal odds for each orb. Put 0 if you don't want a certain nerf or buff to be a possibility."
|
||||||
|
schema = Schema({
|
||||||
|
"Blue": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Blade": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Fire": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Plasma": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Iron": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Ice": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Wind": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Gun": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Umbra": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Empire": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Eye": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Blood": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"ForbiddenTome": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Shattered": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Nether": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
"Radiant": {
|
||||||
|
"MinusOdds": And(int, lambda n: n >= 0),
|
||||||
|
"NormalOdds": And(int, lambda n: n >= 0),
|
||||||
|
"PlusOdds": And(int, lambda n: n >= 0)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
display_name = "Damage Rando Overrides"
|
||||||
|
default = {
|
||||||
|
"Blue": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Blade": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Fire": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Plasma": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Iron": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Ice": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Wind": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Gun": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Umbra": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Empire": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Eye": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Blood": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"ForbiddenTome": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Shattered": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Nether": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
"Radiant": { "MinusOdds": 1, "NormalOdds": 1, "PlusOdds": 1 },
|
||||||
|
}
|
||||||
|
|
||||||
class ShopFill(Choice):
|
class ShopFill(Choice):
|
||||||
"""Sets the items for sale in Merchant Crow's shops.
|
"""Sets the items for sale in Merchant Crow's shops.
|
||||||
|
@ -111,6 +223,7 @@ timespinner_options: Dict[str, Option] = {
|
||||||
"Cantoran": Cantoran,
|
"Cantoran": Cantoran,
|
||||||
"LoreChecks": LoreChecks,
|
"LoreChecks": LoreChecks,
|
||||||
"DamageRando": DamageRando,
|
"DamageRando": DamageRando,
|
||||||
|
"DamageRandoOverrides": DamageRandoOverrides,
|
||||||
"ShopFill": ShopFill,
|
"ShopFill": ShopFill,
|
||||||
"ShopWarpShards": ShopWarpShards,
|
"ShopWarpShards": ShopWarpShards,
|
||||||
"ShopMultiplier": ShopMultiplier,
|
"ShopMultiplier": ShopMultiplier,
|
||||||
|
@ -122,10 +235,9 @@ timespinner_options: Dict[str, Option] = {
|
||||||
def is_option_enabled(world: MultiWorld, player: int, name: str) -> bool:
|
def is_option_enabled(world: MultiWorld, player: int, name: str) -> bool:
|
||||||
return get_option_value(world, player, name) > 0
|
return get_option_value(world, player, name) > 0
|
||||||
|
|
||||||
def get_option_value(world: MultiWorld, player: int, name: str) -> int:
|
def get_option_value(world: MultiWorld, player: int, name: str) -> Union[int, dict]:
|
||||||
option = getattr(world, name, None)
|
option = getattr(world, name, None)
|
||||||
|
|
||||||
if option == None:
|
if option == None:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
return int(option[player].value)
|
return option[player].value
|
Loading…
Reference in New Issue