Compare commits

...

358 Commits

Author SHA1 Message Date
Liza 2389beb056
Handle certain interaction interruptions 2024-09-19 00:54:21 +02:00
Liza e3fee58bd0
EW side story updates 2024-09-19 00:00:33 +02:00
Liza dfd38a311b
Rename task stuff 2024-09-19 00:00:16 +02:00
Liza b85ab8afe7
Task logc fixes 2024-09-18 22:46:52 +02:00
Liza 7e9070950e
Make task logic stateless to support rewind 2024-09-18 22:40:12 +02:00
Liza 721f9617a3
Handle certain interaction interruptions 2024-09-18 00:31:27 +02:00
Liza 5288cc6e31
Handle 'Action canceled, you are under attack' while e.g. talking to an NPC 2024-09-17 19:37:28 +02:00
Liza 21fde119ba
Attune to the High Crucible in Radz-at-Han when first visiting the city 2024-09-16 23:10:14 +02:00
Liza 55e2cd300b
Add gathering point for Kai-Shirr 2024-09-16 21:46:10 +02:00
Liza 14ec91330a Merge pull request '[ShB][Allied Society][Qitari] Updated a few more daily quests' (#50) from plogon_enjoyer/Questionable:qitari into master
Reviewed-on: #50
2024-09-16 18:38:50 +00:00
Plogon Enjoyer 29a95329c7 Updated first step to use new Gather InteractionType 2024-09-17 02:34:16 +08:00
Plogon Enjoyer 0e54bfa908 Updated a few daily quests:
- Rings of Pattern
- You Dirty Rats
- If It's Broke, Fix It
2024-09-17 02:30:35 +08:00
Liza 9251111b05
Update gathering from 'RequiredGatheredItems' to a dedicated InteractionType; updated movement logic to only evaluate distance to target after teleports and such 2024-09-16 20:22:12 +02:00
Liza fc72f52ee3
Add Omicron/Loporrit unlock quests 2024-09-16 19:20:54 +02:00
Liza 5c51689508
Reorganize side story locations 2024-09-16 18:24:49 +02:00
Liza dd98352a0c
Daily quest updates 2024-09-16 18:21:34 +02:00
Liza 5d49096325
Minor SGE tweaks 2024-09-16 17:46:37 +02:00
Liza 43b796561b Merge pull request '[EW][Job Quests][SGE] Added SGE job quests.' (#46) from kaiserbh/Questionable:master into master
Reviewed-on: #46
2024-09-16 15:05:40 +00:00
Liza d9f9c93ec4 Merge pull request '[ShB][Allied Society][Qitari] Added a few quests' (#48) from plogon_enjoyer/Questionable:qitari into master
Reviewed-on: #48
2024-09-16 07:48:32 +00:00
Liza b65beb1bb8
Add Crystarium + Eulmore side quests 2024-09-16 04:42:35 +02:00
kaiser 251cd2ebfd chore: remove BOM 2024-09-16 10:35:34 +10:00
Liza 338ca335ac
Minor lv80 quest tweaks 2024-09-16 02:32:21 +02:00
kaiser 3efaa9de8b feat: added the rest of SGE job quests! 2024-09-16 10:23:13 +10:00
kaiser 3ba10fae34 feat: added first quest of SGE Unlock! 2024-09-16 09:28:13 +10:00
Liza 07de5666f5
Post-ShB updates 2024-09-16 01:18:57 +02:00
Plogon Enjoyer 2601c1ef73 Added new story quests:
- Wisdom of the Night
- The First Stela: Of Ronkan Might
- The First Stela: Of Ronkan Benevolence
2024-09-16 01:23:24 +08:00
Plogon Enjoyer 870b103e36 Updated a few daily quests:
- Marks of Friendship
- Prayers and Poison
- Salve Our Souls
2024-09-16 01:22:31 +08:00
kaiser 9e65a7aa54 chore: remove BOM 2024-09-15 10:36:54 +10:00
kaiser b1572f5832 feat: added a way to remove status for gameFunctions.
Also updated the Action a bit, that way SGE doesn't get stuck when using diagnosis.
2024-09-15 10:23:43 +10:00
kaiser 2a2e3cafb9 chore: add SGE actions 2024-09-15 10:22:29 +10:00
kaiser ba12a34523 feat: added SGE job quests.
Only managed to add last 3 as I did the first 3 already.
2024-09-15 10:20:14 +10:00
Liza 73b03b3cc1 Merge pull request '[ShB][Class Quests] Added the final job quests of various jobs' (#41) from plogon_enjoyer/Questionable:final-class-quests into master
Reviewed-on: #41
2024-09-14 10:09:40 +00:00
Liza f0ae8701c0
Dependency update 2024-09-14 00:22:35 +02:00
Liza c23ba27103
Fix warnings 2024-09-14 00:20:46 +02:00
Liza 412d157f0d
Add hint for snipe setting 2024-09-14 00:18:02 +02:00
Liza 01d120efe8
Whitebrim stairs rework 2024-09-14 00:14:27 +02:00
Liza 800799ddba
ARR journal adjustments + some basic gridania quests 2024-09-13 23:53:40 +02:00
Liza 9671e08afd
Update schema URLs 2024-09-13 23:29:19 +02:00
Liza bbd3c16516
Update nier quests 2024-09-13 23:29:07 +02:00
Liza 8243d14993
Daily quest updates 2024-09-13 19:28:25 +02:00
Liza 0a37d129b9
Add Pandaemonium quests 2024-09-13 19:28:25 +02:00
Liza 8e2098caef
Add Myths of the Realm quests 2024-09-13 19:28:24 +02:00
Liza c268256ce3
Add Sorrow of Werlyt quests 2024-09-13 19:28:24 +02:00
Liza affe5a1168
Fix Shadows Uncast (Twin Adders) 2024-09-13 19:28:24 +02:00
Liza 14a69446fa Merge pull request '[ShB][Allied Society][Pixies] Added remaining story quests' (#45) from plogon_enjoyer/Questionable:pixie into master
Reviewed-on: #45
2024-09-13 07:09:32 +00:00
Plogon Enjoyer 6f8693340c Updated "As the Heart Bids". Added Sequence 7 with no steps. 2024-09-13 14:49:08 +08:00
Plogon Enjoyer f824749172 Added story quest "Forever and a Dream" 2024-09-13 01:19:58 +08:00
Plogon Enjoyer e5d0660d7e Added new story quest "As the Heart Bids" 2024-09-13 01:19:57 +08:00
Liza 4ad101b8ed
Second Hildibrand pass 2024-09-12 19:11:32 +02:00
Liza b590390b5c
Rough Hildibrand pass 2024-09-11 23:17:46 +02:00
Liza cc4a573b2d
Reformat quests (whitespace/line break-only changes) 2024-09-11 21:49:23 +02:00
Liza 687df259a7 Merge pull request 'Implement ARR Hildibrand quests' (#32) from falcontaterz/Questionable:hildibrand into master
Reviewed-on: #32
2024-09-11 19:44:55 +00:00
Liza 6b03ff30dc
Tweak gathering location angles 2024-09-11 21:43:29 +02:00
Liza b8080ae1ff
Add extra Return to Ivalice quests 2024-09-11 21:39:52 +02:00
Liza c6c74d941a Merge pull request '[EW][Allied Society][Omicrons] Added a new story quest, new daily quests, and new gathering points' (#44) from plogon_enjoyer/Questionable:omicron into master
Reviewed-on: #44
2024-09-11 19:39:34 +00:00
Liza f12c7bf9f5 Merge pull request '[SB][Allied Society][Ananta] Added a new story quest and a few daily quests' (#43) from plogon_enjoyer/Questionable:ananta into master
Reviewed-on: #43
2024-09-11 19:34:56 +00:00
Liza 3c219ae7d0
Exclude custom delivery quests from priority window (as they can't be started this way) 2024-09-11 21:10:48 +02:00
Liza f2591790f7
Show previous quests for custom deliveries 2024-09-11 21:02:38 +02:00
Plogon Enjoyer 35a42ec54d Updated the following daily quests:
- The Antlion's Share
- Hears of Precious Stone
2024-09-12 01:15:41 +08:00
Plogon Enjoyer 824285aefd Updated daily quest "The Lost World" 2024-09-12 00:25:07 +08:00
Plogon Enjoyer 67c8cd2c99 Added new story quest Mostly Heartless. Added relevant gathering points. 2024-09-12 00:25:06 +08:00
Plogon Enjoyer b3b1ceb962 Cleaned-up accept step 2024-09-12 00:25:06 +08:00
Plogon Enjoyer 8100017a16 Added new daily quests:
- A Grebuloff Out of Water
- Mush for Miw Miisv
2024-09-12 00:25:06 +08:00
Plogon Enjoyer 056d33ac6d Added new story quest "It Can Be Cruel Sometimes" 2024-09-12 00:21:59 +08:00
Plogon Enjoyer a4f14ec419 Added a few daily quests:
- Funnel and Games
- The Very Hungry Marid
2024-09-12 00:21:59 +08:00
Liza c1c2b7861d
Remove the Rising from event quests 2024-09-11 17:36:53 +02:00
Liza 72e66eef50
Version bump 2024-09-11 17:33:41 +02:00
Liza b435d91d9c
Add Omega: Beyond the Rift 2024-09-11 17:27:37 +02:00
Liza 320bb5edbe
Add snipe cheat 2024-09-11 16:58:07 +02:00
Liza 8b07532080
Mark quests that you don't own the expac for as unobtainable 2024-09-11 10:36:08 +02:00
Liza c49a388d53
Only mark 'Close to Home' as unobtainable once one of them has been picked up or completed 2024-09-10 22:12:06 +02:00
Liza 3a7c877a68 Merge pull request 'cacahuetes-BRDstart' (#42) from cacahuetes/Questionable:cacahuetes-BRDstart into master
Reviewed-on: #42
2024-09-10 19:23:23 +00:00
Liza 224d531483
Add Gridania/Ul'dah venture unlocks 2024-09-10 21:19:24 +02:00
Plogon Enjoyer 8c6449c326 Added the final job quests for the following jobs:
- AST
- BLM
- BRD
- DRG
- DRK
- MCH
- MNK
- NIN
- PLD
- RDM
- SAM
- SCH
- SMN
- WAR
- WHM
- DRK
- MNK
- NIN
- SAM
- SCH
- WHM
2024-09-11 03:06:55 +08:00
Plogon Enjoyer 71c13b6742 Added "Aspected Benefic" to the list of Actions 2024-09-11 03:06:53 +08:00
Liza 9369c837c6
Add suffix to venture unlock quests 2024-09-10 21:04:33 +02:00
Liza 5f0aedb5f7 Merge pull request 'cacahuetes-minor-side-unlocks' (#19) from cacahuetes/Questionable:cacahuetes-minor-side-unlocks into master
Reviewed-on: #19
2024-09-10 18:57:24 +00:00
Liza d54bd048ff
Fix NRE 2024-09-10 20:44:47 +02:00
Liza 9deacfbb4a
Add Kurenai quest 2024-09-10 20:44:37 +02:00
Liza b2b86f6997
Minor gathering tweaks 2024-09-09 23:54:15 +02:00
Liza 3f3627320e
Tweak custom delivery/gathering 2024-09-09 23:49:35 +02:00
Liza c2e4abc9b9
Minor adjustments for MNK quests 2024-09-09 22:02:14 +02:00
Liza 765e9a4fb5 Merge pull request '[SB][Class Quests][MNK] Added all SB MNK Class Quests' (#38) from plogon_enjoyer/Questionable:mnk-stormblood into master
Reviewed-on: #38
2024-09-09 19:39:40 +00:00
Liza a9e9319966
Minor adjustments for MNK quests 2024-09-09 21:39:11 +02:00
Liza ce9f800627 Merge pull request '[HW][Class Quests][MNK] Added all HW MNK Class Quests' (#36) from plogon_enjoyer/Questionable:mnk-heavensward into master
Reviewed-on: #36
2024-09-09 19:21:26 +00:00
Liza 461c96f7ee
Minor adjustments for MNK quests 2024-09-09 21:13:58 +02:00
Liza a1e7aa4122
Never interrupt quests that are added to the manual priority window 2024-09-09 19:42:25 +02:00
Liza 7348cee3c7
Update IsRunning IPC 2024-09-09 19:36:56 +02:00
Liza b206863235 Merge pull request '[ARR][Class Quests][MNK] Added all ARR PGL/MNK Class Quests' (#37) from plogon_enjoyer/Questionable:mnk-arr into master
Reviewed-on: #37
2024-09-09 17:27:34 +00:00
Liza 26c698b86b
Version bump 2024-09-08 20:19:51 +02:00
Liza 8a93d2728e
Add Coils quests 2024-09-08 20:06:59 +02:00
Liza 07fb066047
Update locked starting class quests 2024-09-08 19:30:16 +02:00
Liza 8a700c3daa
Minor QW updates 2024-09-08 19:12:46 +02:00
Liza a9645ee081 Merge pull request '[EW][Allied Society][Omicrons] Added new daily quest and fixed another one' (#39) from plogon_enjoyer/Questionable:omicron into master
Reviewed-on: #39
2024-09-08 17:10:12 +00:00
Liza 9dd123c036
Minor QW updates 2024-09-08 19:08:47 +02:00
Liza d6797d18f8 Merge pull request '[SB][Allied Society][Ananta] Updated some daily quests' (#40) from plogon_enjoyer/Questionable:ananta into master
Reviewed-on: #40
2024-09-08 17:05:25 +00:00
Liza b95774a283
Update Endwalker paths + include aether current quests in MSQ 2024-09-08 18:35:01 +02:00
Liza f54b2fb914
Add Warring Triad/HW ex unlock quests 2024-09-08 17:59:58 +02:00
Liza df5f866fe8
Add PCT job quests 2024-09-08 17:47:55 +02:00
Liza e357abd505
Add some Radz-at-Han quests 2024-09-08 15:38:19 +02:00
Liza 6ceff7a117
Adjustments for Kurenai 2024-09-08 14:56:12 +02:00
Liza bd6655615c
Add Old Sharlayan side quests 2024-09-08 14:56:02 +02:00
Liza ed00301f74
Add Eden quests 2024-09-08 13:29:56 +02:00
Liza c6744dfeda
Add follow path for 'You and the Ailouros' 2024-09-08 01:40:46 +02:00
Liza 755c7b6549
Add 'battlestance' emote 2024-09-08 01:40:05 +02:00
Liza f0ea7355a2
Add Four Lords quests 2024-09-07 23:53:26 +02:00
Liza baee61ae78
Add YoRHa: Dark Apocalypse quests (excluding locked follow ups) 2024-09-06 23:09:42 +02:00
Liza 81d1935187
Don't count unobtainable quests towards completeable quests in journal 2024-09-06 21:24:38 +02:00
Liza 0b30189ec2
Move trials from Unlock\Trials to Trial Quests, as expacs tend to have proper questlines 2024-09-06 13:36:47 +02:00
Liza 0eef3cd5eb
Add 'comfort' emote 2024-09-06 13:25:10 +02:00
Liza e126031753
Add ARR Odin/Ex unlock quests 2024-09-06 12:36:19 +02:00
Liza c8fed9d278
Code cleanup 2024-09-06 00:08:43 +02:00
Liza 60e259442f
Move CT raids to 'Alliance Raid Quests' 2024-09-05 22:51:31 +02:00
Liza 5398979c95
Update Shadowbringers paths + include aether current quests in MSQ 2024-09-05 20:49:41 +02:00
Liza af556610d8
Increase default check distance for follow quests 2024-09-05 20:38:55 +02:00
Liza 50a2b29fee
Add ShB tank role quests 2024-09-05 15:56:41 +02:00
Liza e1ff326708
Only count successful jumps for for repeatedJumps 2024-09-05 14:46:05 +02:00
Liza b92531f2ec
Restart movement if you're unmounted while moving (Logistics of War) 2024-09-04 23:18:25 +02:00
Liza 0e33da7385
Add quest requirements that are only mentioned in quest text 2024-09-04 23:18:06 +02:00
Liza 7a9a49acf6
Remove TODO in 'Heroic Dreams' 2024-09-04 20:07:51 +02:00
Liza d59026bf1d
Add moogle unlock quests 2024-09-04 19:53:18 +02:00
Liza 7bd3152e00
Update 67 - post-SB paths/include aehter currents 2024-09-04 12:05:17 +02:00
Plogon Enjoyer d1eee8f977 Added daily quest "Snack between Meals" 2024-09-04 00:13:52 +08:00
Plogon Enjoyer b6e40bf1a0 Added new daily quest "Sparring Lesson" 2024-09-03 23:53:23 +08:00
Plogon Enjoyer ec10c6d4c2 Updated "Criminal Crossings" 2024-09-03 23:52:37 +08:00
Plogon Enjoyer 8ef9e70696 Added new Ananta story quest "Chance of Gales" 2024-09-03 23:46:11 +08:00
Plogon Enjoyer 47e779ea81 Added new action Trample 2024-09-03 23:34:31 +08:00
cacahuetes 67f0f8dd70 ARC/BRD quests for if you start off as ARC 2024-09-02 21:51:20 +00:00
cacahuetes 1a262ef26b Merge pull request 'master' (#4) from liza/Questionable:master into master
Reviewed-on: cacahuetes/Questionable#4
2024-09-02 21:50:10 +00:00
Liza 8baf287604
Add aetheryte shortcuts to sequence 0 of class/job quests that didn't have any (and thus weren't eligible as priority quests) 2024-09-02 22:04:14 +02:00
Liza 8638e291b1
Update SB paths + include aether current quests in MSQ (up until Azim Steppe) 2024-09-02 21:54:25 +02:00
Liza 617e1d11c3
Explicitly specify territoryId in NearPosition 2024-09-02 21:37:13 +02:00
Liza 8848947aca
Update gathering paths 2024-09-01 21:49:33 +02:00
Plogon Enjoyer b01afa2fa2 Added new Omicron story and daily quests. Also added new gathering points for the story quest. 2024-09-02 02:59:06 +08:00
Plogon Enjoyer f0f876b810 Fixed RequiredQuestVariables values for the first pair. Added conditional teleports, too. 2024-09-02 02:59:06 +08:00
Plogon Enjoyer 9d41101d26 Updated and enabled Omicron daily quest 'I'll Fish It Myself' 2024-09-02 02:59:06 +08:00
Liza e8b9124119
Code cleanup 2024-09-01 20:36:06 +02:00
Liza 272050d11b
Don't allow debug overlay to be closed via ESC 2024-09-01 20:35:50 +02:00
Liza 7c62a85a8a
Make sequence 0 non-interruptible, as you otherwise get quests with a lower priority than the MSQ 2024-09-01 15:44:59 +02:00
Liza 7f348207d3
Add experimental combat module for Magiteknical Failure (aether current quest) 2024-09-01 15:14:37 +02:00
Liza d7aa4243d7
Add EnemySpawnType - AfterAction 2024-09-01 14:21:26 +02:00
Liza 86f764aca3
Reduce the max melee distance for RSR 2024-08-31 22:31:06 +02:00
Liza 842715337c
Update HW paths + include aether current quests in MSQ 2024-08-31 22:21:36 +02:00
Liza d76242adfe
Fix emote use in 'Familiar Faces' once and for all 2024-08-31 21:50:50 +02:00
Plogon Enjoyer 1627d43e4e Added conditions for "Criminal Crossings" 2024-09-01 02:15:16 +08:00
Plogon Enjoyer 913e37a84d Added conditions for "When Feathers Fly" 2024-09-01 01:54:15 +08:00
Plogon Enjoyer 0c401c6cfc Updated step to fly 2024-09-01 01:54:15 +08:00
Liza c193789d3c
Ignore NextQuestId for job quests 2024-08-31 19:41:59 +02:00
Plogon Enjoyer 66ed076785 Added all MNK Stormblood class quests 2024-08-31 20:55:36 +08:00
Plogon Enjoyer 8ef1b8440c Added MNK actions "Twin Snakes", "Demolish", "Dragon Kick", and "Form Shift" 2024-08-31 20:55:36 +08:00
Plogon Enjoyer 9a6909dba3 Added conditional aetheryte and aethernet shortcuts for sequence 0 2024-08-31 20:44:08 +08:00
Plogon Enjoyer fa4043b4a2 Added conditional aetheryte and aethernet shortcuts for sequence 0 2024-08-31 20:41:12 +08:00
Liza aaad336c64
Fix next quest display 2024-08-31 14:04:07 +02:00
Liza 1572ff11a8
Add IPC methods IsRunning/GetCurrentQuestId 2024-08-31 14:03:53 +02:00
Plogon Enjoyer 414b21eaba Re-ordered Bootshine 2024-08-31 18:14:38 +08:00
Plogon Enjoyer bdfb21eee8 Added MNK class quest 'Five Easy Pieces' 2024-08-31 17:46:07 +08:00
Plogon Enjoyer 9dd467c8d2 Added MNK class quest 'Good Vibrations' 2024-08-31 17:46:07 +08:00
Plogon Enjoyer a5fe834aaf Added MNK class quest 'The Pursuit of Power' 2024-08-31 17:46:07 +08:00
Plogon Enjoyer 6a0a1205d7 Added MNK class quest 'A Slave to the Aether' 2024-08-31 17:46:07 +08:00
Plogon Enjoyer 74357c0e89 Added MNK class quest 'Insulted Intelligence' 2024-08-31 17:46:07 +08:00
Plogon Enjoyer c86cd245d9 Added NextQuestId for a few of the quests 2024-08-31 17:46:07 +08:00
Plogon Enjoyer 360941554d Added PUG class quest 'Brother from Another Mother' 2024-08-31 17:46:07 +08:00
Plogon Enjoyer 90a196fd66 Added PUG class quest 'Return of the Holyfist' 2024-08-31 17:46:07 +08:00
Plogon Enjoyer c5ffc13a38 Added PUG class quest 'Star-crossed Rivals' 2024-08-31 17:46:06 +08:00
Plogon Enjoyer f8f51c1e14 Added PUG class quest 'Keeping the Spirit Alive' 2024-08-31 17:46:06 +08:00
Plogon Enjoyer 4aa8545d7a Added PUG class quest 'The Spirit is Willing' 2024-08-31 17:46:06 +08:00
Plogon Enjoyer d1159960a5 Fixed schema 2024-08-31 17:46:06 +08:00
Plogon Enjoyer 8b5cec4def Added PUG class quest 'Burning Up the Quarter Malm' 2024-08-31 17:46:06 +08:00
Plogon Enjoyer 3f358faa41 Added PUG class quest 'Harder than Rock' 2024-08-31 17:46:06 +08:00
Plogon Enjoyer 18da3ddbb0 Added Bootshine to the list of actions allowed 2024-08-31 17:46:06 +08:00
Plogon Enjoyer 5fe5bd5a23 Added PUG class quest My First Hora 2024-08-31 17:46:06 +08:00
Plogon Enjoyer 16a5e30891 Added MNK quest "Appetite for Destruction" 2024-08-31 17:45:14 +08:00
Plogon Enjoyer 34339feaf5 Added MNK quest "Stop the Senseless Killing" 2024-08-31 17:43:10 +08:00
Plogon Enjoyer a15ecae7e0 Added MNK quest "Fight the Battle to Win" 2024-08-31 17:42:39 +08:00
Plogon Enjoyer 0a99feeab6 Added MNK quest "Against the Shadow" 2024-08-31 17:42:00 +08:00
Plogon Enjoyer 1277ed5547 Added MNK quest "Let's Talk about Sects" 2024-08-31 16:38:03 +08:00
Plogon Enjoyer 5fe89ae001 Added MNK quest "The Legend Continues" 2024-08-31 16:37:08 +08:00
Liza de7cf2a94f
Handle accepting quests via 'PickupQuestId' if NPC offers multiple quests 2024-08-30 21:40:42 +02:00
Liza a5d75eb0f5
Update some late ARR quests 2024-08-30 20:35:58 +02:00
Liza 308d4b8253
Update source gen 2024-08-30 20:35:37 +02:00
Liza ded6f6bbb2
Always hide 'Cannot execute at this time' while moving, not only during diving 2024-08-30 17:10:54 +02:00
Liza 47d9f090a2
Handle zone transitiions in new movement logic 2024-08-30 14:00:10 +02:00
Liza 24c1e0c5d9
Version bump 2024-08-30 09:15:46 +02:00
Liza 0a49da1682
Minor healer quest adjustments 2024-08-29 21:33:07 +02:00
Liza a22856778b Merge pull request 'cacahuetes-ShB-Healer' (#31) from cacahuetes/Questionable:cacahuetes-ShB-Healer into master
Reviewed-on: #31
2024-08-29 18:28:21 +00:00
Liza 4ecff4a433
Minor WHM quest adjustments 2024-08-29 16:55:04 +02:00
Liza 34e1f62ea9
Add Cure II as action 2024-08-29 16:29:40 +02:00
Liza 4113d52325 Merge pull request 'cacahuetes-Stb-WHM' (#30) from cacahuetes/Questionable:cacahuetes-Stb-WHM into master
Reviewed-on: #30
2024-08-29 14:29:04 +00:00
Liza 85d4f5bccd Merge pull request 'cacahuetes-HW-WHM' (#29) from cacahuetes/Questionable:cacahuetes-HW-WHM into master
Reviewed-on: #29
2024-08-29 13:52:58 +00:00
Liza e4b5ccec36
Update movement logic to handle cases where you're stopped too far away 2024-08-29 15:45:16 +02:00
Liza 25bfb6033b Merge pull request '[SB][Allied Society][Ananta] Added a few quests' (#35) from plogon_enjoyer/Questionable:ananta into master
Reviewed-on: #35
2024-08-29 11:43:06 +00:00
Plogon Enjoyer ee20ab996b Updated Author 2024-08-29 18:11:30 +08:00
Liza 977ac6d144
Minor path updates 2024-08-29 09:59:09 +02:00
Liza c57395fbfd
Use fixed-size icons for validation issue button 2024-08-29 09:20:51 +02:00
Liza a5419bb455 Merge pull request 'Add Physical Role Quest for Shadowbringers' (#24) from Fifi/Questionable:shb-role-phys into master 2024-08-29 07:12:38 +00:00
Liza 6a01cd4f83
Adjust Open Arms, Closed Gate 2024-08-29 09:11:25 +02:00
Liza 1a9f870987
Fix pathing for first kholusia aether current 2024-08-29 09:05:07 +02:00
Fifi 7d622c4d12 shb phys role quests 2024-08-29 03:41:21 +00:00
FalconTaterz 36126c5bdc Finish ARR Hildibrand quest paths 2024-08-28 10:29:04 -05:00
FalconTaterz da332f503c Add Hildibrand quest paths up to 8-armed 2024-08-28 10:29:04 -05:00
Plogon Enjoyer f3082d8636 Added Ananta daily quest 'When Feathers Fly' 2024-08-28 22:10:22 +08:00
Plogon Enjoyer 248a636de5 Added Ananta daily quest 'Criminal Crossing' 2024-08-28 22:10:10 +08:00
Plogon Enjoyer 1112af873f Added Ananta daily quest 'A Signal for the Senses' 2024-08-28 22:09:59 +08:00
Plogon Enjoyer c95a80de34 Added Ananta story quest 'Griffins Rampant' 2024-08-28 22:09:38 +08:00
Liza 33774df23b
Daily quest updates 2024-08-28 11:48:40 +02:00
Liza 916082ef35
Add Rising dialogue/NextQuestId 2024-08-28 11:26:21 +02:00
Liza 218dbd8feb
Daily quest update 2024-08-27 23:40:50 +02:00
Liza 90b0467742
Minor gathering path adjustments 2024-08-27 22:52:15 +02:00
Liza 3d7b152cd1
Change some teleports in 'World of Wonders' 2024-08-27 22:45:43 +02:00
Liza fe1d2d51db
Mark completed daily quests as unable to accept 2024-08-27 22:45:42 +02:00
Liza 95535d0ef2 Merge pull request '[EW][Allied Society][Omicrons] Added a few quests and related gathering paths' (#34) from plogon_enjoyer/Questionable:omicron into master
Reviewed-on: #34
2024-08-27 20:45:08 +00:00
Liza 33726426df
Add Rising 2024 quests 2024-08-27 22:02:26 +02:00
Liza 0473c9b17c
Update code for updated dalamud 2024-08-27 22:00:34 +02:00
Liza b9061b3190
Support 'ChatMessage' in CompleteQuest steps 2024-08-27 21:14:22 +02:00
Plogon Enjoyer 2f4313c9da Updated Omicron daily quest 'Guardians of the Galaxy' 2024-08-27 00:44:45 +08:00
Plogon Enjoyer 99499415db Updated Omicron daily quest 'I, Omicron' 2024-08-27 00:44:30 +08:00
Plogon Enjoyer 7fe85a49f2 Added Omicron story quest 'And Another Question'. Also added required gathering points. 2024-08-27 00:08:18 +08:00
Liza 21c9e2fcac
Fix quest tooltips including quest name twice 2024-08-26 16:13:27 +02:00
Liza 2c2e95682b
Fix previous quest requirement 2024-08-26 16:13:17 +02:00
Liza 24f95d58fe
Version bump 2024-08-26 16:07:39 +02:00
Liza a840a9f42e
Pick up DT aether current quests (HF/LM) during the MSQ 2024-08-26 16:01:07 +02:00
Liza e6ee91c19c
Fix interactions in 'A Knight of Alexandria' 2024-08-26 15:58:14 +02:00
Liza 477b7cb446
Update positions for S9 aetheryte interactions 2024-08-26 11:14:26 +02:00
Liza 2a4ce09cda
Handle specific dialogue interactions while in a duty 2024-08-26 11:11:44 +02:00
cacahuetes 3a54dd1091 Update QuestPaths/3.x - Heavensward/Class Quests/WHM/1721_The Girl with the Dragon Tissue.json 2024-08-25 18:33:30 +00:00
cacahuetes f4475d64ca Update QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3272_The Soul of Temperance.json 2024-08-25 18:21:29 +00:00
cacahuetes d4f122dda0 Update QuestPaths/5.x - Shadowbringers/Role Quests/Healer/3267_Traditions and Travails.json 2024-08-25 18:00:13 +00:00
cacahuetes db39e76e4b Upload files to "QuestPaths/5.x - Shadowbringers/Role Quests/Healer" 2024-08-25 17:59:24 +00:00
Liza 15c97d55f7
Minor starting quest adjustments 2024-08-25 19:23:29 +02:00
Liza 6eddca6931
Pick up DT aether current quests (first four zones) during the MSQ 2024-08-25 19:23:15 +02:00
cacahuetes 5bfc60d6ed Upload files to "QuestPaths/4.x - Stormblood/Class Quests/WHM" 2024-08-25 15:53:43 +00:00
cacahuetes 6a15daa4e6 Interact after combat was put into a separate sequence by accident 2024-08-25 15:50:27 +00:00
Liza 0ac2fae4b9
Add default combat delay to all non-overworld enemy encounters 2024-08-25 16:51:52 +02:00
Liza ca4bc07eeb
Allow weekly delivery turn-in while in duty queue 2024-08-25 16:01:02 +02:00
Liza d310c9ff1b
Handle quests that are unlocked when a previous quest isn't complete yet 2024-08-25 14:45:08 +02:00
Liza abee323d2b
Add IsUnmounting condition to UnmountTask 2024-08-25 13:45:57 +02:00
cacahuetes 11132beb22 Upload files to "QuestPaths/3.x - Heavensward/Class Quests/WHM" 2024-08-25 10:53:03 +00:00
cacahuetes 9430ca62da Upload files to "QuestPaths/3.x - Heavensward/Class Quests/WHM" 2024-08-25 10:52:42 +00:00
cacahuetes 75fc8f713c Merge pull request 'master' (#2) from liza/Questionable:master into master
Reviewed-on: cacahuetes/Questionable#2
2024-08-25 10:51:07 +00:00
Liza cfce2591db
Add missing dialogue option for 'Sustenance for the Soul' 2024-08-25 11:15:05 +02:00
Liza b4a649189a
Add quest priority window 2024-08-25 01:30:42 +02:00
Liza 581976b06b
Minor adjustments to unlock quests 2024-08-25 01:27:41 +02:00
Liza 4ca4e38af7
Make allied society quests non-interruptible 2024-08-25 00:49:53 +02:00
Liza b1a9ec8d7c Merge pull request 'cacahuetes-classes_unlock' (#18) from cacahuetes/Questionable:cacahuetes-classes_unlock into master
Reviewed-on: #18
2024-08-24 20:54:28 +00:00
Liza ec6687ec12
Minor chocobo updates 2024-08-24 22:53:30 +02:00
Liza af4d329cf0 Merge pull request 'Add 1560_Bird in Hand.json' (#26) from alydev/Questionable:alydev-patch-1 into master
Reviewed-on: #26
2024-08-24 20:50:01 +00:00
Liza 0dd392950a
Change author for new omicron quests 2024-08-24 22:47:52 +02:00
Liza d178240819 Merge pull request 'Added Omicron 2nd story quest and a couple of daily quests' (#28) from plogon_enjoyer/Questionable:omicron into master
Reviewed-on: #28
2024-08-24 20:44:17 +00:00
Liza 1a6646cb52
Minor cleanup for ARR BRD 2024-08-24 22:42:52 +02:00
Liza f4beceec05
Update tooltips 2024-08-24 22:42:32 +02:00
Plogon Enjoyer 40d435ebc0 Updated Omicron daily quest Using Their heads. Also added required gathering paths. 2024-08-25 03:05:04 +08:00
Plogon Enjoyer 7e8f201460 Updated Omicron daily quest The Robot and the Sea 2024-08-25 03:05:04 +08:00
Plogon Enjoyer 13037de8f1 Added step to enter Elysion 2024-08-25 03:05:04 +08:00
Plogon Enjoyer f8a43a8558 Added another daily quest 2024-08-25 03:05:04 +08:00
Plogon Enjoyer f348e92cba Added Omicron 2nd story quest 2024-08-25 03:03:41 +08:00
Liza a1988cc9c7
Change teleport indicator icon 2024-08-24 17:40:05 +02:00
Liza e4963af585 Merge pull request 'BardClassQuests' (#23) from pot0to/Questionable:BardClassQuests into master
Reviewed-on: #23
2024-08-24 12:57:46 +00:00
Liza dcf054a763
Fix teleport cost estimation 2024-08-24 00:14:45 +02:00
Liza a4d79079ba
Remove lv80 class quests from priority quest list 2024-08-24 00:05:38 +02:00
Liza f18fd8a87c
Daily quest updates 2024-08-24 00:02:05 +02:00
Liza 026763ed56
Minor cleanup for SB part 4 2024-08-23 23:21:03 +02:00
Liza 1eed73afdf
Minor cleanup for SB part 3 2024-08-23 19:46:37 +02:00
Liza f973f3cc5c
Small Gold Saucer adjustment 2024-08-23 18:31:30 +02:00
Liza 1c53276179
Add SB WAR quests 2024-08-23 18:10:27 +02:00
Liza a6f684248f
Add Gold Saucer unlock 2024-08-23 17:16:15 +02:00
Liza aa9fcb02fd
Add Omega raid quests 2024-08-23 16:57:14 +02:00
Liza 721c3d0a5c
Add Gold Saucer aethernet shards 2024-08-23 15:43:58 +02:00
Liza 03b2650052
Update early ARR msq quests 2024-08-23 14:40:39 +02:00
Liza 3a4cf56965
Add Immortal Flames to GC selection 2024-08-23 14:28:23 +02:00
Liza b1d5b6cf2c
Add some NextQuestIds for MRD 2024-08-23 14:02:29 +02:00
Liza 325860ec27
Remove ShouldHandleUiInteractions from duty UI windows since that's never active 2024-08-23 09:53:24 +02:00
alydev 0796ab8672 Add 1560_Bird in Hand.json 2024-08-23 06:58:56 +00:00
pot0to 77df87b23b fixed author name 2024-08-22 15:33:45 -07:00
pot0to e21ae1c6cd added quest path jsons 2024-08-22 15:33:45 -07:00
pot0to 6e7ade5ee7 resolved merge conflicts 2024-08-22 15:33:18 -07:00
pot0to d010dec9f6 fixing interaction type 2024-08-22 15:17:04 -07:00
pot0to 25e36fddc8 adding new brd paths and 1 thm 2024-08-22 15:17:04 -07:00
Liza 55e0df3050 Merge pull request 'SB MSQ Part 3 + 4' (#21) from JerryWester/Questionable:sb-p3 into master
Reviewed-on: #21
2024-08-22 18:35:14 +00:00
Liza 258bdb451f
Daily quest updates 2024-08-22 20:30:14 +02:00
cacahuetes 772300f44b Update QuestPaths/2.x - A Realm Reborn/Class Quests/WHM/48_Trial by Earth.json 2024-08-22 18:19:14 +00:00
Liza 7705e34918
Include quest id + add context menu for quests in journal window 2024-08-22 18:40:19 +02:00
Liza 6b24a08da5
Include author name in quest tooltip 2024-08-22 18:39:50 +02:00
Liza 59302bb92b
Add early MRD quests 2024-08-22 18:26:04 +02:00
cacahuetes abbc82cfbd Update QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/102_Way of the Rogue.json 2024-08-22 13:44:34 +00:00
cacahuetes 0029711b9f Update QuestPaths/2.x - A Realm Reborn/Class Quests/NIN/101_So You Want to Be a Rogue.json 2024-08-22 13:44:03 +00:00
cacahuetes 53d3488871 Update QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/181_So You Want to Be an Archer.json 2024-08-22 13:43:21 +00:00
cacahuetes e7fa50db20 Update QuestPaths/2.x - A Realm Reborn/Class Quests/BRD/131_Way of the Archer.json 2024-08-22 13:42:59 +00:00
Liza e13007469e
Add early MRD quests 2024-08-22 13:05:40 +02:00
Liza 99cd1dd023
Update teleport logic for priority quests/lower estimated gil cost 2024-08-22 12:50:45 +02:00
Liza 6ea9f282f3
Fixes for early limsa quests 2024-08-22 12:14:12 +02:00
Liza ee2980bef9
Add some QW to early gridania msq 2024-08-22 10:37:28 +02:00
Liza 4d957af67d Merge pull request 'cacahuetes-MSQ-minor-1' (#20) from cacahuetes/Questionable:cacahuetes-MSQ-minor-1 into master
Reviewed-on: #20
2024-08-22 08:34:50 +00:00
Jerry Wester 142bf2331d SB MSQ Part 4 2024-08-21 19:00:51 -06:00
JerryWester f4ff18e9f4 SB MSQ Part 3 2024-08-21 14:27:30 -06:00
Liza 8aaabacc2d
Attempt to fix diving movement issue 2024-08-21 20:43:24 +02:00
cacahuetes 5e16c154c4 Venture unlock!
Required: Active Reatiners
2024-08-21 16:21:20 +00:00
cacahuetes fbc29b2f39 added a missing interaction point after combat 2024-08-21 16:18:26 +00:00
cacahuetes ac81c8279b Added Combat point
Added one extra combat point when entering camp so that you don't get overwhelmed by 6 enemies at once by the time you get to the center of the camp.
2024-08-21 16:17:36 +00:00
cacahuetes 6967cfc8f7 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/WVR" 2024-08-21 16:13:52 +00:00
cacahuetes 99ab970747 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/LTW" 2024-08-21 16:13:18 +00:00
cacahuetes ea0c30198d Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/ROG" 2024-08-21 16:12:45 +00:00
cacahuetes 7b0faf9a37 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/BLM" 2024-08-21 16:11:59 +00:00
cacahuetes 110eece2d7 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/BTN" 2024-08-21 16:11:36 +00:00
cacahuetes bd3f01390b Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/ALC" 2024-08-21 16:10:55 +00:00
cacahuetes 0da8c8acb5 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/CUL" 2024-08-21 16:10:11 +00:00
cacahuetes 905074513a Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/GSM" 2024-08-21 16:09:36 +00:00
cacahuetes 387ef9f69b Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/ARM" 2024-08-21 16:08:49 +00:00
cacahuetes 1f4089ce49 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/BSM" 2024-08-21 16:08:17 +00:00
cacahuetes 0635f4e639 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/ARC" 2024-08-21 16:07:33 +00:00
cacahuetes ea483d1cd5 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/ACN" 2024-08-21 16:05:53 +00:00
cacahuetes 80f9b02b37 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/WAR" 2024-08-21 16:05:00 +00:00
cacahuetes 9413b2ccdb Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/MNK" 2024-08-21 16:03:24 +00:00
cacahuetes 45137b231c Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/MNK" 2024-08-21 16:02:55 +00:00
cacahuetes 79751474de Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/FSH" 2024-08-21 16:02:31 +00:00
cacahuetes 6fde4de9dc Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/DRG" 2024-08-21 16:01:42 +00:00
cacahuetes c5ea5563ff Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/CRP" 2024-08-21 16:00:29 +00:00
cacahuetes 2765247f92 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/BLM" 2024-08-21 16:00:01 +00:00
cacahuetes 7865ee6fe8 Upload files to "QuestPaths/2.x - A Realm Reborn/Class Quests/PLD" 2024-08-21 15:58:26 +00:00
cacahuetes b49c2e898d GLA/PLD Quests validated and updated prompts
There is one quest where a prompt is immediately after the single duty instance. I couldn't validate that one because there was no way to go back to it after it happened. Quest 264_On Holy Ground
2024-08-21 15:58:12 +00:00
cacahuetes 35537564f1 Making it easier to travel to east shroud without aetheryte 2024-08-21 15:53:26 +00:00
cacahuetes 43bb9631fc Merge pull request 'Updating repo to match main Liza repo' (#1) from liza/Questionable:master into master
Reviewed-on: cacahuetes/Questionable#1
2024-08-21 15:51:24 +00:00
Liza b5f66bb9e8
Update dependencies 2024-08-21 00:59:32 +02:00
Liza 7ca783bade
Add ShB caster role quests 2024-08-21 00:58:24 +02:00
Liza 034d2704e9
Daily quest updates 2024-08-20 23:36:41 +02:00
Liza 440a746e46
Fix nonsense use of portrait id when switching classes 2024-08-20 21:57:32 +02:00
Liza 9c414d44cd
Daily quest update 2024-08-20 20:47:11 +02:00
Liza fb3aa0e0d4
Update warnings 2024-08-20 02:50:47 +02:00
Liza 2d22657d41
Update how task factories work 2024-08-20 02:48:06 +02:00
Liza 9be1579f99
Late-check whether movement is needed for satisfaction supply npcs 2024-08-19 23:52:10 +02:00
Liza 5375ec25bc
Add Kai-Shirr/Ameliance unlock quests 2024-08-19 23:51:48 +02:00
Liza b07625c18f
Add Kurenai unlock quests 2024-08-19 23:12:43 +02:00
Liza e31ae92d88
Minor adjustments to FIrmament quests 2024-08-19 21:56:37 +02:00
Liza 4d0590a109
Wait for navmesh being ready before using AethernetShortcut 2024-08-19 21:22:31 +02:00
Liza 391342f9c4
Fix aetheryte name for Pla Enni 2024-08-19 21:16:34 +02:00
Liza 3ba342aa48
Seasonal event info panel 2024-08-19 15:19:15 +02:00
Liza 57712b1c0c
Add Ehll Tou + Charlemend (i.e. almost the entire firmament) unlock quests 2024-08-19 13:07:20 +02:00
Liza bcd68c4508
Add second Adkiragh unlock quest 2024-08-19 11:27:37 +02:00
Liza 83e9541e76
Fix 'move to target' for objects too far away to be targeted 2024-08-19 11:26:55 +02:00
Liza 5b47814ea6
Daily quest updates 2024-08-19 10:41:41 +02:00
Liza 2df220ba94
Hide old ishgard restoration instances from gathering point stats 2024-08-19 04:57:41 +02:00
Liza 92b6ce315f
Fix leves showing under the wrong filtered expac 2024-08-19 04:51:18 +02:00
Liza e3040607a6
Add various gathering paths for weekly delivery npcs 2024-08-19 04:43:08 +02:00
Liza 5f9aa3fb96
Add Return to Ivalice quests 2024-08-19 03:53:00 +02:00
Liza d31b8cfc7a
Make gathering progress filterable 2024-08-19 03:19:12 +02:00
Liza 17cedb6f87
Include gathering points in statistics window 2024-08-18 19:51:40 +02:00
Liza bcab19b809
Add Alexander quests 2024-08-18 03:15:00 +02:00
Liza ff983859eb
Add gathering locatiosn + unlock for Margrat + Anden 2024-08-18 02:13:33 +02:00
Liza 4aee22510b
Add Wachumeqimeqi deliveries 2024-08-18 01:55:38 +02:00
Liza 8a011bb1f4
Update collectable logic for items above your level/low collectability increase 2024-08-18 00:41:58 +02:00
Liza a11dd11424
Add missing LNC quest 2024-08-17 22:28:02 +02:00
Liza f543ed26b2
Rename GLA/PGL class quest folders 2024-08-17 22:22:56 +02:00
Liza 3210568ce9
Daily quest updates 2024-08-17 22:09:47 +02:00
Liza f76e074cd8
Rework source gen 2024-08-17 21:01:46 +02:00
Liza 59d83cb338
Rework task factories; finish up Artisan crafting 2024-08-17 20:07:27 +02:00
Liza cf56a01a08
Show accepting class for allied society quests 2024-08-17 19:17:27 +02:00
Liza 179e6e341f
Rename beast tribe to allied society in code 2024-08-17 19:16:33 +02:00
Liza 4acf4b0d13
Use EquipRecommended for VPR/PCT starting quests 2024-08-16 23:37:57 +02:00
Liza b24db556ea
Add NextQuestIds to DNC quests 2024-08-16 23:35:58 +02:00
1219 changed files with 81202 additions and 5423 deletions

View File

@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<Version>2.10</Version>
<Version>3.4</Version>
</PropertyGroup>
</Project>

View File

@ -121,7 +121,7 @@ public sealed class RendererPlugin : IDalamudPlugin
if (!directory.Exists)
return;
_pluginLog.Information($"Loading locations from {directory}");
//_pluginLog.Information($"Loading locations from {directory}");
foreach (FileInfo fileInfo in directory.GetFiles("*.json"))
{
try
@ -238,8 +238,10 @@ public sealed class RendererPlugin : IDalamudPlugin
maximumAngle = x.MaximumAngle.GetValueOrDefault();
}
#if false
var a = GatheringMath.CalculateLandingLocation(x, 0, 0);
var b = GatheringMath.CalculateLandingLocation(x, 1, 1);
#endif
return new List<Element>
{
new Element(isCone

View File

@ -0,0 +1,118 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 397,
"InteractionType": "None",
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33290,
"Locations": [
{
"Position": {
"X": -409.5019,
"Y": 171.5775,
"Z": 49.79576
},
"MinimumAngle": -40,
"MaximumAngle": 115
},
{
"Position": {
"X": -418.5088,
"Y": 168.7132,
"Z": 33.29783
},
"MinimumAngle": 10,
"MaximumAngle": 110
}
]
},
{
"DataId": 33289,
"Locations": [
{
"Position": {
"X": -413.911,
"Y": 170.7656,
"Z": 43.01591
},
"MinimumAngle": 0,
"MaximumAngle": 130
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33292,
"Locations": [
{
"Position": {
"X": -510.636,
"Y": 169.9518,
"Z": 119.9934
},
"MinimumAngle": 150,
"MaximumAngle": 310
}
]
},
{
"DataId": 33291,
"Locations": [
{
"Position": {
"X": -519.3103,
"Y": 169.0242,
"Z": 111.3145
},
"MinimumAngle": 125,
"MaximumAngle": 300
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33293,
"Locations": [
{
"Position": {
"X": -563.8201,
"Y": 159.5121,
"Z": -11.58269
},
"MinimumAngle": -100,
"MaximumAngle": 50
}
]
},
{
"DataId": 33294,
"Locations": [
{
"Position": {
"X": -555.6268,
"Y": 159.594,
"Z": -17.77679
},
"MinimumAngle": -145,
"MaximumAngle": 25
}
]
}
]
}
]
}

View File

@ -0,0 +1,113 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 400,
"InteractionType": "None",
"AetheryteShortcut": "The Churning Mists - Zenith"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33305,
"Locations": [
{
"Position": {
"X": -560.7639,
"Y": 266.9573,
"Z": -744.8922
},
"MinimumAngle": -45,
"MaximumAngle": 80
}
]
},
{
"DataId": 33306,
"Locations": [
{
"Position": {
"X": -547.9997,
"Y": 268.3711,
"Z": -737.2209
},
"MinimumAngle": 0,
"MaximumAngle": 95
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33304,
"Locations": [
{
"Position": {
"X": -682.6185,
"Y": 261.1417,
"Z": -778.2869
},
"MinimumAngle": -50,
"MaximumAngle": 20,
"MinimumDistance": 1.5,
"MaximumDistance": 3
}
]
},
{
"DataId": 33303,
"Locations": [
{
"Position": {
"X": -696.5138,
"Y": 261.6092,
"Z": -759.7711
},
"MinimumAngle": 215,
"MaximumAngle": 310
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33301,
"Locations": [
{
"Position": {
"X": -792.3468,
"Y": 271.3054,
"Z": -737.431
},
"MinimumAngle": 280,
"MaximumAngle": 360,
"MinimumDistance": 2,
"MaximumDistance": 3
}
]
},
{
"DataId": 33302,
"Locations": [
{
"Position": {
"X": -800.0043,
"Y": 269.2748,
"Z": -729.5305
},
"MinimumAngle": 230,
"MaximumAngle": 340
}
]
}
]
}
]
}

View File

@ -0,0 +1,136 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 398,
"InteractionType": "None",
"AetheryteShortcut": "The Dravanian Forelands - Tailfeather"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33300,
"Locations": [
{
"Position": {
"X": 560.8948,
"Y": -19.68621,
"Z": -534.3345
},
"MinimumAngle": -75,
"MaximumAngle": 30
},
{
"Position": {
"X": 557.1625,
"Y": -19.65358,
"Z": -547.1852
},
"MinimumAngle": 60,
"MaximumAngle": 200
}
]
},
{
"DataId": 33299,
"Locations": [
{
"Position": {
"X": 571.0399,
"Y": -19.2677,
"Z": -544.8133
},
"MinimumAngle": 200,
"MaximumAngle": 320
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33297,
"Locations": [
{
"Position": {
"X": 630.7735,
"Y": -18.70739,
"Z": -566.2144
},
"MinimumAngle": 85,
"MaximumAngle": 240
}
]
},
{
"DataId": 33298,
"Locations": [
{
"Position": {
"X": 639.3101,
"Y": -18.78794,
"Z": -559.5169
},
"MinimumAngle": -175,
"MaximumAngle": 0
},
{
"Position": {
"X": 618.4453,
"Y": -18.9477,
"Z": -559.1786
},
"MinimumAngle": 60,
"MaximumAngle": 150
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33295,
"Locations": [
{
"Position": {
"X": 731.6483,
"Y": -20.17027,
"Z": -614.199
},
"MinimumAngle": -35,
"MaximumAngle": 125
}
]
},
{
"DataId": 33296,
"Locations": [
{
"Position": {
"X": 743.4034,
"Y": -19.02,
"Z": -621.8422
},
"MinimumAngle": 195,
"MaximumAngle": 325
},
{
"Position": {
"X": 727.6966,
"Y": -20.47985,
"Z": -627.8105
},
"MinimumAngle": 60,
"MaximumAngle": 210
}
]
}
]
}
]
}

View File

@ -0,0 +1,69 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 398,
"InteractionType": "None",
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34382,
"Locations": [
{
"Position": {
"X": -528.8412,
"Y": -89.70924,
"Z": 458.582
},
"MinimumAngle": -10,
"MaximumAngle": 80,
"MinimumDistance": 2.1,
"MaximumDistance": 3
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34383,
"Locations": [
{
"Position": {
"X": -636.4533,
"Y": -100.1258,
"Z": 484.7436
},
"MinimumAngle": -75,
"MaximumAngle": 35
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34384,
"Locations": [
{
"Position": {
"X": -589.4542,
"Y": -100.4852,
"Z": 528.1926
},
"MinimumAngle": -25,
"MaximumAngle": 120
}
]
}
]
}
]
}

View File

@ -0,0 +1,61 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 398,
"InteractionType": "None",
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34391,
"Locations": [
{
"Position": {
"X": -49.75243,
"Y": -31.70323,
"Z": -171.6977
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34392,
"Locations": [
{
"Position": {
"X": -44.89702,
"Y": -32.39204,
"Z": -153.4274
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34393,
"Locations": [
{
"Position": {
"X": -36.6049,
"Y": -31.32222,
"Z": -134.1001
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,115 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 399,
"InteractionType": "None",
"AetheryteShortcut": "Idyllshire",
"AethernetShortcut": [
"[Idyllshire] Aetheryte Plaza",
"[Idyllshire] Prologue Gate (Western Hinterlands)"
]
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33856,
"Locations": [
{
"Position": {
"X": -395.4635,
"Y": 144.1793,
"Z": -249.5864
},
"MinimumAngle": -190,
"MaximumAngle": 0
}
]
},
{
"DataId": 33855,
"Locations": [
{
"Position": {
"X": -398.5591,
"Y": 144.6183,
"Z": -241.8769
},
"MinimumAngle": -140,
"MaximumAngle": -20
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33857,
"Locations": [
{
"Position": {
"X": -407.5786,
"Y": 149.6453,
"Z": -93.85593
},
"MinimumAngle": 185,
"MaximumAngle": 280,
"MinimumDistance": 2,
"MaximumDistance": 3
}
]
},
{
"DataId": 33858,
"Locations": [
{
"Position": {
"X": -413.9488,
"Y": 148.9834,
"Z": -71.42188
},
"MinimumAngle": 165,
"MaximumAngle": 285
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33860,
"Locations": [
{
"Position": {
"X": -254.579,
"Y": 147.4603,
"Z": -91.96173
},
"MinimumAngle": 30,
"MaximumAngle": 130
}
]
},
{
"DataId": 33859,
"Locations": [
{
"Position": {
"X": -254.9425,
"Y": 146.4598,
"Z": -105.2472
},
"MinimumAngle": 35,
"MaximumAngle": 155
}
]
}
]
}
]
}

View File

@ -0,0 +1,113 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 399,
"InteractionType": "None",
"AetheryteShortcut": "Idyllshire",
"AethernetShortcut": [
"[Idyllshire] Aetheryte Plaza",
"[Idyllshire] Epilogue Gate (Eastern Hinterlands)"
]
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33866,
"Locations": [
{
"Position": {
"X": 679.6339,
"Y": 116.0614,
"Z": 134.6795
},
"MinimumAngle": 200,
"MaximumAngle": 320
}
]
},
{
"DataId": 33865,
"Locations": [
{
"Position": {
"X": 697.5129,
"Y": 122.1484,
"Z": 146.8725
},
"MinimumAngle": -205,
"MaximumAngle": -10
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33862,
"Locations": [
{
"Position": {
"X": 809.8756,
"Y": 152.7643,
"Z": 205.2242
},
"MinimumAngle": -95,
"MaximumAngle": 90
}
]
},
{
"DataId": 33861,
"Locations": [
{
"Position": {
"X": 834.4771,
"Y": 154.8756,
"Z": 206.0541
},
"MinimumAngle": 35,
"MaximumAngle": 185
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33863,
"Locations": [
{
"Position": {
"X": 781.7728,
"Y": 134.6856,
"Z": -22.00103
},
"MinimumAngle": 0,
"MaximumAngle": 135
}
]
},
{
"DataId": 33864,
"Locations": [
{
"Position": {
"X": 774.9854,
"Y": 134.3857,
"Z": -27.45042
},
"MinimumAngle": -25,
"MaximumAngle": 120
}
]
}
]
}
]
}

View File

@ -0,0 +1,109 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 401,
"InteractionType": "None",
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33308,
"Locations": [
{
"Position": {
"X": 612.0084,
"Y": -154.126,
"Z": 721.6054
},
"MinimumAngle": -220,
"MaximumAngle": 25
}
]
},
{
"DataId": 33307,
"Locations": [
{
"Position": {
"X": 601.7455,
"Y": -154.7067,
"Z": 734.4706
},
"MinimumAngle": -120,
"MaximumAngle": 75
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33311,
"Locations": [
{
"Position": {
"X": 654.2362,
"Y": -159.8305,
"Z": 820.9418
}
}
]
},
{
"DataId": 33312,
"Locations": [
{
"Position": {
"X": 656.2291,
"Y": -160.4766,
"Z": 826.9885
},
"MinimumAngle": 100,
"MaximumAngle": 270
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33309,
"Locations": [
{
"Position": {
"X": 739.0756,
"Y": -158.0396,
"Z": 642.5712
},
"MinimumAngle": 110,
"MaximumAngle": 210,
"MinimumDistance": 1,
"MaximumDistance": 3
}
]
},
{
"DataId": 33310,
"Locations": [
{
"Position": {
"X": 723.027,
"Y": -157.7834,
"Z": 626.666
},
"MinimumAngle": -170,
"MaximumAngle": 35
}
]
}
]
}
]
}

View File

@ -0,0 +1,113 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 401,
"InteractionType": "None",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33313,
"Locations": [
{
"Position": {
"X": 284.0225,
"Y": -40.41348,
"Z": -766.5984
},
"MinimumAngle": 160,
"MaximumAngle": 245,
"MinimumDistance": 1.6,
"MaximumDistance": 3
}
]
},
{
"DataId": 33314,
"Locations": [
{
"Position": {
"X": 291.4046,
"Y": -40.37925,
"Z": -758.5402
},
"MinimumAngle": 210,
"MaximumAngle": 345
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33315,
"Locations": [
{
"Position": {
"X": 358.8156,
"Y": -41.42974,
"Z": -734.5118
},
"MinimumAngle": 115,
"MaximumAngle": 250
}
]
},
{
"DataId": 33316,
"Locations": [
{
"Position": {
"X": 367.6869,
"Y": -41.54303,
"Z": -735.3597
},
"MinimumAngle": 70,
"MaximumAngle": 220
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33317,
"Locations": [
{
"Position": {
"X": 452.3558,
"Y": -47.13874,
"Z": -752.6805
},
"MinimumAngle": 150,
"MaximumAngle": 275
}
]
},
{
"DataId": 33318,
"Locations": [
{
"Position": {
"X": 465.9165,
"Y": -47.82627,
"Z": -756.4039
},
"MinimumAngle": 35,
"MaximumAngle": 160,
"MinimumDistance": 1.2,
"MaximumDistance": 3
}
]
}
]
}
]
}

View File

@ -0,0 +1,111 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 622,
"InteractionType": "None",
"AetheryteShortcut": "Azim Steppe - Reunion"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33883,
"Locations": [
{
"Position": {
"X": 128.0255,
"Y": -1.00095,
"Z": 322.0047
},
"MinimumAngle": -120,
"MaximumAngle": 65
}
]
},
{
"DataId": 33884,
"Locations": [
{
"Position": {
"X": 116.5815,
"Y": -1.584854,
"Z": 321.8561
},
"MinimumAngle": -65,
"MaximumAngle": 100
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33882,
"Locations": [
{
"Position": {
"X": -31.5303,
"Y": -2.218102,
"Z": 328.7178
},
"MinimumAngle": 110,
"MaximumAngle": 255
}
]
},
{
"DataId": 33881,
"Locations": [
{
"Position": {
"X": -44.53269,
"Y": -1.966054,
"Z": 332.6949
},
"MinimumAngle": 120,
"MaximumAngle": 225
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33880,
"Locations": [
{
"Position": {
"X": 37.46276,
"Y": -4.431953,
"Z": 425.0844
},
"MinimumAngle": 140,
"MaximumAngle": 240
}
]
},
{
"DataId": 33879,
"Locations": [
{
"Position": {
"X": 46.12198,
"Y": -5.283945,
"Z": 426.5148
},
"MinimumAngle": 115,
"MaximumAngle": 255,
"MinimumDistance": 1.5,
"MaximumDistance": 3
}
]
}
]
}
]
}

View File

@ -0,0 +1,115 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 612,
"InteractionType": "None",
"AetheryteShortcut": "Fringes - Peering Stones"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33871,
"Locations": [
{
"Position": {
"X": 556.8531,
"Y": 73.44064,
"Z": 99.57761
},
"MinimumAngle": 35,
"MaximumAngle": 160
}
]
},
{
"DataId": 33872,
"Locations": [
{
"Position": {
"X": 561.7782,
"Y": 73.45153,
"Z": 72.6368
},
"MinimumAngle": 15,
"MaximumAngle": 165,
"MinimumDistance": 1.3,
"MaximumDistance": 3
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33867,
"Locations": [
{
"Position": {
"X": 498.26,
"Y": 76.74628,
"Z": -46.34168
},
"MinimumAngle": -65,
"MaximumAngle": 45
}
]
},
{
"DataId": 33868,
"Locations": [
{
"Position": {
"X": 473.011,
"Y": 76.55681,
"Z": -47.70556
},
"MinimumAngle": -45,
"MaximumAngle": 60,
"MinimumDistance": 1.9,
"MaximumDistance": 3
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33870,
"Locations": [
{
"Position": {
"X": 361.4784,
"Y": 70.79905,
"Z": 146.1887
},
"MinimumAngle": -55,
"MaximumAngle": 40,
"MinimumDistance": 1.3,
"MaximumDistance": 3
}
]
},
{
"DataId": 33869,
"Locations": [
{
"Position": {
"X": 364.7684,
"Y": 70.90228,
"Z": 167.3831
},
"MinimumAngle": 105,
"MaximumAngle": 230
}
]
}
]
}
]
}

View File

@ -0,0 +1,109 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 612,
"InteractionType": "None",
"AetheryteShortcut": "Fringes - Peering Stones"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33875,
"Locations": [
{
"Position": {
"X": 567.9412,
"Y": 50.43103,
"Z": 373.1152
},
"MinimumAngle": 200,
"MaximumAngle": 350
}
]
},
{
"DataId": 33876,
"Locations": [
{
"Position": {
"X": 578.4171,
"Y": 48.36443,
"Z": 365.4806
},
"MinimumAngle": -45,
"MaximumAngle": 120
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33873,
"Locations": [
{
"Position": {
"X": 599.5352,
"Y": 75.60928,
"Z": 244.3069
},
"MinimumAngle": -80,
"MaximumAngle": 70
}
]
},
{
"DataId": 33874,
"Locations": [
{
"Position": {
"X": 592.9609,
"Y": 75.62624,
"Z": 268.9515
},
"MinimumAngle": 110,
"MaximumAngle": 285
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33878,
"Locations": [
{
"Position": {
"X": 753.3094,
"Y": 72.73058,
"Z": 364.073
},
"MinimumAngle": 95,
"MaximumAngle": 240
}
]
},
{
"DataId": 33877,
"Locations": [
{
"Position": {
"X": 764.3023,
"Y": 74.18732,
"Z": 337.2563
},
"MinimumAngle": -70,
"MaximumAngle": 105
}
]
}
]
}
]
}

View File

@ -0,0 +1,120 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 621,
"InteractionType": "None",
"AetheryteShortcut": "Lochs - Ala Mhigan Quarter"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33339,
"Locations": [
{
"Position": {
"X": 440.6299,
"Y": 74.86803,
"Z": -205.3779
},
"MinimumAngle": 85,
"MaximumAngle": 215
}
]
},
{
"DataId": 33340,
"Locations": [
{
"Position": {
"X": 426.4497,
"Y": 70.57706,
"Z": -198.046
},
"MinimumAngle": 95,
"MaximumAngle": 180,
"MinimumDistance": 1.3,
"MaximumDistance": 3
},
{
"Position": {
"X": 453.1248,
"Y": 77.29013,
"Z": -211.6347
},
"MinimumAngle": 85,
"MaximumAngle": 190
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33337,
"Locations": [
{
"Position": {
"X": 561.2196,
"Y": 94.65154,
"Z": -315.6258
},
"MinimumAngle": 50,
"MaximumAngle": 160
}
]
},
{
"DataId": 33338,
"Locations": [
{
"Position": {
"X": 563.1749,
"Y": 93.41929,
"Z": -335.4834
},
"MinimumAngle": -25,
"MaximumAngle": 75
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33341,
"Locations": [
{
"Position": {
"X": 388.9345,
"Y": 54.85489,
"Z": -350.8919
},
"MinimumAngle": 55,
"MaximumAngle": 150
}
]
},
{
"DataId": 33342,
"Locations": [
{
"Position": {
"X": 394.7824,
"Y": 51.66671,
"Z": -369.6645
},
"MinimumAngle": 70,
"MaximumAngle": 135
}
]
}
]
}
]
}

View File

@ -84,8 +84,10 @@
"Y": 257.4255,
"Z": -669.3115
},
"MinimumAngle": -30,
"MaximumAngle": 5
"MinimumAngle": -50,
"MaximumAngle": -15,
"MinimumDistance": 2.1,
"MaximumDistance": 3
}
]
}
@ -133,4 +135,4 @@
]
}
]
}
}

View File

@ -0,0 +1,118 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 620,
"InteractionType": "None",
"AetheryteShortcut": "Peaks - Ala Gannha"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33321,
"Locations": [
{
"Position": {
"X": 518.1079,
"Y": 218.4718,
"Z": -593.7597
},
"MinimumAngle": -140,
"MaximumAngle": 70
}
]
},
{
"DataId": 33322,
"Locations": [
{
"Position": {
"X": 543.8551,
"Y": 223.6571,
"Z": -583.9418
},
"MinimumAngle": 175,
"MaximumAngle": 290
},
{
"Position": {
"X": 513.8116,
"Y": 218.4708,
"Z": -580.1434
},
"MinimumAngle": 0,
"MaximumAngle": 145
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33323,
"Locations": [
{
"Position": {
"X": 648.0388,
"Y": 230.7679,
"Z": -678.8027
},
"MinimumAngle": 225,
"MaximumAngle": 345
}
]
},
{
"DataId": 33324,
"Locations": [
{
"Position": {
"X": 675.1682,
"Y": 234.6712,
"Z": -675.749
},
"MinimumAngle": -55,
"MaximumAngle": 85
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33320,
"Locations": [
{
"Position": {
"X": 722.4699,
"Y": 242.8886,
"Z": -598.9974
},
"MinimumAngle": 65,
"MaximumAngle": 195
}
]
},
{
"DataId": 33319,
"Locations": [
{
"Position": {
"X": 718.4479,
"Y": 244.6019,
"Z": -583.6996
},
"MinimumAngle": 45,
"MaximumAngle": 190
}
]
}
]
}
]
}

View File

@ -0,0 +1,31 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 620,
"InteractionType": "None",
"AetheryteShortcut": "Peaks - Ala Gannha"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33028,
"Locations": [
{
"Position": {
"X": 454.6367,
"Y": 227.1414,
"Z": -731.7471
},
"MinimumAngle": -120,
"MaximumAngle": 65
}
]
}
]
}
]
}

View File

@ -0,0 +1,149 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"Position": {
"X": 322.1539,
"Y": -121.22571,
"Z": -314.2446
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Ruby Sea - Tamamizu",
"RestartNavigationIfCancelled": false
},
{
"TerritoryId": 613,
"InteractionType": "None"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 32153,
"Locations": [
{
"Position": {
"X": -373.2205,
"Y": -136.6522,
"Z": -274.8914
}
}
]
},
{
"DataId": 32154,
"Locations": [
{
"Position": {
"X": -448.4877,
"Y": -116.7225,
"Z": -302.5894
}
},
{
"Position": {
"X": -367.8707,
"Y": -141.2844,
"Z": -234.9824
}
},
{
"Position": {
"X": -410.8549,
"Y": -118.3526,
"Z": -327.6413
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32158,
"Locations": [
{
"Position": {
"X": -541.3218,
"Y": -110.9725,
"Z": -162.0661
}
},
{
"Position": {
"X": -541.0571,
"Y": -101.0088,
"Z": -238.4313
}
},
{
"Position": {
"X": -557.3869,
"Y": -91.38704,
"Z": -232.6365
}
}
]
},
{
"DataId": 32157,
"Locations": [
{
"Position": {
"X": -527.4707,
"Y": -125.4386,
"Z": -165.366
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32155,
"Locations": [
{
"Position": {
"X": -460.3799,
"Y": -154.5827,
"Z": -110.9484
}
}
]
},
{
"DataId": 32156,
"Locations": [
{
"Position": {
"X": -399.089,
"Y": -145.1425,
"Z": -6.001478
}
},
{
"Position": {
"X": -474.2804,
"Y": -142.6447,
"Z": -92.2213
}
},
{
"Position": {
"X": -474.9154,
"Y": -132.8651,
"Z": -73.47042
}
}
]
}
]
}
]
}

View File

@ -3,9 +3,19 @@
"Author": "liza",
"Steps": [
{
"Position": {
"X": 322.1539,
"Y": -121.22571,
"Z": -314.2446
},
"TerritoryId": 613,
"InteractionType": "None",
"AetheryteShortcut": "Ruby Sea - Tamamizu"
"InteractionType": "WalkTo",
"AetheryteShortcut": "Ruby Sea - Tamamizu",
"RestartNavigationIfCancelled": false
},
{
"TerritoryId": 613,
"InteractionType": "None"
}
],
"Groups": [

View File

@ -3,9 +3,19 @@
"Author": "liza",
"Steps": [
{
"Position": {
"X": 322.1539,
"Y": -121.22571,
"Z": -314.2446
},
"TerritoryId": 613,
"InteractionType": "None",
"AetheryteShortcut": "Ruby Sea - Onokoro"
"InteractionType": "WalkTo",
"AetheryteShortcut": "Ruby Sea - Tamamizu",
"RestartNavigationIfCancelled": false
},
{
"TerritoryId": 613,
"InteractionType": "None"
}
],
"Groups": [

View File

@ -40,7 +40,7 @@
"Z": 634.821
},
"MinimumAngle": 45,
"MaximumAngle": 90,
"MaximumAngle": 65,
"MinimumDistance": 1.6,
"MaximumDistance": 3
},
@ -140,4 +140,4 @@
]
}
]
}
}

View File

@ -0,0 +1,49 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 613,
"InteractionType": "None",
"AetheryteShortcut": "Ruby Sea - Onokoro"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 32308,
"Locations": [
{
"Position": {
"X": -531.8166,
"Y": 16.39526,
"Z": 34.16671
},
"MinimumAngle": 245,
"MaximumAngle": 325
},
{
"Position": {
"X": -532.9277,
"Y": 15.60621,
"Z": 50.29741
},
"MinimumAngle": 190,
"MaximumAngle": 330
},
{
"Position": {
"X": -520.6714,
"Y": 14.15115,
"Z": 73.84262
},
"MinimumAngle": 105,
"MaximumAngle": 230
}
]
}
]
}
]
}

View File

@ -0,0 +1,150 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"Position": {
"X": 322.1539,
"Y": -121.22571,
"Z": -314.2446
},
"TerritoryId": 613,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Ruby Sea - Tamamizu",
"RestartNavigationIfCancelled": false
},
{
"TerritoryId": 613,
"InteractionType": "None"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33325,
"Locations": [
{
"Position": {
"X": 953.1041,
"Y": -127.1716,
"Z": -816.3145
},
"MinimumAngle": -25,
"MaximumAngle": 100
}
]
},
{
"DataId": 33326,
"Locations": [
{
"Position": {
"X": 956.8734,
"Y": -129.366,
"Z": -843.1625
},
"MinimumAngle": 75,
"MaximumAngle": 210
},
{
"Position": {
"X": 976.0558,
"Y": -131.5356,
"Z": -813.2305
},
"MinimumAngle": -65,
"MaximumAngle": 30,
"MinimumDistance": 1.4,
"MaximumDistance": 3
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33327,
"Locations": [
{
"Position": {
"X": 887.1607,
"Y": -141.6279,
"Z": -863.3355
},
"MinimumAngle": 185,
"MaximumAngle": 340
}
]
},
{
"DataId": 33328,
"Locations": [
{
"Position": {
"X": 874.0369,
"Y": -135.9791,
"Z": -848.3512
},
"MinimumAngle": -80,
"MaximumAngle": 60
},
{
"Position": {
"X": 895.865,
"Y": -144.0468,
"Z": -890.5269
},
"MinimumAngle": 195,
"MaximumAngle": 315
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33329,
"Locations": [
{
"Position": {
"X": 836.5433,
"Y": -140.1729,
"Z": -948.7974
},
"MinimumAngle": 130,
"MaximumAngle": 295
}
]
},
{
"DataId": 33330,
"Locations": [
{
"Position": {
"X": 843.2012,
"Y": -139.2853,
"Z": -961.9124
},
"MinimumAngle": -95,
"MaximumAngle": 15,
"MinimumDistance": 1.3,
"MaximumDistance": 3
},
{
"Position": {
"X": 856.3994,
"Y": -142.4276,
"Z": -941.0324
},
"MinimumAngle": 115,
"MaximumAngle": 265
}
]
}
]
}
]
}

View File

@ -52,8 +52,10 @@
"Y": 70.24178,
"Z": 19.50875
},
"MinimumAngle": 120,
"MaximumAngle": 240
"MinimumAngle": 140,
"MaximumAngle": 215,
"MinimumDistance": 1.8,
"MaximumDistance": 3
}
]
}
@ -158,4 +160,4 @@
]
}
]
}
}

