 62657df3fb
			
		
	
	62657df3fb
	
	
	
		
			
			## What is this fixing or adding? Major content update for Stardew Valley ## How was this tested? One large-scale public Beta on the archipelago server, plus several smaller private asyncs and test runs You can go to https://github.com/agilbert1412/StardewArchipelago/releases to grab the mod (latest 4.x.x version), the supported mods and the apworld, to test this PR ## New Features: - Festival Checks [Easy mode or Hard Mode] - Special Orders [Both Board and Qi] - Willy's Boat - Ginger Island Parrots - TV Channels - Trap Items [Available in various difficulty levels] - Entrance Randomizer: Buildings and Chaos - New Fishsanity options: Exclude Legendaries, Exclude Hard fish, Only easy fish - Resource Pack overhaul [Resource packs are now more enjoyable and varied] - Goal: Greatest Walnut Hunter [Find every single Golden Walnut] - Goal: Perfection [Achieve Perfection] - Option: Profit Margin [Multiplier over all earnings] - Option: Friendsanity Heart Size [Reduce clutter from friendsanity hearts] - Option: Exclude Ginger Island - will exclude many locations and items to generate a playthrough that does not go to the island - Mod Support [Curated list of mods] ## New Contributors: @Witchybun for the mod support --------- Co-authored-by: Witchybun <embenham05@gmail.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
		
			
				
	
	
		
			81 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from ...strings.region_names import MagicRegion
 | |
| from ...mods.mod_data import ModNames
 | |
| from ...strings.spells import MagicSpell
 | |
| from ...strings.ap_names.skill_level_names import ModSkillLevel
 | |
| from ...stardew_rule import Count, StardewRule, False_
 | |
| from ... import options
 | |
| 
 | |
| 
 | |
| def can_use_clear_debris_instead_of_tool_level(vanilla_logic, level: int) -> StardewRule:
 | |
|     if ModNames.magic not in vanilla_logic.options[options.Mods]:
 | |
|         return False_()
 | |
|     return vanilla_logic.received(MagicSpell.clear_debris) & can_use_altar(vanilla_logic) & vanilla_logic.received(ModSkillLevel.magic_level, level)
 | |
| 
 | |
| 
 | |
| def can_use_altar(vanilla_logic) -> StardewRule:
 | |
|     if ModNames.magic not in vanilla_logic.options[options.Mods]:
 | |
|         return False_()
 | |
|     return vanilla_logic.can_reach_region(MagicRegion.altar)
 | |
| 
 | |
| 
 | |
| def has_any_spell(vanilla_logic) -> StardewRule:
 | |
|     if ModNames.magic not in vanilla_logic.options[options.Mods]:
 | |
|         return False_()
 | |
|     return can_use_altar(vanilla_logic)
 | |
| 
 | |
| 
 | |
| def has_attack_spell_count(vanilla_logic, count: int) -> StardewRule:
 | |
|     attack_spell_rule = [vanilla_logic.received(MagicSpell.fireball), vanilla_logic.received(
 | |
|         MagicSpell.frostbite), vanilla_logic.received(MagicSpell.shockwave), vanilla_logic.received(MagicSpell.spirit),
 | |
|                          vanilla_logic.received(MagicSpell.meteor)
 | |
|                          ]
 | |
|     return Count(count, attack_spell_rule)
 | |
| 
 | |
| 
 | |
| def has_support_spell_count(vanilla_logic, count: int) -> StardewRule:
 | |
|     support_spell_rule = [can_use_altar(vanilla_logic), vanilla_logic.received(ModSkillLevel.magic_level, 2),
 | |
|                           vanilla_logic.received(MagicSpell.descend), vanilla_logic.received(MagicSpell.heal),
 | |
|                           vanilla_logic.received(MagicSpell.tendrils)]
 | |
|     return Count(count, support_spell_rule)
 | |
| 
 | |
| 
 | |
| def has_decent_spells(vanilla_logic) -> StardewRule:
 | |
|     if ModNames.magic not in vanilla_logic.options[options.Mods]:
 | |
|         return False_()
 | |
|     magic_resource_rule = can_use_altar(vanilla_logic) & vanilla_logic.received(ModSkillLevel.magic_level, 2)
 | |
|     magic_attack_options_rule = has_attack_spell_count(vanilla_logic, 1)
 | |
|     return magic_resource_rule & magic_attack_options_rule
 | |
| 
 | |
| 
 | |
| def has_good_spells(vanilla_logic) -> StardewRule:
 | |
|     if ModNames.magic not in vanilla_logic.options[options.Mods]:
 | |
|         return False_()
 | |
|     magic_resource_rule = can_use_altar(vanilla_logic) & vanilla_logic.received(ModSkillLevel.magic_level, 4)
 | |
|     magic_attack_options_rule = has_attack_spell_count(vanilla_logic, 2)
 | |
|     magic_support_options_rule = has_support_spell_count(vanilla_logic, 1)
 | |
|     return magic_resource_rule & magic_attack_options_rule & magic_support_options_rule
 | |
| 
 | |
| 
 | |
| def has_great_spells(vanilla_logic) -> StardewRule:
 | |
|     if ModNames.magic not in vanilla_logic.options[options.Mods]:
 | |
|         return False_()
 | |
|     magic_resource_rule = can_use_altar(vanilla_logic) & vanilla_logic.received(ModSkillLevel.magic_level, 6)
 | |
|     magic_attack_options_rule = has_attack_spell_count(vanilla_logic, 3)
 | |
|     magic_support_options_rule = has_support_spell_count(vanilla_logic, 1)
 | |
|     return magic_resource_rule & magic_attack_options_rule & magic_support_options_rule
 | |
| 
 | |
| 
 | |
| def has_amazing_spells(vanilla_logic) -> StardewRule:
 | |
|     if ModNames.magic not in vanilla_logic.options[options.Mods]:
 | |
|         return False_()
 | |
|     magic_resource_rule = can_use_altar(vanilla_logic) & vanilla_logic.received(ModSkillLevel.magic_level, 8)
 | |
|     magic_attack_options_rule = has_attack_spell_count(vanilla_logic, 4)
 | |
|     magic_support_options_rule = has_support_spell_count(vanilla_logic, 2)
 | |
|     return magic_resource_rule & magic_attack_options_rule & magic_support_options_rule
 | |
| 
 | |
| 
 | |
| def can_blink(vanilla_logic) -> StardewRule:
 | |
|     if ModNames.magic not in vanilla_logic.options[options.Mods]:
 | |
|         return False_()
 | |
|     return vanilla_logic.received(MagicSpell.blink) & can_use_altar(vanilla_logic)
 |