mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-03-07 07:03:44 -08:00
KH2: Add a new "CasualBounties" Setting (#4877)
* KH2: casual bounties option
* Casual Bounty: Adjust level bounty logic to correspond with max level check setting
* Bugfix: We have one less possible bounty with corresponding level bounty logic
* Casual Bounty: Move option to better spot
* Bugfix: Prevent possible .remove() crash
* Revert "Bugfix: We have one less possible bounty with corresponding level bounty logic"
This reverts commit 3c929e00db.
* Bugfix: Typo in conditional
* Casual Bounties: Remove Scar, add MCP
I knew I was missing one second visit fight and Scar shouldn't be there he's a first visit
* Casual Bounties: Add some clarity to the CasualBounty setting
* Docs: Update docs to reflect new CasualBounty setting
* KH2: Add bounty locations as location groups
Feedback on this needed, trying to do this to make it work with the code above the additions made it so the game generated 1 less item than locations, despite linking properly
It does function as intended though
* KH2: Update docs
This commit is contained in:
@@ -1281,6 +1281,25 @@ exclusion_table = {
|
||||
LocationName.HadesCupTrophyParadoxCups,
|
||||
LocationName.MusicalOrichalcumPlus,
|
||||
],
|
||||
"HitlistCasual": {
|
||||
LocationName.FuturePete,
|
||||
LocationName.BetwixtandBetweenBondofFlame,
|
||||
LocationName.GrimReaper2,
|
||||
LocationName.ThousandHeartless,
|
||||
LocationName.WinnersProof,
|
||||
LocationName.Experiment,
|
||||
LocationName.Groundshaker,
|
||||
LocationName.Hades,
|
||||
LocationName.GenieJafar,
|
||||
LocationName.Xaldin,
|
||||
LocationName.StormRider,
|
||||
LocationName.MansionBasementCorridorHiPotion,
|
||||
LocationName.Xemnas1SecretAnsemReport13,
|
||||
LocationName.XigbarSecretAnsemReport3,
|
||||
LocationName.MCP,
|
||||
LocationName.Lvl50,
|
||||
LocationName.Lvl99
|
||||
},
|
||||
"Cups": {
|
||||
LocationName.ProtectBeltPainandPanicCup,
|
||||
LocationName.SerenityGemPainandPanicCup,
|
||||
@@ -1357,3 +1376,8 @@ location_groups = {
|
||||
Region_Name: [loc for loc in Region_Locs if "Event" not in loc]
|
||||
for Region_Name, Region_Locs in KH2REGIONS.items() if Region_Locs and "Event" not in Region_Locs[0]
|
||||
}
|
||||
|
||||
# This seems like the not-correct way to handle these location groups, but making these sets regions so the above works
|
||||
# causes not enough items to be generated for some reason.
|
||||
location_groups["Casual Bounties"] = exclusion_table["HitlistCasual"]
|
||||
location_groups["General Bounties"] = exclusion_table["Hitlist"]
|
||||
|
||||
@@ -273,7 +273,7 @@ class BountyRequired(Range):
|
||||
If Goal is not Hitlist or Lucky Emblem and Hitlist this does nothing."""
|
||||
display_name = "Bounties Required"
|
||||
range_start = 1
|
||||
range_end = 26
|
||||
range_end = 42
|
||||
default = 7
|
||||
|
||||
|
||||
@@ -283,7 +283,7 @@ class BountyAmount(Range):
|
||||
If Goal is not Hitlist or Lucky Emblem and Hitlist this does nothing."""
|
||||
display_name = "Bounties Available"
|
||||
range_start = 1
|
||||
range_end = 26
|
||||
range_end = 42
|
||||
default = 10
|
||||
|
||||
|
||||
@@ -293,6 +293,12 @@ class BountyStartHint(Toggle):
|
||||
default = False
|
||||
|
||||
|
||||
class CasualBounties(Toggle):
|
||||
"""Adds more casual and generic locations that aren't superbosses to expand the bounty pool. (World Bosses, etc.)"""
|
||||
display_name = "Add Casual Bounties"
|
||||
default = False
|
||||
|
||||
|
||||
class WeaponSlotStartHint(Toggle):
|
||||
"""Start with Weapon Slots' Hinted"""
|
||||
display_name = "Start with Weapon Slots Hinted"
|
||||
@@ -365,6 +371,7 @@ class KingdomHearts2Options(PerGameCommonOptions):
|
||||
Visitlocking: Visitlocking
|
||||
RandomVisitLockingItem: RandomVisitLockingItem
|
||||
SuperBosses: SuperBosses
|
||||
CasualBounties: CasualBounties
|
||||
Cups: Cups
|
||||
SummonLevelLocationToggle: SummonLevelLocationToggle
|
||||
AtlanticaToggle: AtlanticaToggle
|
||||
|
||||
@@ -601,7 +601,6 @@ KH2REGIONS: typing.Dict[str, typing.List[str]] = {
|
||||
LocationName.OasisAPBoost,
|
||||
LocationName.CircleofLife,
|
||||
LocationName.Hyenas1,
|
||||
|
||||
LocationName.GoofyHyenas1
|
||||
],
|
||||
RegionName.Scar: [
|
||||
|
||||
@@ -249,6 +249,8 @@ class KH2World(World):
|
||||
# hitlist
|
||||
if self.options.Goal not in ["lucky_emblem_hunt", "three_proofs"]:
|
||||
self.random_super_boss_list.extend(exclusion_table["Hitlist"])
|
||||
if self.options.CasualBounties:
|
||||
self.random_super_boss_list.extend(exclusion_table["HitlistCasual"])
|
||||
self.bounties_amount = self.options.BountyAmount.value
|
||||
self.bounties_required = self.options.BountyRequired.value
|
||||
|
||||
@@ -484,6 +486,20 @@ class KH2World(World):
|
||||
if location in self.random_super_boss_list:
|
||||
self.random_super_boss_list.remove(location)
|
||||
|
||||
if self.options.LevelDepth == "level_1":
|
||||
if LocationName.Lvl50 in self.random_super_boss_list:
|
||||
self.random_super_boss_list.remove(LocationName.Lvl50)
|
||||
if LocationName.Lvl99 in self.random_super_boss_list:
|
||||
self.random_super_boss_list.remove(LocationName.Lvl99)
|
||||
|
||||
# We only want the bounty corresponding to our max level, remove the other level bounty
|
||||
if self.options.LevelDepth in ["level_50", "level_50_sanity"] and LocationName.Lvl99 in self.random_super_boss_list:
|
||||
self.random_super_boss_list.remove(LocationName.Lvl99)
|
||||
|
||||
# We only want the bounty corresponding to our max level, remove the other level bounty
|
||||
if self.options.LevelDepth in ["level_99", "level_99_sanity"] and LocationName.Lvl50 in self.random_super_boss_list:
|
||||
self.random_super_boss_list.remove(LocationName.Lvl50)
|
||||
|
||||
if not self.options.SummonLevelLocationToggle and LocationName.Summonlvl7 in self.random_super_boss_list:
|
||||
self.random_super_boss_list.remove(LocationName.Summonlvl7)
|
||||
|
||||
|
||||
@@ -82,6 +82,29 @@ The list of possible locations that can contain a bounty:
|
||||
- Transport to Remembrance
|
||||
- Goddess of Fate cup and Hades Paradox cup
|
||||
|
||||
For players looking for a more casual experience with the Hitlist goal, there is an "Add Casual Bounties" option to introduce more bounty locations.<br>
|
||||
The list of possible bounty locations that get added with this setting enabled:
|
||||
|
||||
- Future Pete
|
||||
- TT3 Bond of Flame
|
||||
- Grim Reaper 2
|
||||
- 1000 Heartless
|
||||
- Winner's Proof
|
||||
- Experiment
|
||||
- Groundshaker
|
||||
- Hades
|
||||
- Genie Jafar
|
||||
- Xaldin
|
||||
- Storm Rider
|
||||
- MCP
|
||||
- STT Post Axel 2 Chest
|
||||
- Xemnas 1
|
||||
- Xigbar
|
||||
- Level 50 (Depending on choice of level checks.)
|
||||
- Level 99 (Depending on choice of level checks.)
|
||||
|
||||
For those who only want the casual bounty locations, you can effectively disable the normal bounty locations by excluding the "General Bounties" location group.
|
||||
|
||||
## Quality of life:
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user