View File

@ -0,0 +1,138 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 815,
"InteractionType": "None",
"AetheryteShortcut": "Amh Araeng - Inn at Journey's Head"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 32625,
"Locations": [
{
"Position": {
"X": 451.1189,
"Y": -40.18039,
"Z": 184.7025
},
"MinimumAngle": 95,
"MaximumAngle": 245
},
{
"Position": {
"X": 471.4881,
"Y": -41.63216,
"Z": 185.0577
},
"MinimumAngle": 160,
"MaximumAngle": 285
}
]
},
{
"DataId": 32624,
"Locations": [
{
"Position": {
"X": 463.4016,
"Y": -41.51461,
"Z": 181.6076
},
"MinimumAngle": 90,
"MaximumAngle": 250
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32622,
"Locations": [
{
"Position": {
"X": 507.8041,
"Y": -33.50595,
"Z": 26.54234
},
"MinimumAngle": 60,
"MaximumAngle": 180,
"MinimumDistance": 1,
"MaximumDistance": 3
}
]
},
{
"DataId": 32623,
"Locations": [
{
"Position": {
"X": 509.3797,
"Y": -30.43971,
"Z": -2.22134
},
"MinimumAngle": -55,
"MaximumAngle": 30
},
{
"Position": {
"X": 490.9295,
"Y": -30.41992,
"Z": -0.7659363
},
"MinimumAngle": -70,
"MaximumAngle": 25
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32621,
"Locations": [
{
"Position": {
"X": 378.5,
"Y": -29.83888,
"Z": 25.41485
},
"MinimumAngle": -65,
"MaximumAngle": 30
},
{
"Position": {
"X": 358.2361,
"Y": -30,
"Z": 26.45336
},
"MinimumAngle": -40,
"MaximumAngle": 45
}
]
},
{
"DataId": 32620,
"Locations": [
{
"Position": {
"X": 365.5395,
"Y": -34.4827,
"Z": 42.98462
},
"MinimumAngle": 190,
"MaximumAngle": 285
}
]
}
]
}
]
}

