265 lines
16 KiB
Plaintext
265 lines
16 KiB
Plaintext
flowchart TD
|
|
%% =============================================================================
|
|
%% FONT SIZE & CONFIGURATION
|
|
%% =============================================================================
|
|
node[fontsize=18]
|
|
START["**START**"] --> A_ARRIVE_SHAPEIR
|
|
START --> A_CHECK_DAY_COUNTER
|
|
|
|
%% =============================================================================
|
|
%% SHAPEIR TOWN - Initial Setup (area_1 - light blue)
|
|
%% =============================================================================
|
|
subgraph area_1["**SHAPEIR TOWN**"]
|
|
A_ARRIVE_SHAPEIR["A: Arrive in Shapeir"] --> C1["C1: Day 1 Begins"]
|
|
|
|
C1 --> P_MEET_AZIZA["P: Meet Aziza the Enchantress"]
|
|
P_MEET_AZIZA --> A_VISIT_AZIZA["A: Visit Aziza in Castle Keep"]
|
|
A_VISIT_AZIZA --> O_LEARN_ELEMENTALS["O: Learn About Elemental Threats"]
|
|
|
|
C1 --> P_NEED_GOLD["P: Need Gold for Purchases"]
|
|
P_NEED_GOLD --> A_BEG_FOR_MONEY["A: Beg for Money in Square"]
|
|
A_BEG_FOR_MONEY --> O_RECEIVE_INN_COIN["O: Receive 50 Dinar for Inn"]
|
|
|
|
C1 --> P_GET_WATERSKIN["P: Need Waterskin for Puzzles"]
|
|
P_GET_WATERSKIN --> A_VISIT_AL_HAJJAJ["A: Visit Al Hajjaj the Thirsty"]
|
|
A_VISIT_AL_HAJJAJ --> O_LEARN_WATERSKIN_TIP["O: Learn About Waterskin Need"]
|
|
|
|
O_LEARN_ELEMENTALS --> UNLOCK_DESERT_QUESTS["**UNLOCK: Elemental Quests**"]
|
|
end
|
|
style area_1 fill:#E3F2FD,stroke:#1976D2,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% WIZARD ACADEMY - CLASS-SPECIFIC (area_wiz - light purple)
|
|
%% =============================================================================
|
|
subgraph area_wiz["**WIZARDS' INSTITUTE OF TECHNOLOGY**"]
|
|
UNLOCK_DESERT_QUESTS -.-> P_MAGIC_USER_QUALIFY["P: Magic User Must Qualify for Wizard Status"]
|
|
|
|
P_MAGIC_USER_QUALIFY --> A_BUY_MAGIC_SHOP_ITEMS["A: Buy Spells from Keapon's Magic Shop"]
|
|
A_BUY_MAGIC_SHOP_ITEMS --> O_HAVE_SPELLS["O: Have All Required Spells"]
|
|
|
|
O_HAVE_SPELLS & O_LEARN_WATERSKIN_TIP --> A_DETECT_HIDDEN_DOOR["A: Use Detect Magic to Find W.I.T. Entrance"]
|
|
A_DETECT_HIDDEN_DOOR --> C2["C2: Hidden Door Revealed"]
|
|
|
|
C2 --> A_ENTER_WITH_ERASMUS["A: Enter Institute with Erasmus as Sponsor"]
|
|
A_ENTER_WITH_ERASMUS --> P_PRE_TEST_BELLS["P: Pre-Test - Three Bells"]
|
|
|
|
P_PRE_TEST_BELLS --> A_DETECT_CORRECT_BELL["A: Cast Detect on Bell (identifies correct one)"]
|
|
A_DETECT_CORRECT_BELL --> A_FETCH_TO_STAND["A: Fetch Bell to Stand"]
|
|
A_FETCH_TO_STAND --> A_TRIGGER_RING["A: Trigger to Ring Bell"]
|
|
|
|
A_TRIGGER_RING --> P_AIR_TRIAL["P: Air Trial - Spinning Staff"]
|
|
P_AIR_TRIAL --> A_LEVITATE_OVER_STAFF["A: Fetch Staff Toward, Then Levitate Until Passes"]
|
|
|
|
A_LEVITATE_OVER_STAFF --> P_EARTH_TRIAL["P: Earth Trial - Stone Beast Wall"]
|
|
P_EARTH_TRIAL --> A_TRIGGER_WALL["A: Trigger to Awaken Earth Beast"]
|
|
A_TRIGGER_WALL --> A_CALM_TWICE["A: Calm Beast Twice (before & after crossing)"]
|
|
|
|
A_CALM_TWICE --> P_WATER_TRIAL["P: Water Trial - Ice Hoarfrost"]
|
|
P_WATER_TRIAL --> A_FLAME_DART_ICE["A: Flame Dart to Melt Ice"]
|
|
A_FLAME_DART_ICE --> A_FORCE_BOLT_CRACK["A: Force Bolt on Crack Repeatedly"]
|
|
A_FORCE_BOLT_CRACK --> A_OPEN_HALVES["A: Open Door Splits Hailfist"]
|
|
|
|
A_OPEN_HALVES --> P_FIRE_TRIAL["P: Fire Trial - Fiery Obstacle"]
|
|
P_FIRE_TRIAL --> A_OPEN_DOOR_FIRE["A: Open Fire Door"]
|
|
A_OPEN_DOOR_FIRE --> A_CALM_FLAMES_HOLE["A: Calm Flames Leaves Hole"]
|
|
A_CALM_FLAMES_HOLE --> A_FETCH_DOOR_CLOSE["A: Fetch Door Closed"]
|
|
A_FETCH_DOOR_CLOSE --> A_FORCE_BOLT_PUSH["A: Force Bolt Pushes Door Onto Hole"]
|
|
|
|
A_FORCE_BOLT_PUSH --> C3["C3: Pass Fire Trial - Graduate Wizard"]
|
|
C3 --> A_REFUSE_OATH["A: Refuse Oath to Join Institute"]
|
|
A_REFUSE_OATH --> O_RECEIVE_REVERSAL["O: Receive REVERSAL Spell for Graduation"]
|
|
end
|
|
style area_wiz fill:#F3E5F5,stroke:#7B1FA2,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% ELEMENTAL CAPTURES - TIME-BASED (area_elem - light orange)
|
|
%% =============================================================================
|
|
subgraph area_elem["**ELEMENTAL CAPTURES - HARD DEADLINES**"]
|
|
UNLOCK_DESERT_QUESTS --> P_BUY_INCENSE_LAMP["P: Buy Lure & Container"]
|
|
|
|
P_BUY_INCENSE_LAMP --> A_VISIT_HARIK["A: Visit Harik Attar Apothecary"]
|
|
A_VISIT_HARIK --> A_BARGAIN_INCENSE["A: Bargain for Incense (free with correct negotiation)"]
|
|
A_BARGAIN_INCENSE --> O_RECEIVE_INCENSE["O: Receive Incense"]
|
|
|
|
P_BUY_INCENSE_LAMP --> A_VISIT_TASHTARI["A: Visit Tashtari's Brass Stand Fountain Plaza"]
|
|
A_VISIT_TASHTARI --> A_BARGAIN_BRASS_LAMP["A: Bargain for Brass Lamp (10 dinars)"]
|
|
A_BARGAIN_BRASS_LAMP --> O_RECEIVE_BRASS_LAMP["O: Receive Brass Lamp"]
|
|
|
|
C1 --> C_DAY5["C_DAY5: Day 5 - Fire Elemental Appears"]
|
|
C_DAY5 --> P_FIRE_ELEMENTAL_CAPTURE["P: Capture Fire Elemental Before Day 7"]
|
|
|
|
P_FIRE_ELEMENTAL_CAPTURE --> A_USE_INCENSE_ALLEY["A: Use Incense Away From Plaza into Alley"]
|
|
A_USE_INCENSE_ALLEY --> A_LURE_FOLLOW["O: Elemental Follows You"]
|
|
A_LURE_FOLLOW --> A_PUT_DOWN_LAMP["A: Put Down/Drop Lamp on Ground"]
|
|
A_PUT_DOWN_LAMP --> A_POUR_WATER_REPEATEDLY["A: Use Water on Fire Elemental Multiple Times"]
|
|
|
|
A_POUR_WATER_REPEATEDLY --> C4["C4: Fire Elemental Captured in Magic Lamp"]
|
|
C4 --> O_CITY_SAVED_FIre["O: City Saved - Day 7 Disaster Avoided"]
|
|
end
|
|
style area_elem fill:#FFF3E0,stroke:#F57C00,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% JULANAR TREE WOMAN (area_jul - light green)
|
|
%% =============================================================================
|
|
subgraph area_jul["**JULANAR THE TREE WOMAN**"]
|
|
UNLOCK_DESERT_QUESTS -.-> P_SEE_STRANGE_TREE["P: Strange Tree in Desert Looks Like Woman"]
|
|
|
|
P_SEE_STRANGE_TREE --> A_ASK_AZIZA_TREE["A: Ask Aziza About the Tree"]
|
|
A_ASK_AZIZA_TREE --> O_LEARN_JULANAR_STORY["O: Learn Julanar Cursed Story - No Direct Solution"]
|
|
|
|
UNLOCK_DESERT_QUESTS -.-> P_CATCH_EARTH_ELEMENTAL["P: Capture Earth Elemental First"]
|
|
P_CATCH_EARTH_ELEMENTAL --> A_WEAKEN_WITH_FLAME_DART["A: Weaken with Flame Dart or Soulforge Sword"]
|
|
A_WEAKEN_WITH_FLAME_DART --> A_GATHER_DUST_BAG["A: Gather Dust into Cloth Bag"]
|
|
A_GATHER_DUST_BAG --> O_RECEIVE_EARTH_ELEMENTAL["O: Receive Earth Elemental in Bag"]
|
|
|
|
C1 --> C_DAY8["C_DAY8: Day 8+ - Air Trial Available"]
|
|
C_DAY8 -.-> P_AIR_ELEMENTAL_BEFORE_JULANAR["P: Optionally Catch Air Elemental First (not required)"]
|
|
|
|
O_HAVE_SPELLS & O_RECEIVE_EARTH_ELEMENTAL --> A_TRAVEL_TO_TREE["A: Travel East from Shapeir Overlook to Desert Tree"]
|
|
A_TRAVEL_TO_TREE --> P_GIFT_SEQUENCE["P: Give Three Gifts in Sequence"]
|
|
|
|
P_GIFT_SEQUENCE --> A_GIVE_WATER_KINDNESS["A: Gift 1 - Give Water (Gift of Kindness)"]
|
|
A_GIVE_WATER_KINDNESS --> A_TELL_ABOUT_YOURSELF["A: Tell About Yourself"]
|
|
A_TELL_ABOUT_YOURSELF --> O_KINDNESS_RECEIVED["O: Gift of Kindness Accepted"]
|
|
|
|
O_KINDNESS_RECEIVED & O_RECEIVE_EARTH_ELEMENTAL --> A_GIVE_EARTH_MAGIC["A: Gift 2 - Give Earth (Gift of Magic)"]
|
|
A_GIVE_EARTH_MAGIC --> A_TELL_ABOUT_EARTH["A: Tell About Earth"]
|
|
A_TELL_ABOUT_EARTH --> O_MAGIC_RECEIVED["O: Gift of Magic Accepted"]
|
|
|
|
O_MAGIC_RECEIVED --> A_HUG_TREE["A: Gift 3 - Hug Tree (Gift of Love)"]
|
|
A_HUG_TREE --> A_TYPE_JULANAR["A: Type JULANAR as Name (Recognition)"]
|
|
A_TYPE_JULANAR --> O_LOVE_RECEIVED["O: Gift of Love Accepted"]
|
|
|
|
O_LOVE_RECEIVED --> C5["C5: Tree Restored - Blooms with Flowers"]
|
|
C5 --> A_TAKE_FRUIT_COMPASSION["A: Take Fruit of Compassion from Branch"]
|
|
A_TAKE_FRUIT_COMPASSION --> O_RECEIVE_FRUIT_COMPASSION["O: Receive Fruit of Compassion"]
|
|
end
|
|
style area_jul fill:#E8F5E9,stroke:#388E3C,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% ADDITIONAL ELEMENTAL CAPTURES (area_elem2 - light orange)
|
|
%% =============================================================================
|
|
subgraph area_elem2["**MORE ELEMENTAL DEADLINES**"]
|
|
UNLOCK_DESERT_QUESTS --> C_DAY8_AIR["C_DAY8: Day 8-11 - Air Elemental"]
|
|
|
|
C_DAY8_AIR --> P_AIR_TRIAL_CAPTURE["P: Capture Air Elemental Before Day 11"]
|
|
P_AIR_TRIAL_CAPTURE --> A_LEVITATE_ABOVE_WHIRLWIND["A: Levitate Above Whirlwind Center"]
|
|
A_LEVITATE_ABOVE_WHIRLWIND --> A_DROP_EARTH_CENTER["A: Drop Earth in Center to Slow Spinning"]
|
|
A_DROP_EARTH_CENTER --> A_USE_BELLOWS_SUCK["A: Use Bellows to Blow Elemental Into Container"]
|
|
|
|
A_USE_BELLOWS_SUCK --> C6["C6: Air Elemental Captured in Bellows"]
|
|
|
|
UNLOCK_DESERT_QUESTS --> C_DAY12["C_DAY12: Day 12-14 - Earth Element"]
|
|
C_DAY12 --> P_EARTH_CAPTURE["P: Capture Earth Before Day 14"]
|
|
P_EARTH_CAPTURE -.-> A_WEAKEN_WITH_FLAME_DART
|
|
|
|
UNLOCK_DESERT_QUESTS --> C_DAY14_W["C_DAY14: Day 14-16 - Water Elemental"]
|
|
|
|
C_DAY14_W --> P_WATER_CAPTURE["P: Capture Water Before Day 16"]
|
|
P_WATER_CAPTURE --> A_DROP_WATERSKIN_FOUNTAIN["A: Drop Waterskin at Fountain Base"]
|
|
A_DROP_WATERSKIN_FOUNTAIN --> A_BLOWER_ELEMENTAL_IN["A: Use Bellows to Blow Elemental Into Tank"]
|
|
|
|
A_BLOWER_ELEMENTAL_IN --> C7["C7: Water Elemental Captured"]
|
|
end
|
|
style area_elem2 fill:#FFF8E1,stroke:#F57F17,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% MID-GAME PUZZLES (area_mid - light yellow)
|
|
%% =============================================================================
|
|
subgraph area_mid["**MID-GAME QUESTS**"]
|
|
UNLOCK_DESERT_QUESTS -.-> P_DERVISH_FIVE_WS["P: Dervish's Five Ws Riddle"]
|
|
|
|
P_DERVISH_FIVE_WS --> A_COLLECT_FIVE_OBJECTS["A: Collect Whatever/Whenever/Wherewith/Wherever/Whereby Objects"]
|
|
A_COLLECT_FIVE_OBJECTS --> O_RIDDLE_SOLVED["O: Present to Dervish for Reward"]
|
|
|
|
UNLOCK_DESERT_QUESTS -.-> P_SULEIMAN_TOMB["P: Suleiman the Djinn's Ring"]
|
|
|
|
P_SULEIMAN_TOMB --> A_ENTER_TOMB_DOOR["A: Enter Tomb - See Name at Door"]
|
|
A_ENTER_TOMB_DOOR --> A_TYPE_SULEIMAN["A: Type SULEIMAN at Door (Observation Replay)"]
|
|
A_TYPE_SULEIMAN --> O_DOOR_OPENS["O: Door Opens"]
|
|
|
|
O_DOOR_OPENS --> A_SEARCH_FOR_RING["A: Search Tomb Contents for Ring"]
|
|
A_SEARCH_FOR_RING --> O_RECEIVE_MAGIC_RING["O: Receive Magic Ring - Grant 3 Wishes Later"]
|
|
end
|
|
style area_mid fill:#FFF9C4,stroke:#FBC02D,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% FINAL PUZZLES (area_final - light amber)
|
|
%% =============================================================================
|
|
subgraph area_final["**FINAL PHASE - DAY 23+**"]
|
|
C1 --> C_DAY23["C_DAY23: Day 23+ - Final Quests Available"]
|
|
|
|
C_DAY23 --> P_CAGED_BEAST_POTION["P: Cure Caged Beast Al Scurva"]
|
|
P_CAGED_BEAST_POTION --> A_GET_GRIFIN_FEATHER["A: Get Griffin Feather (from Desert Hunt)"]
|
|
A_GET_GRIFIN_FEATHER --> A_GET_BEAST_HAIR["A: Cut Hair from Caged Beast"]
|
|
|
|
A_GET_BEAST_HAIR & O_RECEIVE_FRUIT_COMPASSION --> A_VISIT_APOTHECARY["A: Visit Harik Apothecary with All 3 Ingredients"]
|
|
A_VISIT_APOTHECARY --> A_COMBINE_POTION["A: Combine Griffin Feather + Fruit of Compassion + Beast Hair"]
|
|
|
|
A_COMBINE_POTION --> O_RECEIVE_DISPILL_POTION["O: Receive Dispel Potion"]
|
|
O_RECEIVE_DISPILL_POTION --> A_GIVE_TO_AL_SCURVA["A: Give to Al Scurva the Caged Beast"]
|
|
|
|
A_GIVE_TO_AL_SCURVA --> C8["C8: Beast Cured - Freed of Curse"]
|
|
|
|
UNLOCK_DESERT_QUESTS -.-> P_SHARAP_PIN["P: Sharaf Katta Needs Pin for Secret Passage"]
|
|
P_SHARAP_PIN --> A_FIND_SAPPHIRE_PIN["A: Find Sapphire Pin in Shapeir"]
|
|
A_FIND_SAPPHIRE_PIN --> A_SHOW_TO_SHARAF_DAY29["A: Show to Sharaf the Katta on Day 29+ Dungeon Escape"]
|
|
|
|
A_SHOW_TO_SHARAF_DAY29 --> O_SECRET_PASSAGE_ACTIVE["O: Secret Passage Activates"]
|
|
O_SECRET_PASSAGE_ACTIVE --> C9["C9: Dungeon Escape Route Open"]
|
|
end
|
|
style area_final fill:#FFECB3,stroke:#F57F17,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% CLASS-SPECIFIC ALTERNATIVES (area_class - light purple)
|
|
%% =============================================================================
|
|
subgraph area_class["**CLASS-SPECIFIC ROUTES**"]
|
|
START -.-> A_THIEF_PICKPOCKET_ROUTE["A: Thief Path - Pickpocket for Gold/Items"]
|
|
START -.-> A_FIGHTER_COMBAT_ROUTE["A: Fighter Route - Combat Solutions"]
|
|
|
|
A_THIEF_PICKPOCKET_ROUTE --> O_THF_GOLD["O: Alternative Gold Acquisition"]
|
|
A_FIGHTER_COMBAT_ROUTE --> O_FT_WEAKENS_ENEMIES["O: Combat Can Weaken Some Bosses"]
|
|
|
|
O_THF_GOLD -.-> P_NEED_GOLD
|
|
O_FT_WEAKENS_ENEMIES -.-> A_WEAKEN_WITH_FLAME_DART
|
|
end
|
|
style area_class fill:#E1BEE7,stroke:#8E24AA,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% END GAME (area_end - light red)
|
|
%% =============================================================================
|
|
subgraph area_end["**CATA COMPLETION**"]
|
|
C8 & O_SECRET_PASSAGE_ACTIVE --> P_FIGHT_ZARKOFF["P: Final Boss - Zarkoff the Dark Sorcerer"]
|
|
|
|
P_FIGHT_ZARKOFF --> A_USE_MAGIC_RING_WISHES["A: Use Magic Ring 3 Wishes Strategically"]
|
|
A_USE_MAGIC_RING_WISHES -.-> O_WIN_COMBAT["O: Win Battle Against Zarkoff"]
|
|
|
|
C4 & C6 & C7 -.-> P_FIGHT_ZARKOFF
|
|
|
|
O_WIN_COMBAT --> END["**END - KARR-MAR DEFEATED**"]
|
|
end
|
|
style area_end fill:#FFCDD2,stroke:#B71C1C,stroke-width:3px
|
|
|
|
%% =============================================================================
|
|
%% CLASS DEFINITIONS
|
|
%% =============================================================================
|
|
classDef start_end fill:#FFD700,stroke:#996600,stroke-width:3px,color:#000000,font-weight:bold
|
|
classDef problem fill:#FFB3B3,stroke:#8B0000,stroke-width:2px,color:#8B0000
|
|
classDef action fill:#B3FFB3,stroke:#006400,stroke-width:2px,color:#006400
|
|
classDef outcome fill:#B3D9FF,stroke:#004080,stroke-width:2px,color:#004080
|
|
classDef unlock fill:#FFE4B5,stroke:#8B4513,stroke-width:3px,color:#8B4513,font-weight:bold
|
|
classDef consequence fill:#E8E8E8,stroke:#333333,stroke-width:2px,color:#333333
|
|
|
|
classDef area_1 fill:#E3F2FD,stroke:#1976D2,stroke-width:3px
|
|
classDef area_wiz fill:#F3E5F5,stroke:#7B1FA2,stroke-width:3px
|
|
classDef area_elem fill:#FFF3E0,stroke:#F57C00,stroke-width:3px
|
|
classDef area_jul fill:#E8F5E9,stroke:#388E3C,stroke-width:3px
|
|
classDef area_elem2 fill:#FFF8E1,stroke:#F57F17,stroke-width:3px
|
|
classDef area_mid fill:#FFF9C4,stroke:#FBC02D,stroke-width:3px
|
|
classDef area_final fill:#FFECB3,stroke:#F57F17,stroke-width:3px
|
|
classDef area_class fill:#E1BEE7,stroke:#8E24AA,stroke-width:3px
|
|
classDef area_end fill:#FFCDD2,stroke:#B71C1C,stroke-width:3px
|
|
|
|
class START,END,C1,C2,C3,C4,C5,C6,C7,C8,C9,C_DAY5,C_DAY8,C_DAY12,C_DAY14_W,C_DAY23 start_end
|
|
class UNLOCK_DESERT_QUESTS unlock
|
|
class O_LEARN_ELEMENTALS,O_HAVE_SPELLS,RECEIVE_EARTH_ELEMENTAL consequence |