34 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from typing import Union | ||
|  | 
 | ||
|  | from Utils import cache_self1 | ||
|  | from .base_logic import BaseLogicMixin, BaseLogic | ||
|  | from .farming_logic import FarmingLogicMixin | ||
|  | from .skill_logic import SkillLogicMixin | ||
|  | from ..stardew_rule import StardewRule, True_, False_ | ||
|  | from ..strings.quality_names import CropQuality | ||
|  | 
 | ||
|  | 
 | ||
|  | class QualityLogicMixin(BaseLogicMixin): | ||
|  |     def __init__(self, *args, **kwargs): | ||
|  |         super().__init__(*args, **kwargs) | ||
|  |         self.quality = QualityLogic(*args, **kwargs) | ||
|  | 
 | ||
|  | 
 | ||
|  | class QualityLogic(BaseLogic[Union[SkillLogicMixin, FarmingLogicMixin]]): | ||
|  | 
 | ||
|  |     @cache_self1 | ||
|  |     def can_grow_crop_quality(self, quality: str) -> StardewRule: | ||
|  |         if quality == CropQuality.basic: | ||
|  |             return True_() | ||
|  |         if quality == CropQuality.silver: | ||
|  |             return self.logic.skill.has_farming_level(5) | (self.logic.farming.has_fertilizer(1) & self.logic.skill.has_farming_level(2)) | ( | ||
|  |                     self.logic.farming.has_fertilizer(2) & self.logic.skill.has_farming_level(1)) | self.logic.farming.has_fertilizer(3) | ||
|  |         if quality == CropQuality.gold: | ||
|  |             return self.logic.skill.has_farming_level(10) | ( | ||
|  |                     self.logic.farming.has_fertilizer(1) & self.logic.skill.has_farming_level(5)) | ( | ||
|  |                     self.logic.farming.has_fertilizer(2) & self.logic.skill.has_farming_level(3)) | ( | ||
|  |                     self.logic.farming.has_fertilizer(3) & self.logic.skill.has_farming_level(2)) | ||
|  |         if quality == CropQuality.iridium: | ||
|  |             return self.logic.farming.has_fertilizer(3) & self.logic.skill.has_farming_level(4) | ||
|  |         return False_() |