View File

@ -0,0 +1,132 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 815,
"InteractionType": "None",
"AetheryteShortcut": "Amh Araeng - Mord Souq"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 32686,
"Locations": [
{
"Position": {
"X": 486.6385,
"Y": -28.30028,
"Z": -161.7677
},
"MinimumAngle": 155,
"MaximumAngle": 335
},
{
"Position": {
"X": 494.8945,
"Y": -21.52249,
"Z": -137.1469
}
}
]
},
{
"DataId": 32685,
"Locations": [
{
"Position": {
"X": 503.6436,
"Y": -23.70927,
"Z": -142.2979
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32689,
"Locations": [
{
"Position": {
"X": 657.1875,
"Y": -26.81644,
"Z": -235.4547
},
"MinimumAngle": 65,
"MaximumAngle": 270
}
]
},
{
"DataId": 32690,
"Locations": [
{
"Position": {
"X": 655.8629,
"Y": -27.85928,
"Z": -256.156
},
"MinimumAngle": 65,
"MaximumAngle": 235
},
{
"Position": {
"X": 656.6887,
"Y": -26.66475,
"Z": -230.172
},
"MinimumAngle": -75,
"MaximumAngle": 135
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32688,
"Locations": [
{
"Position": {
"X": 487.4965,
"Y": -33.01668,
"Z": -304.6423
},
"MinimumAngle": 150,
"MaximumAngle": 330
},
{
"Position": {
"X": 477.8194,
"Y": -31.87613,
"Z": -320.6989
},
"MinimumAngle": 180,
"MaximumAngle": 310
}
]
},
{
"DataId": 32687,
"Locations": [
{
"Position": {
"X": 481.1932,
"Y": -32.4591,
"Z": -313.7588
},
"MinimumAngle": 170,
"MaximumAngle": 305
}
]
}
]
}
]
}

View File

@ -0,0 +1,136 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 815,
"InteractionType": "None",
"AetheryteShortcut": "Amh Araeng - Twine"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34411,
"Locations": [
{
"Position": {
"X": -418.0731,
"Y": 16.25609,
"Z": -127.4739
},
"MinimumAngle": 240,
"MaximumAngle": 360
}
]
},
{
"DataId": 34412,
"Locations": [
{
"Position": {
"X": -436.8404,
"Y": 18.18649,
"Z": -121.9686
},
"MinimumAngle": -80,
"MaximumAngle": 75
},
{
"Position": {
"X": -412.7203,
"Y": 17.72583,
"Z": -144.2871
},
"MinimumAngle": -145,
"MaximumAngle": 5
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34409,
"Locations": [
{
"Position": {
"X": -309.9351,
"Y": 22.43881,
"Z": -196.324
},
"MinimumAngle": -70,
"MaximumAngle": 60
}
]
},
{
"DataId": 34410,
"Locations": [
{
"Position": {
"X": -301.4662,
"Y": 22.08392,
"Z": -205.1306
},
"MinimumAngle": -145,
"MaximumAngle": -20
},
{
"Position": {
"X": -318.3467,
"Y": 23.1723,
"Z": -198.7676
},
"MinimumAngle": -45,
"MaximumAngle": 85
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34414,
"Locations": [
{
"Position": {
"X": -229.6105,
"Y": 5.158276,
"Z": -103.3359
},
"MinimumAngle": -40,
"MaximumAngle": 170
},
{
"Position": {
"X": -247.2413,
"Y": 9.6758,
"Z": -128.0531
},
"MinimumAngle": 30,
"MaximumAngle": 125
}
]
},
{
"DataId": 34413,
"Locations": [
{
"Position": {
"X": -248.8988,
"Y": 7.998118,
"Z": -121.8732
},
"MinimumAngle": 0,
"MaximumAngle": 160
}
]
}
]
}
]
}

