[RL] Specify list of available classes (#262)
This commit is contained in:
parent
43113c7844
commit
689183edc0
|
@ -1,6 +1,6 @@
|
|||
import typing
|
||||
|
||||
from Options import Choice, Range, Option, Toggle, DeathLink, DefaultOnToggle, OptionList
|
||||
from Options import Choice, Range, Option, Toggle, DeathLink, DefaultOnToggle, OptionList, OptionSet
|
||||
|
||||
|
||||
class StartingGender(Choice):
|
||||
|
@ -195,7 +195,7 @@ class CastleScaling(Range):
|
|||
Adjusts the scaling factor for how big a castle can be. Larger castles scale enemies quicker and also take longer
|
||||
to generate. 100 means normal castle size.
|
||||
"""
|
||||
displayname = "Castle Size Scaling Percentage"
|
||||
display_name = "Castle Size Scaling Percentage"
|
||||
range_start = 50
|
||||
range_end = 300
|
||||
default = 100
|
||||
|
@ -205,7 +205,7 @@ class ChallengeBossKhidr(Choice):
|
|||
"""
|
||||
Determines if Neo Khidr replaces Khidr in their boss room.
|
||||
"""
|
||||
displayname = "Khidr"
|
||||
display_name = "Khidr"
|
||||
option_vanilla = 0
|
||||
option_challenge = 1
|
||||
default = 0
|
||||
|
@ -215,7 +215,7 @@ class ChallengeBossAlexander(Choice):
|
|||
"""
|
||||
Determines if Alexander the IV replaces Alexander in their boss room.
|
||||
"""
|
||||
displayname = "Alexander"
|
||||
display_name = "Alexander"
|
||||
option_vanilla = 0
|
||||
option_challenge = 1
|
||||
default = 0
|
||||
|
@ -225,7 +225,7 @@ class ChallengeBossLeon(Choice):
|
|||
"""
|
||||
Determines if Ponce de Freon replaces Ponce de Leon in their boss room.
|
||||
"""
|
||||
displayname = "Ponce de Leon"
|
||||
display_name = "Ponce de Leon"
|
||||
option_vanilla = 0
|
||||
option_challenge = 1
|
||||
default = 0
|
||||
|
@ -235,7 +235,7 @@ class ChallengeBossHerodotus(Choice):
|
|||
"""
|
||||
Determines if Astrodotus replaces Herodotus in their boss room.
|
||||
"""
|
||||
displayname = "Herodotus"
|
||||
display_name = "Herodotus"
|
||||
option_vanilla = 0
|
||||
option_challenge = 1
|
||||
default = 0
|
||||
|
@ -245,7 +245,7 @@ class HealthUpPool(Range):
|
|||
"""
|
||||
Determines the number of Health Ups in the item pool.
|
||||
"""
|
||||
displayname = "Health Up Pool"
|
||||
display_name = "Health Up Pool"
|
||||
range_start = 0
|
||||
range_end = 15
|
||||
default = 15
|
||||
|
@ -255,7 +255,7 @@ class ManaUpPool(Range):
|
|||
"""
|
||||
Determines the number of Mana Ups in the item pool.
|
||||
"""
|
||||
displayname = "Mana Up Pool"
|
||||
display_name = "Mana Up Pool"
|
||||
range_start = 0
|
||||
range_end = 15
|
||||
default = 15
|
||||
|
@ -265,7 +265,7 @@ class AttackUpPool(Range):
|
|||
"""
|
||||
Determines the number of Attack Ups in the item pool.
|
||||
"""
|
||||
displayname = "Attack Up Pool"
|
||||
display_name = "Attack Up Pool"
|
||||
range_start = 0
|
||||
range_end = 15
|
||||
default = 15
|
||||
|
@ -275,7 +275,7 @@ class MagicDamageUpPool(Range):
|
|||
"""
|
||||
Determines the number of Magic Damage Ups in the item pool.
|
||||
"""
|
||||
displayname = "Magic Damage Up Pool"
|
||||
display_name = "Magic Damage Up Pool"
|
||||
range_start = 0
|
||||
range_end = 15
|
||||
default = 15
|
||||
|
@ -285,7 +285,7 @@ class ArmorUpPool(Range):
|
|||
"""
|
||||
Determines the number of Armor Ups in the item pool.
|
||||
"""
|
||||
displayname = "Armor Up Pool"
|
||||
display_name = "Armor Up Pool"
|
||||
range_start = 0
|
||||
range_end = 10
|
||||
default = 10
|
||||
|
@ -295,7 +295,7 @@ class EquipUpPool(Range):
|
|||
"""
|
||||
Determines the number of Equip Ups in the item pool.
|
||||
"""
|
||||
displayname = "Equip Up Pool"
|
||||
display_name = "Equip Up Pool"
|
||||
range_start = 0
|
||||
range_end = 10
|
||||
default = 10
|
||||
|
@ -305,7 +305,7 @@ class CritChanceUpPool(Range):
|
|||
"""
|
||||
Determines the number of Crit Chance Ups in the item pool.
|
||||
"""
|
||||
displayname = "Crit Chance Up Pool"
|
||||
display_name = "Crit Chance Up Pool"
|
||||
range_start = 0
|
||||
range_end = 5
|
||||
default = 5
|
||||
|
@ -315,7 +315,7 @@ class CritDamageUpPool(Range):
|
|||
"""
|
||||
Determines the number of Crit Damage Ups in the item pool.
|
||||
"""
|
||||
displayname = "Crit Damage Up Pool"
|
||||
display_name = "Crit Damage Up Pool"
|
||||
range_start = 0
|
||||
range_end = 5
|
||||
default = 5
|
||||
|
@ -325,12 +325,22 @@ class FreeDiaryOnGeneration(DefaultOnToggle):
|
|||
"""
|
||||
Allows the player to get a free diary check every time they regenerate the castle in the starting room.
|
||||
"""
|
||||
displayname = "Free Diary On Generation"
|
||||
display_name = "Free Diary On Generation"
|
||||
|
||||
|
||||
class AvailableClasses(OptionSet):
|
||||
"""
|
||||
List of classes that will be in the item pool to find. The upgraded form of the class will be added with it.
|
||||
The upgraded form of your starting class will be available regardless.
|
||||
"""
|
||||
display_name = "Available Classes"
|
||||
default = {"Knight", "Mage", "Barbarian", "Knave", "Shinobi", "Miner", "Spellthief", "Lich", "Dragon", "Traitor"}
|
||||
valid_keys = {"Knight", "Mage", "Barbarian", "Knave", "Shinobi", "Miner", "Spellthief", "Lich", "Dragon", "Traitor"}
|
||||
|
||||
legacy_options: typing.Dict[str, type(Option)] = {
|
||||
"starting_gender": StartingGender,
|
||||
"starting_class": StartingClass,
|
||||
"available_classes": AvailableClasses,
|
||||
"new_game_plus": NewGamePlus,
|
||||
"fairy_chests_per_zone": FairyChestsPerZone,
|
||||
"chests_per_zone": ChestsPerZone,
|
||||
|
|
|
@ -93,37 +93,43 @@ class LegacyWorld(World):
|
|||
itempool += [self.create_item(ItemName.crit_chance)] * int(self.world.crit_chance_pool[self.player])
|
||||
itempool += [self.create_item(ItemName.crit_damage)] * int(self.world.crit_damage_pool[self.player])
|
||||
|
||||
# Add specific classes into the pool. Eventually, will be able to shuffle the starting ones, but until then...
|
||||
itempool += [
|
||||
self.create_item(ItemName.dragon),
|
||||
self.create_item(ItemName.traitor),
|
||||
*self._create_items(ItemName.progressive_knight),
|
||||
*self._create_items(ItemName.progressive_mage),
|
||||
*self._create_items(ItemName.progressive_barbarian),
|
||||
*self._create_items(ItemName.progressive_knave),
|
||||
*self._create_items(ItemName.progressive_shinobi),
|
||||
*self._create_items(ItemName.progressive_miner),
|
||||
*self._create_items(ItemName.progressive_lich),
|
||||
*self._create_items(ItemName.progressive_spellthief),
|
||||
]
|
||||
|
||||
# Remove one of our starting classes from the item pool.
|
||||
classes = self.world.available_classes[self.player]
|
||||
if "Dragon" in classes:
|
||||
itempool.append(self.create_item(ItemName.dragon))
|
||||
if "Traitor" in classes:
|
||||
itempool.append(self.create_item(ItemName.traitor))
|
||||
if self.world.starting_class[self.player] == "knight":
|
||||
itempool.remove(self.create_item(ItemName.progressive_knight))
|
||||
elif self.world.starting_class[self.player] == "mage":
|
||||
itempool.remove(self.create_item(ItemName.progressive_mage))
|
||||
elif self.world.starting_class[self.player] == "barbarian":
|
||||
itempool.remove(self.create_item(ItemName.progressive_barbarian))
|
||||
elif self.world.starting_class[self.player] == "knave":
|
||||
itempool.remove(self.create_item(ItemName.progressive_knave))
|
||||
elif self.world.starting_class[self.player] == "miner":
|
||||
itempool.remove(self.create_item(ItemName.progressive_miner))
|
||||
elif self.world.starting_class[self.player] == "shinobi":
|
||||
itempool.remove(self.create_item(ItemName.progressive_shinobi))
|
||||
elif self.world.starting_class[self.player] == "lich":
|
||||
itempool.remove(self.create_item(ItemName.progressive_lich))
|
||||
elif self.world.starting_class[self.player] == "spellthief":
|
||||
itempool.remove(self.create_item(ItemName.progressive_spellthief))
|
||||
itempool.append(self.create_item(ItemName.progressive_knight))
|
||||
elif "Knight" in classes:
|
||||
itempool.extend(self._create_items(ItemName.progressive_knight))
|
||||
if self.world.starting_class[self.player] == "mage":
|
||||
itempool.append(self.create_item(ItemName.progressive_mage))
|
||||
elif "Mage" in classes:
|
||||
itempool.extend(self._create_items(ItemName.progressive_mage))
|
||||
if self.world.starting_class[self.player] == "barbarian":
|
||||
itempool.append(self.create_item(ItemName.progressive_barbarian))
|
||||
elif "Barbarian" in classes:
|
||||
itempool.extend(self._create_items(ItemName.progressive_barbarian))
|
||||
if self.world.starting_class[self.player] == "knave":
|
||||
itempool.append(self.create_item(ItemName.progressive_knave))
|
||||
elif "Knave" in classes:
|
||||
itempool.extend(self._create_items(ItemName.progressive_knave))
|
||||
if self.world.starting_class[self.player] == "shinobi":
|
||||
itempool.append(self.create_item(ItemName.progressive_shinobi))
|
||||
elif "Shinobi" in classes:
|
||||
itempool.extend(self._create_items(ItemName.progressive_shinobi))
|
||||
if self.world.starting_class[self.player] == "miner":
|
||||
itempool.append(self.create_item(ItemName.progressive_miner))
|
||||
elif "Miner" in classes:
|
||||
itempool.extend(self._create_items(ItemName.progressive_miner))
|
||||
if self.world.starting_class[self.player] == "lich":
|
||||
itempool.append(self.create_item(ItemName.progressive_lich))
|
||||
elif "Lich" in classes:
|
||||
itempool.extend(self._create_items(ItemName.progressive_lich))
|
||||
if self.world.starting_class[self.player] == "spellthief":
|
||||
itempool.append(self.create_item(ItemName.progressive_spellthief))
|
||||
elif "Spellthief" in classes:
|
||||
itempool.extend(self._create_items(ItemName.progressive_spellthief))
|
||||
|
||||
# Check if we need to start with these vendors or put them in the pool.
|
||||
if self.world.vendors[self.player] == "start_unlocked":
|
||||
|
|
Loading…
Reference in New Issue