TUNIC: Add option groups, fix option descriptions (#3344)
* Add option groups, fix up option descriptions * Change sword progression description back * Add missed newline change, missed space after asterisk
This commit is contained in:
parent
62e68ba1cc
commit
e7544d835c
|
@ -8,7 +8,7 @@ from .er_rules import set_er_location_rules
|
||||||
from .regions import tunic_regions
|
from .regions import tunic_regions
|
||||||
from .er_scripts import create_er_regions
|
from .er_scripts import create_er_regions
|
||||||
from .er_data import portal_mapping
|
from .er_data import portal_mapping
|
||||||
from .options import TunicOptions, EntranceRando
|
from .options import TunicOptions, EntranceRando, tunic_option_groups
|
||||||
from worlds.AutoWorld import WebWorld, World
|
from worlds.AutoWorld import WebWorld, World
|
||||||
from worlds.generic import PlandoConnection
|
from worlds.generic import PlandoConnection
|
||||||
from decimal import Decimal, ROUND_HALF_UP
|
from decimal import Decimal, ROUND_HALF_UP
|
||||||
|
@ -27,6 +27,7 @@ class TunicWeb(WebWorld):
|
||||||
]
|
]
|
||||||
theme = "grassFlowers"
|
theme = "grassFlowers"
|
||||||
game = "TUNIC"
|
game = "TUNIC"
|
||||||
|
option_groups = tunic_option_groups
|
||||||
|
|
||||||
|
|
||||||
class TunicItem(Item):
|
class TunicItem(Item):
|
||||||
|
|
|
@ -1,28 +1,36 @@
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
from Options import DefaultOnToggle, Toggle, StartInventoryPool, Choice, Range, TextChoice, PerGameCommonOptions
|
from Options import (DefaultOnToggle, Toggle, StartInventoryPool, Choice, Range, TextChoice, PerGameCommonOptions,
|
||||||
|
OptionGroup)
|
||||||
|
|
||||||
|
|
||||||
class SwordProgression(DefaultOnToggle):
|
class SwordProgression(DefaultOnToggle):
|
||||||
"""Adds four sword upgrades to the item pool that will progressively grant stronger melee weapons, including two new swords with increased range and attack power."""
|
"""
|
||||||
|
Adds four sword upgrades to the item pool that will progressively grant stronger melee weapons, including two new swords with increased range and attack power.
|
||||||
|
"""
|
||||||
internal_name = "sword_progression"
|
internal_name = "sword_progression"
|
||||||
display_name = "Sword Progression"
|
display_name = "Sword Progression"
|
||||||
|
|
||||||
|
|
||||||
class StartWithSword(Toggle):
|
class StartWithSword(Toggle):
|
||||||
"""Start with a sword in the player's inventory. Does not count towards Sword Progression."""
|
"""
|
||||||
|
Start with a sword in the player's inventory. Does not count towards Sword Progression.
|
||||||
|
"""
|
||||||
internal_name = "start_with_sword"
|
internal_name = "start_with_sword"
|
||||||
display_name = "Start With Sword"
|
display_name = "Start With Sword"
|
||||||
|
|
||||||
|
|
||||||
class KeysBehindBosses(Toggle):
|
class KeysBehindBosses(Toggle):
|
||||||
"""Places the three hexagon keys behind their respective boss fight in your world."""
|
"""
|
||||||
|
Places the three hexagon keys behind their respective boss fight in your world.
|
||||||
|
"""
|
||||||
internal_name = "keys_behind_bosses"
|
internal_name = "keys_behind_bosses"
|
||||||
display_name = "Keys Behind Bosses"
|
display_name = "Keys Behind Bosses"
|
||||||
|
|
||||||
|
|
||||||
class AbilityShuffling(Toggle):
|
class AbilityShuffling(Toggle):
|
||||||
"""Locks the usage of Prayer, Holy Cross*, and the Icebolt combo until the relevant pages of the manual have been found.
|
"""
|
||||||
|
Locks the usage of Prayer, Holy Cross*, and the Icebolt combo until the relevant pages of the manual have been found.
|
||||||
If playing Hexagon Quest, abilities are instead randomly unlocked after obtaining 25%, 50%, and 75% of the required Hexagon goal amount.
|
If playing Hexagon Quest, abilities are instead randomly unlocked after obtaining 25%, 50%, and 75% of the required Hexagon goal amount.
|
||||||
* Certain Holy Cross usages are still allowed, such as the free bomb codes, the seeking spell, and other player-facing codes.
|
* Certain Holy Cross usages are still allowed, such as the free bomb codes, the seeking spell, and other player-facing codes.
|
||||||
"""
|
"""
|
||||||
|
@ -52,21 +60,27 @@ class LogicRules(Choice):
|
||||||
|
|
||||||
|
|
||||||
class Lanternless(Toggle):
|
class Lanternless(Toggle):
|
||||||
"""Choose whether you require the Lantern for dark areas.
|
"""
|
||||||
When enabled, the Lantern is marked as Useful instead of Progression."""
|
Choose whether you require the Lantern for dark areas.
|
||||||
|
When enabled, the Lantern is marked as Useful instead of Progression.
|
||||||
|
"""
|
||||||
internal_name = "lanternless"
|
internal_name = "lanternless"
|
||||||
display_name = "Lanternless"
|
display_name = "Lanternless"
|
||||||
|
|
||||||
|
|
||||||
class Maskless(Toggle):
|
class Maskless(Toggle):
|
||||||
"""Choose whether you require the Scavenger's Mask for Lower Quarry.
|
"""
|
||||||
When enabled, the Scavenger's Mask is marked as Useful instead of Progression."""
|
Choose whether you require the Scavenger's Mask for Lower Quarry.
|
||||||
|
When enabled, the Scavenger's Mask is marked as Useful instead of Progression.
|
||||||
|
"""
|
||||||
internal_name = "maskless"
|
internal_name = "maskless"
|
||||||
display_name = "Maskless"
|
display_name = "Maskless"
|
||||||
|
|
||||||
|
|
||||||
class FoolTraps(Choice):
|
class FoolTraps(Choice):
|
||||||
"""Replaces low-to-medium value money rewards in the item pool with fool traps, which cause random negative effects to the player."""
|
"""
|
||||||
|
Replaces low-to-medium value money rewards in the item pool with fool traps, which cause random negative effects to the player.
|
||||||
|
"""
|
||||||
internal_name = "fool_traps"
|
internal_name = "fool_traps"
|
||||||
display_name = "Fool Traps"
|
display_name = "Fool Traps"
|
||||||
option_off = 0
|
option_off = 0
|
||||||
|
@ -77,13 +91,17 @@ class FoolTraps(Choice):
|
||||||
|
|
||||||
|
|
||||||
class HexagonQuest(Toggle):
|
class HexagonQuest(Toggle):
|
||||||
"""An alternate goal that shuffles Gold "Questagon" items into the item pool and allows the game to be completed after collecting the required number of them."""
|
"""
|
||||||
|
An alternate goal that shuffles Gold "Questagon" items into the item pool and allows the game to be completed after collecting the required number of them.
|
||||||
|
"""
|
||||||
internal_name = "hexagon_quest"
|
internal_name = "hexagon_quest"
|
||||||
display_name = "Hexagon Quest"
|
display_name = "Hexagon Quest"
|
||||||
|
|
||||||
|
|
||||||
class HexagonGoal(Range):
|
class HexagonGoal(Range):
|
||||||
"""How many Gold Questagons are required to complete the game on Hexagon Quest."""
|
"""
|
||||||
|
How many Gold Questagons are required to complete the game on Hexagon Quest.
|
||||||
|
"""
|
||||||
internal_name = "hexagon_goal"
|
internal_name = "hexagon_goal"
|
||||||
display_name = "Gold Hexagons Required"
|
display_name = "Gold Hexagons Required"
|
||||||
range_start = 15
|
range_start = 15
|
||||||
|
@ -92,7 +110,9 @@ class HexagonGoal(Range):
|
||||||
|
|
||||||
|
|
||||||
class ExtraHexagonPercentage(Range):
|
class ExtraHexagonPercentage(Range):
|
||||||
"""How many extra Gold Questagons are shuffled into the item pool, taken as a percentage of the goal amount."""
|
"""
|
||||||
|
How many extra Gold Questagons are shuffled into the item pool, taken as a percentage of the goal amount.
|
||||||
|
"""
|
||||||
internal_name = "extra_hexagon_percentage"
|
internal_name = "extra_hexagon_percentage"
|
||||||
display_name = "Percentage of Extra Gold Hexagons"
|
display_name = "Percentage of Extra Gold Hexagons"
|
||||||
range_start = 0
|
range_start = 0
|
||||||
|
@ -118,16 +138,20 @@ class EntranceRando(TextChoice):
|
||||||
|
|
||||||
|
|
||||||
class FixedShop(Toggle):
|
class FixedShop(Toggle):
|
||||||
"""Forces the Windmill entrance to lead to a shop, and removes the remaining shops from the pool.
|
"""
|
||||||
|
Forces the Windmill entrance to lead to a shop, and removes the remaining shops from the pool.
|
||||||
Adds another entrance in Rooted Ziggurat Lower to keep an even number of entrances.
|
Adds another entrance in Rooted Ziggurat Lower to keep an even number of entrances.
|
||||||
Has no effect if Entrance Rando is not enabled."""
|
Has no effect if Entrance Rando is not enabled.
|
||||||
|
"""
|
||||||
internal_name = "fixed_shop"
|
internal_name = "fixed_shop"
|
||||||
display_name = "Fewer Shops in Entrance Rando"
|
display_name = "Fewer Shops in Entrance Rando"
|
||||||
|
|
||||||
|
|
||||||
class LaurelsLocation(Choice):
|
class LaurelsLocation(Choice):
|
||||||
"""Force the Hero's Laurels to be placed at a location in your world.
|
"""
|
||||||
For if you want to avoid or specify early or late Laurels."""
|
Force the Hero's Laurels to be placed at a location in your world.
|
||||||
|
For if you want to avoid or specify early or late Laurels.
|
||||||
|
"""
|
||||||
internal_name = "laurels_location"
|
internal_name = "laurels_location"
|
||||||
display_name = "Laurels Location"
|
display_name = "Laurels Location"
|
||||||
option_anywhere = 0
|
option_anywhere = 0
|
||||||
|
@ -138,9 +162,12 @@ class LaurelsLocation(Choice):
|
||||||
|
|
||||||
|
|
||||||
class ShuffleLadders(Toggle):
|
class ShuffleLadders(Toggle):
|
||||||
"""Turns several ladders in the game into items that must be found before they can be climbed on.
|
"""
|
||||||
|
Turns several ladders in the game into items that must be found before they can be climbed on.
|
||||||
Adds more layers of progression to the game by blocking access to many areas early on.
|
Adds more layers of progression to the game by blocking access to many areas early on.
|
||||||
"Ladders were a mistake." —Andrew Shouldice"""
|
"Ladders were a mistake."
|
||||||
|
—Andrew Shouldice
|
||||||
|
"""
|
||||||
internal_name = "shuffle_ladders"
|
internal_name = "shuffle_ladders"
|
||||||
display_name = "Shuffle Ladders"
|
display_name = "Shuffle Ladders"
|
||||||
|
|
||||||
|
@ -163,3 +190,12 @@ class TunicOptions(PerGameCommonOptions):
|
||||||
lanternless: Lanternless
|
lanternless: Lanternless
|
||||||
maskless: Maskless
|
maskless: Maskless
|
||||||
laurels_location: LaurelsLocation
|
laurels_location: LaurelsLocation
|
||||||
|
|
||||||
|
|
||||||
|
tunic_option_groups = [
|
||||||
|
OptionGroup("Logic Options", [
|
||||||
|
LogicRules,
|
||||||
|
Lanternless,
|
||||||
|
Maskless,
|
||||||
|
])
|
||||||
|
]
|
||||||
|
|
Loading…
Reference in New Issue