View File

@ -0,0 +1,122 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 815,
"InteractionType": "None",
"AetheryteShortcut": "Amh Araeng - Twine"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34430,
"Locations": [
{
"Position": {
"X": -449.9385,
"Y": -1.370689,
"Z": -409.258
}
},
{
"Position": {
"X": -445.7757,
"Y": -0.7637522,
"Z": -415.8121
}
}
]
},
{
"DataId": 34429,
"Locations": [
{
"Position": {
"X": -451.2528,
"Y": -1.577711,
"Z": -414.294
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34427,
"Locations": [
{
"Position": {
"X": -346.0392,
"Y": 0.6433533,
"Z": -541.9421
}
}
]
},
{
"DataId": 34428,
"Locations": [
{
"Position": {
"X": -326.9622,
"Y": 1.097262,
"Z": -537.5435
},
"MinimumAngle": 0,
"MaximumAngle": 220
},
{
"Position": {
"X": -357.2281,
"Y": 0.4458784,
"Z": -513.3207
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34431,
"Locations": [
{
"Position": {
"X": -441.0019,
"Y": -5.337227,
"Z": -636.1525
}
}
]
},
{
"DataId": 34432,
"Locations": [
{
"Position": {
"X": -464.1121,
"Y": -5.420424,
"Z": -649.8243
}
},
{
"Position": {
"X": -436.4872,
"Y": -5.205373,
"Z": -638.8244
},
"MinimumAngle": -95,
"MaximumAngle": 85
}
]
}
]
}
]
}

View File

@ -0,0 +1,140 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"Position": {
"X": 329.38184,
"Y": 9.586891,
"Z": 749.2314
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Il Mheg - Lydha Lran",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
{
"Position": {
"X": 351.29465,
"Y": -38.275272,
"Z": 763.0457
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
"Fly": true,
"DisableNavmesh": true
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 32832,
"Locations": [
{
"Position": {
"X": 382.7488,
"Y": -72.47251,
"Z": 794.3513
}
},
{
"Position": {
"X": 388.7861,
"Y": -74.19925,
"Z": 801.0947
}
},
{
"Position": {
"X": 386.1797,
"Y": -73.5009,
"Z": 787.0967
}
}
]
},
{
"DataId": 32831,
"Locations": [
{
"Position": {
"X": 396.5799,
"Y": -76.29187,
"Z": 790.9022
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32830,
"Locations": [
{
"Position": {
"X": 492.6384,
"Y": -82.73045,
"Z": 804.714
}
},
{
"Position": {
"X": 482.808,
"Y": -82.61642,
"Z": 802.591
}
}
]
},
{
"DataId": 32829,
"Locations": [
{
"Position": {
"X": 493.5814,
"Y": -82.43644,
"Z": 790.831
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32827,
"Locations": [
{
"Position": {
"X": 490.9451,
"Y": -97.88062,
"Z": 636.6115
}
}
]
},
{
"DataId": 32828,
"Locations": [
{
"Position": {
"X": 491.5274,
"Y": -100.762,
"Z": 626.6958
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,158 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"Position": {
"X": 491.82068,
"Y": 3.9304812,
"Z": 487.9401
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Il Mheg - Lydha Lran",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
{
"Position": {
"X": 506.00256,
"Y": -37.76961,
"Z": 485.49347
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
"Fly": true,
"DisableNavmesh": true
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 32836,
"Locations": [
{
"Position": {
"X": 539.5437,
"Y": -81.62054,
"Z": 520.1647
},
"MinimumAngle": -30,
"MaximumAngle": 165
},
{
"Position": {
"X": 555.8599,
"Y": -73.65717,
"Z": 494.6164
},
"MinimumAngle": 35,
"MaximumAngle": 240
},
{
"Position": {
"X": 576.4164,
"Y": -69.75835,
"Z": 512.9263
},
"MinimumAngle": -75,
"MaximumAngle": 70
}
]
},
{
"DataId": 32835,
"Locations": [
{
"Position": {
"X": 552.5504,
"Y": -78.23183,
"Z": 512.429
},
"MinimumAngle": -30,
"MaximumAngle": 135
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32838,
"Locations": [
{
"Position": {
"X": 652.7063,
"Y": -46.64378,
"Z": 488.4543
},
"MinimumAngle": 0,
"MaximumAngle": 120
},
{
"Position": {
"X": 669.2959,
"Y": -47.14824,
"Z": 513.9606
},
"MinimumAngle": -20,
"MaximumAngle": 105
}
]
},
{
"DataId": 32837,
"Locations": [
{
"Position": {
"X": 659.1685,
"Y": -46.65159,
"Z": 499.8015
},
"MinimumAngle": 0,
"MaximumAngle": 125
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32834,
"Locations": [
{
"Position": {
"X": 576.1583,
"Y": -46.68682,
"Z": 375.5306
},
"MinimumAngle": -40,
"MaximumAngle": 150
}
]
},
{
"DataId": 32833,
"Locations": [
{
"Position": {
"X": 571.1834,
"Y": -46.41214,
"Z": 360.5112
},
"MinimumAngle": 0,
"MaximumAngle": 115
}
]
}
]
}
]
}

View File

@ -0,0 +1,134 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 816,
"InteractionType": "None",
"AetheryteShortcut": "Il Mheg - Wolekdorf"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34407,
"Locations": [
{
"Position": {
"X": 398.7715,
"Y": 58.00708,
"Z": -535.3972
},
"MinimumAngle": 95,
"MaximumAngle": 225
}
]
},
{
"DataId": 34408,
"Locations": [
{
"Position": {
"X": 395.787,
"Y": 57.58823,
"Z": -532.1421
},
"MinimumAngle": 105,
"MaximumAngle": 180,
"MinimumDistance": 1.5,
"MaximumDistance": 3
},
{
"Position": {
"X": 403.3334,
"Y": 58.56588,
"Z": -533.6083
},
"MinimumAngle": 155,
"MaximumAngle": 325
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34405,
"Locations": [
{
"Position": {
"X": 563.6605,
"Y": 96.62567,
"Z": -409.83
},
"MinimumAngle": 60,
"MaximumAngle": 205
}
]
},
{
"DataId": 34406,
"Locations": [
{
"Position": {
"X": 584.2038,
"Y": 97.61217,
"Z": -429.3185
}
},
{
"Position": {
"X": 541.3574,
"Y": 95.33327,
"Z": -385.5562
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34403,
"Locations": [
{
"Position": {
"X": 569.0512,
"Y": 96.43839,
"Z": -571.2072
},
"MinimumAngle": 45,
"MaximumAngle": 190
}
]
},
{
"DataId": 34404,
"Locations": [
{
"Position": {
"X": 557.5918,
"Y": 92.0403,
"Z": -582.1814
},
"MinimumAngle": 70,
"MaximumAngle": 200
},
{
"Position": {
"X": 573.9432,
"Y": 96.50874,
"Z": -575.4167
},
"MinimumAngle": 85,
"MaximumAngle": 220
}
]
}
]
}
]
}

View File

@ -0,0 +1,120 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 816,
"InteractionType": "None",
"AetheryteShortcut": "Il Mheg - Wolekdorf"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34422,
"Locations": [
{
"Position": {
"X": -161.9915,
"Y": 60.04895,
"Z": -647.3901
}
},
{
"Position": {
"X": -179.2945,
"Y": 60.84981,
"Z": -630.9084
}
}
]
},
{
"DataId": 34421,
"Locations": [
{
"Position": {
"X": -182.311,
"Y": 60.81965,
"Z": -640.2197
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34423,
"Locations": [
{
"Position": {
"X": -182.0749,
"Y": 60.70063,
"Z": -567.6271
}
}
]
},
{
"DataId": 34424,
"Locations": [
{
"Position": {
"X": -184.7115,
"Y": 59.23207,
"Z": -573.9592
}
},
{
"Position": {
"X": -171.0273,
"Y": 62.20385,
"Z": -576.3321
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34425,
"Locations": [
{
"Position": {
"X": -333.3387,
"Y": 82.66466,
"Z": -505.7937
}
}
]
},
{
"DataId": 34426,
"Locations": [
{
"Position": {
"X": -333.0683,
"Y": 82.72758,
"Z": -501.5885
},
"MinimumAngle": 75,
"MaximumAngle": 265
},
{
"Position": {
"X": -349.0388,
"Y": 89.44427,
"Z": -512.492
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,69 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 817,
"InteractionType": "None",
"AetheryteShortcut": "Rak'tika - Slitherbough"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 32993,
"Locations": [
{
"Position": {
"X": -704.8221,
"Y": 2.162976,
"Z": 563.2257
},
"MinimumAngle": 35,
"MaximumAngle": 120,
"MinimumDistance": 1,
"MaximumDistance": 2.4
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32991,
"Locations": [
{
"Position": {
"X": -702.9366,
"Y": 3.147394,
"Z": 580.9824
},
"MinimumAngle": 20,
"MaximumAngle": 120
}
]
}
]
},
{
"Nodes": [
{
"DataId": 32992,
"Locations": [
{
"Position": {
"X": -731.9697,
"Y": 2.883299,
"Z": 562.4577
},
"MinimumAngle": 100,
"MaximumAngle": 245
}
]
}
]
}
]
}

View File

@ -4,7 +4,8 @@
"Steps": [
{
"TerritoryId": 817,
"InteractionType": "None"
"InteractionType": "None",
"AetheryteShortcut": "Rak'tika - Slitherbough"
}
],
"Groups": [

View File

@ -0,0 +1,65 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 817,
"InteractionType": "None",
"AetheryteShortcut": "Rak'tika - Slitherbough"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33007,
"Locations": [
{
"Position": {
"X": -643.0819,
"Y": 1.715566,
"Z": 600.3007
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33006,
"Locations": [
{
"Position": {
"X": -664.0663,
"Y": 4.130917,
"Z": 608.2639
},
"MinimumAngle": 100,
"MaximumAngle": 235
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33008,
"Locations": [
{
"Position": {
"X": -689.2495,
"Y": 4.592032,
"Z": 603.05
},
"MinimumAngle": -95,
"MaximumAngle": 85
}
]
}
]
}
]
}

View File

@ -0,0 +1,67 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 817,
"InteractionType": "None",
"AetheryteShortcut": "Rak'tika - Slitherbough"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33020,
"Locations": [
{
"Position": {
"X": 226.1767,
"Y": -20.10281,
"Z": 643.5543
},
"MinimumAngle": -50,
"MaximumAngle": 120
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33018,
"Locations": [
{
"Position": {
"X": 248.9525,
"Y": -17.98949,
"Z": 657.4498
},
"MinimumAngle": -55,
"MaximumAngle": 100,
"MinimumDistance": 1,
"MaximumDistance": 3
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33019,
"Locations": [
{
"Position": {
"X": 209.0277,
"Y": -25.56828,
"Z": 701.8604
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,132 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 818,
"InteractionType": "None",
"AetheryteShortcut": "Tempest - Ondo Cups"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34458,
"Locations": [
{
"Position": {
"X": 44.00173,
"Y": 428.2346,
"Z": -656.6179
},
"MinimumAngle": -65,
"MaximumAngle": 10
},
{
"Position": {
"X": 16.55597,
"Y": 426.627,
"Z": -670.5577
},
"MinimumAngle": -25,
"MaximumAngle": 110
}
]
},
{
"DataId": 34457,
"Locations": [
{
"Position": {
"X": 37.23584,
"Y": 427.2601,
"Z": -653.0619
},
"MinimumAngle": 245,
"MaximumAngle": 335
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34461,
"Locations": [
{
"Position": {
"X": -65.51347,
"Y": 400.3132,
"Z": -539.7745
}
}
]
},
{
"DataId": 34462,
"Locations": [
{
"Position": {
"X": -67.70384,
"Y": 400.7841,
"Z": -542.4638
},
"MinimumAngle": -85,
"MaximumAngle": 55
},
{
"Position": {
"X": -55.10947,
"Y": 399.0878,
"Z": -536.9024
},
"MinimumDistance": 1,
"MaximumDistance": 2.5
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34459,
"Locations": [
{
"Position": {
"X": -216.086,
"Y": 426.8226,
"Z": -649.2361
}
}
]
},
{
"DataId": 34460,
"Locations": [
{
"Position": {
"X": -215.228,
"Y": 427.4708,
"Z": -653.9598
},
"MinimumAngle": -55,
"MaximumAngle": 135
},
{
"Position": {
"X": -201.5463,
"Y": 427.882,
"Z": -655.0467
},
"MinimumAngle": -70,
"MaximumAngle": 65
}
]
}
]
}
]
}

View File

@ -0,0 +1,136 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 818,
"InteractionType": "None",
"AetheryteShortcut": "Tempest - Ondo Cups"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34466,
"Locations": [
{
"Position": {
"X": 403.2184,
"Y": 408.0598,
"Z": -755.5223
},
"MinimumAngle": 80,
"MaximumAngle": 190
},
{
"Position": {
"X": 438.6136,
"Y": 416.6389,
"Z": -758.985
},
"MinimumAngle": 110,
"MaximumAngle": 240
}
]
},
{
"DataId": 34465,
"Locations": [
{
"Position": {
"X": 415.5816,
"Y": 412.4482,
"Z": -758.7325
},
"MinimumAngle": 90,
"MaximumAngle": 195
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34463,
"Locations": [
{
"Position": {
"X": 415.8845,
"Y": 431.2351,
"Z": -896.2997
},
"MinimumAngle": -65,
"MaximumAngle": 45
}
]
},
{
"DataId": 34464,
"Locations": [
{
"Position": {
"X": 400.7106,
"Y": 428.3826,
"Z": -893.9595
},
"MinimumAngle": -40,
"MaximumAngle": 50
},
{
"Position": {
"X": 431.8092,
"Y": 434.546,
"Z": -902.1445
},
"MinimumAngle": -95,
"MaximumAngle": 35
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34467,
"Locations": [
{
"Position": {
"X": 284.0778,
"Y": 433.4644,
"Z": -916.6171
},
"MinimumAngle": -75,
"MaximumAngle": 30
}
]
},
{
"DataId": 34468,
"Locations": [
{
"Position": {
"X": 278.6176,
"Y": 428.9509,
"Z": -904.3234
},
"MinimumAngle": 220,
"MaximumAngle": 345
},
{
"Position": {
"X": 305.7502,
"Y": 432.027,
"Z": -912.7272
},
"MinimumAngle": -80,
"MaximumAngle": 40
}
]
}
]
}
]
}

View File

@ -0,0 +1,165 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 961,
"InteractionType": "None",
"AetheryteShortcut": "Elpis - Poieten Oikos"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33945,
"Locations": [
{
"Position": {
"X": -478.091,
"Y": 136.505,
"Z": -144.7721
},
"MinimumAngle": 185,
"MaximumAngle": 360
},
{
"Position": {
"X": -472.7283,
"Y": 136.9691,
"Z": -153.0142
},
"MinimumAngle": -105,
"MaximumAngle": 20,
"MinimumDistance": 1.6,
"MaximumDistance": 3
},
{
"Position": {
"X": -457.2324,
"Y": 136.2298,
"Z": -153.2787
},
"MinimumAngle": 70,
"MaximumAngle": 195
}
]
},
{
"DataId": 33944,
"Locations": [
{
"Position": {
"X": -477.1867,
"Y": 137.1741,
"Z": -150.0524
},
"MinimumAngle": -95,
"MaximumAngle": 20
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33946,
"Locations": [
{
"Position": {
"X": -335.5337,
"Y": 148.5269,
"Z": -83.30743
},
"MinimumAngle": 140,
"MaximumAngle": 275
}
]
},
{
"DataId": 33947,
"Locations": [
{
"Position": {
"X": -333.4615,
"Y": 148.59,
"Z": -78.42037
},
"MinimumAngle": -160,
"MaximumAngle": -15
},
{
"Position": {
"X": -342.3078,
"Y": 145.4429,
"Z": -109.3348
},
"MinimumAngle": 210,
"MaximumAngle": 355
},
{
"Position": {
"X": -327.4102,
"Y": 143.6382,
"Z": -118.3601
},
"MinimumAngle": -30,
"MaximumAngle": 85
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33942,
"Locations": [
{
"Position": {
"X": -291.2093,
"Y": 136.4047,
"Z": -228.9244
},
"MinimumAngle": 120,
"MaximumAngle": 225
}
]
},
{
"DataId": 33943,
"Locations": [
{
"Position": {
"X": -343.5337,
"Y": 140.0085,
"Z": -243.2652
},
"MinimumAngle": 115,
"MaximumAngle": 255
},
{
"Position": {
"X": -337.3867,
"Y": 136.3985,
"Z": -237.7285
},
"MinimumAngle": -130,
"MaximumAngle": 10
},
{
"Position": {
"X": -304.9684,
"Y": 136.2381,
"Z": -229.2424
},
"MinimumAngle": 115,
"MaximumAngle": 240
}
]
}
]
}
]
}

View File

@ -0,0 +1,78 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"DataId": 2013074,
"Position": {
"X": 304.3412,
"Y": 483.48206,
"Z": 143.11438
},
"TerritoryId": 960,
"InteractionType": "Interact",
"TargetTerritoryId": 1073,
"SkipConditions": {
"StepIf": {
"InTerritory": [
1073
]
}
}
},
{
"TerritoryId": 1073,
"InteractionType": "None"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33840,
"Locations": [
{
"Position": {
"X": 10.28351,
"Y": 486.144,
"Z": -136.9586
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33841,
"Locations": [
{
"Position": {
"X": 19.46428,
"Y": 485.9226,
"Z": -136.738
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33643,
"Locations": [
{
"Position": {
"X": 14.21117,
"Y": 486.0551,
"Z": -143.435
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,78 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"DataId": 2013074,
"Position": {
"X": 304.3412,
"Y": 483.48206,
"Z": 143.11438
},
"TerritoryId": 960,
"InteractionType": "Interact",
"TargetTerritoryId": 1073,
"SkipConditions": {
"StepIf": {
"InTerritory": [
1073
]
}
}
},
{
"TerritoryId": 1073,
"InteractionType": "None"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34350,
"Locations": [
{
"Position": {
"X": 18.9518,
"Y": 485.9131,
"Z": -133.3762
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34351,
"Locations": [
{
"Position": {
"X": 15.71416,
"Y": 486.0302,
"Z": -136.2497
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34349,
"Locations": [
{
"Position": {
"X": 9.524881,
"Y": 486.2234,
"Z": -142.2316
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,139 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 958,
"InteractionType": "None",
"AetheryteShortcut": "Garlemald - Camp Broken Glass"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34004,
"Locations": [
{
"Position": {
"X": 121.8413,
"Y": -6.651628,
"Z": 246.5624
}
},
{
"Position": {
"X": 118.1294,
"Y": -6.603673,
"Z": 242.6448
}
},
{
"Position": {
"X": 104.2039,
"Y": -10.52542,
"Z": 266.5598
}
}
]
},
{
"DataId": 34003,
"Locations": [
{
"Position": {
"X": 98.86316,
"Y": -9.970013,
"Z": 257.6278
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34005,
"Locations": [
{
"Position": {
"X": 215.6167,
"Y": 1.599456,
"Z": 144.3346
}
}
]
},
{
"DataId": 34006,
"Locations": [
{
"Position": {
"X": 215.9073,
"Y": 1.613284,
"Z": 136.584
}
},
{
"Position": {
"X": 191.0582,
"Y": 2.43164,
"Z": 147.7836
}
},
{
"Position": {
"X": 185.1617,
"Y": 2.402756,
"Z": 138.276
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34007,
"Locations": [
{
"Position": {
"X": 264.295,
"Y": -11.52659,
"Z": 306.4464
}
}
]
},
{
"DataId": 34008,
"Locations": [
{
"Position": {
"X": 280.1551,
"Y": -11.53278,
"Z": 301.5915
}
},
{
"Position": {
"X": 257.884,
"Y": -12.02824,
"Z": 296.5428
}
},
{
"Position": {
"X": 271.8952,
"Y": -12.7945,
"Z": 320.4683
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,163 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 956,
"InteractionType": "None",
"AetheryteShortcut": "Labyrinthos - Archeion"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33894,
"Locations": [
{
"Position": {
"X": 458.9456,
"Y": 161.3972,
"Z": -602.1197
},
"MinimumAngle": 140,
"MaximumAngle": 250
}
]
},
{
"DataId": 33895,
"Locations": [
{
"Position": {
"X": 443.0363,
"Y": 161.2974,
"Z": -616.2661
},
"MinimumAngle": 205,
"MaximumAngle": 345
},
{
"Position": {
"X": 444.8557,
"Y": 161.3728,
"Z": -600.3932
},
"MinimumAngle": 145,
"MaximumAngle": 275
},
{
"Position": {
"X": 454.163,
"Y": 161.1728,
"Z": -629.1985
},
"MinimumAngle": -125,
"MaximumAngle": 25
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33899,
"Locations": [
{
"Position": {
"X": 570.556,
"Y": 161.4453,
"Z": -670.7103
},
"MinimumAngle": -30,
"MaximumAngle": 95
},
{
"Position": {
"X": 581.0989,
"Y": 161.3507,
"Z": -660.939
},
"MinimumAngle": 0,
"MaximumAngle": 110
},
{
"Position": {
"X": 594.2559,
"Y": 163.7275,
"Z": -639.3449
},
"MinimumAngle": 0,
"MaximumAngle": 150
}
]
},
{
"DataId": 33898,
"Locations": [
{
"Position": {
"X": 584.6903,
"Y": 161.4933,
"Z": -649.8119
},
"MinimumAngle": 70,
"MaximumAngle": 155
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33897,
"Locations": [
{
"Position": {
"X": 607.6349,
"Y": 161.3022,
"Z": -502.1884
},
"MinimumAngle": 0,
"MaximumAngle": 130
},
{
"Position": {
"X": 604.954,
"Y": 161.3468,
"Z": -508.9037
},
"MinimumAngle": 0,
"MaximumAngle": 125
},
{
"Position": {
"X": 589.7828,
"Y": 161.4424,
"Z": -519.1625
},
"MinimumAngle": 175,
"MaximumAngle": 280
}
]
},
{
"DataId": 33896,
"Locations": [
{
"Position": {
"X": 603.6301,
"Y": 161.3214,
"Z": -520.9421
},
"MinimumAngle": 20,
"MaximumAngle": 145
}
]
}
]
}
]
}

View File

@ -0,0 +1,167 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 956,
"InteractionType": "None",
"AetheryteShortcut": "Old Sharlayan",
"AethernetShortcut": [
"[Old Sharlayan] Aetheryte Plaza",
"[Old Sharlayan] The Hall of Artifice (Labyrinthos)"
]
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33974,
"Locations": [
{
"Position": {
"X": -218.7686,
"Y": 166.4283,
"Z": -723.4156
},
"MinimumAngle": 85,
"MaximumAngle": 235
}
]
},
{
"DataId": 33975,
"Locations": [
{
"Position": {
"X": -212.9429,
"Y": 165.4075,
"Z": -702.5071
},
"MinimumAngle": 80,
"MaximumAngle": 230
},
{
"Position": {
"X": -230.457,
"Y": 166.878,
"Z": -708.8349
},
"MinimumAngle": 115,
"MaximumAngle": 235
},
{
"Position": {
"X": -211.0781,
"Y": 165.8331,
"Z": -732.723
},
"MinimumAngle": 60,
"MaximumAngle": 215
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33972,
"Locations": [
{
"Position": {
"X": -281.8436,
"Y": 181.3823,
"Z": -815.8576
},
"MinimumAngle": 230,
"MaximumAngle": 360
}
]
},
{
"DataId": 33973,
"Locations": [
{
"Position": {
"X": -268.4985,
"Y": 181.0501,
"Z": -829.9652
},
"MinimumAngle": -115,
"MaximumAngle": 45
},
{
"Position": {
"X": -290.0164,
"Y": 182.6228,
"Z": -817.2674
},
"MinimumAngle": -145,
"MaximumAngle": 35
},
{
"Position": {
"X": -264.0305,
"Y": 180.8218,
"Z": -837.3401
},
"MinimumAngle": -40,
"MaximumAngle": 95
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33971,
"Locations": [
{
"Position": {
"X": -385.0122,
"Y": 189.0781,
"Z": -711.0446
},
"MinimumAngle": -30,
"MaximumAngle": 100
},
{
"Position": {
"X": -407.4641,
"Y": 187.9986,
"Z": -684.2576
},
"MinimumAngle": 180,
"MaximumAngle": 310
},
{
"Position": {
"X": -395.5105,
"Y": 187.897,
"Z": -687.5342
},
"MinimumAngle": 0,
"MaximumAngle": 240
}
]
},
{
"DataId": 33970,
"Locations": [
{
"Position": {
"X": -400.513,
"Y": 188.9934,
"Z": -695.2208
},
"MinimumAngle": 165,
"MaximumAngle": 315
}
]
}
]
}
]
}

View File

@ -0,0 +1,163 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 957,
"InteractionType": "None",
"AetheryteShortcut": "Thavnair - Yedlihmad"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33914,
"Locations": [
{
"Position": {
"X": -12.16765,
"Y": 20.89473,
"Z": 506.2973
},
"MinimumAngle": -35,
"MaximumAngle": 60
},
{
"Position": {
"X": 38.53326,
"Y": 21.61461,
"Z": 494.6865
},
"MinimumAngle": -100,
"MaximumAngle": 35
},
{
"Position": {
"X": 11.01325,
"Y": 20.33474,
"Z": 505.0459
},
"MinimumAngle": -80,
"MaximumAngle": 50
}
]
},
{
"DataId": 33913,
"Locations": [
{
"Position": {
"X": 21.21178,
"Y": 20.57622,
"Z": 500.2734
},
"MinimumAngle": -75,
"MaximumAngle": 35
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33909,
"Locations": [
{
"Position": {
"X": -138.8536,
"Y": 28.9297,
"Z": 406.4425
},
"MinimumAngle": -25,
"MaximumAngle": 90
}
]
},
{
"DataId": 33910,
"Locations": [
{
"Position": {
"X": -151.642,
"Y": 28.40338,
"Z": 389.8896
},
"MinimumAngle": 0,
"MaximumAngle": 120
},
{
"Position": {
"X": -153.7647,
"Y": 28.03966,
"Z": 372.3844
},
"MinimumAngle": 40,
"MaximumAngle": 165
},
{
"Position": {
"X": -122.402,
"Y": 28.91794,
"Z": 415.5278
},
"MinimumAngle": -25,
"MaximumAngle": 90
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33911,
"Locations": [
{
"Position": {
"X": -178.974,
"Y": 22.0284,
"Z": 509.5606
},
"MinimumAngle": -145,
"MaximumAngle": 15
}
]
},
{
"DataId": 33912,
"Locations": [
{
"Position": {
"X": -180.526,
"Y": 25.92117,
"Z": 532.3414
},
"MinimumAngle": 175,
"MaximumAngle": 295
},
{
"Position": {
"X": -162.8302,
"Y": 16.1582,
"Z": 523.17
},
"MinimumAngle": -115,
"MaximumAngle": -10
},
{
"Position": {
"X": -180.8041,
"Y": 27.12615,
"Z": 522.0873
},
"MinimumAngle": -155,
"MaximumAngle": 10
}
]
}
]
}
]
}

View File

@ -0,0 +1,154 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"TerritoryId": 957,
"InteractionType": "None",
"AetheryteShortcut": "Thavnair - Great Work"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 33982,
"Locations": [
{
"Position": {
"X": -274.8412,
"Y": 17.35062,
"Z": 118.8987
},
"MinimumAngle": 175,
"MaximumAngle": 310
}
]
},
{
"DataId": 33983,
"Locations": [
{
"Position": {
"X": -267.3967,
"Y": 17.7139,
"Z": 123.6814
},
"MinimumAngle": 40,
"MaximumAngle": 245
},
{
"Position": {
"X": -287.5207,
"Y": 18.51543,
"Z": 101.9367
},
"MinimumAngle": 155,
"MaximumAngle": 325
},
{
"Position": {
"X": -268.33,
"Y": 19.74485,
"Z": 102.5864
},
"MinimumAngle": -150,
"MaximumAngle": 20
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33984,
"Locations": [
{
"Position": {
"X": -152.7941,
"Y": 38.65108,
"Z": 20.30975
},
"MinimumAngle": 0,
"MaximumAngle": 215
}
]
},
{
"DataId": 33985,
"Locations": [
{
"Position": {
"X": -142.8687,
"Y": 41.0236,
"Z": 21.84206
},
"MinimumAngle": -65,
"MaximumAngle": 85
},
{
"Position": {
"X": -146.3786,
"Y": 40.56817,
"Z": 29.28198
},
"MinimumAngle": -10,
"MaximumAngle": 140
},
{
"Position": {
"X": -147.6553,
"Y": 41.60496,
"Z": -0.04698198
},
"MinimumAngle": -130,
"MaximumAngle": 40
}
]
}
]
},
{
"Nodes": [
{
"DataId": 33987,
"Locations": [
{
"Position": {
"X": -270.0331,
"Y": 35.83369,
"Z": -29.07548
},
"MinimumAngle": 200,
"MaximumAngle": 330
},
{
"Position": {
"X": -274.9584,
"Y": 35.26747,
"Z": -31.89327
},
"MinimumAngle": 90,
"MaximumAngle": 290
}
]
},
{
"DataId": 33986,
"Locations": [
{
"Position": {
"X": -267.6438,
"Y": 35.07198,
"Z": -44.49979
},
"MinimumAngle": -100,
"MaximumAngle": 60
}
]
}
]
}
]
}

View File

@ -0,0 +1,67 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "plogon_enjoyer",
"Steps": [
{
"TerritoryId": 960,
"InteractionType": "None",
"AetheryteShortcut": "Ultima Thule - Reah Tahra"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34364,
"Locations": [
{
"Position": {
"X": -470.5523,
"Y": 79.49631,
"Z": 259.4856
},
"MinimumAngle": 0,
"MaximumAngle": 150
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34365,
"Locations": [
{
"Position": {
"X": -493.5432,
"Y": 73.7095,
"Z": 288.547
},
"MinimumAngle": 15,
"MaximumAngle": 215
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34366,
"Locations": [
{
"Position": {
"X": -478.8098,
"Y": 76.21393,
"Z": 280.0947
},
"MinimumAngle": 50,
"MaximumAngle": 180
}
]
}
]
}
]
}

View File

@ -0,0 +1,65 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "plogon_enjoyer",
"Steps": [
{
"TerritoryId": 960,
"InteractionType": "None",
"AetheryteShortcut": "Ultima Thule - Reah Tahra"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34370,
"Locations": [
{
"Position": {
"X": -614.3087,
"Y": 81.96295,
"Z": 262.5681
},
"MinimumAngle": -150,
"MaximumAngle": 20
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34371,
"Locations": [
{
"Position": {
"X": -624.2021,
"Y": 79.12945,
"Z": 278.3768
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34372,
"Locations": [
{
"Position": {
"X": -639.8513,
"Y": 78.34773,
"Z": 274.0034
},
"MinimumAngle": -60,
"MaximumAngle": 95
}
]
}
]
}
]
}

View File

@ -0,0 +1,69 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "plogon_enjoyer",
"Steps": [
{
"TerritoryId": 960,
"InteractionType": "None",
"AetheryteShortcut": "Ultima Thule - Reah Tahra"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34376,
"Locations": [
{
"Position": {
"X": -586.0029,
"Y": 84.39367,
"Z": 568.1448
},
"MinimumAngle": -60,
"MaximumAngle": 75,
"MinimumDistance": 1,
"MaximumDistance": 3
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34377,
"Locations": [
{
"Position": {
"X": -578.2748,
"Y": 86.34826,
"Z": 567.2876
},
"MinimumAngle": -80,
"MaximumAngle": 60
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34378,
"Locations": [
{
"Position": {
"X": -600.2446,
"Y": 86.01588,
"Z": 557.4477
},
"MinimumAngle": -35,
"MaximumAngle": 145
}
]
}
]
}
]
}

View File

@ -0,0 +1,69 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "plogon_enjoyer",
"Steps": [
{
"TerritoryId": 960,
"InteractionType": "None",
"AetheryteShortcut": "Ultima Thule - Abode of the Ea"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34379,
"Locations": [
{
"Position": {
"X": 454.8535,
"Y": 307.5555,
"Z": -590.8547
},
"MinimumAngle": -105,
"MaximumAngle": -25,
"MinimumDistance": 1,
"MaximumDistance": 1.6
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34380,
"Locations": [
{
"Position": {
"X": 447.787,
"Y": 300.8405,
"Z": -597.8972
},
"MinimumAngle": 45,
"MaximumAngle": 185
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34381,
"Locations": [
{
"Position": {
"X": 448.707,
"Y": 305.0525,
"Z": -591.1053
},
"MinimumAngle": 30,
"MaximumAngle": 70
}
]
}
]
}
]
}

View File

@ -0,0 +1,67 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "plogon_enjoyer",
"Steps": [
{
"TerritoryId": 960,
"InteractionType": "None",
"AetheryteShortcut": "Ultima Thule - Reah Tahra"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34385,
"Locations": [
{
"Position": {
"X": 27.77994,
"Y": 73.57088,
"Z": 695.2364
},
"MinimumAngle": 0,
"MaximumAngle": 135
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34386,
"Locations": [
{
"Position": {
"X": 23.20134,
"Y": 70.90392,
"Z": 698.6194
},
"MinimumAngle": -10,
"MaximumAngle": 145
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34387,
"Locations": [
{
"Position": {
"X": 30.69294,
"Y": 75.43362,
"Z": 688.8371
},
"MinimumAngle": -5,
"MaximumAngle": 120
}
]
}
]
}
]
}

View File

@ -0,0 +1,69 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "plogon_enjoyer",
"Steps": [
{
"TerritoryId": 960,
"InteractionType": "None",
"AetheryteShortcut": "Ultima Thule - Abode of the Ea"
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34388,
"Locations": [
{
"Position": {
"X": 398.7177,
"Y": 292.5112,
"Z": -462.82
},
"MinimumAngle": -65,
"MaximumAngle": 65
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34389,
"Locations": [
{
"Position": {
"X": 373.1678,
"Y": 290.8189,
"Z": -442.4228
},
"MinimumAngle": 160,
"MaximumAngle": 305
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34390,
"Locations": [
{
"Position": {
"X": 383.5671,
"Y": 289.9682,
"Z": -392.3997
},
"MinimumAngle": 65,
"MaximumAngle": 165,
"MinimumDistance": 1,
"MaximumDistance": 3
}
]
}
]
}
]
}

View File

@ -42,14 +42,18 @@
"X": 419.309,
"Y": -10.25133,
"Z": -784.8259
}
},
"MinimumAngle": -25,
"MaximumAngle": 85
},
{
"Position": {
"X": 410.6989,
"Y": -10.9656,
"Z": -790.8315
}
},
"MinimumAngle": -20,
"MaximumAngle": 95
}
]
}
@ -156,4 +160,4 @@
]
}
]
}
}

View File

@ -52,8 +52,8 @@
"Y": -47.86026,
"Z": -394.9654
},
"MinimumAngle": -120,
"MaximumAngle": 120
"MinimumAngle": -145,
"MaximumAngle": -95
}
]
}
@ -160,4 +160,4 @@
]
}
]
}
}

View File

@ -0,0 +1,178 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"Position": {
"X": 417.1447,
"Y": -0.6,
"Z": -647.60004
},
"TerritoryId": 1189,
"InteractionType": "Dive",
"AetheryteShortcut": "Yak T'el - Iq Br'aax",
"SkipConditions": {
"StepIf": {
"Flying": "Unlocked"
},
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
{
"Position": {
"X": 417.1447,
"Y": 3,
"Z": -647.60004
},
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked"
}
}
},
{
"Position": {
"X": 419.8578,
"Y": -32.6974,
"Z": -653.75275
},
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"Fly": true
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34912,
"Locations": [
{
"Position": {
"X": 458.8916,
"Y": -51.02777,
"Z": -689.8627
}
},
{
"Position": {
"X": 430.228,
"Y": -56.21914,
"Z": -693.9346
}
},
{
"Position": {
"X": 462.8787,
"Y": -58.29268,
"Z": -704.244
}
}
]
},
{
"DataId": 34911,
"Locations": [
{
"Position": {
"X": 448.169,
"Y": -53.1458,
"Z": -696.1208
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34914,
"Locations": [
{
"Position": {
"X": 453.7438,
"Y": -59.20442,
"Z": -884.0787
}
},
{
"Position": {
"X": 399.0516,
"Y": -48.41589,
"Z": -900.1575
}
},
{
"Position": {
"X": 470.4918,
"Y": -54.81378,
"Z": -912.1257
}
}
]
},
{
"DataId": 34913,
"Locations": [
{
"Position": {
"X": 433.2036,
"Y": -56.63199,
"Z": -898.0532
}
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34915,
"Locations": [
{
"Position": {
"X": 263.8979,
"Y": -44.71192,
"Z": -873.9875
}
}
]
},
{
"DataId": 34916,
"Locations": [
{
"Position": {
"X": 287.7073,
"Y": -43.04572,
"Z": -886.5245
}
},
{
"Position": {
"X": 266.3744,
"Y": -47.55014,
"Z": -846.1501
}
},
{
"Position": {
"X": 259.2106,
"Y": -44.82758,
"Z": -817.9664
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,200 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
{
"Position": {
"X": 417.1447,
"Y": -0.6,
"Z": -647.60004
},
"TerritoryId": 1189,
"InteractionType": "Dive",
"AetheryteShortcut": "Yak T'el - Iq Br'aax",
"SkipConditions": {
"StepIf": {
"Flying": "Unlocked"
},
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
{
"Position": {
"X": 417.1447,
"Y": 3,
"Z": -647.60004
},
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked"
}
}
},
{
"Position": {
"X": 419.8578,
"Y": -32.6974,
"Z": -653.75275
},
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"Fly": true
}
],
"Groups": [
{
"Nodes": [
{
"DataId": 34787,
"Locations": [
{
"Position": {
"X": 482.7197,
"Y": -38.14573,
"Z": -612.8046
},
"MinimumAngle": 100,
"MaximumAngle": 275
}
]
},
{
"DataId": 34788,
"Locations": [
{
"Position": {
"X": 503.5652,
"Y": -41.40348,
"Z": -600.9512
},
"MinimumAngle": 185,
"MaximumAngle": 275
},
{
"Position": {
"X": 441.1733,
"Y": -36.58192,
"Z": -610.3331
},
"MinimumAngle": 120,
"MaximumAngle": 265
},
{
"Position": {
"X": 457.5484,
"Y": -40.0437,
"Z": -608.3312
},
"MinimumAngle": 115,
"MaximumAngle": 240
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34790,
"Locations": [
{
"Position": {
"X": 584.035,
"Y": -49.84215,
"Z": -759.925
},
"MinimumAngle": 115,
"MaximumAngle": 240
},
{
"Position": {
"X": 624.3585,
"Y": -61.07853,
"Z": -748.2542
}
},
{
"Position": {
"X": 605.4849,
"Y": -59.0002,
"Z": -772.6049
},
"MinimumAngle": 175,
"MaximumAngle": 275
}
]
},
{
"DataId": 34789,
"Locations": [
{
"Position": {
"X": 601.6854,
"Y": -53.68699,
"Z": -741.3439
},
"MinimumAngle": 185,
"MaximumAngle": 355
}
]
}
]
},
{
"Nodes": [
{
"DataId": 34785,
"Locations": [
{
"Position": {
"X": 754.1298,
"Y": -57.09224,
"Z": -571.5818
},
"MinimumAngle": 100,
"MaximumAngle": 250
}
]
},
{
"DataId": 34786,
"Locations": [
{
"Position": {
"X": 734.2795,
"Y": -55.15427,
"Z": -573.6763
},
"MinimumAngle": 90,
"MaximumAngle": 260
},
{
"Position": {
"X": 714.931,
"Y": -53.3118,
"Z": -569.4072
},
"MinimumAngle": 115,
"MaximumAngle": 250
},
{
"Position": {
"X": 773.049,
"Y": -55.97124,
"Z": -569.7167
},
"MinimumAngle": 105,
"MaximumAngle": 240
}
]
}
]
}
]
}

View File

@ -0,0 +1,29 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Common;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class AethernetShortcutExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this AethernetShortcut aethernetShortcut)
{
return ObjectCreationExpression(
IdentifierName(nameof(AethernetShortcut)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment<EAetheryteLocation?>(nameof(AethernetShortcut.From),
aethernetShortcut.From,
null)
.AsSyntaxNodeOrToken(),
Assignment<EAetheryteLocation?>(nameof(AethernetShortcut.To),
aethernetShortcut.To,
null)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,28 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class ChatMessageExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this ChatMessage chatMessage)
{
ChatMessage emptyMessage = new();
return ObjectCreationExpression(
IdentifierName(nameof(ChatMessage)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(ChatMessage.ExcelSheet), chatMessage.ExcelSheet,
emptyMessage.ExcelSheet)
.AsSyntaxNodeOrToken(),
Assignment(nameof(ChatMessage.Key), chatMessage.Key,
emptyMessage.Key)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,42 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class ComplexCombatDataExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this ComplexCombatData complexCombatData)
{
var emptyData = new ComplexCombatData();
return ObjectCreationExpression(
IdentifierName(nameof(ComplexCombatData)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(ComplexCombatData.DataId), complexCombatData.DataId,
emptyData.DataId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(ComplexCombatData.MinimumKillCount),
complexCombatData.MinimumKillCount, emptyData.MinimumKillCount)
.AsSyntaxNodeOrToken(),
Assignment(nameof(ComplexCombatData.RewardItemId),
complexCombatData.RewardItemId,
emptyData.RewardItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(ComplexCombatData.RewardItemCount),
complexCombatData.RewardItemCount,
emptyData.RewardItemCount)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(ComplexCombatData.CompletionQuestVariablesFlags),
complexCombatData.CompletionQuestVariablesFlags),
Assignment(nameof(ComplexCombatData.IgnoreQuestMarker),
complexCombatData.IgnoreQuestMarker,
emptyData.IgnoreQuestMarker)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,47 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class DialogueChoiceExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this DialogueChoice dialogueChoice)
{
DialogueChoice emptyChoice = new();
return ObjectCreationExpression(
IdentifierName(nameof(DialogueChoice)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment<EDialogChoiceType?>(nameof(DialogueChoice.Type), dialogueChoice.Type,
null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.ExcelSheet), dialogueChoice.ExcelSheet,
emptyChoice.ExcelSheet)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.Prompt), dialogueChoice.Prompt,
emptyChoice.Prompt)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.Yes), dialogueChoice.Yes, emptyChoice.Yes)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.Answer), dialogueChoice.Answer,
emptyChoice.Answer)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.PromptIsRegularExpression),
dialogueChoice.PromptIsRegularExpression,
emptyChoice.PromptIsRegularExpression)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.AnswerIsRegularExpression),
dialogueChoice.AnswerIsRegularExpression,
emptyChoice.AnswerIsRegularExpression)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.DataId), dialogueChoice.DataId,
emptyChoice.DataId)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,30 @@
using System;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class ExcelRefExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this ExcelRef excelRef)
{
if (excelRef.Type == ExcelRef.EType.Key)
return ObjectCreationExpression(
IdentifierName(nameof(ExcelRef)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(excelRef.AsKey())))));
else if (excelRef.Type == ExcelRef.EType.RowId)
return ObjectCreationExpression(
IdentifierName(nameof(ExcelRef)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(excelRef.AsRowId())))));
else
throw new Exception($"Unsupported ExcelRef type {excelRef.Type}");
}
}

View File

@ -0,0 +1,38 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class GatheredItemExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this GatheredItem gatheredItem)
{
var emptyItem = new GatheredItem();
return ObjectCreationExpression(
IdentifierName(nameof(GatheredItem)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(GatheredItem.ItemId), gatheredItem.ItemId, emptyItem.ItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheredItem.AlternativeItemId),
gatheredItem.AlternativeItemId,
emptyItem.AlternativeItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheredItem.ItemCount), gatheredItem.ItemCount,
emptyItem.ItemCount)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheredItem.Collectability), gatheredItem.Collectability,
emptyItem.Collectability)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheredItem.QuestAcceptedAsClass),
gatheredItem.QuestAcceptedAsClass,
emptyItem.QuestAcceptedAsClass)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,34 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Gathering;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class GatheringLocationExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this GatheringLocation location)
{
var emptyLocation = new GatheringLocation();
return ObjectCreationExpression(
IdentifierName(nameof(GatheringLocation)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(GatheringLocation.Position), location.Position,
emptyLocation.Position).AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringLocation.MinimumAngle), location.MinimumAngle,
emptyLocation.MinimumAngle).AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringLocation.MaximumAngle), location.MaximumAngle,
emptyLocation.MaximumAngle).AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringLocation.MinimumDistance),
location.MinimumDistance, emptyLocation.MinimumDistance)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringLocation.MaximumDistance),
location.MaximumDistance, emptyLocation.MaximumDistance)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,29 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Gathering;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class GatheringNodeExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this GatheringNode gatheringNode)
{
var emptyLocation = new GatheringNode();
return ObjectCreationExpression(
IdentifierName(nameof(GatheringNode)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(GatheringNode.DataId), gatheringNode.DataId,
emptyLocation.DataId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringNode.Fly), gatheringNode.Fly, emptyLocation.Fly)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(GatheringNode.Locations), gatheringNode.Locations)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,23 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Gathering;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class GatheringNodeGroupExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this GatheringNodeGroup nodeGroup)
{
return ObjectCreationExpression(
IdentifierName(nameof(GatheringNodeGroup)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
AssignmentList(nameof(GatheringNodeGroup.Nodes), nodeGroup.Nodes)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,33 @@
using System.Numerics;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class JumpDestinationExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this JumpDestination jumpDestination)
{
return ObjectCreationExpression(
IdentifierName(nameof(JumpDestination)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment<Vector3?>(nameof(JumpDestination.Position), jumpDestination.Position,
null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(JumpDestination.StopDistance), jumpDestination.StopDistance,
null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(JumpDestination.DelaySeconds), jumpDestination.DelaySeconds,
null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(JumpDestination.Type), jumpDestination.Type, default)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,19 @@
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class LeveIdExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this LeveId leveId)
{
return ObjectCreationExpression(
IdentifierName(nameof(LeveId)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(leveId.Value)))));
}
}

View File

@ -0,0 +1,19 @@
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class QuestIdExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this QuestId questId)
{
return ObjectCreationExpression(
IdentifierName(nameof(QuestId)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(questId.Value)))));
}
}

View File

@ -0,0 +1,140 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class QuestStepExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this QuestStep step)
{
var emptyStep = new QuestStep();
return ObjectCreationExpression(
IdentifierName(nameof(QuestStep)))
.WithArgumentList(
ArgumentList(
SeparatedList<ArgumentSyntax>(
new SyntaxNodeOrToken[]
{
Argument(LiteralValue(step.InteractionType)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(step.DataId)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(step.Position)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(step.TerritoryId))
})))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(QuestStep.StopDistance), step.StopDistance,
emptyStep.StopDistance)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.NpcWaitDistance), step.NpcWaitDistance,
emptyStep.NpcWaitDistance)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.TargetTerritoryId), step.TargetTerritoryId,
emptyStep.TargetTerritoryId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.DelaySecondsAtStart), step.DelaySecondsAtStart,
emptyStep.DelaySecondsAtStart)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.PickUpItemId), step.PickUpItemId, emptyStep.PickUpItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Disabled), step.Disabled, emptyStep.Disabled)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.DisableNavmesh), step.DisableNavmesh,
emptyStep.DisableNavmesh)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Mount), step.Mount, emptyStep.Mount)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Fly), step.Fly, emptyStep.Fly)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Land), step.Land, emptyStep.Land)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Sprint), step.Sprint, emptyStep.Sprint)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.IgnoreDistanceToObject),
step.IgnoreDistanceToObject, emptyStep.IgnoreDistanceToObject)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.RestartNavigationIfCancelled),
step.RestartNavigationIfCancelled, emptyStep.RestartNavigationIfCancelled)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Comment), step.Comment, emptyStep.Comment)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Aetheryte), step.Aetheryte, emptyStep.Aetheryte)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.AethernetShard), step.AethernetShard,
emptyStep.AethernetShard)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.AetheryteShortcut), step.AetheryteShortcut,
emptyStep.AetheryteShortcut)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.AethernetShortcut), step.AethernetShortcut,
emptyStep.AethernetShortcut)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.AetherCurrentId), step.AetherCurrentId,
emptyStep.AetherCurrentId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.ItemId), step.ItemId, emptyStep.ItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.GroundTarget), step.GroundTarget,
emptyStep.GroundTarget)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.ItemCount), step.ItemCount, emptyStep.ItemCount)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Emote), step.Emote, emptyStep.Emote)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.ChatMessage), step.ChatMessage,
emptyStep.ChatMessage)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Action), step.Action, emptyStep.Action)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.EnemySpawnType), step.EnemySpawnType,
emptyStep.EnemySpawnType)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.KillEnemyDataIds), step.KillEnemyDataIds)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.ComplexCombatData), step.ComplexCombatData)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.CombatDelaySecondsAtStart),
step.CombatDelaySecondsAtStart,
emptyStep.CombatDelaySecondsAtStart)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.JumpDestination), step.JumpDestination,
emptyStep.JumpDestination)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.ContentFinderConditionId),
step.ContentFinderConditionId, emptyStep.ContentFinderConditionId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.SkipConditions), step.SkipConditions,
emptyStep.SkipConditions)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.RequiredQuestVariables),
step.RequiredQuestVariables)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.ItemsToGather),
step.ItemsToGather),
AssignmentList(nameof(QuestStep.CompletionQuestVariablesFlags),
step.CompletionQuestVariablesFlags)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.DialogueChoices), step.DialogueChoices)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.PickUpQuestId), step.PickUpQuestId,
emptyStep.PickUpQuestId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.TurnInQuestId), step.TurnInQuestId,
emptyStep.TurnInQuestId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.NextQuestId), step.NextQuestId,
emptyStep.NextQuestId)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,38 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class QuestWorkValueExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this QuestWorkValue qwv)
{
return ObjectCreationExpression(
IdentifierName(nameof(QuestWorkValue)))
.WithArgumentList(
ArgumentList(
SeparatedList<ArgumentSyntax>(
new SyntaxNodeOrToken[]
{
Argument(LiteralValue(qwv.High)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(qwv.Low)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(qwv.Mode))
})));
}
public static ExpressionSyntax ToExpressionSyntax(this List<QuestWorkValue> list)
{
return CollectionExpression(
SeparatedList<CollectionElementSyntax>(
SyntaxNodeList(list.Select(x => ExpressionElement(
LiteralValue(x)).AsSyntaxNodeOrToken()).ToArray())));
}
}

