Files
Grinch-AP/worlds/terraria/Options.py
Seldom 1873c52aa6 Terraria: 1.4.4 and Calamity support (#3847)
* Terraria integration

* Precollected items for debugging

* Fix item classification

* Golem requires Plantera's Bulb

* Pumpkin Moon requires Dungeon

* Progressive Dungeon

* Reorg, Options.py work

* Items are boss flags

* Removed unused option

* Removed nothing

* Wall, Plantera, and Zenith goals

* Achievements and items

* Fixed The Cavalry and Completely Awesome achievements

* Made "Dead Men Tell No Tales" a grindy achievement

* Some docs, Python 3.8 compat

* docs

* Fix extra item and "Head in the Clouds" being included when achievements are disabled

* Requested changes

* Fix potential thread unsafety, replace Nothing with 50 Silver

* Remove a log

* Corrected heading

* Added incompatible mods list

* In-progress calamity integration

* Terraria events progress

* Rules use events

* Removed an intentional crash I accidentally left in

* Fixed infinite loop

* Moved rules to data file

* Moved item rewards to data file

* Generating from data file

* Fixed broken Mech Boss goal

* Changes Calamity makes to vanilla rules, Calamity final bosses goal

* Added Deerclops, fixed Zenith goal

* Final detailed vanilla pass

* Disable calamity goals

* Typo

* Fixed some reward items not adding to item pool

* In-progress unit test fixes

* Unit test fixes

* `.apworld` compat

* Organized rewards file, made Frog Leg and Fllpper available in vanilla

* Water Walking Boots and Titan Glove rewards

* Add goals to slot data

* Fixed Hammush logic in Post-Mech goal

* Fixed coin rewards

* Updated Terraria docs

* Formatted

* Deathlink in-progress

* Boots of the Hero is grindy

* Fixed zenith goal not placing an item

* Address review

* Gelatin World Tour is grindy

* Difficulty notice

* Switched some achievements' grindiness

* Added "Hey! Listen!" achievement

* Terarria Python 3.8 compat

* Fixed Terraria You and What Army logic

* Calamity minion accessories

* Typo

* Calamity integration

* `deathlink` -> `death_link`

Co-authored-by: Zach Parks <zach@alliware.com>

* Missing `.`

Co-authored-by: Zach Parks <zach@alliware.com>

* Incorrect type annotation

Co-authored-by: Zach Parks <zach@alliware.com>

* `deathlink` -> `death_link` 2

Co-authored-by: Zach Parks <zach@alliware.com>

* Style

Co-authored-by: Zach Parks <zach@alliware.com>

* Markdown style

Co-authored-by: Zach Parks <zach@alliware.com>

* Markdown style 2

Co-authored-by: Zach Parks <zach@alliware.com>

* Address review

* Fix bad merge

* Terraria utility mod recommendations

* Calamity minion armor logic

* ArmorMinions -> Armor Minions, boss rush goal, fixed unplaced item

* Fixed unplaced item

* Started on Terraria 1.4.4

* Crate logic

* getfixedboi, 1.4.4 achievements, shimmer, town slimes, `Rule`, `Condition`, etc

* More clam getfixedboi logic, bar decraft logic, `NotGetfixedboi` -> `Not Getfixedboi`

* Calamity fixes

* Calamity crate ore logic

* Fixed item accessibility not generating in getfixedboi, fixed not generating with incompatible options, fixed grindy function

* Early achievements, separate achievement category options

* Infinity +1 Sword achievement can be location in later goals

* The Frequent Flyer is impossible in Calamity getfixedboi

* Add Enchanted Sword and Starfury for starting inventories

* Don't Dread on Me is redundant in Calamity

* In Calamity getfixedboi, Queen Bee summons enemies who drop Plague Cell Canisters

* Can't use Gelatin Crystal outside Hallow

* You can't get the Terminus without flags

* Typo

* Options difficult warnings

* Robbing the Grave is Hardmode

* Don't reserve an ID for unused Victory item

* Plantera is accessible early in Calamity via Giant Plantera's Bulbs

* Unshuffled Life Crystal and Defender Medal items

* Comment about Midas' Blessing

* Update worlds/terraria/Options.py

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Remove stray expression

Co-authored-by: Scipio Wright <scipiowright@gmail.com>

* Review suggestions

* Option naming caps consistency, add Laser Drill, Lunatic Cultist alt reqs, fix Eldritch Soul Artifact, Ceaseless Void reqs Dungeon

* Cal Clone doesn't drop Broken Hero Sword anymore, Laser Drill is weaker in Calamity

Co-authored-by: Seatori <92278897+Seatori@users.noreply.github.com>

* Fix Acid Rain logic

* Fix XB-∞ Hekate failing accessibility checks (by commenting it out bc it doesn't affect logic)

* Hardmode ores being fishable early in Calamity is not a bug anymore

* Mecha Mayhem is inaccessible in getfixedboi

* Update worlds/terraria/Rules.dsv

Co-authored-by: Seafo <92278897+Seatori@users.noreply.github.com>

---------

Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: Zach Parks <zach@alliware.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Seatori <92278897+Seatori@users.noreply.github.com>
2025-04-15 15:51:05 +02:00

93 lines
2.5 KiB
Python

from dataclasses import dataclass
from Options import Choice, DeathLink, PerGameCommonOptions, Toggle, DefaultOnToggle
class Calamity(Toggle):
"""Calamity mod bosses and events are shuffled"""
display_name = "Calamity Mod Integration"
class Getfixedboi(Toggle):
"""Generation accomodates the secret, very difficult "getfixedboi" seed"""
display_name = """"getfixedboi" Seed"""
class Goal(Choice):
"""
The victory condition for your run. Stuff after the goal will not be shuffled.
Primordial Wyrm and Boss Rush are accessible relatively early, so consider "Items" or
"Locations" accessibility to avoid getting stuck on the goal.
"""
display_name = "Goal"
option_mechanical_bosses = 0
option_calamitas_clone = 1
option_plantera = 2
option_golem = 3
option_empress_of_light = 4
option_lunatic_cultist = 5
option_astrum_deus = 6
option_moon_lord = 7
option_providence_the_profaned_goddess = 8
option_devourer_of_gods = 9
option_yharon_dragon_of_rebirth = 10
option_zenith = 11
option_calamity_final_bosses = 12
option_primordial_wyrm = 13
option_boss_rush = 14
default = 0
class EarlyAchievements(DefaultOnToggle):
"""Adds checks upon collecting early Pre-Hardmode achievements. Adds many sphere 1 checks."""
display_name = "Early Pre-Hardmode Achievements"
class NormalAchievements(DefaultOnToggle):
"""
Adds checks upon collecting achivements not covered by the other options. Achievements for
clearing bosses and events are excluded.
"""
display_name = "Normal Achievements"
class GrindyAchievements(Toggle):
"""Adds checks upon collecting grindy achievements"""
display_name = "Grindy Achievements"
class FishingAchievements(Toggle):
"""Adds checks upon collecting fishing quest achievements"""
display_name = "Fishing Quest Achievements"
class FillExtraChecksWith(Choice):
"""
Applies if you have achievements enabled. "Useful Items" helps to make the early game less grindy.
Items are rewarded to all players in your Terraria world.
"""
display_name = "Fill Extra Checks With"
option_coins = 0
option_useful_items = 1
default = 1
@dataclass
class TerrariaOptions(PerGameCommonOptions):
calamity: Calamity
getfixedboi: Getfixedboi
goal: Goal
early_achievements: EarlyAchievements
normal_achievements: NormalAchievements
grindy_achievements: GrindyAchievements
fishing_achievements: FishingAchievements
fill_extra_checks_with: FillExtraChecksWith
death_link: DeathLink