mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Stardew Valley: Remove some events for a slight performance increase (#4085)
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from functools import cached_property
|
||||
from typing import Dict, Union
|
||||
|
||||
from Utils import cache_self1
|
||||
@@ -8,12 +9,12 @@ from .received_logic import ReceivedLogicMixin
|
||||
from .region_logic import RegionLogicMixin
|
||||
from ..options import BuildingProgression
|
||||
from ..stardew_rule import StardewRule, True_, False_, Has
|
||||
from ..strings.ap_names.event_names import Event
|
||||
from ..strings.artisan_good_names import ArtisanGood
|
||||
from ..strings.building_names import Building
|
||||
from ..strings.fish_names import WaterItem
|
||||
from ..strings.material_names import Material
|
||||
from ..strings.metal_names import MetalBar
|
||||
from ..strings.region_names import Region
|
||||
|
||||
has_group = "building"
|
||||
|
||||
@@ -60,7 +61,7 @@ class BuildingLogic(BaseLogic[Union[BuildingLogicMixin, MoneyLogicMixin, RegionL
|
||||
return True_()
|
||||
return self.logic.received(building)
|
||||
|
||||
carpenter_rule = self.logic.received(Event.can_construct_buildings)
|
||||
carpenter_rule = self.logic.building.can_construct_buildings
|
||||
if not self.options.building_progression & BuildingProgression.option_progressive:
|
||||
return Has(building, self.registry.building_rules, has_group) & carpenter_rule
|
||||
|
||||
@@ -75,6 +76,10 @@ class BuildingLogic(BaseLogic[Union[BuildingLogicMixin, MoneyLogicMixin, RegionL
|
||||
building = " ".join(["Progressive", *building.split(" ")[1:]])
|
||||
return self.logic.received(building, count) & carpenter_rule
|
||||
|
||||
@cached_property
|
||||
def can_construct_buildings(self) -> StardewRule:
|
||||
return self.logic.region.can_reach(Region.carpenter)
|
||||
|
||||
@cache_self1
|
||||
def has_house(self, upgrade_level: int) -> StardewRule:
|
||||
if upgrade_level < 1:
|
||||
@@ -83,7 +88,7 @@ class BuildingLogic(BaseLogic[Union[BuildingLogicMixin, MoneyLogicMixin, RegionL
|
||||
if upgrade_level > 3:
|
||||
return False_()
|
||||
|
||||
carpenter_rule = self.logic.received(Event.can_construct_buildings)
|
||||
carpenter_rule = self.logic.building.can_construct_buildings
|
||||
if self.options.building_progression & BuildingProgression.option_progressive:
|
||||
return carpenter_rule & self.logic.received(f"Progressive House", upgrade_level)
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import typing
|
||||
from typing import Union
|
||||
|
||||
from Utils import cache_self1
|
||||
@@ -11,10 +12,14 @@ from .time_logic import TimeLogicMixin
|
||||
from ..data.shop import ShopSource
|
||||
from ..options import SpecialOrderLocations
|
||||
from ..stardew_rule import StardewRule, True_, HasProgressionPercent, False_, true_
|
||||
from ..strings.ap_names.event_names import Event
|
||||
from ..strings.currency_names import Currency
|
||||
from ..strings.region_names import Region, LogicRegion
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from .shipping_logic import ShippingLogicMixin
|
||||
|
||||
assert ShippingLogicMixin
|
||||
|
||||
qi_gem_rewards = ("100 Qi Gems", "50 Qi Gems", "40 Qi Gems", "35 Qi Gems", "25 Qi Gems",
|
||||
"20 Qi Gems", "15 Qi Gems", "10 Qi Gems")
|
||||
|
||||
@@ -26,7 +31,7 @@ class MoneyLogicMixin(BaseLogicMixin):
|
||||
|
||||
|
||||
class MoneyLogic(BaseLogic[Union[RegionLogicMixin, MoneyLogicMixin, TimeLogicMixin, RegionLogicMixin, ReceivedLogicMixin, HasLogicMixin, SeasonLogicMixin,
|
||||
GrindLogicMixin]]):
|
||||
GrindLogicMixin, 'ShippingLogicMixin']]):
|
||||
|
||||
@cache_self1
|
||||
def can_have_earned_total(self, amount: int) -> StardewRule:
|
||||
@@ -37,7 +42,7 @@ GrindLogicMixin]]):
|
||||
willy_rule = self.logic.region.can_reach_all((Region.fish_shop, LogicRegion.fishing))
|
||||
clint_rule = self.logic.region.can_reach_all((Region.blacksmith, Region.mines_floor_5))
|
||||
robin_rule = self.logic.region.can_reach_all((Region.carpenter, Region.secret_woods))
|
||||
shipping_rule = self.logic.received(Event.can_ship_items)
|
||||
shipping_rule = self.logic.shipping.can_use_shipping_bin
|
||||
|
||||
if amount < 2000:
|
||||
selling_any_rule = pierre_rule | willy_rule | clint_rule | robin_rule | shipping_rule
|
||||
@@ -50,7 +55,7 @@ GrindLogicMixin]]):
|
||||
if amount < 10000:
|
||||
return shipping_rule
|
||||
|
||||
seed_rules = self.logic.received(Event.can_shop_at_pierre)
|
||||
seed_rules = self.logic.region.can_reach(Region.pierre_store)
|
||||
if amount < 40000:
|
||||
return shipping_rule & seed_rules
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ from ..locations import LocationTags, locations_by_tag
|
||||
from ..options import ExcludeGingerIsland, Shipsanity
|
||||
from ..options import SpecialOrderLocations
|
||||
from ..stardew_rule import StardewRule
|
||||
from ..strings.ap_names.event_names import Event
|
||||
from ..strings.building_names import Building
|
||||
|
||||
|
||||
@@ -29,7 +28,7 @@ class ShippingLogic(BaseLogic[Union[ReceivedLogicMixin, ShippingLogicMixin, Buil
|
||||
|
||||
@cache_self1
|
||||
def can_ship(self, item: str) -> StardewRule:
|
||||
return self.logic.received(Event.can_ship_items) & self.logic.has(item)
|
||||
return self.logic.shipping.can_use_shipping_bin & self.logic.has(item)
|
||||
|
||||
def can_ship_everything(self) -> StardewRule:
|
||||
shipsanity_prefix = "Shipsanity: "
|
||||
@@ -49,7 +48,7 @@ class ShippingLogic(BaseLogic[Union[ReceivedLogicMixin, ShippingLogicMixin, Buil
|
||||
|
||||
def can_ship_everything_in_slot(self, all_location_names_in_slot: List[str]) -> StardewRule:
|
||||
if self.options.shipsanity == Shipsanity.option_none:
|
||||
return self.can_ship_everything()
|
||||
return self.logic.shipping.can_ship_everything()
|
||||
|
||||
rules = [self.logic.building.has_building(Building.shipping_bin)]
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ from ..content.vanilla.ginger_island import ginger_island_content_pack
|
||||
from ..content.vanilla.qi_board import qi_board_content_pack
|
||||
from ..stardew_rule import StardewRule, Has, false_
|
||||
from ..strings.animal_product_names import AnimalProduct
|
||||
from ..strings.ap_names.event_names import Event
|
||||
from ..strings.ap_names.transport_names import Transportation
|
||||
from ..strings.artisan_good_names import ArtisanGood
|
||||
from ..strings.crop_names import Vegetable, Fruit
|
||||
@@ -61,7 +60,7 @@ AbilityLogicMixin, SpecialOrderLogicMixin, MonsterLogicMixin]]):
|
||||
SpecialOrder.gifts_for_george: self.logic.season.has(Season.spring) & self.logic.has(Forageable.leek),
|
||||
SpecialOrder.fragments_of_the_past: self.logic.monster.can_kill(Monster.skeleton),
|
||||
SpecialOrder.gus_famous_omelet: self.logic.has(AnimalProduct.any_egg),
|
||||
SpecialOrder.crop_order: self.logic.ability.can_farm_perfectly() & self.logic.received(Event.can_ship_items),
|
||||
SpecialOrder.crop_order: self.logic.ability.can_farm_perfectly() & self.logic.shipping.can_use_shipping_bin,
|
||||
SpecialOrder.community_cleanup: self.logic.skill.can_crab_pot,
|
||||
SpecialOrder.the_strong_stuff: self.logic.has(ArtisanGood.specific_juice(Vegetable.potato)),
|
||||
SpecialOrder.pierres_prime_produce: self.logic.ability.can_farm_perfectly(),
|
||||
@@ -94,12 +93,12 @@ AbilityLogicMixin, SpecialOrderLogicMixin, MonsterLogicMixin]]):
|
||||
self.update_rules({
|
||||
SpecialOrder.qis_crop: self.logic.ability.can_farm_perfectly() & self.logic.region.can_reach(Region.greenhouse) &
|
||||
self.logic.region.can_reach(Region.island_west) & self.logic.skill.has_total_level(50) &
|
||||
self.logic.has(Machine.seed_maker) & self.logic.received(Event.can_ship_items),
|
||||
self.logic.has(Machine.seed_maker) & self.logic.shipping.can_use_shipping_bin,
|
||||
SpecialOrder.lets_play_a_game: self.logic.arcade.has_junimo_kart_max_level(),
|
||||
SpecialOrder.four_precious_stones: self.logic.time.has_lived_max_months & self.logic.has("Prismatic Shard") &
|
||||
self.logic.ability.can_mine_perfectly_in_the_skull_cavern(),
|
||||
SpecialOrder.qis_hungry_challenge: self.logic.ability.can_mine_perfectly_in_the_skull_cavern(),
|
||||
SpecialOrder.qis_cuisine: self.logic.cooking.can_cook() & self.logic.received(Event.can_ship_items) &
|
||||
SpecialOrder.qis_cuisine: self.logic.cooking.can_cook() & self.logic.shipping.can_use_shipping_bin &
|
||||
(self.logic.money.can_spend_at(Region.saloon, 205000) | self.logic.money.can_spend_at(Region.pierre_store, 170000)),
|
||||
SpecialOrder.qis_kindness: self.logic.relationship.can_give_loved_gifts_to_everyone(),
|
||||
SpecialOrder.extended_family: self.logic.ability.can_fish_perfectly() & self.logic.has(Fish.angler) & self.logic.has(Fish.glacierfish) &
|
||||
|
||||
Reference in New Issue
Block a user