View File

@ -0,0 +1,19 @@
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class SatisfactionSupplyIdExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this SatisfactionSupplyNpcId satisfactionSupplyNpcId)
{
return ObjectCreationExpression(
IdentifierName(nameof(SatisfactionSupplyNpcId)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(satisfactionSupplyNpcId.Value)))));
}
}

View File

@ -0,0 +1,152 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class SkipConditionsExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this SkipConditions skipConditions)
{
var emptySkip = new SkipConditions();
return ObjectCreationExpression(
IdentifierName(nameof(SkipConditions)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SkipConditions.StepIf), skipConditions.StepIf,
emptySkip.StepIf)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipConditions.AetheryteShortcutIf),
skipConditions.AetheryteShortcutIf, emptySkip.AetheryteShortcutIf)
.AsSyntaxNodeOrToken(),
Assignment(nameof(skipConditions.AethernetShortcutIf),
skipConditions.AethernetShortcutIf, emptySkip.AethernetShortcutIf)
.AsSyntaxNodeOrToken()))));
}
public static ExpressionSyntax ToExpressionSyntax(this SkipStepConditions skipStepConditions)
{
var emptyStep = new SkipStepConditions();
return ObjectCreationExpression(
IdentifierName(nameof(SkipStepConditions)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SkipStepConditions.Never), skipStepConditions.Never,
emptyStep.Never)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.CompletionQuestVariablesFlags),
skipStepConditions.CompletionQuestVariablesFlags)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.Flying), skipStepConditions.Flying,
emptyStep.Flying)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.Chocobo), skipStepConditions.Chocobo,
emptyStep.Chocobo)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.NotTargetable),
skipStepConditions.NotTargetable, emptyStep.NotTargetable)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.InTerritory),
skipStepConditions.InTerritory).AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.NotInTerritory),
skipStepConditions.NotInTerritory).AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.Item), skipStepConditions.Item,
emptyStep.Item)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.QuestsAccepted),
skipStepConditions.QuestsAccepted).AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.QuestsCompleted),
skipStepConditions.QuestsCompleted).AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.AetheryteLocked),
skipStepConditions.AetheryteLocked, emptyStep.AetheryteLocked)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.AetheryteUnlocked),
skipStepConditions.AetheryteUnlocked, emptyStep.AetheryteUnlocked)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.NearPosition),
skipStepConditions.NearPosition, emptyStep.NearPosition)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.ExtraCondition),
skipStepConditions.ExtraCondition, emptyStep.ExtraCondition)
.AsSyntaxNodeOrToken()))));
}
public static ExpressionSyntax ToExpressionSyntax(this SkipItemConditions skipItemCondition)
{
var emptyItem = new SkipItemConditions();
return ObjectCreationExpression(
IdentifierName(nameof(SkipItemConditions)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SkipItemConditions.NotInInventory),
skipItemCondition.NotInInventory,
emptyItem.NotInInventory)))));
}
public static ExpressionSyntax ToExpressionSyntax(this NearPositionCondition nearPositionCondition)
{
var emptyCondition = new NearPositionCondition();
return ObjectCreationExpression(
IdentifierName(nameof(NearPositionCondition)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(NearPositionCondition.Position),
nearPositionCondition.Position, emptyCondition.Position)
.AsSyntaxNodeOrToken(),
Assignment(nameof(NearPositionCondition.MaximumDistance),
nearPositionCondition.MaximumDistance, emptyCondition.MaximumDistance)
.AsSyntaxNodeOrToken(),
Assignment(nameof(NearPositionCondition.TerritoryId),
nearPositionCondition.TerritoryId, emptyCondition.TerritoryId)
.AsSyntaxNodeOrToken()))));
}
public static ExpressionSyntax ToExpressionSyntax(this SkipAetheryteCondition skipAetheryteCondition)
{
var emptyAetheryte = new SkipAetheryteCondition();
return ObjectCreationExpression(
IdentifierName(nameof(SkipAetheryteCondition)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SkipAetheryteCondition.Never), skipAetheryteCondition.Never,
emptyAetheryte.Never),
Assignment(nameof(SkipAetheryteCondition.InSameTerritory),
skipAetheryteCondition.InSameTerritory, emptyAetheryte.InSameTerritory),
AssignmentList(nameof(SkipAetheryteCondition.InTerritory),
skipAetheryteCondition.InTerritory),
AssignmentList(nameof(SkipAetheryteCondition.QuestsAccepted),
skipAetheryteCondition.QuestsAccepted),
AssignmentList(nameof(skipAetheryteCondition.QuestsCompleted),
skipAetheryteCondition.QuestsCompleted),
Assignment(nameof(SkipAetheryteCondition.AetheryteLocked),
skipAetheryteCondition.AetheryteLocked, emptyAetheryte.AetheryteLocked)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipAetheryteCondition.AetheryteUnlocked),
skipAetheryteCondition.AetheryteUnlocked,
emptyAetheryte.AetheryteUnlocked)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipAetheryteCondition.RequiredQuestVariablesNotMet),
skipAetheryteCondition.RequiredQuestVariablesNotMet,
emptyAetheryte.RequiredQuestVariablesNotMet)
.AsSyntaxNodeOrToken(),
Assignment(nameof(skipAetheryteCondition.NearPosition), skipAetheryteCondition.NearPosition,
emptyAetheryte.NearPosition).AsSyntaxNodeOrToken()))));
}
}

