Archipelago/worlds/stardew_valley/test/rules/TestWeapons.py

76 lines
3.5 KiB
Python

from ... import options
from ...options import ToolProgression
from ...test import SVTestBase
class TestWeaponsLogic(SVTestBase):
options = {
ToolProgression.internal_name: ToolProgression.option_progressive,
options.SkillProgression.internal_name: options.SkillProgression.option_progressive,
}
def test_mine(self):
self.multiworld.state.collect(self.create_item("Progressive Pickaxe"))
self.multiworld.state.collect(self.create_item("Progressive Pickaxe"))
self.multiworld.state.collect(self.create_item("Progressive Pickaxe"))
self.multiworld.state.collect(self.create_item("Progressive Pickaxe"))
self.multiworld.state.collect(self.create_item("Progressive House"))
self.collect([self.create_item("Combat Level")] * 10)
self.collect([self.create_item("Mining Level")] * 10)
self.collect([self.create_item("Progressive Mine Elevator")] * 24)
self.multiworld.state.collect(self.create_item("Bus Repair"))
self.multiworld.state.collect(self.create_item("Skull Key"))
self.give_item_and_check_reachable_mine("Progressive Sword", 1)
self.give_item_and_check_reachable_mine("Progressive Dagger", 1)
self.give_item_and_check_reachable_mine("Progressive Club", 1)
self.give_item_and_check_reachable_mine("Progressive Sword", 2)
self.give_item_and_check_reachable_mine("Progressive Dagger", 2)
self.give_item_and_check_reachable_mine("Progressive Club", 2)
self.give_item_and_check_reachable_mine("Progressive Sword", 3)
self.give_item_and_check_reachable_mine("Progressive Dagger", 3)
self.give_item_and_check_reachable_mine("Progressive Club", 3)
self.give_item_and_check_reachable_mine("Progressive Sword", 4)
self.give_item_and_check_reachable_mine("Progressive Dagger", 4)
self.give_item_and_check_reachable_mine("Progressive Club", 4)
self.give_item_and_check_reachable_mine("Progressive Sword", 5)
self.give_item_and_check_reachable_mine("Progressive Dagger", 5)
self.give_item_and_check_reachable_mine("Progressive Club", 5)
def give_item_and_check_reachable_mine(self, item_name: str, reachable_level: int):
item = self.multiworld.create_item(item_name, self.player)
self.multiworld.state.collect(item)
rule = self.world.logic.mine.can_mine_in_the_mines_floor_1_40()
if reachable_level > 0:
self.assert_rule_true(rule, self.multiworld.state)
else:
self.assert_rule_false(rule, self.multiworld.state)
rule = self.world.logic.mine.can_mine_in_the_mines_floor_41_80()
if reachable_level > 1:
self.assert_rule_true(rule, self.multiworld.state)
else:
self.assert_rule_false(rule, self.multiworld.state)
rule = self.world.logic.mine.can_mine_in_the_mines_floor_81_120()
if reachable_level > 2:
self.assert_rule_true(rule, self.multiworld.state)
else:
self.assert_rule_false(rule, self.multiworld.state)
rule = self.world.logic.mine.can_mine_in_the_skull_cavern()
if reachable_level > 3:
self.assert_rule_true(rule, self.multiworld.state)
else:
self.assert_rule_false(rule, self.multiworld.state)
rule = self.world.logic.ability.can_mine_perfectly_in_the_skull_cavern()
if reachable_level > 4:
self.assert_rule_true(rule, self.multiworld.state)
else:
self.assert_rule_false(rule, self.multiworld.state)