forked from mirror/Archipelago
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
344 lines
11 KiB
Python
344 lines
11 KiB
Python
from BaseClasses import Location
|
|
import typing
|
|
class AdvData(typing.NamedTuple):
|
|
id: typing.Optional[int]
|
|
|
|
class SonicFrontiersAdvancement(Location):
|
|
game: str = "Sonic Frontiers"
|
|
def create_locations():
|
|
counter = 0
|
|
kronosItems = [
|
|
"Kronos Memory Token", "Kronos Memory Token Treasure", "Kronos Portal Gear", "Kronos Vault Key" "Kronos Map Challenge"
|
|
]
|
|
aresItems = [
|
|
"Ares Memory Token", "Ares Memory Token Treasure", "Ares Portal Gear", "Ares Vault Key", "Ares Map Challenge"
|
|
]
|
|
chaosItems = [
|
|
"Chaos Memory Token", "Chaos Memory Token Treasure", "Chaos Portal Gear", "Chaos Vault Key", "Chaos Map Challenge"
|
|
]
|
|
ouranosItems = [
|
|
"Ouranos Memory Token", "Ouranos Portal Gear", "Ouranos Vault Key", "Ouranos Map Challenge"
|
|
]
|
|
kronosStages = [
|
|
"1-1",
|
|
"1-2",
|
|
"1-3",
|
|
"1-4",
|
|
"1-5",
|
|
"1-6",
|
|
"1-7",
|
|
]
|
|
aresStages = [
|
|
"2-1",
|
|
"2-2",
|
|
"2-3",
|
|
"2-4",
|
|
"2-5",
|
|
"2-6",
|
|
"2-7",
|
|
]
|
|
chaosStages = [
|
|
"3-1",
|
|
"3-2",
|
|
"3-3",
|
|
"3-4",
|
|
"3-5",
|
|
"3-6",
|
|
"3-7",
|
|
]
|
|
ouranosStages = [
|
|
"4-1",
|
|
"4-2",
|
|
"4-3",
|
|
"4-4",
|
|
"4-5",
|
|
"4-6",
|
|
"4-7",
|
|
"4-8",
|
|
"4-9",
|
|
]
|
|
skills = [
|
|
"Phantom Rush", "Air Trick", "Stomp Attack",
|
|
"Quick Cyloop", "Loop Kick", "Sonic Boom",
|
|
"Wild Rush", "Homing Shot", "Spin Slash",
|
|
"Recovery Smash", "Cyclone Kick","Cross Slash",
|
|
"Grand Slam"
|
|
]
|
|
kronosEmeralds = [
|
|
"Kronos Blue Emerald",
|
|
"Kronos Red Emerald",
|
|
"Kronos Green Emerald",
|
|
"Kronos Yellow Emerald",
|
|
"Kronos Cyan Emerald",
|
|
"Kronos White Emerald"
|
|
]
|
|
aresEmeralds = [
|
|
"Ares Blue Emerald",
|
|
"Ares Red Emerald",
|
|
"Ares Green Emerald",
|
|
"Ares Yellow Emerald",
|
|
"Ares Cyan Emerald",
|
|
"Ares White Emerald"
|
|
]
|
|
chaosEmeralds = [
|
|
"Chaos Blue Emerald",
|
|
"Chaos Red Emerald",
|
|
"Chaos Green Emerald",
|
|
"Chaos Yellow Emerald",
|
|
"Chaos Cyan Emerald",
|
|
"Chaos White Emerald"
|
|
]
|
|
ouranosEmeralds = [
|
|
"Ouranos Blue Emerald",
|
|
"Ouranos Red Emerald",
|
|
"Ouranos Green Emerald",
|
|
"Ouranos Yellow Emerald",
|
|
"Ouranos Cyan Emerald",
|
|
"Ouranos White Emerald"
|
|
]
|
|
sonicItems = [
|
|
"Skill Points (200)",
|
|
"Red Power Seed",
|
|
"Blue Power Seed",
|
|
"Kocos (20)"
|
|
]
|
|
|
|
##
|
|
## Kronos
|
|
##
|
|
|
|
#10000
|
|
counter = 0
|
|
for i in range(91):
|
|
kronosMemoryTokenSet[f"Kronos Memory Token {counter+1}"] = AdvData(kronosOff + counter)
|
|
counter += 1
|
|
#10091
|
|
counter = 0
|
|
for i in range(9):
|
|
kronosRegion[f"Kronos Memory Treasure {counter+1}"] = AdvData(kronosOff + tokenDigOffset + counter)
|
|
counter += 1
|
|
counter = 0
|
|
for i in range(17):
|
|
kronosRegion[f"Kronos Portal Gear {i+1}"] = AdvData(kronosOff + gearOffset + counter)
|
|
counter += 1
|
|
counter = 0
|
|
for i in range(5):
|
|
kronosRegion[f"Kronos Vault Key {1+i}"] = AdvData(kronosOff+keyOffset+counter)
|
|
counter += 1
|
|
counter = 0
|
|
|
|
for emerald in kronosEmeralds:
|
|
kronosRegion[f"{emerald}"] = AdvData(kronosOff+counter+emeraldOffset)
|
|
counter += 1
|
|
counter = 0
|
|
mapCounter = 1
|
|
for i in range(25):
|
|
if(mapCounter< 10):
|
|
kronosRegion[f"Map Challenge M-00{mapCounter}"] = AdvData(kronosOff+counter+mapChallengeOffset)
|
|
counter += 1
|
|
mapCounter += 1
|
|
else:
|
|
kronosRegion[f"Map Challenge M-0{mapCounter}"] = AdvData(kronosOff+counter+mapChallengeOffset)
|
|
counter += 1
|
|
mapCounter += 1
|
|
for i in range(8):
|
|
kronosNewKocoSet[f"Kronos Challenge Koco {i+1}"] = AdvData(kronosOff+i+newKocoOffset)
|
|
for i in range(13):
|
|
kronosMusicSet[f"Kronos Music Note {i+1}"] = AdvData(kronosOff+i+musicOffset)
|
|
for i in range(65):
|
|
kronosPurpleSet[f"Kronos Purple Coin {i+1}"] = AdvData(kronosOff + i + purpleCoinOffset)
|
|
for i in range(274):
|
|
kronosKocoSet[f"Kronos Koco {i+1}"] = AdvData(kronosOff + i + kocoOffset)
|
|
|
|
kronosRegion["Defeat Giganto"] = AdvData(kronosOff+bossOffset)
|
|
|
|
##
|
|
## Ares
|
|
##
|
|
counter = 0
|
|
|
|
for i in range(285):
|
|
aresMemoryTokenSet[f"Ares Memory Token {i+1}"] = AdvData(aresOff + counter)
|
|
counter += 1
|
|
for i in range(26):
|
|
aresRegion[f"Ares Memory Treasure {i+1}"] = AdvData(aresOff + tokenDigOffset + i)
|
|
counter = 0
|
|
for i in range(11):
|
|
aresRegion[f"Ares Portal Gear {i+1}"] = AdvData(aresOff + gearOffset+counter)
|
|
counter += 1
|
|
counter = 0
|
|
for i in range(7):
|
|
aresRegion[f"Ares Vault Key {1+i}"] = AdvData(aresOff+keyOffset+counter)
|
|
counter += 1
|
|
counter = 0
|
|
for emerald in aresEmeralds:
|
|
aresRegion[f"{emerald}"] = AdvData(aresOff+emeraldOffset+counter)
|
|
counter += 1
|
|
counter = 0
|
|
for i in range(29):
|
|
aresRegion[f"Map Challenge M-0{mapCounter}"] = AdvData(aresOff+mapChallengeOffset+counter)
|
|
counter += 1
|
|
mapCounter += 1
|
|
for i in range(8):
|
|
aresNewKocoSet[f"Ares Challenge Koco {i+1}"] = AdvData(aresOff+i+newKocoOffset)
|
|
for i in range(13):
|
|
aresMusicSet[f"Ares Music Note {i+1}"] = AdvData(aresOff+i+musicOffset)
|
|
for i in range(148):
|
|
aresPurpleSet[f"Ares Purple Coin {i+1}"] = AdvData(aresOff + i + purpleCoinOffset)
|
|
for i in range(360):
|
|
aresKocoSet[f"Ares Koco {i+1}"] = AdvData(aresOff + i + kocoOffset)
|
|
aresRegion["Defeat Wyvern"] = AdvData(aresOff+bossOffset)
|
|
|
|
##
|
|
## Chaos
|
|
##
|
|
|
|
for i in range(252):
|
|
chaosMemoryTokenSet[f"Chaos Memory Token {counter+1}"] = AdvData(chaosOff + i)
|
|
for i in range(20):
|
|
chaosRegion[f"Chaos Memory Treasure {i+1}"] = AdvData(chaosOff + tokenDigOffset+i)
|
|
counter = 0
|
|
for emerald in chaosEmeralds:
|
|
chaosRegion[f"{emerald}"] = AdvData(chaosOff+emeraldOffset+counter)
|
|
counter += 1
|
|
for i in range(8):
|
|
chaosRegion[f"Chaos Vault Key {1+i}"] = AdvData(chaosOff+keyOffset+i)
|
|
for i in range(13):
|
|
chaosRegion[f"Chaos Portal Gear {i+1}"] = AdvData(chaosOff +gearOffset+ i)
|
|
for i in range(24):
|
|
chaosRegion[f"Map Challenge M-0{mapCounter}"] = AdvData(chaosOff+mapChallengeOffset+i)
|
|
mapCounter += 1
|
|
counter = 0
|
|
|
|
for i in range(8):
|
|
chaosNewKocoSet[f"Chaos Challenge Koco {i+1}"] = AdvData(chaosOff+i+newKocoOffset)
|
|
for i in range(13):
|
|
chaosMusicSet[f"Chaos Music Note {i+1}"] = AdvData(chaosOff+i+musicOffset)
|
|
|
|
for i in range(188):
|
|
chaosPurpleSet[f"Chaos Purple Coin {i+1}"] = AdvData(chaosOff+purpleCoinOffset+i)
|
|
for i in range(356):
|
|
chaosKocoSet[f"Chaos Koco {i+1}"] = AdvData(chaosOff+kocoOffset+i)
|
|
chaosRegion["Defeat Knight"] = AdvData(chaosOff+bossOffset)
|
|
##
|
|
## Ouranos
|
|
##
|
|
counter = 0
|
|
|
|
for i in range(200):
|
|
ouranosMemoryTokenSet[f"Ouranos Memory Token {counter+1}"] = AdvData(ouranosOff + counter)
|
|
counter += 1
|
|
for i in range(16):
|
|
ouranosRegion[f"Ouranos Memory Treasure {i+1}"] = AdvData(ouranosOff + tokenDigOffset+i)
|
|
counter = 0
|
|
for i in range(21):
|
|
ouranosRegion[f"Ouranos Portal Gear {i+1}"] = AdvData(ouranosOff + gearOffset+counter)
|
|
counter += 1
|
|
counter = 0
|
|
for i in range(8):
|
|
ouranosRegion[f"Ouranos Vault Key {1+i}"] = AdvData(ouranosOff+keyOffset+counter)
|
|
counter += 1
|
|
counter = 0
|
|
for emerald in ouranosEmeralds:
|
|
ouranosRegion[f"{emerald}"] = AdvData(ouranosOff+emeraldOffset+counter)
|
|
counter += 1
|
|
counter = 0
|
|
for i in range(27):
|
|
if(mapCounter > 100):
|
|
ouranosRegion[f"Map Challenge M-{mapCounter}"] = AdvData(ouranosOff+mapChallengeOffset+counter)
|
|
counter += 1
|
|
mapCounter += 1
|
|
else:
|
|
ouranosRegion[f"Map Challenge M-0{mapCounter}"] = AdvData(ouranosOff+mapChallengeOffset+counter)
|
|
counter += 1
|
|
mapCounter += 1
|
|
counter = 0
|
|
for stage in kronosStages:
|
|
for i in range(7):
|
|
kronosRegion[f"{stage} All Missions ({i+1})"] = AdvData(cyberspaceOffset + counter)
|
|
counter += 1
|
|
for stage in aresStages:
|
|
for i in range(7):
|
|
aresRegion[f"{stage} All Missions ({i+1})"] = AdvData(cyberspaceOffset + counter)
|
|
counter += 1
|
|
for stage in chaosStages:
|
|
for i in range(7):
|
|
chaosRegion[f"{stage} All Missions ({i+1})"] = AdvData(cyberspaceOffset+counter)
|
|
counter += 1
|
|
for stage in ouranosStages:
|
|
for i in range(7):
|
|
ouranosRegion[f"{stage} All Missions ({i+1})"] = AdvData(cyberspaceOffset+ counter)
|
|
counter += 1
|
|
|
|
for i in range(8):
|
|
ouranosNewKocoSet[f"Ouranos Challenge Koco {i+1}"] = AdvData(ouranosOff+i+newKocoOffset)
|
|
for i in range(13):
|
|
ouranosMusicSet[f"Ouranos Music Note {i+1}"] = AdvData(ouranosOff+i+musicOffset)
|
|
for i in range(317):
|
|
ouranosPurpleSet[f"Ouranos Purple Coin {i+1}"] = AdvData(ouranosOff+purpleCoinOffset+i)
|
|
for i in range(358):
|
|
ouranosKocoSet[f"Ouranos Koco {i+1}"] = AdvData(ouranosOff+kocoOffset+i)
|
|
ouranosRegion["Defeat Supreme"] = AdvData(ouranosOff+bossOffset)
|
|
|
|
|
|
|
|
|
|
##Essentially add all of these into a region. How do I add them? idfk
|
|
kronosRegion = {}
|
|
aresRegion = {}
|
|
chaosRegion = {}
|
|
ouranosRegion = {}
|
|
victoryRegion = {}
|
|
|
|
kronosMemoryTokenSet = {}
|
|
aresMemoryTokenSet = {}
|
|
chaosMemoryTokenSet = {}
|
|
ouranosMemoryTokenSet = {}
|
|
|
|
kronosPurpleSet = {}
|
|
aresPurpleSet = {}
|
|
chaosPurpleSet = {}
|
|
ouranosPurpleSet = {}
|
|
|
|
kronosKocoSet = {}
|
|
aresKocoSet = {}
|
|
chaosKocoSet = {}
|
|
ouranosKocoSet = {}
|
|
|
|
kronosNewKocoSet = {}
|
|
aresNewKocoSet = {}
|
|
chaosNewKocoSet = {}
|
|
ouranosNewKocoSet = {}
|
|
|
|
kronosMusicSet = {}
|
|
aresMusicSet = {}
|
|
chaosMusicSet = {}
|
|
ouranosMusicSet = {}
|
|
|
|
kronosOff: int = 10000
|
|
aresOff: int = 20000
|
|
chaosOff: int = 30000
|
|
ouranosOff: int = 40000
|
|
cyberspaceOffset: int = 50000
|
|
|
|
tokenDigOffset: int = 500
|
|
emeraldOffset: int = 1000
|
|
musicOffset: int = 1500
|
|
gearOffset: int = 2000
|
|
newKocoOffset: int = 2500
|
|
keyOffset: int = 3000
|
|
purpleCoinOffset: int = 4000 #10000 + i + 4000
|
|
mapChallengeOffset: int = 5000
|
|
kocoOffset: int = 6000
|
|
bossOffset: int = 7000
|
|
ringOffset: int = 100000
|
|
|
|
|
|
create_locations()
|
|
|
|
kronosItems = kronosRegion | kronosMusicSet | kronosKocoSet | kronosMemoryTokenSet | kronosNewKocoSet | kronosPurpleSet
|
|
aresItems = aresRegion | aresMusicSet | aresKocoSet | aresMemoryTokenSet | aresNewKocoSet | aresPurpleSet
|
|
chaosItems = chaosRegion | chaosMusicSet | chaosKocoSet | chaosMemoryTokenSet | chaosNewKocoSet | chaosPurpleSet
|
|
ouranosItems = ouranosRegion | ouranosMusicSet | ouranosKocoSet | ouranosMemoryTokenSet | ouranosNewKocoSet | ouranosPurpleSet
|
|
|
|
all_items = kronosItems | aresItems | chaosItems | ouranosItems |