View File

@ -0,0 +1,28 @@
using System.Numerics;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class Vector3Extensions
{
public static ExpressionSyntax ToExpressionSyntax(this Vector3 vector)
{
return ObjectCreationExpression(
IdentifierName(nameof(Vector3)))
.WithArgumentList(
ArgumentList(
SeparatedList<ArgumentSyntax>(
new SyntaxNodeOrToken[]
{
Argument(LiteralValue(vector.X)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(vector.Y)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(vector.Z))
})));
}
}

View File

@ -8,6 +8,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Common;
using Questionable.Model.Gathering;
using Questionable.Model.Questing;
using Questionable.QuestPathGenerator.RoslynElements;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
namespace Questionable.QuestPathGenerator;
@ -35,559 +36,48 @@ public static class RoslynShortcuts
{
try
{
if (value is string s)
return LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(s));
else if (value is bool b)
return LiteralExpression(b ? SyntaxKind.TrueLiteralExpression : SyntaxKind.FalseLiteralExpression);
else if (value is short i16)
return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(i16));
else if (value is int i32)
return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(i32));
else if (value is byte u8)
return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u8));
else if (value is ushort u16)
return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u16));
else if (value is uint u32)
return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u32));
else if (value is float f)
return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(f));
else if (value != null && value.GetType().IsEnum)
return MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
IdentifierName(value.GetType().Name),
IdentifierName(value.GetType().GetEnumName(value)!));
else if (value is QuestStep step)
return value switch
{
var emptyStep = new QuestStep();
return ObjectCreationExpression(
IdentifierName(nameof(QuestStep)))
.WithArgumentList(
ArgumentList(
SeparatedList<ArgumentSyntax>(
new SyntaxNodeOrToken[]
{
Argument(LiteralValue(step.InteractionType)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(step.DataId)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(step.Position)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(step.TerritoryId))
})))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(QuestStep.StopDistance), step.StopDistance,
emptyStep.StopDistance)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.NpcWaitDistance), step.NpcWaitDistance,
emptyStep.NpcWaitDistance)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.TargetTerritoryId), step.TargetTerritoryId,
emptyStep.TargetTerritoryId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.DelaySecondsAtStart), step.DelaySecondsAtStart,
emptyStep.DelaySecondsAtStart)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Disabled), step.Disabled, emptyStep.Disabled)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.DisableNavmesh), step.DisableNavmesh,
emptyStep.DisableNavmesh)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Mount), step.Mount, emptyStep.Mount)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Fly), step.Fly, emptyStep.Fly)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Land), step.Land, emptyStep.Land)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Sprint), step.Sprint, emptyStep.Sprint)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.IgnoreDistanceToObject),
step.IgnoreDistanceToObject, emptyStep.IgnoreDistanceToObject)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Comment), step.Comment, emptyStep.Comment)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Aetheryte), step.Aetheryte, emptyStep.Aetheryte)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.AethernetShard), step.AethernetShard,
emptyStep.AethernetShard)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.AetheryteShortcut), step.AetheryteShortcut,
emptyStep.AetheryteShortcut)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.AethernetShortcut), step.AethernetShortcut,
emptyStep.AethernetShortcut)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.AetherCurrentId), step.AetherCurrentId,
emptyStep.AetherCurrentId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.ItemId), step.ItemId, emptyStep.ItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.GroundTarget), step.GroundTarget,
emptyStep.GroundTarget)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.ItemCount), step.ItemCount, emptyStep.ItemCount)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Emote), step.Emote, emptyStep.Emote)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.ChatMessage), step.ChatMessage,
emptyStep.ChatMessage)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.Action), step.Action, emptyStep.Action)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.EnemySpawnType), step.EnemySpawnType,
emptyStep.EnemySpawnType)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.KillEnemyDataIds), step.KillEnemyDataIds)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.ComplexCombatData), step.ComplexCombatData)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.CombatDelaySecondsAtStart),
step.CombatDelaySecondsAtStart,
emptyStep.CombatDelaySecondsAtStart)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.JumpDestination), step.JumpDestination,
emptyStep.JumpDestination)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.ContentFinderConditionId),
step.ContentFinderConditionId, emptyStep.ContentFinderConditionId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.SkipConditions), step.SkipConditions,
emptyStep.SkipConditions)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.RequiredQuestVariables),
step.RequiredQuestVariables)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.RequiredGatheredItems),
step.RequiredGatheredItems),
AssignmentList(nameof(QuestStep.CompletionQuestVariablesFlags),
step.CompletionQuestVariablesFlags)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.DialogueChoices), step.DialogueChoices)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.PickUpQuestId), step.PickUpQuestId,
emptyStep.PickUpQuestId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.TurnInQuestId), step.TurnInQuestId,
emptyStep.TurnInQuestId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.NextQuestId), step.NextQuestId,
emptyStep.NextQuestId)
.AsSyntaxNodeOrToken()))));
}
else if (value is QuestId questId)
{
return ObjectCreationExpression(
IdentifierName(nameof(QuestId)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(questId.Value)))));
}
else if (value is LeveId leveId)
{
return ObjectCreationExpression(
IdentifierName(nameof(LeveId)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(leveId.Value)))));
}
else if (value is SatisfactionSupplyNpcId satisfactionSupplyNpcId)
{
return ObjectCreationExpression(
IdentifierName(nameof(SatisfactionSupplyNpcId)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(satisfactionSupplyNpcId.Value)))));
}
else if (value is Vector3 vector)
{
return ObjectCreationExpression(
IdentifierName(nameof(Vector3)))
.WithArgumentList(
ArgumentList(
SeparatedList<ArgumentSyntax>(
new SyntaxNodeOrToken[]
{
Argument(LiteralValue(vector.X)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(vector.Y)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(vector.Z))
})));
}
else if (value is AethernetShortcut aethernetShortcut)
{
return ObjectCreationExpression(
IdentifierName(nameof(AethernetShortcut)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment<EAetheryteLocation?>(nameof(AethernetShortcut.From),
aethernetShortcut.From,
null)
.AsSyntaxNodeOrToken(),
Assignment<EAetheryteLocation?>(nameof(AethernetShortcut.To), aethernetShortcut.To,
null)
.AsSyntaxNodeOrToken()))));
}
else if (value is ChatMessage chatMessage)
{
ChatMessage emptyMessage = new();
return ObjectCreationExpression(
IdentifierName(nameof(ChatMessage)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(ChatMessage.ExcelSheet), chatMessage.ExcelSheet,
emptyMessage.ExcelSheet)
.AsSyntaxNodeOrToken(),
Assignment(nameof(ChatMessage.Key), chatMessage.Key,
emptyMessage.Key)
.AsSyntaxNodeOrToken()))));
}
else if (value is DialogueChoice dialogueChoice)
{
DialogueChoice emptyChoice = new();
return ObjectCreationExpression(
IdentifierName(nameof(DialogueChoice)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment<EDialogChoiceType?>(nameof(DialogueChoice.Type), dialogueChoice.Type,
null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.ExcelSheet), dialogueChoice.ExcelSheet,
emptyChoice.ExcelSheet)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.Prompt), dialogueChoice.Prompt, emptyChoice.Prompt)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.Yes), dialogueChoice.Yes, emptyChoice.Yes)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.Answer), dialogueChoice.Answer, emptyChoice.Answer)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.AnswerIsRegularExpression),
dialogueChoice.AnswerIsRegularExpression,
emptyChoice.AnswerIsRegularExpression)
.AsSyntaxNodeOrToken(),
Assignment(nameof(DialogueChoice.DataId), dialogueChoice.DataId, emptyChoice.DataId)
.AsSyntaxNodeOrToken()))));
}
else if (value is JumpDestination jumpDestination)
{
return ObjectCreationExpression(
IdentifierName(nameof(JumpDestination)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment<Vector3?>(nameof(JumpDestination.Position), jumpDestination.Position,
null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(JumpDestination.StopDistance), jumpDestination.StopDistance, null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(JumpDestination.DelaySeconds), jumpDestination.DelaySeconds, null)
.AsSyntaxNodeOrToken(),
Assignment(nameof(JumpDestination.Type), jumpDestination.Type, default)
.AsSyntaxNodeOrToken()))));
}
else if (value is ExcelRef excelRef)
{
if (excelRef.Type == ExcelRef.EType.Key)
{
return ObjectCreationExpression(
IdentifierName(nameof(ExcelRef)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(excelRef.AsKey())))));
}
else if (excelRef.Type == ExcelRef.EType.RowId)
{
return ObjectCreationExpression(
IdentifierName(nameof(ExcelRef)))
.WithArgumentList(
ArgumentList(
SingletonSeparatedList(
Argument(LiteralValue(excelRef.AsRowId())))));
}
else
throw new Exception($"Unsupported ExcelRef type {excelRef.Type}");
}
else if (value is ComplexCombatData complexCombatData)
{
var emptyData = new ComplexCombatData();
return ObjectCreationExpression(
IdentifierName(nameof(ComplexCombatData)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(ComplexCombatData.DataId), complexCombatData.DataId,
emptyData.DataId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(ComplexCombatData.MinimumKillCount),
complexCombatData.MinimumKillCount, emptyData.MinimumKillCount)
.AsSyntaxNodeOrToken(),
Assignment(nameof(ComplexCombatData.RewardItemId), complexCombatData.RewardItemId,
emptyData.RewardItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(ComplexCombatData.RewardItemCount),
complexCombatData.RewardItemCount,
emptyData.RewardItemCount)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(ComplexCombatData.CompletionQuestVariablesFlags),
complexCombatData.CompletionQuestVariablesFlags),
Assignment(nameof(ComplexCombatData.IgnoreQuestMarker),
complexCombatData.IgnoreQuestMarker,
emptyData.IgnoreQuestMarker)
.AsSyntaxNodeOrToken()))));
}
else if (value is QuestWorkValue qwv)
{
return ObjectCreationExpression(
IdentifierName(nameof(QuestWorkValue)))
.WithArgumentList(
ArgumentList(
SeparatedList<ArgumentSyntax>(
new SyntaxNodeOrToken[]
{
Argument(LiteralValue(qwv.High)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(qwv.Low)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(qwv.Mode))
})));
}
else if (value is List<QuestWorkValue> list)
{
return CollectionExpression(
SeparatedList<CollectionElementSyntax>(
SyntaxNodeList(list.Select(x => ExpressionElement(
LiteralValue(x)).AsSyntaxNodeOrToken()).ToArray())));
}
else if (value is SkipConditions skipConditions)
{
var emptySkip = new SkipConditions();
return ObjectCreationExpression(
IdentifierName(nameof(SkipConditions)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SkipConditions.StepIf), skipConditions.StepIf, emptySkip.StepIf)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipConditions.AetheryteShortcutIf),
skipConditions.AetheryteShortcutIf, emptySkip.AetheryteShortcutIf)
.AsSyntaxNodeOrToken(),
Assignment(nameof(skipConditions.AethernetShortcutIf),
skipConditions.AethernetShortcutIf, emptySkip.AethernetShortcutIf)
.AsSyntaxNodeOrToken()))));
}
else if (value is SkipStepConditions skipStepConditions)
{
var emptyStep = new SkipStepConditions();
return ObjectCreationExpression(
IdentifierName(nameof(SkipStepConditions)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SkipStepConditions.Never), skipStepConditions.Never,
emptyStep.Never)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.CompletionQuestVariablesFlags),
skipStepConditions.CompletionQuestVariablesFlags)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.Flying), skipStepConditions.Flying,
emptyStep.Flying)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.Chocobo), skipStepConditions.Chocobo,
emptyStep.Chocobo)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.NotTargetable),
skipStepConditions.NotTargetable, emptyStep.NotTargetable)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.InTerritory),
skipStepConditions.InTerritory).AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.NotInTerritory),
skipStepConditions.NotInTerritory).AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.Item), skipStepConditions.Item, emptyStep.Item)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.QuestsAccepted),
skipStepConditions.QuestsAccepted).AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.QuestsCompleted),
skipStepConditions.QuestsCompleted).AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.AetheryteLocked),
skipStepConditions.AetheryteLocked, emptyStep.AetheryteLocked)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.AetheryteUnlocked),
skipStepConditions.AetheryteUnlocked, emptyStep.AetheryteUnlocked)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.NearPosition),
skipStepConditions.NearPosition, emptyStep.NearPosition)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.ExtraCondition),
skipStepConditions.ExtraCondition, emptyStep.ExtraCondition)
.AsSyntaxNodeOrToken()))));
}
else if (value is SkipItemConditions skipItemCondition)
{
var emptyItem = new SkipItemConditions();
return ObjectCreationExpression(
IdentifierName(nameof(SkipItemConditions)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SkipItemConditions.NotInInventory),
skipItemCondition.NotInInventory,
emptyItem.NotInInventory)))));
}
else if (value is NearPositionCondition nearPositionCondition)
{
var emptyCondition = new NearPositionCondition();
return ObjectCreationExpression(
IdentifierName(nameof(NearPositionCondition)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(NearPositionCondition.Position),
nearPositionCondition.Position, emptyCondition.Position).AsSyntaxNodeOrToken(),
Assignment(nameof(NearPositionCondition.MaximumDistance),
nearPositionCondition.MaximumDistance, emptyCondition.MaximumDistance)
.AsSyntaxNodeOrToken()))));
}
else if (value is SkipAetheryteCondition skipAetheryteCondition)
{
var emptyAetheryte = new SkipAetheryteCondition();
return ObjectCreationExpression(
IdentifierName(nameof(SkipAetheryteCondition)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(SkipAetheryteCondition.Never), skipAetheryteCondition.Never,
emptyAetheryte.Never),
Assignment(nameof(SkipAetheryteCondition.InSameTerritory),
skipAetheryteCondition.InSameTerritory, emptyAetheryte.InSameTerritory),
AssignmentList(nameof(SkipAetheryteCondition.InTerritory),
skipAetheryteCondition.InTerritory),
Assignment(nameof(SkipAetheryteCondition.AetheryteLocked),
skipAetheryteCondition.AetheryteLocked, emptyAetheryte.AetheryteLocked)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipAetheryteCondition.AetheryteUnlocked),
skipAetheryteCondition.AetheryteUnlocked, emptyAetheryte.AetheryteUnlocked)
.AsSyntaxNodeOrToken()))));
}
else if (value is GatheredItem gatheredItem)
{
var emptyItem = new GatheredItem();
return ObjectCreationExpression(
IdentifierName(nameof(GatheredItem)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(GatheredItem.ItemId), gatheredItem.ItemId, emptyItem.ItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheredItem.AlternativeItemId), gatheredItem.AlternativeItemId,
emptyItem.AlternativeItemId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheredItem.ItemCount), gatheredItem.ItemCount,
emptyItem.ItemCount)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheredItem.Collectability), gatheredItem.Collectability,
emptyItem.Collectability)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheredItem.QuestAcceptedAsClass),
gatheredItem.QuestAcceptedAsClass,
emptyItem.QuestAcceptedAsClass)
.AsSyntaxNodeOrToken()))));
}
else if (value is GatheringNodeGroup nodeGroup)
{
return ObjectCreationExpression(
IdentifierName(nameof(GatheringNodeGroup)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
AssignmentList(nameof(GatheringNodeGroup.Nodes), nodeGroup.Nodes)
.AsSyntaxNodeOrToken()))));
}
else if (value is GatheringNode nodeLocation)
{
var emptyLocation = new GatheringNode();
return ObjectCreationExpression(
IdentifierName(nameof(GatheringNode)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(GatheringNode.DataId), nodeLocation.DataId,
emptyLocation.DataId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringNode.Fly), nodeLocation.Fly, emptyLocation.Fly)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(GatheringNode.Locations), nodeLocation.Locations)
.AsSyntaxNodeOrToken()))));
}
else if (value is GatheringLocation location)
{
var emptyLocation = new GatheringLocation();
return ObjectCreationExpression(
IdentifierName(nameof(GatheringLocation)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(GatheringLocation.Position), location.Position,
emptyLocation.Position).AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringLocation.MinimumAngle), location.MinimumAngle,
emptyLocation.MinimumAngle).AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringLocation.MaximumAngle), location.MaximumAngle,
emptyLocation.MaximumAngle).AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringLocation.MinimumDistance),
location.MinimumDistance, emptyLocation.MinimumDistance)
.AsSyntaxNodeOrToken(),
Assignment(nameof(GatheringLocation.MaximumDistance),
location.MaximumDistance, emptyLocation.MaximumDistance)
.AsSyntaxNodeOrToken()))));
}
else if (value is null)
return LiteralExpression(SyntaxKind.NullLiteralExpression);
null => LiteralExpression(SyntaxKind.NullLiteralExpression),
string s => LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(s)),
bool b => LiteralExpression(b ? SyntaxKind.TrueLiteralExpression : SyntaxKind.FalseLiteralExpression),
short i16 => LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(i16)),
int i32 => LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(i32)),
byte u8 => LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u8)),
ushort u16 => LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u16)),
uint u32 => LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u32)),
float f => LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(f)),
QuestStep step => step.ToExpressionSyntax(),
QuestId questId => questId.ToExpressionSyntax(),
LeveId leveId => leveId.ToExpressionSyntax(),
SatisfactionSupplyNpcId satisfactionSupplyNpcId => satisfactionSupplyNpcId.ToExpressionSyntax(),
Vector3 vector => vector.ToExpressionSyntax(),
AethernetShortcut aethernetShortcut => aethernetShortcut.ToExpressionSyntax(),
ChatMessage chatMessage => chatMessage.ToExpressionSyntax(),
DialogueChoice dialogueChoice => dialogueChoice.ToExpressionSyntax(),
JumpDestination jumpDestination => jumpDestination.ToExpressionSyntax(),
ExcelRef excelRef => excelRef.ToExpressionSyntax(),
ComplexCombatData complexCombatData => complexCombatData.ToExpressionSyntax(),
QuestWorkValue questWorkValue => questWorkValue.ToExpressionSyntax(),
List<QuestWorkValue> list => list.ToExpressionSyntax(), // TODO fix in AssignmentList
SkipConditions skipConditions => skipConditions.ToExpressionSyntax(),
SkipStepConditions skipStepConditions => skipStepConditions.ToExpressionSyntax(),
SkipItemConditions skipItemCondition => skipItemCondition.ToExpressionSyntax(),
NearPositionCondition nearPositionCondition => nearPositionCondition.ToExpressionSyntax(),
SkipAetheryteCondition skipAetheryteCondition => skipAetheryteCondition.ToExpressionSyntax(),
GatheredItem gatheredItem => gatheredItem.ToExpressionSyntax(),
GatheringNodeGroup nodeGroup => nodeGroup.ToExpressionSyntax(),
GatheringNode nodeLocation => nodeLocation.ToExpressionSyntax(),
GatheringLocation location => location.ToExpressionSyntax(),
not null when value.GetType().IsEnum => MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression,
IdentifierName(value.GetType().Name), IdentifierName(value.GetType().GetEnumName(value)!)),
_ => throw new Exception($"Unsupported data type {value.GetType()} = {value}")
};
}
catch (Exception e)
{
throw new Exception($"Unable to handle literal [{value}]: {e.StackTrace}", e);
throw new Exception($"Unable to handle literal [{value}]: {e}", e);
}
throw new Exception($"Unsupported data type {value.GetType()} = {value}");
}
public static AssignmentExpressionSyntax? Assignment<T>(string name, T? value, T? defaultValue)
@ -607,7 +97,7 @@ public static class RoslynShortcuts
}
catch (Exception e)
{
throw new Exception($"Unable to handle assignment [{name}]: {e.Message}", e);
throw new Exception($"Unable to handle assignment [{name}]: {e}", e);
}
}
@ -633,7 +123,7 @@ public static class RoslynShortcuts
}
catch (Exception e)
{
throw new Exception($"Unable to handle list [{name}]: {e.StackTrace}", e);
throw new Exception($"Unable to handle list [{name}]: {e}", e);
}
}

