chore: initial commit
This commit is contained in:
commit
8ee38dfc1d
|
@ -0,0 +1 @@
|
||||||
|
/target
|
|
@ -0,0 +1,398 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.55"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "159bb86af3a200e19a068f4224eae4c8bb2d0fa054c7e5d1cacd5cef95e684cd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "autocfg"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cc"
|
||||||
|
version = "1.0.73"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "core-foundation-sys"
|
||||||
|
version = "0.8.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-channel"
|
||||||
|
version = "0.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-deque"
|
||||||
|
version = "0.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"crossbeam-epoch",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-epoch"
|
||||||
|
version = "0.9.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"crossbeam-utils",
|
||||||
|
"lazy_static",
|
||||||
|
"memoffset",
|
||||||
|
"scopeguard",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-utils"
|
||||||
|
version = "0.8.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"lazy_static",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ffxii-tza-auto-notes"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"itertools",
|
||||||
|
"lazy_static",
|
||||||
|
"maplit",
|
||||||
|
"process_list",
|
||||||
|
"serde",
|
||||||
|
"serde_yaml",
|
||||||
|
"sysinfo",
|
||||||
|
"vmemory",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashbrown"
|
||||||
|
version = "0.11.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hermit-abi"
|
||||||
|
version = "0.1.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "indexmap"
|
||||||
|
version = "1.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"hashbrown",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.10.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.119"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "linked-hash-map"
|
||||||
|
version = "0.5.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mach"
|
||||||
|
version = "0.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "maplit"
|
||||||
|
version = "1.0.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memoffset"
|
||||||
|
version = "0.6.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nix"
|
||||||
|
version = "0.23.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"cc",
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"memoffset",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ntapi"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "97ba11b4249e387303cc3a41ac79d7bdf8382ad72b64621a77bac197b75a73e2"
|
||||||
|
dependencies = [
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ntapi"
|
||||||
|
version = "0.3.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
|
||||||
|
dependencies = [
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num_cpus"
|
||||||
|
version = "1.13.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
|
||||||
|
dependencies = [
|
||||||
|
"hermit-abi",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "once_cell"
|
||||||
|
version = "1.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.36"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-xid",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "process_list"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1132b222742f1d1bbe2078836970d9eac85cb354076b58534edc29aa14668ff0"
|
||||||
|
dependencies = [
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon"
|
||||||
|
version = "1.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"crossbeam-deque",
|
||||||
|
"either",
|
||||||
|
"rayon-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon-core"
|
||||||
|
version = "1.9.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-channel",
|
||||||
|
"crossbeam-deque",
|
||||||
|
"crossbeam-utils",
|
||||||
|
"lazy_static",
|
||||||
|
"num_cpus",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ryu"
|
||||||
|
version = "1.0.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scopeguard"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.136"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.136"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_yaml"
|
||||||
|
version = "0.8.23"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0"
|
||||||
|
dependencies = [
|
||||||
|
"indexmap",
|
||||||
|
"ryu",
|
||||||
|
"serde",
|
||||||
|
"yaml-rust",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "1.0.86"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-xid",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sysinfo"
|
||||||
|
version = "0.23.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "07fa4c84a5305909b0eedfcc8d1f2fafdbede645bb700a45ecaafe681a0ac5d6"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"core-foundation-sys",
|
||||||
|
"libc",
|
||||||
|
"ntapi 0.3.7",
|
||||||
|
"once_cell",
|
||||||
|
"rayon",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-xid"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "vmemory"
|
||||||
|
version = "0.1.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fe1e3c3facc6d67d5972f73b14189930ca96cd3ec4f7df151863f4377480e8c0"
|
||||||
|
dependencies = [
|
||||||
|
"mach",
|
||||||
|
"nix",
|
||||||
|
"ntapi 0.2.0",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi"
|
||||||
|
version = "0.3.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-i686-pc-windows-gnu",
|
||||||
|
"winapi-x86_64-pc-windows-gnu",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-i686-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "yaml-rust"
|
||||||
|
version = "0.4.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
|
||||||
|
dependencies = [
|
||||||
|
"linked-hash-map",
|
||||||
|
]
|
|
@ -0,0 +1,17 @@
|
||||||
|
[package]
|
||||||
|
name = "ffxii-tza-auto-notes"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
anyhow = "1"
|
||||||
|
vmemory = "0.1"
|
||||||
|
sysinfo = "0.23"
|
||||||
|
process_list = "0.2"
|
||||||
|
itertools = "0.10"
|
||||||
|
serde = { version = "1", features = ["derive"] }
|
||||||
|
serde_yaml = "0.8"
|
||||||
|
maplit = "1"
|
||||||
|
lazy_static = "1"
|
|
@ -0,0 +1,841 @@
|
||||||
|
steps:
|
||||||
|
# 0: title screen/into cutscenes
|
||||||
|
- stage: 0
|
||||||
|
areas:
|
||||||
|
# 274: aerial gardens
|
||||||
|
- area: 274
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 3
|
||||||
|
# 13: control of reks
|
||||||
|
- stage: 13
|
||||||
|
areas:
|
||||||
|
# 274: aerial gardens
|
||||||
|
- area: 274
|
||||||
|
steps: |-
|
||||||
|
- Talk to Basch and the soldier
|
||||||
|
- Open the gate
|
||||||
|
# 16: gone through gate
|
||||||
|
- stage: 16
|
||||||
|
areas:
|
||||||
|
# 275: inner ward
|
||||||
|
- area: 275
|
||||||
|
steps: |-
|
||||||
|
- Menu
|
||||||
|
1. Active
|
||||||
|
2. Battle speed: fast
|
||||||
|
3. Cursor position: last selection
|
||||||
|
- **Skip**: 1
|
||||||
|
- Kill Remora with Thunder spam
|
||||||
|
- **Skip**: 1
|
||||||
|
- Go upstairs
|
||||||
|
# 19: after door after remora
|
||||||
|
- stage: 19
|
||||||
|
areas:
|
||||||
|
# 279: lower apartments
|
||||||
|
- area: 279
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- Go forward and up the stairs to save crystal
|
||||||
|
# 21: after save tutorial cutscene
|
||||||
|
- stage: 21
|
||||||
|
areas:
|
||||||
|
# 279: lower apartments
|
||||||
|
# 280: upper apartments
|
||||||
|
# 282: the highhall
|
||||||
|
- area: 280
|
||||||
|
steps: |-
|
||||||
|
- Go upstairs
|
||||||
|
- **Skip**: 1
|
||||||
|
- Kill the guards
|
||||||
|
- Go into throne room
|
||||||
|
- **Skip**: 3
|
||||||
|
# 22: reks decides to kill swordsmen
|
||||||
|
# 23: swordsmen dead
|
||||||
|
# 25: control of vaan
|
||||||
|
- stage: 25
|
||||||
|
areas:
|
||||||
|
# 1145: overflow cloaca
|
||||||
|
- area: 1145
|
||||||
|
steps: |-
|
||||||
|
- Kill rats
|
||||||
|
- **Skip**: 3
|
||||||
|
# 35: map tutorial opens
|
||||||
|
# 40: control of vaan after rat slaughter
|
||||||
|
- stage: 40
|
||||||
|
areas:
|
||||||
|
# 291: east end
|
||||||
|
- area: 291
|
||||||
|
steps: |-
|
||||||
|
- South to item shop
|
||||||
|
- **Skip**: 1
|
||||||
|
# 45: after item shop cutscene
|
||||||
|
- stage: 45
|
||||||
|
areas:
|
||||||
|
# 291: east end
|
||||||
|
# 304: the sandsea
|
||||||
|
- area: 291
|
||||||
|
steps: |-
|
||||||
|
- North to Sandsea
|
||||||
|
- area: 304
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- Choose not to hear the details
|
||||||
|
- Choose not to repeat the message
|
||||||
|
# 65: control of vaan after picking up rogue tomato
|
||||||
|
- stage: 65
|
||||||
|
areas:
|
||||||
|
# 304: the sandsea
|
||||||
|
# 291: east end
|
||||||
|
# 292: southern plaza
|
||||||
|
- area: 304
|
||||||
|
steps: |-
|
||||||
|
- Exit
|
||||||
|
- area: 291
|
||||||
|
steps: |-
|
||||||
|
- Go South
|
||||||
|
- Exit across from item shop
|
||||||
|
- area: 292
|
||||||
|
steps: |-
|
||||||
|
- Go to East Gate
|
||||||
|
- **Skip**: 1
|
||||||
|
# 68: after east gate cutscene
|
||||||
|
- stage: 68
|
||||||
|
areas:
|
||||||
|
# 305: eastgate
|
||||||
|
# 227: the stepping
|
||||||
|
- area: 305
|
||||||
|
steps: |-
|
||||||
|
- Enter the Estersand
|
||||||
|
- area: 227
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- Straight ahead to Rogue Tomato
|
||||||
|
- Attack, follow, attack
|
||||||
|
- **Skip**: 1
|
||||||
|
# 78: killed rogue tomato
|
||||||
|
- stage: 78
|
||||||
|
areas:
|
||||||
|
# 227: the stepping
|
||||||
|
# 305: eastgate
|
||||||
|
- area: 227
|
||||||
|
steps: |-
|
||||||
|
- Return to Rabanastre
|
||||||
|
- area: 305
|
||||||
|
steps: |-
|
||||||
|
- Talk to Kytes
|
||||||
|
- **Skip**: 3
|
||||||
|
# 85: after first cutscene
|
||||||
|
# 100: after second cutscene
|
||||||
|
# 105: control of vaan after talking to kytes
|
||||||
|
- stage: 105
|
||||||
|
areas:
|
||||||
|
# 289: north end
|
||||||
|
# 701: north sprawl
|
||||||
|
# 702: south sprawl
|
||||||
|
# 703: dalan's house
|
||||||
|
- area: 289
|
||||||
|
steps: |-
|
||||||
|
- Go straight into Lowtown
|
||||||
|
- area: 701
|
||||||
|
steps: |-
|
||||||
|
- Exit South
|
||||||
|
- area: 702
|
||||||
|
steps: |-
|
||||||
|
- South then west to Dalan
|
||||||
|
- **Skip**: 1
|
||||||
|
# 120: after cutscene, talking to dalan
|
||||||
|
- stage: 120
|
||||||
|
areas:
|
||||||
|
# 703: dalan's house
|
||||||
|
# 702: south sprawl
|
||||||
|
# 306: southgate
|
||||||
|
# 236: throne road (dry)
|
||||||
|
# 243: nomad village (dry)
|
||||||
|
- area: 703
|
||||||
|
steps: |-
|
||||||
|
- Exit
|
||||||
|
- area: 702
|
||||||
|
steps: |-
|
||||||
|
- Exit right to Southgate
|
||||||
|
- area: 306
|
||||||
|
steps: |-
|
||||||
|
- Exit left to Giza
|
||||||
|
- area: 236
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- Straight ahead to camp
|
||||||
|
- area: 243
|
||||||
|
steps: |-
|
||||||
|
- Talk to lady by sunstone
|
||||||
|
- **Skip**: 1
|
||||||
|
# 125: cutscene after talking to sunstone lady
|
||||||
|
# 130: control after penelo joins party
|
||||||
|
- stage: 130
|
||||||
|
areas:
|
||||||
|
# 243: nomad village (dry)
|
||||||
|
- area: 243
|
||||||
|
steps: |-
|
||||||
|
- Exit West
|
||||||
|
# 140: after exiting camp and listening to penelo
|
||||||
|
- stage: 140
|
||||||
|
areas:
|
||||||
|
# 239: toam hills (dry)
|
||||||
|
# 247: starfall field (dry)
|
||||||
|
- area: 239
|
||||||
|
steps: |-
|
||||||
|
- Exit South
|
||||||
|
- area: 247
|
||||||
|
steps: |-
|
||||||
|
- Quit to title
|
||||||
|
- stage: 0
|
||||||
|
areas:
|
||||||
|
# 12: main menu
|
||||||
|
- area: 12
|
||||||
|
steps: |-
|
||||||
|
- Trial mode
|
||||||
|
- stage: 140
|
||||||
|
areas:
|
||||||
|
# 1155: stage 1
|
||||||
|
# 1166: stage 2
|
||||||
|
- area: 1155
|
||||||
|
steps: |-
|
||||||
|
- Grab Diamond Armlet, kill rats
|
||||||
|
- area: 1166
|
||||||
|
steps: |-
|
||||||
|
- Quit to title
|
||||||
|
- stage: 0
|
||||||
|
areas:
|
||||||
|
# 12: main menu
|
||||||
|
- area: 12
|
||||||
|
steps: |-
|
||||||
|
- Load autosave
|
||||||
|
- stage: 140
|
||||||
|
areas:
|
||||||
|
# 247: starfall field (dry)
|
||||||
|
# 248: crystal glade (dry)
|
||||||
|
- area: 247
|
||||||
|
steps: |-
|
||||||
|
- Exit Southeast to Jinn
|
||||||
|
- area: 248
|
||||||
|
steps: |-
|
||||||
|
- Talk to Jinn
|
||||||
|
# 145: after talking to jinn
|
||||||
|
- stage: 145
|
||||||
|
areas:
|
||||||
|
# 248: crystal glade (dry)
|
||||||
|
# 247: starfall field (dry)
|
||||||
|
# 249: gizas south bank (dry)
|
||||||
|
# 228: yardang labyrinth
|
||||||
|
# 630: west barbican
|
||||||
|
- area: 248
|
||||||
|
steps: |-
|
||||||
|
- Exit West
|
||||||
|
- area: 247
|
||||||
|
steps: |-
|
||||||
|
- Use West sunstone
|
||||||
|
- Exit East back to Jinn
|
||||||
|
- area: 248
|
||||||
|
steps: |-
|
||||||
|
- Exit East
|
||||||
|
- area: 249
|
||||||
|
steps: |-
|
||||||
|
- Exit Northeast towards Nalbina
|
||||||
|
- area: 228
|
||||||
|
steps: |-
|
||||||
|
- Go northeast, then north, exit to Nalbina
|
||||||
|
- area: 630
|
||||||
|
steps: |-
|
||||||
|
- Shop:
|
||||||
|
1. Sell Diamond Armlet
|
||||||
|
2. Buy 11x Phoenix Down
|
||||||
|
- Return to Giza
|
||||||
|
- area: 249
|
||||||
|
steps: |-
|
||||||
|
- Use sunstone
|
||||||
|
- Exit North
|
||||||
|
- area: 0
|
||||||
|
steps: |-
|
||||||
|
- Use Northwest sunstone
|
||||||
|
# 160: after getting sunstone
|
||||||
|
- stage: 160
|
||||||
|
areas:
|
||||||
|
# 243: nomad village (dry)
|
||||||
|
# 236: throne road (dry)
|
||||||
|
# 306: southgate
|
||||||
|
# 292: southern plaza
|
||||||
|
# 307: westgate
|
||||||
|
# 345: galtea downs
|
||||||
|
# 306: southgate
|
||||||
|
# 702: south sprawl
|
||||||
|
- area: 243
|
||||||
|
steps: |-
|
||||||
|
- Shop:
|
||||||
|
1. Buy Dark
|
||||||
|
- Exit North
|
||||||
|
- area: 236
|
||||||
|
steps: |-
|
||||||
|
- Exit North to Rabanastre
|
||||||
|
- area: 306
|
||||||
|
steps: |-
|
||||||
|
- Exit North
|
||||||
|
- area: 292
|
||||||
|
steps: |-
|
||||||
|
- Exit West to Westgate
|
||||||
|
- area: 307
|
||||||
|
steps: |-
|
||||||
|
- Exit to Westersand
|
||||||
|
- area: 345
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- Northeast, stop before zoning
|
||||||
|
- Get Vaan to critical HP
|
||||||
|
![vaan dustia hp chart](./img/vaan_dustia_hp_chart.png)
|
||||||
|
- Kill Penelo, set battle speed to slow
|
||||||
|
- Exit, spawn Dustia, use Phoenix Down to kill
|
||||||
|
- Kill 12 times total, until level 13 Vaan
|
||||||
|
- Return to Rabanastre
|
||||||
|
- area: 307
|
||||||
|
steps: |-
|
||||||
|
- Exit
|
||||||
|
- area: 292
|
||||||
|
steps: |-
|
||||||
|
- Exit South to Southgate
|
||||||
|
- area: 306
|
||||||
|
steps: |-
|
||||||
|
- West to Lowtown
|
||||||
|
- area: 702
|
||||||
|
steps: |-
|
||||||
|
- West to Dalan's place
|
||||||
|
- **Skip**: 1
|
||||||
|
# 170: penelo leaves party, control in dalan's house
|
||||||
|
- stage: 170
|
||||||
|
areas:
|
||||||
|
# 703: dalan's house
|
||||||
|
- area: 703
|
||||||
|
steps: |-
|
||||||
|
- Talk to Dalan
|
||||||
|
- **Skip**: 1
|
||||||
|
# 175: obtain crescent stone, control in dalan's house
|
||||||
|
- stage: 175
|
||||||
|
areas:
|
||||||
|
# 703: dalan's house
|
||||||
|
# 312: east waterway control (cutscene)
|
||||||
|
- area: 703
|
||||||
|
steps: |-
|
||||||
|
- Exit
|
||||||
|
- area: 312
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
# 180: after leaving dalan's house with crescent stone
|
||||||
|
- stage: 180
|
||||||
|
areas:
|
||||||
|
# 702: south sprawl
|
||||||
|
# 701: north sprawl
|
||||||
|
# 311: central spur stairs
|
||||||
|
# 315: northern sluiceway
|
||||||
|
# 313: north spur sluiceway
|
||||||
|
# 567: cellar stores
|
||||||
|
- area: 702
|
||||||
|
steps: |-
|
||||||
|
- Exit North
|
||||||
|
- area: 701
|
||||||
|
steps: |-
|
||||||
|
- North and West to Garamsythe
|
||||||
|
- Enter unlocked door
|
||||||
|
- area: 311
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- Exit West
|
||||||
|
- area: 315
|
||||||
|
steps: |-
|
||||||
|
- North, East, exit North
|
||||||
|
- area: 313
|
||||||
|
steps: |-
|
||||||
|
- West until North stairs
|
||||||
|
# 190: after going up stairs, fireworks fmv
|
||||||
|
- stage: 190
|
||||||
|
# 576: invitation to heresy (cutscene)
|
||||||
|
areas:
|
||||||
|
- area: 576
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 2
|
||||||
|
# 200: after fireworks fmv, control in palace
|
||||||
|
- stage: 200
|
||||||
|
areas:
|
||||||
|
# 567: cellar stores
|
||||||
|
# 568: cellars
|
||||||
|
# 569: lower halls
|
||||||
|
- area: 567
|
||||||
|
steps: |-
|
||||||
|
- Exit
|
||||||
|
- area: 568
|
||||||
|
steps: |-
|
||||||
|
- Go straight
|
||||||
|
- Get East-most (left) chest for Elixir
|
||||||
|
- North for cutscene
|
||||||
|
- Approach guard for cutscene
|
||||||
|
- Talk to servant, shout
|
||||||
|
- Exit upstairs
|
||||||
|
- area: 569
|
||||||
|
steps: |-
|
||||||
|
- Straight, South, East, shout at intersection
|
||||||
|
- West, North, shout at intersection
|
||||||
|
- East, North, West, use
|
||||||
|
- West, shout at intersection
|
||||||
|
- East, North, West to exit at wall
|
||||||
|
# 210: after entering secret chamber
|
||||||
|
- stage: 210
|
||||||
|
areas:
|
||||||
|
# 570: secret passage
|
||||||
|
- area: 570
|
||||||
|
steps: |-
|
||||||
|
- Use switch on back left wall
|
||||||
|
- Open door
|
||||||
|
- **Skip**: 1
|
||||||
|
# 215: gone through hidden door
|
||||||
|
# 220: you obtain the goddess's magicite
|
||||||
|
- stage: 220
|
||||||
|
areas:
|
||||||
|
# 572: the garden stairs
|
||||||
|
- area: 0
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- Exit upstairs
|
||||||
|
- **Skip**: 2
|
||||||
|
# 225: after fmv
|
||||||
|
# 235: control in garamsythe
|
||||||
|
- stage: 235
|
||||||
|
areas:
|
||||||
|
# 314: east spur stairs
|
||||||
|
- area: 314
|
||||||
|
steps: |-
|
||||||
|
- Go down the stairs
|
||||||
|
- Gambit tutorial
|
||||||
|
# 244: after gambit tutorial
|
||||||
|
- stage: 244
|
||||||
|
areas:
|
||||||
|
# 314: east spur stairs
|
||||||
|
# 316: east waterway control
|
||||||
|
# 318: no. 11 channel
|
||||||
|
# 319: east sluice control
|
||||||
|
- area: 314
|
||||||
|
steps: |-
|
||||||
|
- Menu:
|
||||||
|
1. Licence boards
|
||||||
|
- All: Red battlemage
|
||||||
|
2. Licences
|
||||||
|
- All: Dark
|
||||||
|
3. Gambits
|
||||||
|
- Vaan, Fran: turn on gambits, highest hp: Dark
|
||||||
|
- Balthier: HP < 50%: Potion, highest hp: Dark
|
||||||
|
4. Config
|
||||||
|
- Battle speed: fast
|
||||||
|
- Exit ahead
|
||||||
|
- area: 316
|
||||||
|
steps: |-
|
||||||
|
- West (no stairs), South to exit
|
||||||
|
- area: 318
|
||||||
|
steps: |-
|
||||||
|
- Follow path South, take branch, exit South
|
||||||
|
- area: 319
|
||||||
|
steps: |-
|
||||||
|
- Follow path South to downstairs
|
||||||
|
- **Skip**: 1
|
||||||
|
- **Boss**: gambit to win
|
||||||
|
- **Skip**: 1
|
||||||
|
# 257: before ashe cutscene
|
||||||
|
- stage: 257
|
||||||
|
areas:
|
||||||
|
# 319: east sluice control
|
||||||
|
- area: 319
|
||||||
|
steps: |-
|
||||||
|
- Approach Ashe
|
||||||
|
- **Skip**: 1
|
||||||
|
# 260: amalia joins
|
||||||
|
- stage: 260
|
||||||
|
areas:
|
||||||
|
# 319: east sluice control
|
||||||
|
# 326: southern sluiceway
|
||||||
|
- area: 319
|
||||||
|
steps: |-
|
||||||
|
- Exit ahead
|
||||||
|
- area: 326
|
||||||
|
steps: |-
|
||||||
|
- Walk ahead
|
||||||
|
- **Skip**: 1
|
||||||
|
- **Boss**: gambit to win
|
||||||
|
- **Skip**: 1
|
||||||
|
# 265: after flan boss
|
||||||
|
- stage: 265
|
||||||
|
areas:
|
||||||
|
# 326: southern sluiceway
|
||||||
|
# 320: west sluice control
|
||||||
|
# 321: no. 10 channel
|
||||||
|
# 322: central waterway control
|
||||||
|
# 329: overflow cloaca
|
||||||
|
- area: 326
|
||||||
|
steps: |-
|
||||||
|
- Exit Northwest
|
||||||
|
- area: 320
|
||||||
|
steps: |-
|
||||||
|
- South, West, North, exit
|
||||||
|
- area: 321
|
||||||
|
steps: |-
|
||||||
|
- North, East, North, exit
|
||||||
|
- area: 322
|
||||||
|
steps: |-
|
||||||
|
- Through gate
|
||||||
|
- area: 329
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- **Boss**: flee to the left in the water, gambit to win
|
||||||
|
- **Skip**: 4
|
||||||
|
# 285: after post-firemane cutscene
|
||||||
|
# 290: next cutscene
|
||||||
|
# 301: next cutscene
|
||||||
|
# 303: control in nalbina dungeon
|
||||||
|
- stage: 303
|
||||||
|
areas:
|
||||||
|
# 48: stockade
|
||||||
|
# 49: arena
|
||||||
|
# 710: the confiscatory
|
||||||
|
- area: 48
|
||||||
|
steps: |-
|
||||||
|
- East, then North and exit near Save Crystal
|
||||||
|
- area: 49
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- **Boss**: gambits to win
|
||||||
|
- **Skip**: 1
|
||||||
|
- area: 710
|
||||||
|
steps: |-
|
||||||
|
- Walk forward
|
||||||
|
- **Skip**: 1
|
||||||
|
# 310: control after getting equipment back
|
||||||
|
- stage: 310
|
||||||
|
areas:
|
||||||
|
# 710: the confiscatory
|
||||||
|
# 709: the black watch
|
||||||
|
- area: 710
|
||||||
|
steps: |-
|
||||||
|
- Exit East
|
||||||
|
- area: 709
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- Go all the way North, then West
|
||||||
|
- **Skip**: 1
|
||||||
|
- Exit ahead
|
||||||
|
- **Skip**: 3
|
||||||
|
# 312: cutscene
|
||||||
|
# 315: after judges open door
|
||||||
|
# 316: next cutscene
|
||||||
|
# 317: control in barheim
|
||||||
|
- stage: 317
|
||||||
|
areas:
|
||||||
|
# 53: the lightworks
|
||||||
|
- area: 53
|
||||||
|
steps: |-
|
||||||
|
- Down the stairs, East, grab (left) chest for gil
|
||||||
|
- Touch device
|
||||||
|
- Continue down stairs, talk to shopkeep
|
||||||
|
# 319: get fuse
|
||||||
|
- stage: 319
|
||||||
|
areas:
|
||||||
|
# 53: the lightworks
|
||||||
|
- area: 53
|
||||||
|
steps: |-
|
||||||
|
- Have Vaan potion, pilot someone else to device
|
||||||
|
- Install fuse
|
||||||
|
# 321: used fuse
|
||||||
|
- stage: 321
|
||||||
|
areas:
|
||||||
|
# 53: the lightworks
|
||||||
|
# 58: op sector 29
|
||||||
|
- area: 53
|
||||||
|
steps: |-
|
||||||
|
- Switch back to Vaan, use device
|
||||||
|
- Exit
|
||||||
|
- area: 58
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
# 323: after mimic cutscene
|
||||||
|
- stage: 323
|
||||||
|
areas:
|
||||||
|
# 58: op sector 29
|
||||||
|
# 54: great eastern passage
|
||||||
|
# 56: special op sector 3
|
||||||
|
# 57: op sector 37
|
||||||
|
# 66: north-south junction
|
||||||
|
- area: 58
|
||||||
|
steps: |-
|
||||||
|
- Follow path South
|
||||||
|
- Kill mimics stealing charge
|
||||||
|
- Exit East
|
||||||
|
- area: 54
|
||||||
|
steps: |-
|
||||||
|
- Kill mimic stealing charge
|
||||||
|
- Follow path south, killing big mimics
|
||||||
|
- Left path
|
||||||
|
- Right path
|
||||||
|
- Exit South
|
||||||
|
- area: 56
|
||||||
|
steps: |-
|
||||||
|
- West, kill big mimic
|
||||||
|
- East, North
|
||||||
|
- Exit West
|
||||||
|
- area: 57
|
||||||
|
steps: |-
|
||||||
|
- Use switchboard
|
||||||
|
- South, kill mimic, West, exit way you came
|
||||||
|
- area: 56
|
||||||
|
steps: |-
|
||||||
|
- East, exit South (kill mimic)
|
||||||
|
- area: 66
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 3
|
||||||
|
# 333: after basch cutscenes
|
||||||
|
- stage: 333
|
||||||
|
areas:
|
||||||
|
# 66: north-south junction
|
||||||
|
# 61: great central passage
|
||||||
|
# 62: the zeviah subterrane
|
||||||
|
# 70: terminus no. 4 adjunct
|
||||||
|
# 69: terminus no. 4
|
||||||
|
- area: 66
|
||||||
|
steps: |-
|
||||||
|
- Exit South
|
||||||
|
- area: 61
|
||||||
|
steps: |-
|
||||||
|
- Exit South
|
||||||
|
- area: 62
|
||||||
|
steps: |-
|
||||||
|
- South, loop North (kill mimics as necessary)
|
||||||
|
- Exit East
|
||||||
|
- area: 70
|
||||||
|
steps: |-
|
||||||
|
- Exit South
|
||||||
|
- area: 69
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
- **Boss**: gambit to win
|
||||||
|
- **Skip**: 1
|
||||||
|
# 340: mimic queen cutscene
|
||||||
|
# 341: post-mimic queen (to think dalmascan air could taste so sweet)
|
||||||
|
- stage: 341
|
||||||
|
areas:
|
||||||
|
# 231: passage entrance
|
||||||
|
- area: 231
|
||||||
|
steps: |-
|
||||||
|
- Unskippable cutscene
|
||||||
|
# 343: after dalmascan air tastes so sweet
|
||||||
|
- stage: 343
|
||||||
|
areas:
|
||||||
|
# 231: passage entrance
|
||||||
|
# 229: sand-swept naze
|
||||||
|
# 228: yardang labyrinth
|
||||||
|
# 630: west barbican
|
||||||
|
# 306: southgate
|
||||||
|
- area: 231
|
||||||
|
steps: |-
|
||||||
|
- Exit towards camera
|
||||||
|
- area: 229
|
||||||
|
steps: |-
|
||||||
|
- West-by-northwest, follow path, exit South
|
||||||
|
- area: 228
|
||||||
|
steps: |-
|
||||||
|
- South, loop East, exit North to Nalbina
|
||||||
|
- area: 630
|
||||||
|
steps: |-
|
||||||
|
- Teleport to Rabanastre
|
||||||
|
- area: 306
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
# 350: control after balthier and fran leave
|
||||||
|
- stage: 350
|
||||||
|
areas:
|
||||||
|
# 306: southgate
|
||||||
|
# 702: south sprawl
|
||||||
|
# 703: dalan's house
|
||||||
|
- area: 306
|
||||||
|
steps: |-
|
||||||
|
- East to enter Lowtown
|
||||||
|
- area: 702
|
||||||
|
steps: |-
|
||||||
|
- Enter Dalan's house
|
||||||
|
- area: 703
|
||||||
|
steps: |-
|
||||||
|
- Talk to Dalan
|
||||||
|
- **Skip**: 1
|
||||||
|
# 375: after getting sword from dalan
|
||||||
|
- stage: 375
|
||||||
|
areas:
|
||||||
|
# 703: dalan's house
|
||||||
|
# 702: south sprawl
|
||||||
|
# 701: north sprawl
|
||||||
|
- area: 703
|
||||||
|
steps: |-
|
||||||
|
- Exit
|
||||||
|
- area: 702
|
||||||
|
steps: |-
|
||||||
|
- Exit North
|
||||||
|
- area: 701
|
||||||
|
steps: |-
|
||||||
|
- Cross over West, go West to hideout
|
||||||
|
- **Skip**: 2
|
||||||
|
# 386: after first cutscene
|
||||||
|
# 390: control after basch joins
|
||||||
|
- stage: 390
|
||||||
|
areas:
|
||||||
|
# 701: north sprawl
|
||||||
|
# 291: east end
|
||||||
|
- area: 701
|
||||||
|
steps: |-
|
||||||
|
- Back across to the East
|
||||||
|
- East at intersection
|
||||||
|
- Exit North
|
||||||
|
- area: 291
|
||||||
|
steps: |-
|
||||||
|
- North
|
||||||
|
- **Skip**: 1
|
||||||
|
# 400: after basch cutscene outside sandsea
|
||||||
|
- stage: 400
|
||||||
|
areas:
|
||||||
|
# 291: east end
|
||||||
|
# 304: the sandsea
|
||||||
|
- area: 291
|
||||||
|
steps: |-
|
||||||
|
- Enter the Sandsea
|
||||||
|
- area: 304
|
||||||
|
steps: |-
|
||||||
|
- Go upstairs
|
||||||
|
- **Skip**: 1
|
||||||
|
# 420: after balthier cutscene in sandsea
|
||||||
|
- stage: 420
|
||||||
|
areas:
|
||||||
|
# 304: the sandsea
|
||||||
|
# 291: east end
|
||||||
|
# 307: westgate
|
||||||
|
# 788: aerodrome (rabanastre)
|
||||||
|
- area: 304
|
||||||
|
steps: |-
|
||||||
|
- Exit
|
||||||
|
- area: 291
|
||||||
|
steps: |-
|
||||||
|
- Moogling to Westgate
|
||||||
|
- area: 307
|
||||||
|
steps: |-
|
||||||
|
- Enter Aerodrome
|
||||||
|
- area: 788
|
||||||
|
steps: |-
|
||||||
|
- Straight back and talk to Balthier
|
||||||
|
- **Skip**: 3
|
||||||
|
# 460: strahl cutscene
|
||||||
|
# 520: clouds cutscene
|
||||||
|
# 546: control in bhujerba
|
||||||
|
- stage: 546
|
||||||
|
areas:
|
||||||
|
# 791: aerodrome (bhujerba)
|
||||||
|
# 803: travica way
|
||||||
|
- area: 791
|
||||||
|
steps: |-
|
||||||
|
- Exit ahead
|
||||||
|
- area: 803
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
# 550: larsa joins
|
||||||
|
- stage: 550
|
||||||
|
areas:
|
||||||
|
# 803: travica way
|
||||||
|
# 805: miners' end
|
||||||
|
# 806: lhusu square
|
||||||
|
- area: 803
|
||||||
|
steps: |-
|
||||||
|
- East, South, exit East
|
||||||
|
- area: 805
|
||||||
|
steps: |-
|
||||||
|
- East, exit North
|
||||||
|
- area: 806
|
||||||
|
steps: |-
|
||||||
|
- Go downstairs
|
||||||
|
- **Skip**: 1
|
||||||
|
# 580: control in lhusu
|
||||||
|
- stage: 580
|
||||||
|
areas:
|
||||||
|
# 357: shaft entry
|
||||||
|
- area: 357
|
||||||
|
steps: |-
|
||||||
|
- Go downstairs
|
||||||
|
- **Skip**: 1
|
||||||
|
# 610: control after cutscene
|
||||||
|
- stage: 610
|
||||||
|
areas:
|
||||||
|
# 357: shaft entry
|
||||||
|
# 358: oltam span
|
||||||
|
# 359: transitway 1
|
||||||
|
# 365: shunia twinspan
|
||||||
|
# 933: site 2
|
||||||
|
- area: 357
|
||||||
|
steps: |-
|
||||||
|
- North, West, second South, exit West
|
||||||
|
- area: 358
|
||||||
|
steps: |-
|
||||||
|
- Exit ahead
|
||||||
|
- area: 359
|
||||||
|
steps: |-
|
||||||
|
- Exit North
|
||||||
|
- area: 365
|
||||||
|
steps: |-
|
||||||
|
- Exit ahead
|
||||||
|
- area: 933
|
||||||
|
steps: |-
|
||||||
|
- East, follow South path to caves
|
||||||
|
- **Skip**: 1
|
||||||
|
# 645: fleeing
|
||||||
|
- stage: 645
|
||||||
|
areas:
|
||||||
|
# 933: site 2
|
||||||
|
# 934: shunia twinspan
|
||||||
|
# 935: transitway 1
|
||||||
|
# 936: oltam span
|
||||||
|
# 357: shaft entry
|
||||||
|
- area: 933
|
||||||
|
steps: |-
|
||||||
|
- South, exit West
|
||||||
|
- area: 934
|
||||||
|
steps: |-
|
||||||
|
- Exit ahead
|
||||||
|
- area: 935
|
||||||
|
steps: |-
|
||||||
|
- South, East, exit East
|
||||||
|
- area: 936
|
||||||
|
steps: |-
|
||||||
|
- Exit ahead
|
||||||
|
- area: 357
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
# 660: escaped
|
||||||
|
- stage: 660
|
||||||
|
areas:
|
||||||
|
# 357: shaft entry
|
||||||
|
# 806: lhusu square
|
||||||
|
- area: 357
|
||||||
|
steps: |-
|
||||||
|
- North, East, South to exit
|
||||||
|
- area: 806
|
||||||
|
steps: |-
|
||||||
|
- **Skip**: 1
|
||||||
|
# 680: after lhusu 1
|
||||||
|
- stage: 680
|
||||||
|
areas:
|
||||||
|
# 806: lhusu square
|
||||||
|
- area: 806
|
||||||
|
steps: |-
|
||||||
|
- Upstairs
|
||||||
|
- **Skip**: 1
|
||||||
|
# 710: I'm Captain Basch!
|
||||||
|
- stage: 710
|
||||||
|
areas:
|
||||||
|
# 806: lhusu square
|
||||||
|
- area: 806
|
||||||
|
steps: |-
|
||||||
|
- bruh idk lmao
|
|
@ -0,0 +1,98 @@
|
||||||
|
use anyhow::{Context, Result};
|
||||||
|
use sysinfo::{PidExt, ProcessExt, ProcessRefreshKind, RefreshKind, System, SystemExt};
|
||||||
|
use vmemory::ProcessMemory;
|
||||||
|
|
||||||
|
pub struct GameState {
|
||||||
|
pub story: u16,
|
||||||
|
pub location: u16,
|
||||||
|
|
||||||
|
pid: u32,
|
||||||
|
base: usize,
|
||||||
|
base_size: usize,
|
||||||
|
mem: Vec<u8>,
|
||||||
|
proc_mem: ProcessMemory,
|
||||||
|
|
||||||
|
story_pattern: Vec<u8>,
|
||||||
|
location_pattern: Vec<u8>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GameState {
|
||||||
|
pub fn new() -> Result<Self> {
|
||||||
|
let mut sys = System::new_with_specifics(RefreshKind::new().with_processes(ProcessRefreshKind::new()));
|
||||||
|
let proc = sys.processes()
|
||||||
|
.iter()
|
||||||
|
.find(|(_, proc)| proc.name() == "FFXII_TZA.exe");
|
||||||
|
let (pid, _) = match proc {
|
||||||
|
Some(p) => p,
|
||||||
|
None => anyhow::bail!("could not find TZA process")
|
||||||
|
};
|
||||||
|
|
||||||
|
let mem = ProcessMemory::attach_process(pid.as_u32()).unwrap();
|
||||||
|
let mut base = 0;
|
||||||
|
let mut base_size = 0;
|
||||||
|
process_list::for_each_module(pid.as_u32(), |(address, size), name| {
|
||||||
|
let stem = name.file_stem().unwrap_or_default();
|
||||||
|
if stem == "FFXII_TZA" {
|
||||||
|
base = address;
|
||||||
|
base_size = size;
|
||||||
|
}
|
||||||
|
}).context("could not loop TZA modules")?;
|
||||||
|
if base == 0 || base_size == 0 {
|
||||||
|
anyhow::bail!("could not find TZA base address");
|
||||||
|
}
|
||||||
|
|
||||||
|
let tza_mem = mem.read_memory(base, base_size, false);
|
||||||
|
let story_ptr_pattern = crate::util::parse_pattern("48 8B 05 ?? ?? ?? ?? 48 85 C0 74 03 66 89 08 C3").unwrap();
|
||||||
|
let location_pattern = crate::util::parse_pattern("8B 0D ?? ?? ?? ?? FF D0 4C 89 3D ?? ?? ?? ?? 48 83 C4 30 41 5F C3").unwrap();
|
||||||
|
|
||||||
|
Ok(Self {
|
||||||
|
story: 0,
|
||||||
|
location: 0,
|
||||||
|
|
||||||
|
pid: pid.as_u32(),
|
||||||
|
base,
|
||||||
|
base_size,
|
||||||
|
mem: tza_mem,
|
||||||
|
proc_mem: mem,
|
||||||
|
|
||||||
|
story_pattern: story_ptr_pattern,
|
||||||
|
location_pattern,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn refresh(&mut self) -> Result<()> {
|
||||||
|
let story_ptr_ptr = match crate::util::find_pattern(&self.mem, &self.story_pattern) {
|
||||||
|
Some(ptr) => ptr,
|
||||||
|
None => anyhow::bail!("could not find story pointer"),
|
||||||
|
};
|
||||||
|
let location_ptr = match crate::util::find_pattern(&self.mem, &self.location_pattern) {
|
||||||
|
Some(ptr) => ptr,
|
||||||
|
None => anyhow::bail!("could not find location pointer"),
|
||||||
|
};
|
||||||
|
let story_ptr_offset = match crate::util::get_static_address(&self.mem, story_ptr_ptr, self.base) {
|
||||||
|
Some(addr) => addr,
|
||||||
|
None => anyhow::bail!("could not find story pointer offset"),
|
||||||
|
};
|
||||||
|
let location_ptr_offset = match crate::util::get_static_address(&self.mem, location_ptr, self.base) {
|
||||||
|
Some(addr) => addr,
|
||||||
|
None => anyhow::bail!("could not find location pointer offset"),
|
||||||
|
};
|
||||||
|
|
||||||
|
let story_ptr_array: [u8; 8] = self.mem[story_ptr_offset..story_ptr_offset + 8].try_into().unwrap();
|
||||||
|
let story_ptr = u64::from_le_bytes(story_ptr_array) as usize - self.base;
|
||||||
|
|
||||||
|
let story_vec = self.proc_mem.read_memory(self.base + story_ptr, 2, false);
|
||||||
|
let story_array: [u8; 2] = story_vec.try_into().map_err(|_| anyhow::anyhow!("not enough story bytes"))?;
|
||||||
|
self.story = u16::from_le_bytes(story_array);
|
||||||
|
|
||||||
|
let location_vec = self.proc_mem.read_memory(self.base + location_ptr_offset, 2, false);
|
||||||
|
let location_array: [u8; 2] = location_vec.try_into().map_err(|_| anyhow::anyhow!("not enough location bytes"))?;
|
||||||
|
self.location = u16::from_le_bytes(location_array);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn location_name(&self) -> Option<&'static str> {
|
||||||
|
crate::util::LOCATIONS.get(&self.location).map(std::ops::Deref::deref)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
use anyhow::Result;
|
||||||
|
use std::fs::File;
|
||||||
|
use std::thread;
|
||||||
|
use crate::notes::Notes;
|
||||||
|
use crate::game_state::GameState;
|
||||||
|
use crate::notes_state::NotesState;
|
||||||
|
|
||||||
|
mod notes;
|
||||||
|
mod game_state;
|
||||||
|
mod notes_state;
|
||||||
|
mod util;
|
||||||
|
|
||||||
|
fn main() -> Result<()> {
|
||||||
|
let notes: Notes = serde_yaml::from_reader(File::open("notes.yaml")?)?;
|
||||||
|
let mut game_state = GameState::new()?;
|
||||||
|
let mut notes_state = NotesState::new(¬es, &mut game_state)?;
|
||||||
|
|
||||||
|
println!("Ready");
|
||||||
|
|
||||||
|
// let mut first = true;
|
||||||
|
// let mut last_story = 0;
|
||||||
|
// let mut last_location = 0;
|
||||||
|
// let mut last_printed_location = 0;
|
||||||
|
// let mut step_idx = 23;
|
||||||
|
// let mut area_idx = 0;
|
||||||
|
// let mut current_step = ¬es.steps[0];
|
||||||
|
// let mut force_instructions = false;
|
||||||
|
|
||||||
|
loop {
|
||||||
|
notes_state.tick(&mut game_state)?;
|
||||||
|
thread::sleep(std::time::Duration::from_millis(16));
|
||||||
|
|
||||||
|
// last_story = state.story;
|
||||||
|
// last_location = state.location;
|
||||||
|
// state.refresh()?;
|
||||||
|
//
|
||||||
|
// if last_story != state.story {
|
||||||
|
// let next_step = match notes.steps.get(step_idx) {
|
||||||
|
// Some(step) => step,
|
||||||
|
// None => continue,
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// if next_step.stage == state.story {
|
||||||
|
// current_step = next_step;
|
||||||
|
// step_idx += 1;
|
||||||
|
// area_idx = 0;
|
||||||
|
// force_instructions = current_step.areas[0].area == 0 || current_step.areas[0].area == last_location;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if force_instructions || last_location != state.location {
|
||||||
|
// let next_area = match current_step.areas.get(area_idx) {
|
||||||
|
// Some(area) => area,
|
||||||
|
// None => continue,
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// if next_area.area == state.location || next_area.area == 0 {
|
||||||
|
// if first {
|
||||||
|
// first = false;
|
||||||
|
// step_idx += 1;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// area_idx += 1;
|
||||||
|
// force_instructions = false;
|
||||||
|
// if last_printed_location != next_area.area {
|
||||||
|
// println!("{}", state.location_name().unwrap_or("Unknown Location"));
|
||||||
|
// last_printed_location = state.location;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// println!("{}", next_area.steps);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
use serde::Deserialize;
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
pub struct Notes {
|
||||||
|
pub steps: Vec<Step>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
pub struct Step {
|
||||||
|
pub stage: u16,
|
||||||
|
pub areas: Vec<Area>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize, Clone)]
|
||||||
|
pub struct Area {
|
||||||
|
pub area: u16,
|
||||||
|
pub steps: String,
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
use anyhow::Result;
|
||||||
|
use crate::{GameState, Notes};
|
||||||
|
use crate::notes::{Area, Step};
|
||||||
|
|
||||||
|
pub struct NotesState<'a> {
|
||||||
|
notes: &'a Notes,
|
||||||
|
last_printed_location: u16,
|
||||||
|
last_stage: u16,
|
||||||
|
last_location: u16,
|
||||||
|
|
||||||
|
step_idx: usize,
|
||||||
|
area_idx: usize,
|
||||||
|
|
||||||
|
current_step: &'a Step,
|
||||||
|
first_step: bool,
|
||||||
|
force_print: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> NotesState<'a> {
|
||||||
|
pub fn new(notes: &'a Notes, game: &mut GameState) -> Result<Self> {
|
||||||
|
game.refresh()?;
|
||||||
|
// find first step with a matching story stage
|
||||||
|
let steps = notes.steps
|
||||||
|
.iter()
|
||||||
|
.take_while(|step| step.stage <= game.story)
|
||||||
|
.count();
|
||||||
|
let (step, step_idx, force) = if steps <= 1 {
|
||||||
|
// nothing previous OR first step
|
||||||
|
(¬es.steps[0], 0, false)
|
||||||
|
} else {
|
||||||
|
// in progress
|
||||||
|
(¬es.steps[steps - 1], steps - 1, true)
|
||||||
|
};
|
||||||
|
// find first area that matches
|
||||||
|
let area_idx = step.areas
|
||||||
|
.iter()
|
||||||
|
.position(|area| area.area == 0 || area.area == game.location)
|
||||||
|
.unwrap_or(0);
|
||||||
|
|
||||||
|
Ok(Self {
|
||||||
|
notes,
|
||||||
|
last_printed_location: 0,
|
||||||
|
last_stage: 0,
|
||||||
|
last_location: 0,
|
||||||
|
step_idx,
|
||||||
|
area_idx,
|
||||||
|
current_step: step,
|
||||||
|
first_step: true,
|
||||||
|
force_print: force,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn tick(&mut self, game: &mut GameState) -> Result<()> {
|
||||||
|
self.last_stage = game.story;
|
||||||
|
self.last_location = game.location;
|
||||||
|
game.refresh()?;
|
||||||
|
|
||||||
|
let stage_changed = self.last_stage != game.story;
|
||||||
|
let location_changed = self.last_location != game.location;
|
||||||
|
|
||||||
|
let step_advanced = stage_changed && self.change_step(game);
|
||||||
|
let area = match self.area() {
|
||||||
|
Some(area) => area.clone(),
|
||||||
|
None => return Ok(()),
|
||||||
|
};
|
||||||
|
|
||||||
|
if self.force_print || ((step_advanced || location_changed) && (game.location == area.area || area.area == 0)) {
|
||||||
|
if self.last_printed_location != game.location {
|
||||||
|
self.last_printed_location = game.location;
|
||||||
|
println!("{}", game.location_name().unwrap_or("Unknown Location"))
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("{}", area.steps);
|
||||||
|
self.area_idx += 1;
|
||||||
|
|
||||||
|
if self.first_step {
|
||||||
|
self.first_step = false;
|
||||||
|
self.step_idx += 1;
|
||||||
|
if !self.force_print {
|
||||||
|
self.area_idx = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.force_print {
|
||||||
|
self.force_print = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn area(&self) -> Option<&Area> {
|
||||||
|
self.current_step.areas.get(self.area_idx)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn change_step(&mut self, game: &mut GameState) -> bool {
|
||||||
|
let next = match self.notes.steps.get(self.step_idx) {
|
||||||
|
Some(step) => step,
|
||||||
|
None => return false,
|
||||||
|
};
|
||||||
|
|
||||||
|
if next.stage == game.story {
|
||||||
|
self.current_step = next;
|
||||||
|
self.step_idx += 1;
|
||||||
|
self.area_idx = 0;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,761 @@
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
pub fn parse_pattern(s: &str) -> Option<Vec<u8>> {
|
||||||
|
let no_whitespace = s.replace(char::is_whitespace, "");
|
||||||
|
if no_whitespace.len() % 2 == 1 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut pattern = Vec::with_capacity(no_whitespace.len() / 2);
|
||||||
|
for mut chunk in &no_whitespace.chars().chunks(2) {
|
||||||
|
let joined = chunk.join("");
|
||||||
|
if joined == "??" {
|
||||||
|
pattern.push(0);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let byte = u8::from_str_radix(&joined, 16).ok()?;
|
||||||
|
pattern.push(byte);
|
||||||
|
}
|
||||||
|
|
||||||
|
Some(pattern)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn find_pattern(mem: &[u8], pattern: &[u8]) -> Option<usize> {
|
||||||
|
if pattern.len() > mem.len() {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
let last = pattern.len() - 1;
|
||||||
|
let mut offset = 0;
|
||||||
|
let max_offset = mem.len() - pattern.len();
|
||||||
|
|
||||||
|
while offset < max_offset {
|
||||||
|
let mut position = last;
|
||||||
|
while pattern[position] == mem[position + offset] || pattern[position] == 0 {
|
||||||
|
if position == 0 {
|
||||||
|
return Some(offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
position -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_static_address(mem: &[u8], mut addr: usize, base: usize) -> Option<usize> {
|
||||||
|
loop {
|
||||||
|
addr += 1;
|
||||||
|
if addr + 4 > mem.len() {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
let array: [u8; 4] = mem[addr..addr + 4].try_into().unwrap();
|
||||||
|
let num = i32::from_le_bytes(array) as isize + addr as isize + 4 - base as isize;
|
||||||
|
if num > mem.len() as isize || num < 0 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let offset = addr as isize + i32::from_le_bytes(array) as isize;
|
||||||
|
return Some(offset as usize + 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lazy_static::lazy_static! {
|
||||||
|
pub static ref LOCATIONS: HashMap<u16, &'static str> = maplit::hashmap! {
|
||||||
|
12 => "Main Menu",
|
||||||
|
13 => "End Credits",
|
||||||
|
48 => "Stockade",
|
||||||
|
49 => "Arena",
|
||||||
|
51 => "Oubliette",
|
||||||
|
53 => "The Lightworks",
|
||||||
|
54 => "Great Eastern Passage",
|
||||||
|
55 => "Op Sector 36",
|
||||||
|
56 => "Special Op Sector 3",
|
||||||
|
57 => "Op Sector 37",
|
||||||
|
58 => "Op Sector 29",
|
||||||
|
61 => "Great Central Passage",
|
||||||
|
62 => "The Zeviah Subterrane",
|
||||||
|
66 => "North-South Junction",
|
||||||
|
69 => "Terminus No. 4",
|
||||||
|
70 => "Terminus No. 4 Adjunct",
|
||||||
|
71 => "Terminus No. 7",
|
||||||
|
124 => "Observation Parlour",
|
||||||
|
125 => "Sky Saloon",
|
||||||
|
126 => "Air Deck",
|
||||||
|
129 => "South Bank Village",
|
||||||
|
130 => "North Bank Village",
|
||||||
|
132 => "The Yoma",
|
||||||
|
133 => "Broken Sands",
|
||||||
|
137 => "Uazcuff Hills",
|
||||||
|
138 => "Sundered Earth",
|
||||||
|
139 => "The Highlands",
|
||||||
|
140 => "Fields of Eternity",
|
||||||
|
141 => "The Shaded Path",
|
||||||
|
142 => "The Chosen Path",
|
||||||
|
144 => "The Skytrail",
|
||||||
|
145 => "Realm of the Elder Dream",
|
||||||
|
146 => "The Lost Way",
|
||||||
|
147 => "Garden of Life's Circle",
|
||||||
|
148 => "Oliphzak Rise",
|
||||||
|
149 => "The Nameless Spring",
|
||||||
|
151 => "The Omen-Spur",
|
||||||
|
152 => "Trunkwall Road",
|
||||||
|
153 => "Diverging Way",
|
||||||
|
154 => "Sun-dappled Path",
|
||||||
|
155 => "Garden of Decay",
|
||||||
|
156 => "Path of Hours",
|
||||||
|
157 => "Quietened Trace",
|
||||||
|
158 => "Grand Bower",
|
||||||
|
162 => "Corridor of Ages",
|
||||||
|
163 => "Piebald Path",
|
||||||
|
167 => "Greencrag",
|
||||||
|
168 => "The Muted Scarp",
|
||||||
|
169 => "Vale of Lingering Sorrow",
|
||||||
|
170 => "Hope's Reach",
|
||||||
|
171 => "Echoes of the Past",
|
||||||
|
175 => "The Slumbermead",
|
||||||
|
176 => "Succor Midst Sorrow",
|
||||||
|
177 => "The Fog Mutters",
|
||||||
|
178 => "Overlooking Eternity",
|
||||||
|
179 => "Lifeless Strand",
|
||||||
|
180 => "Field of the Fallen Lord",
|
||||||
|
184 => "Falls of Time",
|
||||||
|
185 => "Mirror of the Soul",
|
||||||
|
186 => "The Acolyte's Burden",
|
||||||
|
187 => "Doubt Abandoned",
|
||||||
|
188 => "Skybent Chamber",
|
||||||
|
192 => "Destiny's March",
|
||||||
|
193 => "Temptation Eluded",
|
||||||
|
194 => "Chamber of the Chosen",
|
||||||
|
198 => "Hall of Shadowlight",
|
||||||
|
200 => "Hall of Lambent Darkness",
|
||||||
|
202 => "Hall of the Wroth God",
|
||||||
|
209 => "Southern Skirts",
|
||||||
|
210 => "Summit Path",
|
||||||
|
215 => "Rays of Ashen Light",
|
||||||
|
216 => "Empyrean Way",
|
||||||
|
217 => "Skyreach Ridge",
|
||||||
|
218 => "Trail of Sky-flung Stone",
|
||||||
|
219 => "Northern Skirts",
|
||||||
|
220 => "Halny Crossing",
|
||||||
|
223 => "Empyrean Seat",
|
||||||
|
227 => "The Stepping",
|
||||||
|
228 => "Yardang Labyrinth",
|
||||||
|
229 => "Sand-swept Naze",
|
||||||
|
230 => "Banks of the Nebra",
|
||||||
|
231 => "Passage Entrance",
|
||||||
|
232 => "Murmuring Defile",
|
||||||
|
233 => "Outpost",
|
||||||
|
236 => "Throne Road",
|
||||||
|
237 => "Warrior's Wash",
|
||||||
|
238 => "Gizas North Bank",
|
||||||
|
239 => "Toam Hills",
|
||||||
|
243 => "Nomad Village",
|
||||||
|
247 => "Starfall Field",
|
||||||
|
248 => "Crystal Glade",
|
||||||
|
249 => "Gizas South Bank",
|
||||||
|
253 => "Throne Road",
|
||||||
|
254 => "Warrior's Wash",
|
||||||
|
255 => "Gizas North Bank",
|
||||||
|
256 => "Toam Hills",
|
||||||
|
260 => "Nomad Village",
|
||||||
|
264 => "Starfall Field",
|
||||||
|
265 => "Crystal Glade",
|
||||||
|
266 => "Gizas South Bank",
|
||||||
|
270 => "Tracks of the Beast",
|
||||||
|
274 => "Aerial Gardens",
|
||||||
|
275 => "Inner Ward",
|
||||||
|
279 => "Lower Apartments",
|
||||||
|
280 => "Upper Apartments",
|
||||||
|
282 => "The Highhall",
|
||||||
|
286 => "Energy Transitarium",
|
||||||
|
289 => "North End",
|
||||||
|
290 => "Muthru Bazaar",
|
||||||
|
291 => "East End",
|
||||||
|
292 => "Southern Plaza",
|
||||||
|
295 => "Amal's Weaponry",
|
||||||
|
296 => "Panamis's Protectives",
|
||||||
|
297 => "Migelo's Sundries",
|
||||||
|
298 => "Yugri's Magicks",
|
||||||
|
299 => "Batahn's Technicks",
|
||||||
|
300 => "Yamoora's Gambits",
|
||||||
|
301 => "Samalzalam Manor",
|
||||||
|
302 => "The Clan Hall",
|
||||||
|
304 => "The Sandsea",
|
||||||
|
305 => "Eastgate",
|
||||||
|
306 => "Southgate",
|
||||||
|
307 => "Westgate",
|
||||||
|
311 => "Central Spur Stairs",
|
||||||
|
312 => "East Waterway Control",
|
||||||
|
313 => "North Spur Sluiceway",
|
||||||
|
314 => "East Spur Stairs",
|
||||||
|
315 => "Northern Sluiceway",
|
||||||
|
316 => "East Waterway Control",
|
||||||
|
318 => "No. 11 Channel",
|
||||||
|
319 => "East Sluice Control",
|
||||||
|
320 => "West Sluice Control",
|
||||||
|
321 => "No. 10 Channel",
|
||||||
|
322 => "Central Waterway Control",
|
||||||
|
326 => "Southern Sluiceway",
|
||||||
|
329 => "Overflow Cloaca",
|
||||||
|
332 => "A Vikaari Bhrum",
|
||||||
|
333 => "Trahk Pis Praa",
|
||||||
|
334 => "Sthaana Pisces",
|
||||||
|
335 => "Dha Vikaari Jula",
|
||||||
|
336 => "Trahk Jilaam Praa'dii",
|
||||||
|
337 => "Sthaana Aries",
|
||||||
|
341 => "Crystal Core",
|
||||||
|
342 => "No. 1 Cloaca",
|
||||||
|
345 => "Galtea Downs",
|
||||||
|
346 => "Corridor of Sand",
|
||||||
|
347 => "Shimmering Horizons",
|
||||||
|
348 => "The Midfault",
|
||||||
|
349 => "Windtrace Dunes",
|
||||||
|
350 => "The Western Divide",
|
||||||
|
354 => "Wyrm's Nest",
|
||||||
|
357 => "Shaft Entry",
|
||||||
|
358 => "Oltam Span",
|
||||||
|
359 => "Transitway 1",
|
||||||
|
360 => "Transitway 2",
|
||||||
|
365 => "Shunia Twinspan",
|
||||||
|
366 => "Site 2",
|
||||||
|
367 => "Site 3",
|
||||||
|
369 => "Tasche Span",
|
||||||
|
372 => "Site 9",
|
||||||
|
374 => "Site 11",
|
||||||
|
376 => "Site 7",
|
||||||
|
379 => "Platform 1 - East Tanks",
|
||||||
|
380 => "Platform 1 - Refinery",
|
||||||
|
381 => "East Junction",
|
||||||
|
382 => "Primary Tank Complex",
|
||||||
|
383 => "Central Junction",
|
||||||
|
384 => "Platform 1 - South Tanks",
|
||||||
|
385 => "Platform 2 - Refinery",
|
||||||
|
386 => "Yensa Border Tunnel",
|
||||||
|
387 => "South Tank Approach",
|
||||||
|
390 => "The Urutan-Yensa Sea",
|
||||||
|
391 => "Withering Shores",
|
||||||
|
392 => "Augur Hill",
|
||||||
|
393 => "Yellow Sands",
|
||||||
|
394 => "The Sandscale Bank",
|
||||||
|
398 => "Demesne of the Sandqueen",
|
||||||
|
399 => "Trail of Fading Warmth",
|
||||||
|
400 => "Simoon Bluff",
|
||||||
|
403 => "Valley of the Dead",
|
||||||
|
406 => "Hall of the Destroyer",
|
||||||
|
407 => "Hall of the Sentinel",
|
||||||
|
410 => "Royal Passage",
|
||||||
|
411 => "Southfall Passage",
|
||||||
|
412 => "Northfall Passage",
|
||||||
|
415 => "Cloister of Flame",
|
||||||
|
418 => "Chamber of First Light",
|
||||||
|
421 => "Hall of Effulgent Light",
|
||||||
|
422 => "Cloister of Distant Song",
|
||||||
|
426 => "Cloister of the Highborn",
|
||||||
|
430 => "Hall of the Ivory Covenant",
|
||||||
|
431 => "Hall of Slumbering Might",
|
||||||
|
438 => "The Crucible",
|
||||||
|
441 => "Cloister of Solace",
|
||||||
|
444 => "Cloister of Reason",
|
||||||
|
447 => "Paths of Chained Light",
|
||||||
|
448 => "The Needlebrake",
|
||||||
|
449 => "Whisperleaf Way",
|
||||||
|
450 => "The Parting Glade",
|
||||||
|
453 => "The Rustling Chapel",
|
||||||
|
456 => "Dell of the Dreamer",
|
||||||
|
459 => "The Branchway",
|
||||||
|
460 => "The Greenswathe",
|
||||||
|
463 => "Fading Vale",
|
||||||
|
464 => "Head of the Silverflow",
|
||||||
|
465 => "Freezing Gorge",
|
||||||
|
468 => "Frozen Brook",
|
||||||
|
469 => "Icebound Flow",
|
||||||
|
470 => "Karydine Glacier",
|
||||||
|
473 => "Path of the Firstfall",
|
||||||
|
474 => "Spine of the Icewyrm",
|
||||||
|
475 => "Silverflow's End",
|
||||||
|
478 => "The Reseta Strand",
|
||||||
|
479 => "Pora-Pora Sands",
|
||||||
|
480 => "The Mauleia Strand",
|
||||||
|
481 => "Cape Uahuk",
|
||||||
|
482 => "Cape Tialan",
|
||||||
|
483 => "Kaukula Pass",
|
||||||
|
484 => "The Hakawea Shore",
|
||||||
|
488 => "Hunters' Camp",
|
||||||
|
491 => "Caima Hills",
|
||||||
|
492 => "The Vaddu Strand",
|
||||||
|
493 => "Limatra Hills",
|
||||||
|
494 => "Rava's Pass",
|
||||||
|
497 => "Old Elanise Road",
|
||||||
|
498 => "Crossfield",
|
||||||
|
499 => "The Terraced Bank",
|
||||||
|
500 => "Journey's Rest",
|
||||||
|
503 => "North Liavell Hills",
|
||||||
|
504 => "South Liavell Hills",
|
||||||
|
505 => "Feddik River",
|
||||||
|
506 => "The Northsward",
|
||||||
|
509 => "Footfalls of the Past",
|
||||||
|
511 => "Echoes from Time's Garden",
|
||||||
|
517 => "City of Other Days",
|
||||||
|
518 => "Path of Hidden Blessing",
|
||||||
|
522 => "They Who Thirst Not",
|
||||||
|
525 => "Field of Fallen Wings",
|
||||||
|
526 => "The Switchback",
|
||||||
|
527 => "Haulo Green",
|
||||||
|
530 => "Dagan Flats",
|
||||||
|
531 => "Field of Light Winds",
|
||||||
|
532 => "The Greensnake",
|
||||||
|
533 => "Sunlit Path",
|
||||||
|
536 => "The Shred",
|
||||||
|
539 => "Walk of Flitting Rifts",
|
||||||
|
540 => "Walk of Stolen Truths",
|
||||||
|
541 => "Walk of Dancing Shadow",
|
||||||
|
542 => "Antiquity's End",
|
||||||
|
545 => "Redolent Glade",
|
||||||
|
548 => "White Magick's Embrace",
|
||||||
|
549 => "Ice Field of Clearsight",
|
||||||
|
550 => "The Edge of Reason",
|
||||||
|
552 => "Port Launch",
|
||||||
|
555 => "Port Section",
|
||||||
|
556 => "Large Freight Stores",
|
||||||
|
557 => "Starboard Section",
|
||||||
|
558 => "Sub-control Room",
|
||||||
|
561 => "Airship Berth Access",
|
||||||
|
564 => "Central Brig Access",
|
||||||
|
567 => "Cellar Stores",
|
||||||
|
568 => "Cellars",
|
||||||
|
569 => "Lower Halls",
|
||||||
|
570 => "Secret Passage",
|
||||||
|
571 => "Treasure Room No. 8",
|
||||||
|
572 => "The Garden Stairs",
|
||||||
|
576 => "Invitation to Heresy",
|
||||||
|
577 => "Sandfalls",
|
||||||
|
578 => "Hourglass Basin",
|
||||||
|
581 => "The Undershore",
|
||||||
|
582 => "Halls of Ardent Darkness",
|
||||||
|
585 => "The Balamka Fault",
|
||||||
|
586 => "Drybeam Cavern",
|
||||||
|
587 => "Darkened Wharf",
|
||||||
|
588 => "Canopy of Clay",
|
||||||
|
590 => "Athroza Quicksands",
|
||||||
|
593 => "Walk of Sky",
|
||||||
|
594 => "Walk of Mind",
|
||||||
|
597 => "Ward of Measure",
|
||||||
|
598 => "Cold Distance",
|
||||||
|
599 => "Walk of Prescience",
|
||||||
|
600 => "Walk of Reason",
|
||||||
|
603 => "Ward of Steel",
|
||||||
|
606 => "Ward of Velitation",
|
||||||
|
607 => "Walk of Torn Illusion",
|
||||||
|
608 => "Walk of Revelation",
|
||||||
|
609 => "Ward of the Sword-King",
|
||||||
|
612 => "Hall of Worth",
|
||||||
|
615 => "Vault of the Champion",
|
||||||
|
618 => "Throne of Veiled Gods",
|
||||||
|
621 => "A Prama Vikaari",
|
||||||
|
622 => "Kabonii Jilaam Pratii'vaa",
|
||||||
|
623 => "Kabonii Jilaam Avaa",
|
||||||
|
624 => "Dha Vikaari Bhrum",
|
||||||
|
625 => "Sthaana Scorpio",
|
||||||
|
626 => "A Vikaari Dhebon",
|
||||||
|
630 => "West Barbican",
|
||||||
|
631 => "Jajim Bazaar",
|
||||||
|
632 => "West Ward",
|
||||||
|
635 => "Grand Arcade",
|
||||||
|
636 => "Highgarden Terrace",
|
||||||
|
640 => "Molberry",
|
||||||
|
641 => "Trant",
|
||||||
|
642 => "Charlotte's Magickery",
|
||||||
|
643 => "Bulward's Technicks",
|
||||||
|
666 => "Womb of the Sun-cryst",
|
||||||
|
668 => "Womb of the Sun-cryst",
|
||||||
|
670 => "Heaven's Challenge",
|
||||||
|
682 => "Hell's Challenge",
|
||||||
|
686 => "Gate of Earth",
|
||||||
|
687 => "Gate of Water",
|
||||||
|
690 => "The Trimahla Water-Steps",
|
||||||
|
691 => "The Aadha Water-Steps",
|
||||||
|
694 => "The Haalmikah Water-Steps",
|
||||||
|
695 => "Gate of Fire",
|
||||||
|
698 => "Gate of Wind",
|
||||||
|
701 => "North Sprawl",
|
||||||
|
702 => "South Sprawl",
|
||||||
|
703 => "Dalan's House",
|
||||||
|
704 => "Residence",
|
||||||
|
709 => "The Black Watch",
|
||||||
|
710 => "The Confiscatory",
|
||||||
|
712 => "North Entrance",
|
||||||
|
713 => "Pithead Junction A",
|
||||||
|
714 => "Phase 1 Shaft",
|
||||||
|
715 => "Phase 1 Dig",
|
||||||
|
716 => "Crossover A",
|
||||||
|
717 => "Pithead Junction B",
|
||||||
|
718 => "Staging Shaft",
|
||||||
|
719 => "Crossover B",
|
||||||
|
722 => "Ore Separation",
|
||||||
|
725 => "Phase 2 Dig",
|
||||||
|
726 => "Crossover C",
|
||||||
|
727 => "Pithead Junction C",
|
||||||
|
728 => "Phase 2 Shaft",
|
||||||
|
730 => "Special Charter Shaft",
|
||||||
|
733 => "Special Charter Dig",
|
||||||
|
736 => "Hall of the Light",
|
||||||
|
737 => "Hall of the Light",
|
||||||
|
738 => "Temple Grounds",
|
||||||
|
741 => "Temple Approach",
|
||||||
|
742 => "Sand-strewn Pass",
|
||||||
|
745 => "Nilbasse",
|
||||||
|
746 => "Rienna",
|
||||||
|
747 => "Vint's Armaments",
|
||||||
|
748 => "Granch's Requisites",
|
||||||
|
749 => "Lebleu's Gambits",
|
||||||
|
751 => "Banks of the Sogoht",
|
||||||
|
752 => "Lull of the Land",
|
||||||
|
753 => "The Elderknoll",
|
||||||
|
756 => "Tsenoble",
|
||||||
|
762 => "Alley of Muted Sighs",
|
||||||
|
763 => "Alley of Low Whispers",
|
||||||
|
766 => "Fane of the Path",
|
||||||
|
767 => "The Spiritwood",
|
||||||
|
768 => "Road of Verdant Praise",
|
||||||
|
774 => "Periphery",
|
||||||
|
775 => "Catwalk",
|
||||||
|
776 => "Antechamber",
|
||||||
|
777 => "Antechamber",
|
||||||
|
779 => "Central Lift",
|
||||||
|
782 => "Central Shaft",
|
||||||
|
785 => "Cannon Superstructure",
|
||||||
|
788 => "Aerodrome (Rabanastre)",
|
||||||
|
791 => "Aerodrome (Bhujerba)",
|
||||||
|
794 => "Aerodrome (Archades)",
|
||||||
|
797 => "Aerodrome (Balfonheim Port)",
|
||||||
|
800 => "Aerodrome (Nalbina Town)",
|
||||||
|
803 => "Travica Way",
|
||||||
|
804 => "Cloudborne Row",
|
||||||
|
805 => "Miners' End",
|
||||||
|
806 => "Lhusu Square",
|
||||||
|
809 => "Khus Skygrounds",
|
||||||
|
810 => "Kaff Terrace",
|
||||||
|
813 => "Targe's Arms",
|
||||||
|
814 => "Rithil's Protectives",
|
||||||
|
816 => "Mait's Magicks",
|
||||||
|
817 => "Clio's Technicks",
|
||||||
|
818 => "Bashketi's Gambits",
|
||||||
|
819 => "The Staras Residence",
|
||||||
|
820 => "The Cloudborne",
|
||||||
|
823 => "Sea Breeze Lane",
|
||||||
|
824 => "Gallerina Marketplace",
|
||||||
|
825 => "Quayside Court",
|
||||||
|
826 => "Saccio Lane",
|
||||||
|
827 => "Chivany Breakwater",
|
||||||
|
828 => "Canal Lane",
|
||||||
|
833 => "Beruny's Armaments",
|
||||||
|
834 => "Odo's Technicks",
|
||||||
|
835 => "Port Villa",
|
||||||
|
836 => "The Whitecap",
|
||||||
|
837 => "Port Villa",
|
||||||
|
838 => "No. 11 Channel",
|
||||||
|
839 => "No. 11 Channel",
|
||||||
|
840 => "East Sluice Control",
|
||||||
|
841 => "Southern Sluiceway",
|
||||||
|
842 => "West Sluice Control",
|
||||||
|
843 => "No. 10 Channel",
|
||||||
|
844 => "No. 10 Channel",
|
||||||
|
845 => "No. 3 Cloaca Spur",
|
||||||
|
846 => "No. 3 Cloaca Spur",
|
||||||
|
847 => "No. 1 Cloaca",
|
||||||
|
848 => "No. 4 Cloaca Spur",
|
||||||
|
849 => "No. 4 Cloaca Spur",
|
||||||
|
850 => "Central Waterway Control",
|
||||||
|
854 => "C.D.B.",
|
||||||
|
856 => "Dalan's Marker",
|
||||||
|
871 => "Bridge",
|
||||||
|
872 => "Battle Launch",
|
||||||
|
876 => "Brig No. 1",
|
||||||
|
888 => "Crystal Peak",
|
||||||
|
891 => "East-West Bypass",
|
||||||
|
892 => "The Zeviah Span",
|
||||||
|
893 => "West Annex",
|
||||||
|
894 => "Terminus No. 7 Adjunct",
|
||||||
|
895 => "Special Op Sector 5",
|
||||||
|
898 => "Colosseum",
|
||||||
|
901 => "Lasche Span",
|
||||||
|
902 => "Site 5",
|
||||||
|
903 => "Site 6 South",
|
||||||
|
904 => "Site 6 North",
|
||||||
|
905 => "Staging Area",
|
||||||
|
908 => "Living Chasm",
|
||||||
|
916 => "Siti Bhrusuna",
|
||||||
|
926 => "A Vikaari Kabonii",
|
||||||
|
927 => "Sthaana Cancer",
|
||||||
|
928 => "Bhrum Pis Avaa",
|
||||||
|
929 => "Bhrum Pis Pratii",
|
||||||
|
930 => "Dha Vikaari Trahk",
|
||||||
|
933 => "Site 2",
|
||||||
|
934 => "Shunia Twinspan",
|
||||||
|
935 => "Transitway 1",
|
||||||
|
936 => "Oltam Span",
|
||||||
|
939 => "Dha Vikaari Kabonii",
|
||||||
|
940 => "A Vikaari Kanbhru Ra",
|
||||||
|
941 => "Dhebon Jilaam Praa'dii",
|
||||||
|
942 => "Dhebon Jilaam Pratii'dii",
|
||||||
|
943 => "Sthaana Sagittarius",
|
||||||
|
944 => "A Vikaari Sirhru Pratii",
|
||||||
|
945 => "A Vikaari Sirhru Praa",
|
||||||
|
946 => "Dhebon Jilaam Avaapratii",
|
||||||
|
947 => "A Vikaari Sirhru Si",
|
||||||
|
949 => "Dhebon Jilaam Avaa",
|
||||||
|
952 => "Dha Vikaari Dhebon Praa",
|
||||||
|
953 => "Dha Vikaari Dhebon Pratii",
|
||||||
|
954 => "Sirhru Phullam Praa",
|
||||||
|
955 => "Sthaana Leo",
|
||||||
|
956 => "Sirhru Phullam Praa'vaa",
|
||||||
|
957 => "Sirhru Phullam Pratii'vaa",
|
||||||
|
958 => "Sthaana Gemini",
|
||||||
|
959 => "Sirhru Phullam Udiipratii",
|
||||||
|
960 => "Sirhru Jilaam Praa'dii",
|
||||||
|
961 => "Sirhru Jilaam Pratii'dii",
|
||||||
|
962 => "Sirhru Jilaam Praa",
|
||||||
|
963 => "Sirhru Jilaam Pratii",
|
||||||
|
964 => "Sirhru Jilaam Praa'vaa",
|
||||||
|
965 => "Sirhru Jilaam Pratii'vaa",
|
||||||
|
966 => "Sirhru Pis Praa",
|
||||||
|
967 => "Sirhru Pis Pratii",
|
||||||
|
968 => "Sirhru Pis Avaa",
|
||||||
|
969 => "Sirhru Jilaam Avaapratii",
|
||||||
|
970 => "Sirhru Jilaam Avaapraa",
|
||||||
|
971 => "A Vikaari Uldobi",
|
||||||
|
972 => "A Vikaari Uldobi Si",
|
||||||
|
973 => "Dha Vikaari Dhebon Si",
|
||||||
|
979 => "Dha Vikaari Sirhru",
|
||||||
|
980 => "Sthaana Virgo",
|
||||||
|
981 => "Uldobi Jilaam Praa'dii",
|
||||||
|
982 => "Uldobi Jilaam Pratii",
|
||||||
|
983 => "Uldobi Jilaam Praa",
|
||||||
|
984 => "Uldobi Phullam Pratii'dii",
|
||||||
|
985 => "Sthaana Capricorn",
|
||||||
|
986 => "Dha Vikaari Sirhru Si",
|
||||||
|
987 => "Uldobi Phullam Udiipraa",
|
||||||
|
988 => "Uldobi Phullam Pratii'vaa",
|
||||||
|
989 => "Uldobi Phullam Praa'vaa",
|
||||||
|
990 => "Uldobi Phullam Pratii",
|
||||||
|
991 => "Sthaana Taurus",
|
||||||
|
992 => "Sthaana Libra",
|
||||||
|
993 => "Uldobi Jilaam Praa'vaa",
|
||||||
|
994 => "Uldobi Jilaam Pratii'vaa",
|
||||||
|
995 => "Uldobi Jilaam Avaa",
|
||||||
|
996 => "A Vikaari Kanbhru",
|
||||||
|
1002 => "Dha Vikaari Uldobi",
|
||||||
|
1003 => "Kanbhru Pis",
|
||||||
|
1004 => "Dha Vikaari Dhebon Ra",
|
||||||
|
1005 => "Sthaana Aquarius",
|
||||||
|
1008 => "66th Floor",
|
||||||
|
1009 => "Rm 6613 West",
|
||||||
|
1010 => "Rm 6613 East",
|
||||||
|
1011 => "Rm 6612 West",
|
||||||
|
1013 => "Rm 6611 West",
|
||||||
|
1014 => "Rm 6611 East",
|
||||||
|
1015 => "Rm 6602 West",
|
||||||
|
1016 => "Rm 6601 West",
|
||||||
|
1017 => "Rm 6602 East",
|
||||||
|
1018 => "Rm 6601 East",
|
||||||
|
1019 => "67th Floor",
|
||||||
|
1020 => "Rm 6711 West",
|
||||||
|
1021 => "Rm 6711 East",
|
||||||
|
1023 => "Rm 6703 West",
|
||||||
|
1024 => "Rm 6704 East",
|
||||||
|
1025 => "Rm 6703 East",
|
||||||
|
1026 => "Rm 6702 West",
|
||||||
|
1027 => "Rm 6701 West",
|
||||||
|
1028 => "Rm 6702 East",
|
||||||
|
1030 => "68th Floor",
|
||||||
|
1031 => "69th Floor",
|
||||||
|
1036 => "66th Floor",
|
||||||
|
1037 => "Rm 6613 West",
|
||||||
|
1038 => "Rm 6613 East",
|
||||||
|
1039 => "Rm 6612 West",
|
||||||
|
1041 => "Rm 6611 West",
|
||||||
|
1042 => "Rm 6611 East",
|
||||||
|
1043 => "Rm 6602 West",
|
||||||
|
1044 => "Rm 6601 West",
|
||||||
|
1045 => "Rm 6602 East",
|
||||||
|
1046 => "Rm 6601 East",
|
||||||
|
1047 => "70th Floor",
|
||||||
|
1048 => "Rm 7002 West",
|
||||||
|
1049 => "Rm 7001 West",
|
||||||
|
1050 => "Rm 7002 East",
|
||||||
|
1054 => "67th Floor",
|
||||||
|
1055 => "Rm 6711 West",
|
||||||
|
1056 => "Rm 6711 East",
|
||||||
|
1058 => "Rm 6703 West",
|
||||||
|
1059 => "Rm 6704 East",
|
||||||
|
1060 => "Rm 6703 East",
|
||||||
|
1061 => "Rm 6702 West",
|
||||||
|
1062 => "Rm 6701 West",
|
||||||
|
1063 => "Rm 6702 East",
|
||||||
|
1067 => "68th Floor",
|
||||||
|
1068 => "Rm 6814 West",
|
||||||
|
1069 => "Rm 6814 East",
|
||||||
|
1070 => "Rm 6813 West",
|
||||||
|
1071 => "Rm 6813 East",
|
||||||
|
1072 => "Rm 6812 West",
|
||||||
|
1073 => "Rm 6812 East",
|
||||||
|
1074 => "Rm 6811 West",
|
||||||
|
1075 => "Rm 6811 East",
|
||||||
|
1076 => "Rm 6804 West",
|
||||||
|
1077 => "Rm 6803 West",
|
||||||
|
1078 => "Rm 6804 East",
|
||||||
|
1079 => "Rm 6803 East",
|
||||||
|
1080 => "Rm 6802 West",
|
||||||
|
1081 => "Rm 6801 West",
|
||||||
|
1082 => "Rm 6802 East",
|
||||||
|
1083 => "Rm 6801 East",
|
||||||
|
1088 => "Rm 6912 East",
|
||||||
|
1089 => "Rm 6911 West",
|
||||||
|
1091 => "Rm 6904 West",
|
||||||
|
1094 => "Rm 6903 East",
|
||||||
|
1095 => "Rm 6902 West",
|
||||||
|
1096 => "Rm 6901 West",
|
||||||
|
1098 => "Rm 6901 East",
|
||||||
|
1101 => "The Wellspring",
|
||||||
|
1102 => "Horizon's Break",
|
||||||
|
1103 => "The Reach",
|
||||||
|
1104 => "Reach of the Damned",
|
||||||
|
1105 => "Reach of the Occult",
|
||||||
|
1111 => "Wellspring Labyrinth",
|
||||||
|
1113 => "Dunes of Profaning Wind",
|
||||||
|
1114 => "Blackrock Vault",
|
||||||
|
1115 => "Wellspring Ravel - 1st Flight",
|
||||||
|
1116 => "Wellspring Ravel - 2nd Flight",
|
||||||
|
1118 => "Wellspring Ravel - 3rd Flight",
|
||||||
|
1119 => "Wellspring Ravel - 4th Flight",
|
||||||
|
1121 => "Marsh of Profaning Wind",
|
||||||
|
1122 => "Horizon's Cusp",
|
||||||
|
1123 => "Penumbra - Interior",
|
||||||
|
1124 => "Penumbra - North",
|
||||||
|
1125 => "Penumbra - South",
|
||||||
|
1126 => "Umbra - Interior",
|
||||||
|
1127 => "Umbra - North",
|
||||||
|
1128 => "Umbra - South",
|
||||||
|
1129 => "Abyssal - Interior",
|
||||||
|
1130 => "Abyssal - North",
|
||||||
|
1131 => "Abyssal - South",
|
||||||
|
1132 => "Cleft of Profaning Wind",
|
||||||
|
1133 => "The Bounds of Truth",
|
||||||
|
1134 => "Station of Banishment",
|
||||||
|
1136 => "Station of Suffering",
|
||||||
|
1138 => "Station of Ascension",
|
||||||
|
1140 => "Spire Ravel - 1st Flight",
|
||||||
|
1141 => "Spire Ravel - 2nd Flight",
|
||||||
|
1143 => "Empyrean Ravel",
|
||||||
|
1145 => "Overflow Cloaca",
|
||||||
|
1150 => "Air Deck",
|
||||||
|
1151 => "Babbling Vale",
|
||||||
|
1153 => "Withering Shores",
|
||||||
|
1155 => "Stage 1",
|
||||||
|
1156 => "Stage 2",
|
||||||
|
1157 => "Stage 3",
|
||||||
|
1158 => "Stage 4",
|
||||||
|
1159 => "Stage 5",
|
||||||
|
1163 => "Stage 6",
|
||||||
|
1164 => "Stage 7",
|
||||||
|
1165 => "Stage 8",
|
||||||
|
1166 => "Stage 9",
|
||||||
|
1167 => "Stage 10",
|
||||||
|
1171 => "Stage 11",
|
||||||
|
1172 => "Stage 12",
|
||||||
|
1173 => "Stage 13",
|
||||||
|
1174 => "Stage 14",
|
||||||
|
1175 => "Stage 15",
|
||||||
|
1179 => "Stage 16",
|
||||||
|
1180 => "Stage 17",
|
||||||
|
1181 => "Stage 18",
|
||||||
|
1182 => "Stage 19",
|
||||||
|
1183 => "Stage 20",
|
||||||
|
1187 => "Stage 21",
|
||||||
|
1188 => "Stage 22",
|
||||||
|
1189 => "Stage 23",
|
||||||
|
1190 => "Stage 24",
|
||||||
|
1191 => "Stage 25",
|
||||||
|
1195 => "Stage 26",
|
||||||
|
1196 => "Stage 27",
|
||||||
|
1197 => "Stage 28",
|
||||||
|
1198 => "Stage 29",
|
||||||
|
1199 => "Stage 30",
|
||||||
|
1203 => "Stage 31",
|
||||||
|
1204 => "Stage 32",
|
||||||
|
1205 => "Stage 33",
|
||||||
|
1206 => "Stage 34",
|
||||||
|
1207 => "Stage 35",
|
||||||
|
1211 => "Stage 36",
|
||||||
|
1212 => "Stage 37",
|
||||||
|
1213 => "Stage 38",
|
||||||
|
1214 => "Stage 39",
|
||||||
|
1215 => "Stage 40",
|
||||||
|
1219 => "Stage 41",
|
||||||
|
1220 => "Stage 42",
|
||||||
|
1221 => "Stage 43",
|
||||||
|
1222 => "Stage 44",
|
||||||
|
1223 => "Stage 45",
|
||||||
|
1227 => "Stage 46",
|
||||||
|
1228 => "Stage 47",
|
||||||
|
1229 => "Stage 48",
|
||||||
|
1230 => "Stage 49",
|
||||||
|
1231 => "Stage 50",
|
||||||
|
1235 => "Stage 51",
|
||||||
|
1236 => "Stage 52",
|
||||||
|
1237 => "Stage 53",
|
||||||
|
1238 => "Stage 54",
|
||||||
|
1239 => "Stage 55",
|
||||||
|
1243 => "Stage 56",
|
||||||
|
1244 => "Stage 57",
|
||||||
|
1245 => "Stage 58",
|
||||||
|
1246 => "Stage 59",
|
||||||
|
1247 => "Stage 60",
|
||||||
|
1251 => "Stage 61",
|
||||||
|
1252 => "Stage 62",
|
||||||
|
1253 => "Stage 63",
|
||||||
|
1254 => "Stage 64",
|
||||||
|
1255 => "Stage 65",
|
||||||
|
1259 => "Stage 66",
|
||||||
|
1260 => "Stage 67",
|
||||||
|
1261 => "Stage 68",
|
||||||
|
1262 => "Stage 69",
|
||||||
|
1263 => "Stage 70",
|
||||||
|
1267 => "Stage 71",
|
||||||
|
1268 => "Stage 72",
|
||||||
|
1269 => "Stage 73",
|
||||||
|
1270 => "Stage 74",
|
||||||
|
1271 => "Stage 75",
|
||||||
|
1275 => "Stage 76",
|
||||||
|
1276 => "Stage 77",
|
||||||
|
1277 => "Stage 78",
|
||||||
|
1278 => "Stage 79",
|
||||||
|
1279 => "Stage 80",
|
||||||
|
1283 => "Stage 81",
|
||||||
|
1284 => "Stage 82",
|
||||||
|
1285 => "Stage 83",
|
||||||
|
1286 => "Stage 84",
|
||||||
|
1287 => "Stage 85",
|
||||||
|
1291 => "Stage 86",
|
||||||
|
1292 => "Stage 87",
|
||||||
|
1293 => "Stage 88",
|
||||||
|
1294 => "Stage 89",
|
||||||
|
1295 => "Stage 90",
|
||||||
|
1299 => "Stage 91",
|
||||||
|
1300 => "Stage 92",
|
||||||
|
1301 => "Stage 93",
|
||||||
|
1302 => "Stage 94",
|
||||||
|
1303 => "Stage 95",
|
||||||
|
1307 => "Stage 96",
|
||||||
|
1308 => "Stage 97",
|
||||||
|
1309 => "Stage 98",
|
||||||
|
1310 => "Stage 99",
|
||||||
|
1311 => "Stage 100",
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue