RoR2: 1.20 content update (#1396)

## Adding in Explore Mode:

Features include:
* Added in `environments` to be items.
* `Location checks` are now `environment based` instead of being able to get them from anywhere.
* Added in support for the `DLC Survivors of the void` which include `Void Items` and `3 new maps` that come with it. (option added to use DLC)

---------

Co-authored-by: Dogpetkid <dogpetkid@gmail.com>
This commit is contained in:
kindasneaki
2023-02-05 13:51:03 -07:00
committed by GitHub
parent fb1a9e9c5a
commit cae1e683e2
8 changed files with 908 additions and 116 deletions

View File

@@ -1,31 +1,99 @@
from typing import Dict
from Options import Option, DefaultOnToggle, Range, Choice
from Options import Option, Toggle, DefaultOnToggle, DeathLink, Range, Choice
# NOTE be aware that since the range of item ids that RoR2 uses is based off of the maximums of checks
# Be careful when changing the range_end values not to go into another game's IDs
# NOTE that these changes to range_end must also be reflected in the RoR2 client so it understands the same ids.
class Goal(Choice):
"""
Classic Mode: Every Item pickup increases fills a progress bar which gives location checks.
Explore Mode: Each environment will have location checks within each environment.
environments will be locked in the item pool until received.
"""
display_name = "Game Mode"
option_classic = 0
option_explore = 1
default = 0
class TotalLocations(Range):
"""Number of location checks which are added to the Risk of Rain playthrough."""
"""Classic Mode: Number of location checks which are added to the Risk of Rain playthrough."""
display_name = "Total Locations"
range_start = 10
range_start = 40
range_end = 250
default = 20
default = 40
class ChestsPerEnvironment(Range):
"""Explore Mode: The number of chest locations per environment."""
display_name = "Chests per Environment"
range_start = 2
range_end = 20
default = 10
class ShrinesPerEnvironment(Range):
"""Explore Mode: The number of shrine locations per environment."""
display_name = "Shrines per Environment"
range_start = 2
range_end = 20
default = 5
class ScavengersPerEnvironment(Range):
"""Explore Mode: The number of scavenger locations per environment."""
display_name = "Scavenger per Environment"
range_start = 0
range_end = 1
default = 1
class ScannersPerEnvironment(Range):
"""Explore Mode: The number of scanners locations per environment."""
display_name = "Radio Scanners per Environment"
range_start = 0
range_end = 1
default = 1
class AltarsPerEnvironment(Range):
"""Explore Mode: The number of altars locations per environment."""
display_name = "Newts Per Environment"
range_start = 0
range_end = 2
default = 1
class TotalRevivals(Range):
"""Total Percentage of `Dio's Best Friend` item put in the item pool."""
display_name = "Total Percentage Revivals Available"
display_name = "Total Revives"
range_start = 0
range_end = 10
default = 4
class ItemPickupStep(Range):
"""Number of items to pick up before an AP Check is completed.
"""
Number of items to pick up before an AP Check is completed.
Setting to 1 means every other pickup.
Setting to 2 means every third pickup. So on..."""
Setting to 2 means every third pickup. So on...
"""
display_name = "Item Pickup Step"
range_start = 0
range_end = 5
default = 2
default = 1
class ShrineUseStep(Range):
"""
Explore Mode:
Number of shrines to use up before an AP Check is completed.
Setting to 1 means every other pickup.
Setting to 2 means every third pickup. So on...
"""
display_name = "Shrine use Step"
range_start = 0
range_end = 3
default = 0
class AllowLunarItems(DefaultOnToggle):
@@ -38,13 +106,33 @@ class StartWithRevive(DefaultOnToggle):
display_name = "Start with a Revive"
class FinalStageDeath(DefaultOnToggle):
class FinalStageDeath(Toggle):
"""Death on the final boss stage counts as a win."""
display_name = "Final Stage Death is Win"
class BeginWithLoop(Toggle):
"""
Enable to precollect a full loop of environments.
Only has an effect with Explore Mode.
"""
display_name = "Begin With Loop"
class DLC_SOTV(Toggle):
"""
Enable if you are using SOTV DLC.
Affects environment availability for Explore Mode.
Adds Void Items into the item pool
"""
display_name = "Enable DLC - SOTV"
class GreenScrap(Range):
"""Weight of Green Scraps in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of Green Scraps in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Green Scraps"
range_start = 0
range_end = 100
@@ -52,7 +140,9 @@ class GreenScrap(Range):
class RedScrap(Range):
"""Weight of Red Scraps in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of Red Scraps in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Red Scraps"
range_start = 0
range_end = 100
@@ -60,7 +150,9 @@ class RedScrap(Range):
class YellowScrap(Range):
"""Weight of yellow scraps in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of yellow scraps in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Yellow Scraps"
range_start = 0
range_end = 100
@@ -68,7 +160,9 @@ class YellowScrap(Range):
class WhiteScrap(Range):
"""Weight of white scraps in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of white scraps in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "White Scraps"
range_start = 0
range_end = 100
@@ -76,7 +170,9 @@ class WhiteScrap(Range):
class CommonItem(Range):
"""Weight of common items in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of common items in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Common Items"
range_start = 0
range_end = 100
@@ -84,7 +180,9 @@ class CommonItem(Range):
class UncommonItem(Range):
"""Weight of uncommon items in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of uncommon items in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Uncommon Items"
range_start = 0
range_end = 100
@@ -92,7 +190,9 @@ class UncommonItem(Range):
class LegendaryItem(Range):
"""Weight of legendary items in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of legendary items in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Legendary Items"
range_start = 0
range_end = 100
@@ -100,7 +200,9 @@ class LegendaryItem(Range):
class BossItem(Range):
"""Weight of boss items in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of boss items in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Boss Items"
range_start = 0
range_end = 100
@@ -108,36 +210,54 @@ class BossItem(Range):
class LunarItem(Range):
"""Weight of lunar items in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of lunar items in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Lunar Items"
range_start = 0
range_end = 100
default = 16
class VoidItem(Range):
"""Weight of void items in the item pool.
(Ignored unless Item Weight Presets is 'No')
(Ignored if Enable DLC - SOTV is 'No') """
display_name = "Void Items"
range_start = 0
range_end = 100
default = 16
class Equipment(Range):
"""Weight of equipment items in the item pool. (Ignored unless Item Weight Presets is 'No')"""
"""Weight of equipment items in the item pool.
(Ignored unless Item Weight Presets is 'No')"""
display_name = "Equipment"
range_start = 0
range_end = 100
default = 32
class ItemPoolPresetToggle(DefaultOnToggle):
class ItemPoolPresetToggle(Toggle):
"""Will use the item weight presets when set to true, otherwise will use the custom set item pool weights."""
display_name = "Use Item Weight Presets"
class ItemWeights(Choice):
"""Preset choices for determining the weights of the item pool.
New is a test for a potential adjustment to the default weights.
Uncommon puts a large number of uncommon items in the pool.
Legendary puts a large number of legendary items in the pool.
Lunartic makes everything a lunar item.
Chaos generates the pool completely at random with rarer items having a slight cap to prevent this option being too easy.
No Scraps removes all scrap items from the item pool.
Even generates the item pool with every item having an even weight.
Scraps Only will be only scrap items in the item pool."""
"""Set item_pool_presets to true if you want to use one of these presets.
Preset choices for determining the weights of the item pool.
- New is a test for a potential adjustment to the default weights.
- Uncommon puts a large number of uncommon items in the pool.
- Legendary puts a large number of legendary items in the pool.
- Lunartic makes everything a lunar item.
- Chaos generates the pool completely at random with rarer items having a slight cap to prevent this option being too easy.
- No Scraps removes all scrap items from the item pool.
- Even generates the item pool with every item having an even weight.
- Scraps Only will be only scrap items in the item pool.
- Void makes everything a void item."""
display_name = "Item Weights"
option_default = 0
option_new = 1
@@ -148,6 +268,7 @@ class ItemWeights(Choice):
option_no_scraps = 6
option_even = 7
option_scraps_only = 8
option_void = 9
# define a dictionary for the weights of the generated item pool.
@@ -161,17 +282,28 @@ ror2_weights: Dict[str, type(Option)] = {
"legendary_item": LegendaryItem,
"boss_item": BossItem,
"lunar_item": LunarItem,
"void_item": VoidItem,
"equipment": Equipment
}
ror2_options: Dict[str, type(Option)] = {
"total_locations": TotalLocations,
"total_revivals": TotalRevivals,
"start_with_revive": StartWithRevive,
"final_stage_death": FinalStageDeath,
"item_pickup_step": ItemPickupStep,
"enable_lunar": AllowLunarItems,
"item_weights": ItemWeights,
"item_pool_presets": ItemPoolPresetToggle,
"goal": Goal,
"total_locations": TotalLocations,
"chests_per_stage": ChestsPerEnvironment,
"shrines_per_stage": ShrinesPerEnvironment,
"scavengers_per_stage": ScavengersPerEnvironment,
"scanner_per_stage": ScannersPerEnvironment,
"altars_per_stage": AltarsPerEnvironment,
"total_revivals": TotalRevivals,
"start_with_revive": StartWithRevive,
"final_stage_death": FinalStageDeath,
"begin_with_loop": BeginWithLoop,
"dlc_sotv": DLC_SOTV,
"death_link": DeathLink,
"item_pickup_step": ItemPickupStep,
"shrine_use_step": ShrineUseStep,
"enable_lunar": AllowLunarItems,
"item_weights": ItemWeights,
"item_pool_presets": ItemPoolPresetToggle,
**ror2_weights
}