View File

@ -337,16 +337,6 @@
"InteractionType": "WalkTo",
"Fly": true
},
{
"Position": {
"X": 233.0817,
"Y": 8,
"Z": -21.83023
},
"TerritoryId": 146,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 2000077,
"Position": {
@ -360,18 +350,16 @@
"KillEnemyDataIds": [
9489
],
"$": "0 0 0 0 0 0 -> 16 17 0 0 0 128"
},
{
"Position": {
"X": 614.4023,
"Y": 301.81046,
"Z": -101.94888
},
"TerritoryId": 155,
"InteractionType": "WalkTo",
"Fly": true,
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead"
"$": "0 0 0 0 0 0 -> 16 17 0 0 0 128",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
],
"Fly": true
},
{
"DataId": 2000078,
@ -386,7 +374,17 @@
"KillEnemyDataIds": [
9490
],
"$": "16 17 0 0 0 128 -> 0 17 0 0 0 0"
"Fly": true,
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
"$": "16 17 0 0 0 128 -> 0 17 0 0 0 0",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},

View File

@ -0,0 +1,41 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1002281,
"Position": {
"X": -115.739685,
"Y": 41.600117,
"Z": 118.88306
},
"TerritoryId": 131,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
"[Ul'dah] Alchemists' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
131
]
}
},
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSALC001_00190_Q1_1",
"Yes": true
}
]
}
]
}
]
}

