Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stardew Valley: Fix Crimsonfish region #3687

Merged
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
c590650
- Add Unit test for all the fish that require a specific region to be…
agilbert1412 Jul 25, 2024
9e137e6
- Move the crimsonfish to the tide pools region
agilbert1412 Jul 25, 2024
ff18bf8
- Improved the unit test to be more thorough, add extended family fis…
agilbert1412 Jul 25, 2024
181c355
- Moved the son of crimsonfish to the correct region as well
agilbert1412 Jul 25, 2024
c84d2a4
Merge branch 'main' into StardewValley/FixCrimsonfishRegion
agilbert1412 Jul 29, 2024
290ec62
FFMQ: Fix reset protection (#3710)
Alchav Jul 29, 2024
cc250ad
- Take shipsanity moss out of shipsanity crops (#3709)
agilbert1412 Jul 29, 2024
e71c968
sc2: Removing unused dependency in requirements.txt (#3697)
MatthewMarinets Jul 29, 2024
a7f566a
WebHost: Fix NamedRange values clamping to the range (#3613)
remyjette Jul 30, 2024
647c28c
Timespinner: migrate to new options api and correct random (#2485)
Jarno458 Jul 31, 2024
498935b
Core: migrate item links out of main (#2914)
alwaysintreble Jul 31, 2024
716cfc8
Core: Rework accessibility (#1481)
alwaysintreble Jul 31, 2024
e94e715
Shivers: New features and removes two missed options using the old op…
GodlFire Jul 31, 2024
978ac5a
Bomb Rush Cyberfunk: Fix Coil quest being in glitched logic too early…
TRPG0 Jul 31, 2024
0873dcb
Options: Always verify keys for VerifyKeys options (#3280)
alwaysintreble Jul 31, 2024
31d35e5
Docs: Add FFMQ French Setup Guide + Minor fixes to English Guide (#3590)
wildham0 Jul 31, 2024
ecdd3be
Spire: Convert options, clean up random calls, and add DeathLink (#3704)
Exempt-Medic Jul 31, 2024
f287faa
Core: fix missing import for `MultiWorld.link_items()` (#3731)
alwaysintreble Aug 4, 2024
1e932e6
Pokemon R/B: Removing Floats from NamedRange #3717
Exempt-Medic Aug 5, 2024
4d19c2a
Docs: Missed Full Accessibility mention/conversion #3734
Exempt-Medic Aug 5, 2024
3582bdf
ChecksFinder: Refactor/Cleaning (#3725)
Exempt-Medic Aug 6, 2024
23ed8cd
OSRS: Implement New Game (#1976)
digiholic Aug 6, 2024
b2bccf7
TUNIC: Fix missing traversal req #3740
ScipioWright Aug 7, 2024
85cbb3e
TUNIC: Sort entrances in the spoiler log (#3733)
ScipioWright Aug 7, 2024
7fbdf4f
KH2: Update the docs to support steam in the setup guide (#3711)
JaredWeakStrike Aug 7, 2024
2f1f03a
RoR2: Remove recursion from explore mode access rules (#3681)
Mysteryem Aug 7, 2024
06eb7d9
Aquaria: Logic bug fixes (#3679)
tioui Aug 7, 2024
56a6c2c
HK: add grub hunt goal (#3203)
qwint Aug 8, 2024
d5961e3
DS3: Version 3.0.0 (#3128)
nex3 Aug 9, 2024
e045bcd
Core: Check parent_region.can_reach first in Location.can_reach (#3724)
Mysteryem Aug 9, 2024
d17bcd0
Core: Speed up CollectionState.copy() using built-in copy methods (#3…
Mysteryem Aug 9, 2024
59c6e67
HK: fix iterating all worlds instead of only HK worlds in stage_pre_f…
Mysteryem Aug 9, 2024
e49dacc
DOOM, DOOM II: Update steam URLs (#3746)
KScl Aug 9, 2024
b68bbd8
TLOZ: world: multiworld (#3752)
Exempt-Medic Aug 9, 2024
d039abb
SoE: fix determinism (#3745)
black-sliver Aug 10, 2024
eb506a8
Core: fix invalid __package__ of zipped worlds (#3686)
Silvris Aug 10, 2024
a1cd6a2
Clique: Update to new options API (#3759)
ScipioWright Aug 11, 2024
dfedf79
Timespinner: Fix eels check logic #3777
Jarno458 Aug 11, 2024
ff69385
TUNIC: Add note to Universal Tracker stuff #3772
ScipioWright Aug 11, 2024
af8322d
Core: change start inventory from pool to warn when nothing to remove…
qwint Aug 11, 2024
6599fd3
Undertale: Fix slot_data and options.as_dict() (#3774)
Exempt-Medic Aug 11, 2024
ce476f3
Core: Error on empty options.as_dict (#3773)
Exempt-Medic Aug 12, 2024
f114532
Core: Remove broken unused code from Options.py (#3781)
NewSoupVi Aug 12, 2024
182d40d
Core: Two Small Fixes (#3782)
Exempt-Medic Aug 13, 2024
07075c0
Core: recontextualize `CollectionState.collect` (#3723)
alwaysintreble Aug 13, 2024
006a1e2
Core: dump all item placements for generation failures. (#3237)
alwaysintreble Aug 13, 2024
317af20
Tests: fix the all games multiworld test (#3788)
alwaysintreble Aug 13, 2024
a9c11d0
TUNIC: Swap from multiworld.get to world.get for applicable things (#…
ScipioWright Aug 14, 2024
cf888b1
I have no idea (#3791)
Exempt-Medic Aug 14, 2024
a2de9d1
TUNIC: Add off and on aliases for the Entrance Rando option #3794
ScipioWright Aug 14, 2024
a0c1be3
Stardew Valley: Add Quality Bobber in the logic rules for fish qualit…
agilbert1412 Aug 14, 2024
3700eb1
Core: Require excluded locations to be reachable with full/locations …
Exempt-Medic Aug 16, 2024
97783ce
Lingo: Fixed Initiated-side Eight Door not opening (#3793)
hatkirby Aug 16, 2024
5b34157
TUNIC: Give the fox a gun (in logic) (very small PR) (#3790)
ScipioWright Aug 16, 2024
6a8e74f
TLOZ: Fix non-deterministic item pool generation (#3779)
Mysteryem Aug 16, 2024
cf581f3
Docs: Update 'tag' documentation (#3632)
EmilyV99 Aug 16, 2024
d13a609
[OSRS] Fixes Incorrect filler item names causing failures on tests. (…
digiholic Aug 16, 2024
2a3b21e
Fix !remaining for cross-world items (#3732)
KScl Aug 16, 2024
158d400
Core: early_local != local_early #3780
Exempt-Medic Aug 16, 2024
a049ac0
Pokemon Emerald: Ensure dig tutor is always usable (#3660)
Zunawe Aug 16, 2024
e84026b
Core: type for `CommonContext.ui` (#3796)
beauxq Aug 17, 2024
4efc994
VVVVVV: Make unnecessary Trinkets filler (#3806)
Scrungip Aug 18, 2024
058d7d7
Kingdom Hearts: Implement New Game (#3201)
gaithern Aug 18, 2024
eec5a7d
Core: Fix incorrect default state checked in MultiWorld.can_beat_game…
Mysteryem Aug 19, 2024
3c9aa6a
The Witness: Fix Tunnels Theater Flower EP Access Logic + Add Unit Te…
NewSoupVi Aug 19, 2024
8055352
Docs: `NetworkItem.player` (#3811)
beauxq Aug 19, 2024
2c505a4
Minecraft: Update to new options system. (#3765)
KonoTyran Aug 19, 2024
15442fb
The Witness: Panel Hunt Mode (#3265)
NewSoupVi Aug 19, 2024
00d1aaa
The Witness: Add "vague" hints making use of other games' region name…
NewSoupVi Aug 19, 2024
c43dc93
Mega Man 2: Implement New Game (#3256)
Silvris Aug 20, 2024
85f1582
Blasphemous: Total overhaul (#3355)
TRPG0 Aug 20, 2024
0c13109
MM2: fix Wily 5 Time Stopper rule (#3824)
Silvris Aug 21, 2024
2951d60
YachtDice: implement new game (#3482)
spinerak Aug 21, 2024
9eb2cbf
Yacht Dice: setup: change release-link to latest (#3827)
spinerak Aug 21, 2024
aa77151
ALTTP: Minor Tweaks to the Adjuster UI (#2533)
notoriousb1t Aug 22, 2024
b70f4a8
LTTP: Fix a bug in Triforce Pieces Mode: Extra (#3784)
Kappatechy Aug 22, 2024
62db017
The Witness: Ban Excluded Panels from Panel Hunt (#3818)
NewSoupVi Aug 22, 2024
d8ab70f
Purge the world: multiworld evil from osrs (#3751)
NewSoupVi Aug 22, 2024
71a61df
Core, some worlds: Rename sweep_for_events to sweep_for_advancements …
NewSoupVi Aug 22, 2024
999ece3
Core: some typing and cleaning in `BaseClasses.py` (#3391)
beauxq Aug 24, 2024
a5b8e68
Celeste 64: Typo #3840
PoryGone Aug 24, 2024
4e003e5
Kingdom Hearts: Make Ceiling Division Human-Readable #3839
gaithern Aug 24, 2024
76c1076
The Witness: Shuffle Dog (#3425)
NewSoupVi Aug 24, 2024
d33ce68
The Witness: Switch to world.player_name (#3693)
NewSoupVi Aug 24, 2024
991314c
Launcher: Update message that displays when installing a custom apwor…
ScipioWright Aug 24, 2024
16ddbde
kvui: assert kivy is not imported before kvui (#3823)
qwint Aug 24, 2024
0f0986a
Pokemon Emerald: Send current map to trackers (#3726)
Zunawe Aug 24, 2024
c23559f
Merge remote-tracking branch 'remotes/ArchipelagoMW/main' into Starde…
agilbert1412 Aug 24, 2024
14db529
Merge branch 'main' into StardewValley/FixCrimsonfishRegion
Berserker66 Aug 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions worlds/stardew_valley/data/fish_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ def __repr__(self):

fresh_water = (Region.farm, Region.forest, Region.town, Region.mountain)
ocean = (Region.beach,)
tide_pools = (Region.tide_pools,)
town_river = (Region.town,)
mountain_lake = (Region.mountain,)
forest_pond = (Region.forest,)
Expand Down Expand Up @@ -118,13 +119,13 @@ def create_fish(name: str, locations: Tuple[str, ...], seasons: Union[str, Tuple
spook_fish = create_fish(Fish.spook_fish, night_market, season.winter, 60)

angler = create_fish(Fish.angler, town_river, season.fall, 85, True, False)
crimsonfish = create_fish(Fish.crimsonfish, ocean, season.summer, 95, True, False)
crimsonfish = create_fish(Fish.crimsonfish, tide_pools, season.summer, 95, True, False)
glacierfish = create_fish(Fish.glacierfish, forest_river, season.winter, 100, True, False)
legend = create_fish(Fish.legend, mountain_lake, season.spring, 110, True, False)
mutant_carp = create_fish(Fish.mutant_carp, sewers, season.all_seasons, 80, True, False)

ms_angler = create_fish(Fish.ms_angler, town_river, season.fall, 85, True, True)
son_of_crimsonfish = create_fish(Fish.son_of_crimsonfish, ocean, season.summer, 95, True, True)
son_of_crimsonfish = create_fish(Fish.son_of_crimsonfish, tide_pools, season.summer, 95, True, True)
glacierfish_jr = create_fish(Fish.glacierfish_jr, forest_river, season.winter, 100, True, True)
legend_ii = create_fish(Fish.legend_ii, mountain_lake, season.spring, 110, True, True)
radioactive_carp = create_fish(Fish.radioactive_carp, sewers, season.all_seasons, 80, True, True)
Expand Down
1 change: 1 addition & 0 deletions worlds/stardew_valley/test/TestDynamicGoals.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ def collect_fishing_abilities(tester: SVTestBase):
tester.multiworld.state.collect(tester.world.create_item("Winter"), event=False)
tester.multiworld.state.collect(tester.world.create_item(Transportation.desert_obelisk), event=False)
tester.multiworld.state.collect(tester.world.create_item("Railroad Boulder Removed"), event=False)
tester.multiworld.state.collect(tester.world.create_item("Beach Bridge"), event=False)
tester.multiworld.state.collect(tester.world.create_item("Island North Turtle"), event=False)
tester.multiworld.state.collect(tester.world.create_item("Island West Turtle"), event=False)

Expand Down
8 changes: 6 additions & 2 deletions worlds/stardew_valley/test/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,15 +258,19 @@ def run_default_tests(self) -> bool:

def collect_lots_of_money(self):
self.multiworld.state.collect(self.world.create_item("Shipping Bin"), event=False)
required_prog_items = int(round(self.multiworld.worlds[self.player].total_progression_items * 0.25))
real_total_prog_items = self.multiworld.worlds[self.player].total_progression_items
required_prog_items = int(round(real_total_prog_items * 0.25))
for i in range(required_prog_items):
self.multiworld.state.collect(self.world.create_item("Stardrop"), event=False)
self.multiworld.worlds[self.player].total_progression_items = real_total_prog_items

def collect_all_the_money(self):
self.multiworld.state.collect(self.world.create_item("Shipping Bin"), event=False)
required_prog_items = int(round(self.multiworld.worlds[self.player].total_progression_items * 0.95))
real_total_prog_items = self.multiworld.worlds[self.player].total_progression_items
required_prog_items = int(round(real_total_prog_items * 0.95))
for i in range(required_prog_items):
self.multiworld.state.collect(self.world.create_item("Stardrop"), event=False)
self.multiworld.worlds[self.player].total_progression_items = real_total_prog_items

def collect_everything(self):
non_event_items = [item for item in self.multiworld.get_items() if item.code]
Expand Down
61 changes: 61 additions & 0 deletions worlds/stardew_valley/test/rules/TestFishing.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from ...options import SeasonRandomization, Friendsanity, FriendsanityHeartSize, Fishsanity, ExcludeGingerIsland, SkillProgression, ToolProgression, \
ElevatorProgression, SpecialOrderLocations
from ...strings.fish_names import Fish
from ...test import SVTestBase


class TestNeedRegionToCatchFish(SVTestBase):
options = {
SeasonRandomization.internal_name: SeasonRandomization.option_disabled,
ElevatorProgression.internal_name: ElevatorProgression.option_vanilla,
SkillProgression.internal_name: SkillProgression.option_vanilla,
ToolProgression.internal_name: ToolProgression.option_vanilla,
Fishsanity.internal_name: Fishsanity.option_all,
ExcludeGingerIsland.internal_name: ExcludeGingerIsland.option_false,
SpecialOrderLocations.internal_name: SpecialOrderLocations.option_board_qi,
}

def test_catch_fish_requires_region_unlock(self):
fish_and_items = {
Fish.crimsonfish: ["Beach Bridge"],
Fish.void_salmon: ["Railroad Boulder Removed", "Dark Talisman"],
Fish.woodskip: ["Glittering Boulder Removed", "Progressive Weapon"], # For the ores to get the axe upgrades
Fish.mutant_carp: ["Rusty Key"],
Fish.slimejack: ["Railroad Boulder Removed", "Rusty Key"],
Fish.lionfish: ["Boat Repair"],
Fish.blue_discus: ["Island Obelisk", "Island West Turtle"],
Fish.stingray: ["Boat Repair", "Island Resort"],
Fish.ghostfish: ["Progressive Weapon"],
Fish.stonefish: ["Progressive Weapon"],
Fish.ice_pip: ["Progressive Weapon", "Progressive Weapon"],
Fish.lava_eel: ["Progressive Weapon", "Progressive Weapon", "Progressive Weapon"],
Fish.sandfish: ["Bus Repair"],
Fish.scorpion_carp: ["Desert Obelisk"],
# Starting the extended family quest requires having caught all the legendaries before, so they all have the rules of every other legendary
Fish.son_of_crimsonfish: ["Beach Bridge", "Island Obelisk", "Island West Turtle", "Qi Walnut Room", "Rusty Key"],
Fish.radioactive_carp: ["Beach Bridge", "Rusty Key", "Boat Repair", "Island West Turtle", "Qi Walnut Room"],
Fish.glacierfish_jr: ["Beach Bridge", "Island Obelisk", "Island West Turtle", "Qi Walnut Room", "Rusty Key"],
Fish.legend_ii: ["Beach Bridge", "Island Obelisk", "Island West Turtle", "Qi Walnut Room", "Rusty Key"],
Fish.ms_angler: ["Beach Bridge", "Island Obelisk", "Island West Turtle", "Qi Walnut Room", "Rusty Key"],
}
self.original_state = self.multiworld.state.copy()
for fish in fish_and_items:
with self.subTest(f"Region rules for {fish}"):
self.collect_all_the_money()
item_names = fish_and_items[fish]
location = self.multiworld.get_location(f"Fishsanity: {fish}", self.player)
self.assert_reach_location_false(location, self.multiworld.state)
items = []
for item_name in item_names:
items.append(self.collect(item_name))
with self.subTest(f"{fish} can be reached with {item_names}"):
self.assert_reach_location_true(location, self.multiworld.state)
for item_required in items:
self.multiworld.state = self.original_state.copy()
with self.subTest(f"{fish} requires {item_required.name}"):
for item_to_collect in items:
if item_to_collect.name != item_required.name:
self.collect(item_to_collect)
self.assert_reach_location_false(location, self.multiworld.state)

self.multiworld.state = self.original_state.copy()
Loading