Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions args/challenges.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ def parse(parser):
challenges.add_argument("-nil", "--no-illuminas", action = "store_true",
help = "Illuminas will not appear in coliseum/auction/shops/chests/events")
ultima = challenges.add_mutually_exclusive_group()
challenges.add_argument("-noshoes", "--no-sprint-shoes", action = "store_true",
help = "Sprint Shoes will not appear in coliseum/auction/shops/chests")
ultima.add_argument("-nu", "--no-ultima", action = "store_true",
help = "Ultima cannot be learned from espers/items/natural magic")
ultima.add_argument("-u254", "--ultima-254-mp", action = "store_true",
Expand Down Expand Up @@ -68,6 +70,9 @@ def flags(args):
flags += " -nee"
if args.no_illuminas:
flags += " -nil"
if args.no_sprint_shoes:
flags += " -noshoes"

if args.no_ultima:
flags += " -nu"
elif args.ultima_254_mp:
Expand Down Expand Up @@ -96,6 +101,7 @@ def options(args):
("No Exp Eggs", args.no_exp_eggs),
("No Illuminas", args.no_illuminas),
("Ultima", ultima),
("No Sprint Shoes", args.no_sprint_shoes),
("No Free Paladin Shields", args.no_free_paladin_shields),
("No Free Characters/Espers", args.no_free_characters_espers),
("Permadeath", args.permadeath),
Expand Down
27 changes: 22 additions & 5 deletions args/misc.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@


def name():
return "Misc."

def parse(parser):
misc = parser.add_argument_group("Misc.")
misc.add_argument("-as", "--auto-sprint", action = "store_true",
help = "Player always sprints. Sprint Shoes have no effect")

misc.add_argument("-ond", "--original-name-display", action = "store_true",
help = "Display original character names in party and party select menus")
misc.add_argument("-rr", "--random-rng", action = "store_true",
Expand All @@ -16,6 +17,15 @@ def parse(parser):
misc.add_argument("-warp", "--warp-all", action = "store_true",
help = "All characters start with Warp learned. Warp costs 0 MP. Useful for seeds that limit Warp Stone access")

from data.movement import ALL
movement = misc.add_mutually_exclusive_group()
movement.name = "Movement"
movement.add_argument("-move", "--movement", type = str.lower, choices = ALL,
help = "Player movement options")
# Completely ignore this argument, and default to auto sprint when -move is not defined
misc.add_argument("-as", "--auto-sprint", action = "store_true",
help = "DEPRECATED - Use `-move as` instead. Player always sprints. Sprint Shoes have no effect")

event_timers = misc.add_mutually_exclusive_group()
event_timers.add_argument("-etr", "--event-timers-random", action = "store_true",
help = "Collapsing House, Opera House, and Floating Continent timers randomized")
Expand Down Expand Up @@ -57,8 +67,8 @@ def process(args):
def flags(args):
flags = ""

if args.auto_sprint:
flags += " -as"
if args.movement:
flags += f" -move {args.movement}"
if args.original_name_display:
flags += " -ond"
if args.random_rng:
Expand Down Expand Up @@ -127,8 +137,15 @@ def options(args):
elif args.y_npc_remove:
y_npc = "Remove"

from data.movement import key_name, AUTO_SPRINT
# Similar logic is present in the init fn of settings/movement.py
if args.movement:
movement = key_name[args.movement]
else:
movement = key_name[AUTO_SPRINT]

return [
("Auto Sprint", args.auto_sprint),
("Movement", movement),
("Original Name Display", args.original_name_display),
("Random RNG", args.random_rng),
("Random Clock", args.random_clock),
Expand Down
6 changes: 6 additions & 0 deletions args/starting_gold_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ def parse(parser):

starting_gold_items.add_argument("-smc", "--start-moogle-charms", default = 0, type = int, choices = range(4), metavar = "COUNT",
help = "Start game with %(metavar)s Moogle Charms. Overrides No Moogle Charms option")
starting_gold_items.add_argument("-sshoes", "--start-sprint-shoes", default = 0, type = int, choices = range(4), metavar = "COUNT",
help = "Start game with %(metavar)s Sprint Shoes. Overrides No Sprint Shoes option")

starting_gold_items.add_argument("-sws", "--start-warp-stones", default = 0, type = int, choices = range(11), metavar = "COUNT",
help = "Start game with %(metavar)s Warp Stones")
starting_gold_items.add_argument("-sfd", "--start-fenix-downs", default = 0, type = int, choices = range(11), metavar = "COUNT",
Expand All @@ -28,6 +31,8 @@ def flags(args):
flags += f" -gp {args.gold}"
if args.start_moogle_charms != 0:
flags += f" -smc {args.start_moogle_charms}"
if args.start_sprint_shoes != 0:
flags += f" -sshoes {args.start_sprint_shoes}"
if args.start_warp_stones != 0:
flags += f" -sws {args.start_warp_stones}"
if args.start_fenix_downs != 0:
Expand All @@ -43,6 +48,7 @@ def options(args):
return [
("Start Gold", args.gold),
("Start Moogle Charms", args.start_moogle_charms),
("Start Sprint Shoes", args.start_sprint_shoes),
("Start Warp Stones", args.start_warp_stones),
("Start Fenix Downs", args.start_fenix_downs),
("Start Tools", args.start_tools),
Expand Down
1 change: 1 addition & 0 deletions constants/objectives/results.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@

#Additional results
category_types["Command"].append(ResultType(59, "Magitek Upgrade", "Magitek Upgrade", None))
category_types["Item"].append(ResultType(60, "Sprint Shoes", "Sprint Shoes", None))
category_types["Auto"].append(ResultType(61, "Auto Dog Block", "Auto Dog Block", None))
category_types["Auto"].append(ResultType(62, "Auto Life 3", "Auto Life 3", None))

Expand Down
5 changes: 5 additions & 0 deletions data/items.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,11 @@ def get_excluded(self):
exclude.append(name_id["Exp. Egg"])
if self.args.no_illuminas:
exclude.append(name_id["Illumina"])

from data.movement import AUTO_SPRINT, B_DASH
# Sprint Shoes are a literal dead item if any of these options
if self.args.no_sprint_shoes or self.args.movement in [AUTO_SPRINT, B_DASH]:
exclude.append(name_id["Sprint Shoes"])
if self.args.no_free_paladin_shields:
exclude.append(name_id["Paladin Shld"])
exclude.append(name_id["Cursed Shld"])
Expand Down
34 changes: 34 additions & 0 deletions data/movement.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

from enum import IntEnum


class MovementSpeed(IntEnum):
WALK = 2 # Original FF6 walk speed
SPRINT = 3 # Original FF6 sprint speed
DASH = 4 # Custom, move twice as fast as sprint.

ORIGINAL = 'og'
AUTO_SPRINT = 'as'
B_DASH = 'bd'
SPRINT_SHOES_B_DASH = 'ssbd'

name_key = {
# WALK by default
# SPRINT with sprint shoes equipped
'ORIGINAL' : ORIGINAL,
# SPRINT by default
# WALK when holding B
'AUTO_SPRINT' : AUTO_SPRINT,
# SPRINT by default
# DASH when holding B
'B-DASH' : B_DASH,
# SPRINT by default
# DASH when holding B with sprint shoes equipped
# WALK when holding B without sprint shoes equipped
'SPR SHOE B-DASH' : SPRINT_SHOES_B_DASH,
}

key_name = {v: k for k, v in name_key.items()}

ALL = [ORIGINAL, AUTO_SPRINT, B_DASH, SPRINT_SHOES_B_DASH]

5 changes: 4 additions & 1 deletion event/start.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,10 @@ def start_items_mod(self):
src += [
field.AddItem("Moogle Charm", sound_effect = False),
]

for mc in range(self.args.start_sprint_shoes):
src += [
field.AddItem("Sprint Shoes", sound_effect = False),
]
for ws in range(self.args.start_warp_stones):
src += [
field.AddItem("Warp Stone", sound_effect = False),
Expand Down
19 changes: 19 additions & 0 deletions objectives/results/sprint_shoes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from objectives.results._objective_result import *
from data.item_names import name_id as item_name_id

class Field(field_result.Result):
def src(self):
return [
field.AddItem(item_name_id["Sprint Shoes"]),
]

class Battle(battle_result.Result):
def src(self):
return [
battle_result.AddItem(item_name_id["Sprint Shoes"]),
]

class Result(ObjectiveResult):
NAME = "Sprint Shoes"
def __init__(self):
super().__init__(Field, Battle)
4 changes: 2 additions & 2 deletions settings/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from settings.auto_sprint import AutoSprint
from settings.initial_spells import InitialSpells
from settings.movement import Movement
from settings.random_rng import RandomRNG
from settings.permadeath import Permadeath
from settings.y_npc import YNPC
Expand All @@ -11,8 +11,8 @@
__all__ = ["Settings"]
class Settings:
def __init__(self):
self.auto_sprint = AutoSprint()
self.initial_spells = InitialSpells()
self.movement = Movement()
self.random_rng = RandomRNG()
self.permadeath = Permadeath()
self.y_npc = YNPC()
Expand Down
36 changes: 0 additions & 36 deletions settings/auto_sprint.py

This file was deleted.

Loading