View File

@ -0,0 +1,43 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1002281,
"Position": {
"X": -115.739685,
"Y": 41.600117,
"Z": 118.88306
},
"TerritoryId": 131,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1002299,
"Position": {
"X": -98.8938,
"Y": 40.200146,
"Z": 120.83618
},
"TerritoryId": 131,
"InteractionType": "CompleteQuest",
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSALC011_00575_Q1_1",
"Yes": true
}
]
}
]
}
]
}

View File

@ -0,0 +1,41 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000998,
"Position": {
"X": -51.651794,
"Y": 42.79979,
"Z": 190.41736
},
"TerritoryId": 128,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] The Aftcastle"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
128
]
}
},
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSARM001_00186_Q1_000_1",
"Yes": true
}
]
}
]
}
]
}

View File

@ -0,0 +1,43 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000998,
"Position": {
"X": -51.651794,
"Y": 42.79979,
"Z": 190.41736
},
"TerritoryId": 128,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1001000,
"Position": {
"X": -32.028687,
"Y": 41.499985,
"Z": 208.39233
},
"TerritoryId": 128,
"InteractionType": "CompleteQuest",
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSARM011_00273_Q1_000_1",
"Yes": true
}
]
}
]
}
]
}

View File

@ -0,0 +1,38 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1002279,
"Position": {
"X": -196.8872,
"Y": 18.459997,
"Z": 59.952637
},
"TerritoryId": 130,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
"[Ul'dah] Thaumaturges' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSTHM001_00183_Q1_000_1",
"Yes": true
}
]
}
]
}
]
}

View File

@ -0,0 +1,44 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1002279,
"Position": {
"X": -196.8872,
"Y": 18.459997,
"Z": 59.952637
},
"TerritoryId": 130,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1001709,
"Position": {
"X": -240.4975,
"Y": 18.7,
"Z": 85.58777
},
"TerritoryId": 130,
"InteractionType": "CompleteQuest",
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSTHM011_00344_Q1_001_1",
"Yes": true
}
],
"NextQuestId": 553
}
]
}
]
}

View File

@ -0,0 +1,217 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "pot0to",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1001708,
"Position": {
"X": -250.3548,
"Y": 18,
"Z": 80.88806
},
"TerritoryId": 130,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
"[Ul'dah] Thaumaturges' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
130
]
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1001712,
"Position": {
"X": -241.50458,
"Y": 19.57727,
"Z": 84.64172
},
"TerritoryId": 130,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1002305,
"Position": {
"X": 14.419739,
"Y": 22.157166,
"Z": 72.3125
},
"TerritoryId": 140,
"Fly": true,
"InteractionType": "Interact",
"AetheryteShortcut": "Western Thanalan - Horizon",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
140
]
}
}
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1002324,
"Position": {
"X": 112.80994,
"Y": 17.536886,
"Z": 31.296265
},
"TerritoryId": 140,
"Fly": true,
"InteractionType": "Interact"
},
{
"DataId": 1002322,
"Position": {
"X": 116.89929,
"Y": 17.536886,
"Z": 12.954895
},
"TerritoryId": 140,
"InteractionType": "Interact"
},
{
"DataId": 1002323,
"Position": {
"X": 132.43298,
"Y": 21.104982,
"Z": 9.018005
},
"TerritoryId": 140,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1002305,
"Position": {
"X": 14.419739,
"Y": 22.157166,
"Z": 72.3125
},
"TerritoryId": 140,
"Fly": true,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 2001472,
"Position": {
"X": 150.71338,
"Y": 18.783813,
"Z": -5.7526855
},
"TerritoryId": 140,
"Fly": true,
"InteractionType": "SinglePlayerDuty"
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 1002305,
"Position": {
"X": 14.419739,
"Y": 22.157166,
"Z": 72.3125
},
"TerritoryId": 140,
"Fly": true,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 7,
"Steps": [
{
"DataId": 2001474,
"Position": {
"X": 96.238525,
"Y": 16.952698,
"Z": 188.83032
},
"TerritoryId": 140,
"Fly": true,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 8,
"Steps": [
{
"DataId": 1001712,
"Position": {
"X": -241.50458,
"Y": 19.57727,
"Z": 84.64172
},
"TerritoryId": 130,
"InteractionType": "Interact",
"AetheryteShortcut": "Ul'dah",
"AethernetShortcut": [
"[Ul'dah] Aetheryte Plaza",
"[Ul'dah] Thaumaturges' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
130
]
}
}
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1001708,
"Position": {
"X": -250.3548,
"Y": 18,
"Z": 80.88806
},
"TerritoryId": 130,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,130 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "pot0to",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000200,
"Position": {
"X": 209.55212,
"Y": 0.9999819,
"Z": 35.01941
},
"StopDistance": 7,
"TerritoryId": 132,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
"[Gridania] Archers' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "Interact",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1007834,
"Position": {
"X": 447.2876,
"Y": 2.147105,
"Z": 21.86615
},
"TerritoryId": 153,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2002364,
"Position": {
"X": 457.9995,
"Y": 0.44250488,
"Z": -106.73688
},
"TerritoryId": 153,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"Position": {
"X": 440.87814,
"Y": 2.8651512,
"Z": 25.295788
},
"InteractionType": "WalkTo",
"TerritoryId": 153,
"Fly": true
},
{
"DataId": 1007834,
"Position": {
"X": 447.2876,
"Y": 2.147105,
"Z": 21.86615
},
"StopDistance": 7,
"TerritoryId": 153,
"InteractionType": "Interact",
"Fly": false
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "CompleteQuest",
"Fly": true,
"NextQuestId": 1086
}
]
}
]
}

View File

@ -0,0 +1,87 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "pot0to",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"TerritoryId": 153,
"InteractionType": "EquipItem",
"ItemId": 4546,
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
},
{
"TerritoryId": 153,
"InteractionType": "EquipRecommended"
},
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2002366,
"Position": {
"X": -143.0534,
"Y": 68.192505,
"Z": 586.1448
},
"StopDistance": 0.5,
"TerritoryId": 137,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
1945
],
"AetheryteShortcut": "Eastern La Noscea - Wineport",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"NextQuestId": 1087
}
]
}
]
}

View File

@ -0,0 +1,77 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "pot0to",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2002365,
"Position": {
"X": 272.05298,
"Y": 18.875366,
"Z": -164.53809
},
"TerritoryId": 145,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
58
],
"AetheryteShortcut": "Eastern Thanalan - Camp Drybone",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"NextQuestId": 1088
}
]
}
]
}

View File

@ -0,0 +1,76 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "pot0to",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2002367,
"Position": {
"X": 104.32593,
"Y": -21.774658,
"Z": 171.00781
},
"TerritoryId": 154,
"InteractionType": "UseItem",
"ItemId": 2000952,
"EnemySpawnType": "AutoOnEnterArea",
"AetheryteShortcut": "North Shroud - Fallgourd Float",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"$": "Actually a SinglePlayerDuty"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"NextQuestId": 1089
}
]
}
]
}

View File

@ -0,0 +1,152 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "pot0to",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_JOBBRD451_01089_Q1_000_000",
"Yes": true
}
]
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2002528,
"Position": {
"X": 512.291,
"Y": 10.482849,
"Z": 148.30237
},
"TerritoryId": 153,
"InteractionType": "Interact",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2002530,
"Position": {
"X": 576.2263,
"Y": -24.002502,
"Z": -423.75836
},
"TerritoryId": 152,
"InteractionType": "Interact",
"Fly": true,
"AetheryteShortcut": "East Shroud - Hawthorne Hut",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"Position": {
"X": -143.16391,
"Y": -25.75711,
"Z": 34.669674
},
"TerritoryId": 138,
"Fly": true,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Western La Noscea - Aleport"
},
{
"DataId": 2002527,
"Position": {
"X": -168.29181,
"Y": -21.5,
"Z": 44.144287
},
"TerritoryId": 138,
"InteractionType": "Interact",
"Fly": false,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2002529,
"Position": {
"X": -324.7273,
"Y": 87.96814,
"Z": -133.50122
},
"TerritoryId": 147,
"InteractionType": "Interact",
"Fly": true,
"AetheryteShortcut": "Northern Thanalan - Ceruleum Processing Plant",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"NextQuestId": 1090
}
]
}
]
}

View File

@ -0,0 +1,64 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "pot0to",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1006750,
"Position": {
"X": 16.464417,
"Y": 6.750492,
"Z": -7.3396606
},
"TerritoryId": 153,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "South Shroud - Quarrymill",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2002373,
"Position": {
"X": 72.098755,
"Y": 227.19153,
"Z": 380.84985
},
"TerritoryId": 155,
"InteractionType": "UseItem",
"ItemId": 2000953,
"EnemySpawnType": "AutoOnEnterArea",
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
"Fly": true,
"$": "Actually a SinglePlayerDuty"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1007891,
"Position": {
"X": 70.17627,
"Y": 226.72212,
"Z": 381.30762
},
"TerritoryId": 155,
"InteractionType": "CompleteQuest",
"NextQuestId": 1713
}
]
}
]
}

View File

@ -0,0 +1,44 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000197,
"Position": {
"X": 201.31226,
"Y": -3.1634123E-15,
"Z": 43.900146
},
"TerritoryId": 132,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1000200,
"Position": {
"X": 209.55212,
"Y": 0.9999819,
"Z": 35.01941
},
"StopDistance": 5,
"TerritoryId": 132,
"InteractionType": "CompleteQuest",
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSARC998_00131_Q1_000_1",
"Yes": true
}
]
}
]
}
]
}

View File

@ -0,0 +1,387 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000200,
"Position": {
"X": 209.55212,
"Y": 0.9999819,
"Z": 35.01941
},
"StopDistance": 7,
"TerritoryId": 132,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
"[Gridania] Archers' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1000199,
"Position": {
"X": 211.13904,
"Y": 1.5032018E-05,
"Z": 28.580078
},
"TerritoryId": 132,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": -87.448326,
"Y": -3.8114734,
"Z": -77.68485
},
"TerritoryId": 148,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Central Shroud - Bentbranch Meadows",
"Fly": true
},
{
"DataId": 2001177,
"Position": {
"X": -88.24298,
"Y": 3.768982,
"Z": -88.24298
},
"TerritoryId": 148,
"StopDistance": 15,
"InteractionType": "Action",
"Action": "Heavy Shot",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
2
]
},
{
"Position": {
"X": -113.806755,
"Y": -3.824695,
"Z": -61.20561
},
"TerritoryId": 148,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
4
]
}
}
},
{
"DataId": 2001175,
"Position": {
"X": -115.58716,
"Y": -3.402832,
"Z": -51.07196
},
"TerritoryId": 148,
"StopDistance": 15,
"InteractionType": "Action",
"Action": "Heavy Shot",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
4
]
},
{
"Position": {
"X": -142.90863,
"Y": -1.355497,
"Z": -69.45994
},
"TerritoryId": 148,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
}
}
},
{
"DataId": 2000959,
"Position": {
"X": -143.32806,
"Y": -0.41204834,
"Z": -58.884644
},
"TerritoryId": 148,
"StopDistance": 15,
"InteractionType": "Action",
"Action": "Heavy Shot",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
},
{
"Position": {
"X": -154.95493,
"Y": 4.0352364,
"Z": -132.85217
},
"TerritoryId": 148,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2000958,
"Position": {
"X": -166.97955,
"Y": 10.2387085,
"Z": -138.41461
},
"TerritoryId": 148,
"StopDistance": 15,
"InteractionType": "Action",
"Action": "Heavy Shot",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"Position": {
"X": -114.08684,
"Y": 7.6589117,
"Z": -173.19547
},
"TerritoryId": 148,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2000957,
"Position": {
"X": -120.68359,
"Y": 12.49707,
"Z": -182.39111
},
"TerritoryId": 148,
"StopDistance": 15,
"InteractionType": "Action",
"Action": "Heavy Shot",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"Position": {
"X": -74.71171,
"Y": -4,
"Z": -190.44055
},
"TerritoryId": 148,
"InteractionType": "WalkTo"
},
{
"DataId": 2000956,
"Position": {
"X": -80.76605,
"Y": -2.3651733,
"Z": -196.49048
},
"TerritoryId": 148,
"StopDistance": 15,
"InteractionType": "Action",
"Action": "Heavy Shot"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1000199,
"Position": {
"X": 211.13904,
"Y": 1.5032018E-05,
"Z": 28.580078
},
"TerritoryId": 132,
"InteractionType": "Interact",
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
"[Gridania] Archers' Guild"
]
}
]
},
{
"Sequence": 4,
"Steps": [
{
"Position": {
"X": -431.09494,
"Y": 2.9039853,
"Z": 239.26413
},
"StopDistance": 0.5,
"TerritoryId": 152,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 5,
"MinimumKillCount": 8,
"$": "Slay northern vultures.",
"CompletionQuestVariablesFlags": [
null,
{
"High": 8
},
null,
null,
null,
null
]
},
{
"DataId": 39,
"MinimumKillCount": 8,
"$": "Slay tree slugs.",
"CompletionQuestVariablesFlags": [
{
"Low": 8
},
null,
null,
null,
null,
null
]
}
],
"AetheryteShortcut": "East Shroud - Hawthorne Hut",
"Fly": true,
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1000199,
"Position": {
"X": 211.13904,
"Y": 1.5032018E-05,
"Z": 28.580078
},
"TerritoryId": 132,
"InteractionType": "Interact",
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
"[Gridania] Archers' Guild"
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1000200,
"Position": {
"X": 209.55212,
"Y": 0.9999819,
"Z": 35.01941
},
"StopDistance": 7,
"TerritoryId": 132,
"InteractionType": "CompleteQuest",
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSARC997_00134_Q1_000_1",
"Yes": true
}
],
"NextQuestId": 68
}
]
}
]
}

View File

@ -0,0 +1,39 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "Cacahuetes",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000197,
"Position": {
"X": 201.31226,
"Y": -3.1634123E-15,
"Z": 43.900146
},
"TerritoryId": 132,
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
"[Gridania] Archers' Guild"
],
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSARC999_00181_Q1_000_1",
"Yes": true,
"$": "No Godbert prompt"
}
],
"InteractionType": "AcceptQuest",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
}
]
}

View File

@ -0,0 +1,157 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "pot0to",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000200,
"Position": {
"X": 209.55212,
"Y": 0.9999819,
"Z": 35.01941
},
"TerritoryId": 132,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
"[Gridania] Archers' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 117.47766,
"Y": 17.661993,
"Z": -247.24017
},
"TerritoryId": 148,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 37,
"MinimumKillCount": 3,
"$": "Slay ground squirrels as an archer",
"CompletionQuestVariablesFlags": [
{
"Low": 3
},
null,
null,
null,
null,
null
]
},
{
"DataId": 49,
"MinimumKillCount": 3,
"CompletionQuestVariablesFlags": [
null,
{
"High": 3
},
null,
null,
null,
null
],
"$": "Slay little ladybugs as an archer"
}
],
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Archers' Guild",
"[Gridania] Blue Badger Gate (Central Shroud)"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true,
"InTerritory": [
148
]
}
},
"CompletionQuestVariablesFlags": [
{
"Low": 3
},
{
"High": 3
},
null,
null,
null,
null
]
},
{
"Position": {
"X": 126.943115,
"Y": 2.910592,
"Z": -180.54787
},
"TerritoryId": 148,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 47,
"MinimumKillCount": 3,
"$": "Slay forest funguars as an archer"
}
],
"CompletionQuestVariablesFlags": [
null,
{
"Low": 3
},
null,
null,
null,
null
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1000200,
"Position": {
"X": 209.55212,
"Y": 0.9999819,
"Z": 35.01941
},
"StopDistance": 7,
"TerritoryId": 132,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Gridania",
"AethernetShortcut": [
"[Gridania] Aetheryte Plaza",
"[Gridania] Archers' Guild"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"NextQuestId": 46
}
]
}
]
}

Some files were not shown because too many files have changed in this diff Show More