### Initialize OffsetManager Source: https://github.com/nt153133/__llamalibrary/wiki/Offset-Manager Call OffsetManager.Init() in your botbase or plugin constructor to trigger LlamaLibrary's offset search. This is a safeguard for installations without LlamaUtilities. ```csharp OffsetManager.Init(); ``` -------------------------------- ### Configure LLClimbHill Source: https://github.com/nt153133/__llamalibrary/wiki/OrderBot-Tags LLClimbHill facilitates off-mesh movement between start and end points, with options for spamming jumps and forcing dismounts. Useful for navigating complex terrain. ```xml ``` -------------------------------- ### Zone-Aware Multi-Modal Navigation with Navigation.GetTo Source: https://context7.com/nt153133/__llamalibrary/llms.txt Navigate to any zone and world position using chained methods like aetheryte teleportation, NavGraph mesh traversal, housing travel, and Flightor. Handles various travel scenarios including Grand Company barracks and cross-world travel. ```csharp using Clio.Utilities; using LlamaLibrary.Helpers; using LlamaLibrary.Enums; // Navigate to a specific zone by ZoneId + Vector3 bool success = await Navigation.GetTo(132, new Vector3(-67.49f, -0.50f, -2.14f)); // Navigate to a named NPC helper wrapper var npc = new LlamaLibrary.Helpers.NPC.Npc(1003247, 128, new Vector3(88.8f, 40.2f, 71.6f), questId: 0); bool atNpc = await Navigation.GetToNpc(npc); // Navigate to an NPC and open a specific RemoteWindow bool windowOpen = await Navigation.GetToInteractNpc( npcId: 1003247, zoneId: 128, location: new Vector3(88.8f, 40.2f, 71.6f), window: LlamaLibrary.RemoteWindows.GrandCompanySupplyList.Instance); // Fly to a position (uses Flightor, no NavGraph required) bool arrived = await Navigation.FlightorMove(new Vector3(0f, 50f, 0f)); // Off-mesh direct walk to a GameObject (bypasses mesh) var chest = GameObjectManager.GetObjectsOfType().First(); bool inRange = await Navigation.OffMeshMoveInteract(chest); // Get to a housing residential zone (wards handled automatically) bool inHousing = await Navigation.GetTo(339, new Vector3(0f, 0f, 0f)); // → internally calls HousingTraveler.GetToResidential with proper ward routing ``` -------------------------------- ### Configure AutoLisbethEquip Source: https://github.com/nt153133/__llamalibrary/wiki/OrderBot-Tags AutoLisbethEquip functions similarly to AutoEquip by using the recommended gear button, but it operates through Lisbeth. ```xml ``` -------------------------------- ### OffsetManager Initialization and Offset Scanning Source: https://context7.com/nt153133/__llamalibrary/llms.txt This section details how to initialize the OffsetManager and register custom offset classes. It covers scanning game memory for function pointers and data addresses, caching results, and checking the active game region and version. ```APIDOC ## OffsetManager — Initializing and Scanning Offsets `OffsetManager` discovers static `Offsets` classes decorated with `[Offset("Search …")]` attributes, runs parallel pattern searches against game memory, and caches results per-game-version in a JSON file so subsequent starts skip the scan. Call `InitLib()` once at startup; call `SetOffsetClasses()` or `SetOffsetClassesAndAgents()` from external botbases to wire their own offset classes. ```csharp // In your botbase constructor – initialize LL's offsets and then register your own using LlamaLibrary.Memory; using LlamaLibrary.Memory.Attributes; // 1. LL initializes itself automatically when LlamaUtilities starts, // but call InitLib() defensively to guarantee it ran before your code proceeds. await OffsetManager.InitLib(); // 2. Declare your own Offsets class in your namespace namespace MyBotBase { public static class Offsets { [Offset("Search 48 89 5C 24 ? 48 89 6C 24 ? 56 48 83 EC ? 8B DA 41 0F B7 E8")] public static IntPtr ItemDiscardFunc; [Offset("Search 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC ? 8B FA 33 DB")] public static IntPtr ItemLowerQualityFunc; } } // 3. Wire them – call from within MyBotBase so the root namespace is detected correctly // Use SetOffsetClasses() when you have only offsets: OffsetManager.SetOffsetClasses(); // Use SetOffsetClassesAndAgents() when you also have IAgent implementations: OffsetManager.SetOffsetClassesAndAgents(); // 4. Check the active region (Global / China / Korea / TraditionalChinese) var region = OffsetManager.ActiveRegion; // ClientRegion enum var gameVer = OffsetManager.ActiveRecord.CurrentGameVersion; // e.g. 7.5f Console.WriteLine($"Region: {region}, Version: {gameVer}"); ``` ``` -------------------------------- ### C# Functions for Collectable Turn-ins Source: https://context7.com/nt153133/__llamalibrary/llms.txt Automate collectable turn-ins for various Ishgard Restoration tiers and relic steps using these GeneralFunctions. Each function handles item scanning, discarding, and NPC navigation. ```csharp using LlamaLibrary.Helpers; // Turn in SkySteel crafting collectables to Denys in Ishgard await GeneralFunctions.TurninSkySteelCrafting(); ``` ```csharp // Turn in SkySteel gathering tokens to Denys await GeneralFunctions.TurninSkySteelGathering(); ``` ```csharp // Turn in Oddly Delicate materials (Shadowbringers relic step) await GeneralFunctions.TurninOddlyDelicate(); ``` ```csharp // Turn in Resplendent crafting/gathering collectables await GeneralFunctions.TurninResplendentCrafting(); ``` ```csharp // Turn in Splendorous collectables (Endwalker relic, navigates to NPC 1045069) await GeneralFunctions.TurninSplendorousCrafting(); ``` ```csharp // Turn in Splendorous 6.51+ tiers (expanded item list, same NPC) await GeneralFunctions.TurninSplendorous651Crafting(); ``` ```csharp // Chinese-region Splendorous variant await GeneralFunctions.TurninCNSplendorousCrafting(); ``` -------------------------------- ### GeneralFunctions - Collectable Turn-ins Source: https://context7.com/nt153133/__llamalibrary/llms.txt C# methods for handling collectable turn-ins for various Ishgard Restoration tiers and other utility functions. ```APIDOC ## GeneralFunctions — Collectable Turn-ins ### TurninSkySteelCrafting Turns in SkySteel crafting collectables to Denys in Ishgard. ```csharp await GeneralFunctions.TurninSkySteelCrafting(); ``` ### TurninSkySteelGathering Turns in SkySteel gathering tokens to Denys. ```csharp await GeneralFunctions.TurninSkySteelGathering(); ``` ### TurninOddlyDelicate Turns in Oddly Delicate materials (Shadowbringers relic step). ```csharp await GeneralFunctions.TurninOddlyDelicate(); ``` ### TurninResplendentCrafting Turns in Resplendent crafting/gathering collectables. ```csharp await GeneralFunctions.TurninResplendentCrafting(); ``` ### TurninSplendorousCrafting Turns in Splendorous collectables (Endwalker relic), navigates to NPC 1045069. ```csharp await GeneralFunctions.TurninSplendorousCrafting(); ``` ### TurninSplendorous651Crafting Turns in Splendorous 6.51+ tiers (expanded item list, same NPC). ```csharp await GeneralFunctions.TurninSplendorous651Crafting(); ``` ### TurninCNSplendorousCrafting Chinese-region Splendorous crafting variant. ```csharp await GeneralFunctions.TurninCNSplendorousCrafting(); ``` ### OpenChests Opens all treasure chests within 30 yalms that are in Line-of-Sight and unopened. ```csharp await GeneralFunctions.OpenChests(); ``` ### GetTreasureChests Retrieves a list of nearby treasure chests without interacting with them. ```csharp var chests = GeneralFunctions.GetTreasureChests(); ``` ``` -------------------------------- ### Initialize and Scan Offsets with OffsetManager Source: https://context7.com/nt153133/__llamalibrary/llms.txt Initialize LlamaLibrary's OffsetManager and register custom offset classes. This ensures game memory offsets are scanned and cached for efficient access. Call InitLib() defensively at startup. ```csharp using LlamaLibrary.Memory; using LlamaLibrary.Memory.Attributes; // 1. LL initializes itself automatically when LlamaUtilities starts, // but call InitLib() defensively to guarantee it ran before your code proceeds. await OffsetManager.InitLib(); // 2. Declare your own Offsets class in your namespace namespace MyBotBase { public static class Offsets { [Offset("Search 48 89 5C 24 ? 48 89 6C 24 ? 56 48 83 EC ? 8B DA 41 0F B7 E8")] public static IntPtr ItemDiscardFunc; [Offset("Search 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC ? 8B FA 33 DB")] public static IntPtr ItemLowerQualityFunc; } } // 3. Wire them – call from within MyBotBase so the root namespace is detected correctly // Use SetOffsetClasses() when you have only offsets: OffsetManager.SetOffsetClasses(); // Use SetOffsetClassesAndAgents() when you also have IAgent implementations: OffsetManager.SetOffsetClassesAndAgents(); // 4. Check the active region (Global / China / Korea / TraditionalChinese) var region = OffsetManager.ActiveRegion; // ClientRegion enum var gameVer = OffsetManager.ActiveRecord.CurrentGameVersion; // e.g. 7.5f Console.WriteLine($"Region: {region}, Version: {gameVer}"); ``` -------------------------------- ### Navigation.GetTo - Zone-Aware Multi-Modal Navigation Source: https://context7.com/nt153133/__llamalibrary/llms.txt The Navigation.GetTo method provides a versatile way to navigate the player to any zone and world position. It intelligently chains various movement methods like aetheryte teleportation, NavGraph mesh traversal, housing travel, and Flightor flight based on the destination. ```APIDOC ## Navigation.GetTo — Zone-Aware Multi-Modal Navigation `Navigation.GetTo` navigates the local player to any zone and world position by automatically chaining aetheryte teleportation, NavGraph mesh traversal, housing district travel, Flightor flight, or off-mesh movement depending on the destination. It handles Grand Company barracks, housing residential zones, and cross-world travel transparently. ```csharp using Clio.Utilities; using LlamaLibrary.Helpers; using LlamaLibrary.Enums; // Navigate to a specific zone by ZoneId + Vector3 bool success = await Navigation.GetTo(132, new Vector3(-67.49f, -0.50f, -2.14f)); // Navigate to a named NPC helper wrapper var npc = new LlamaLibrary.Helpers.NPC.Npc(1003247, 128, new Vector3(88.8f, 40.2f, 71.6f), questId: 0); bool atNpc = await Navigation.GetToNpc(npc); // Navigate to an NPC and open a specific RemoteWindow bool windowOpen = await Navigation.GetToInteractNpc( npcId: 1003247, zoneId: 128, location: new Vector3(88.8f, 40.2f, 71.6f), window: LlamaLibrary.RemoteWindows.GrandCompanySupplyList.Instance); // Fly to a position (uses Flightor, no NavGraph required) bool arrived = await Navigation.FlightorMove(new Vector3(0f, 50f, 0f)); // Off-mesh direct walk to a GameObject (bypasses mesh) var chest = GameObjectManager.GetObjectsOfType().First(); bool inRange = await Navigation.OffMeshMoveInteract(chest); // Get to a housing residential zone (wards handled automatically) bool inHousing = await Navigation.GetTo(339, new Vector3(0f, 0f, 0f)); // → internally calls HousingTraveler.GetToResidential with proper ward routing ``` ``` -------------------------------- ### Configure AutoEquip Source: https://github.com/nt153133/__llamalibrary/wiki/OrderBot-Tags Use AutoEquip to automatically equip recommended gear. Set UpdateGearSet to 'false' to prevent updating the current gearset. ```xml ``` -------------------------------- ### XML Tags for Gear Equipping Source: https://context7.com/nt153133/__llamalibrary/llms.txt Use these XML tags in RebornBuddy profiles to automate gear equipping. AutoEquip uses the recommended gear, while AutoInventoryEquip considers stat weighting. ```xml ``` ```xml ``` ```xml ``` -------------------------------- ### Inventory Stack Combining and Item Utilities Source: https://context7.com/nt153133/__llamalibrary/llms.txt These helpers assist with consolidating item stacks, adjusting item quality, and querying food/medicine slots. They are useful for pre-crafting preparation and market board tasks. Ensure InventoryManager and LlamaLibrary.Helpers are imported. ```csharp using ff14bot.Managers; using LlamaLibrary.Helpers; // Lower quality on all HQ copies of an item then merge all NQ stacks into one await InventoryHelpers.LowerQualityAndCombine(itemId: 5528); // e.g. Iron Ore // Combine fragmented stacks across all specified bag slots var allSlots = InventoryManager.FilledSlots; await InventoryHelpers.CombineStacks(allSlots); // Check if any inventory slot is busy with an FC transfer bool busy = InventoryHelpers.IsFCItemBusy; // Find food items in player bags var foods = InventoryManager.FilledSlots.GetFoodItems(); bool hasTincture = InventoryManager.FilledSlots.ContainsFooditem(itemId: 30485); BagSlot tincture = InventoryManager.FilledSlots.GetFoodItem(itemId: 30485); // Find medicine items var medicines = InventoryManager.FilledSlots.GetMedicineItems(); ``` -------------------------------- ### Grand Company Navigation and Interactions Source: https://context7.com/nt153133/__llamalibrary/llms.txt Use these helpers to travel to Grand Company bases, enter barracks, interact with specific NPCs, and perform actions like expert deliveries or rank-ups. Ensure necessary using directives are included. ```csharp using ff14bot.Enums; using LlamaLibrary.Enums; using LlamaLibrary.Helpers; // Travel to current character's Grand Company headquarters await GrandCompanyHelper.GetToGCBase(); // Travel to a specific GC base regardless of player affiliation await GrandCompanyHelper.GetToGCBase(GrandCompany.Maelstrom); // Enter the GC squadron barracks bool inBarracks = await GrandCompanyHelper.GetToGCBarracks(); // Interact with a specific NPC by role enum (navigates there automatically) await GrandCompanyHelper.InteractWithNpc(GCNpc.Personnel_Officer); await GrandCompanyHelper.InteractWithNpc(GCNpc.OIC_Quartermaster, GrandCompany.Immortal_Flames); // Look up the NPC object ID for the current player's GC uint qmId = GrandCompanyHelper.GetNpcByType(GCNpc.OIC_Quartermaster); // Submit all expert-delivery eligible items for seals await GrandCompanyHelper.GCHandInExpert(); // Promote GC rank (interacts with Personnel Officer → confirms rank-up window) await GrandCompanyHelper.GoGCRankUp(); // Buy an FC action from the OIC Quartermaster await GrandCompanyHelper.BuyFCAction(GrandCompany.Maelstrom, actionId: 2); ``` -------------------------------- ### InventoryHelpers Source: https://context7.com/nt153133/__llamalibrary/llms.txt Offers utilities for managing inventory, such as combining item stacks, adjusting item quality, and querying food/medicine slots. ```APIDOC ## InventoryHelpers — Stack Combining and Item Utilities `InventoryHelpers` provides helpers to consolidate fragmented item stacks, lower high-quality items to normal quality, and query food/medicine slots — useful for pre-crafting housekeeping or market board preparation. ### Item Management - **`LowerQualityAndCombine(uint itemId)`**: Lowers quality on all HQ copies of an item and then merges all NQ stacks into one. - **`CombineStacks(IEnumerable slots)`**: Combines fragmented item stacks across specified bag slots. ### Inventory Status - **`IsFCItemBusy`**: Checks if any inventory slot is busy with an FC transfer. ### Food and Medicine Queries - **`GetFoodItems()`**: Finds food items in player bags. - **`ContainsFooditem(uint itemId)`**: Checks if any inventory slot contains a specific food item. - **`GetFoodItem(uint itemId)`**: Retrieves a specific food item from inventory. - **`GetMedicineItems()`**: Finds medicine items in player bags. ``` -------------------------------- ### Configure AutoInventoryEquip Source: https://github.com/nt153133/__llamalibrary/wiki/OrderBot-Tags AutoInventoryEquip equips items from both the armory chest and inventory based on stat weighting. It can optionally use the recommended gear dialogue. Both UpdateGearSet and RecommendEquip default to true. ```xml ``` -------------------------------- ### GeneralFunctions Source: https://context7.com/nt153133/__llamalibrary/llms.txt Provides utility functions for interrupting current activities, managing game states, and automating common tasks. ```APIDOC ## GeneralFunctions.StopBusy — Interrupt Current Activity `StopBusy` brings the character to an idle state by leaving duties, stopping fishing, dismounting, closing crafting/gathering windows, and clearing active conversations and targets — then hard-stops the bot if it cannot become idle within retries. ### Methods * **StopBusy(bool leaveDuty = true, bool stopFishing = true, bool dismount = true)**: Interrupts current activity. Defaults to true for all actions (leave duty, stop fishing, dismount). * **SmallTalk()**: Skips through NPC dialogs, cutscenes, and yes/no prompts automatically. * **InventoryEquipBest(bool updateGearSet = false, bool useRecommendEquip = false)**: Auto-equips the best gear from inventory and armory using stat weighting, then optionally updates the gearset. * **UpdateGearSet()**: Updates the current gearset to reflect equipped items. * **IsDutyComplete(int dutyId)**: Checks whether a duty has been completed. * **IsDutyUnlocked(int dutyId)**: Checks whether a duty has been unlocked. * **GoHome()**: Navigates to the player's housing summoning bell (private estate first, then FC estate as fallback). * **PassOnAllLoot()**: Passes on all loot in the NeedGreed window. ``` -------------------------------- ### Interrupt Current Activity with GeneralFunctions Source: https://context7.com/nt153133/__llamalibrary/llms.txt GeneralFunctions.StopBusy interrupts current player activities like duties, fishing, or crafting. SmallTalk skips dialogs. InventoryEquipBest equips items, and UpdateGearSet updates the current gearset. Use IsDutyComplete/IsDutyUnlocked to check duty status. ```csharp using LlamaLibrary.Helpers; // Full stop: leave duty, stop fishing, dismount (all defaults = true) await GeneralFunctions.StopBusy(); // Partial stop: don't leave duty, don't dismount (e.g. just close windows) await GeneralFunctions.StopBusy(leaveDuty: false, stopFishing: true, dismount: false); // Skip through NPC dialogs / cutscenes / yes-no prompts automatically await GeneralFunctions.SmallTalk(); // Auto-equip best gear from inventory + armory using stat weighting, then update gearset await GeneralFunctions.InventoryEquipBest(updateGearSet: true, useRecommendEquip: true); // Update the current gearset to reflect equipped items bool updated = await GeneralFunctions.UpdateGearSet(); // Check whether a duty has been completed bool cleared = GeneralFunctions.IsDutyComplete(dutyId: 1044); // e.g. The Copied Factory bool unlocked = GeneralFunctions.IsDutyUnlocked(dutyId: 1044); // Navigate to the player's housing summoning bell (private → FC fallback) await GeneralFunctions.GoHome(); // Pass on all loot in the NeedGreed window await GeneralFunctions.PassOnAllLoot(); ``` -------------------------------- ### C# Functions for Chest Interaction and Detection Source: https://context7.com/nt153133/__llamalibrary/llms.txt Utility functions for interacting with treasure chests. OpenChests automatically opens nearby chests, while GetTreasureChests simply detects them without interaction. ```csharp // Open all treasure chests within 30 yalms that are in LOS and unopened await GeneralFunctions.OpenChests(); ``` ```csharp // Get nearby treasure chests (does not interact) var chests = GeneralFunctions.GetTreasureChests(); ``` -------------------------------- ### Set Offset Classes and Agents Source: https://github.com/nt153133/__llamalibrary/wiki/Offset-Manager Use SetOffsetClassesAndAgents() to perform the same offset search as SetOffsetClasses() and additionally register any Agents within the specified namespaces that implement IAgent. ```csharp SetOffsetClassesAndAgents() ``` -------------------------------- ### Automate Retainer Operations with RetainerRoutine Source: https://context7.com/nt153133/__llamalibrary/llms.txt RetainerRoutine manages retainer interactions, including dumping items, checking ventures, and collecting data. It opens the summoning bell, processes retainers, and closes the UI. Use SelectRetainer/DeSelectRetainer for manual control and RetainerHandleVentures to reassign completed ventures. ```csharp using LlamaLibrary.Retainers; using LlamaLibrary.Structs; // Dump player inventory items that match what each retainer already holds await RetainerRoutine.ReadRetainers(async () => { await RetainerRoutine.DumpItems(includeSaddle: true); }); // Custom per-retainer task receiving the retainer index await RetainerRoutine.ReadRetainers(async (int index) => { var info = RetainerList.Instance.OrderedRetainerList[index]; Console.WriteLine($"[{index}] {info.Name}: venture={info.VentureTask}"); await RetainerRoutine.RetainerVentureCheck(info); }); // Collect data from each retainer into a typed list List results = await RetainerRoutine.ReadRetainers( async (RetainerInfo info, int index) => { var inv = await RetainerInventory.GetRetainerInventory(); return new CompleteRetainer(info, inv); }); // Select / deselect a single retainer manually (0-based index) await RetainerRoutine.SelectRetainer(0); // ... do work ... await RetainerRoutine.DeSelectRetainer(); // Close retainer list safely await RetainerRoutine.CloseRetainers(); // Reassign ventures that are complete // (called inside ReadRetainers loop automatically when ReassignVentures = true) await RetainerRoutine.RetainerHandleVentures(); ``` -------------------------------- ### Character Switching Registration Source: https://context7.com/nt153133/__llamalibrary/llms.txt Implement character switching logic by registering delegates for filling character lists and performing the switch. This allows external plugins to manage character transitions without hard dependencies. Ensure LlamaLibrary.Helpers.CharacterSwitching is imported. ```csharp using LlamaLibrary.Helpers.CharacterSwitching; // --- In a plugin that implements character switching --- CharacterSwitcher.FillCharacterListAsync = async () => { // Populate the character select screen and return success return await MyPlugin.PopulateCharacterList(); }; CharacterSwitcher.SwitchCharacterAsync = async (long characterId) => { return await MyPlugin.SwitchTo(characterId); }; CharacterSwitcher.GetCharacterList = () => MyPlugin.AvailableCharacters .Select(c => new CharacterAvatar(c.Id, c.Name, c.World)) .ToList(); // --- In a botbase that wants to queue work per character --- if (CharacterSwitcher.IsCharacterSwitchingAvailable()) { // Register a task that will run on every character CharacterSwitcher.AddCharacterTask(new CharacterTask( characterId: 1234567890L, taskName: "Collect retainers", taskAction: async () => { await RetainerRoutine.ReadRetainers(async () => { }); } )); } // Observe registered tasks foreach (var task in CharacterSwitcher.CharacterTasks) Console.WriteLine($"{task.CharacterId}: {task.Name}"); ``` -------------------------------- ### XML Tags for Treasure Hunting and Navigation Source: https://context7.com/nt153133/__llamalibrary/llms.txt XML tags for engaging treasure map encounters and navigating complex terrain. BasicTreasureFight targets specific coordinates, while ClimbSpiral and LLClimbHill handle different types of movement. ```xml ``` ```xml ``` ```xml ``` -------------------------------- ### Set Offset Classes Source: https://github.com/nt153133/__llamalibrary/wiki/Offset-Manager Use SetOffsetClasses() to search for and set memory offsets defined in static 'Offsets' classes within your botbase or plugin's namespace. It searches the root namespace and sub-namespaces of the calling class. ```csharp SetOffsetClasses() ``` -------------------------------- ### TeleportHelper Source: https://context7.com/nt153133/__llamalibrary/llms.txt Wraps the game's teleport API to teleport by aetheryte ID, array index, or named estate type, handling the cast animation and zone-change loading screen. ```APIDOC ## TeleportHelper — Aetheryte Teleportation `TeleportHelper` wraps the game's teleport API to teleport by aetheryte ID, array index, or named estate type (private, apartment, FC, shared), handling the cast animation and zone-change loading screen. ### Methods * **TeleportByIdTicket(uint aetheryteId)**: Teleports to any aetheryte by its uint ID using the teleport ticket mechanic. * **TeleportToPrivateEstate()**: Teleports to the player's private estate. * **TeleportToApartment()**: Teleports to the player's apartment. * **TeleportToFreeCompanyEstate()**: Teleports to the Free Company estate. * **TeleportToSharedEstate(uint zone, int ward, int plot)**: Teleports to a shared estate by zone, ward, and plot. ### Properties * **TeleportList**: Access the cached teleport list (refreshed every 5 min or on world change). ``` -------------------------------- ### OrderBot Tags Source: https://context7.com/nt153133/__llamalibrary/llms.txt XML tags for OrderBot that provide functionalities for gear equipping, treasure fighting, and terrain navigation. ```APIDOC ## OrderBot Tags ### AutoEquip Equips the best gear from the armory chest using the 'Recommended Gear' button. ```xml ``` ### AutoInventoryEquip Equips the best gear from inventory and armory using stat weighting. ```xml ``` ### AutoLisbethEquip Equips gear via Lisbeth's recommended gear path. ```xml ``` ### BasicTreasureFight Fights a mystery-map treasure encounter at the specified coordinates. - **XYZ** (string) - Required - The coordinates for the encounter. - **ZoneId** (string) - Required - The Zone ID. - **SubZoneId** (string) - Required - The Sub-Zone ID. ```xml ``` ### ClimbSpiral Climbs a spiral staircase, useful for specific terrain navigation. - **XYZ** (string) - Required - The target coordinates. - **StartHeading** (string) - Required - The starting heading. - **Radians** (string) - Required - The angle in radians. - **Count** (string) - Required - The number of steps. - **StepDistance** (string) - Required - The distance of each step. - **StepHeight** (string) - Required - The height of each step. - **Timeout** (string) - Required - The timeout in milliseconds. ```xml ``` ### LLClimbHill Walks off-mesh from a start to an end point, capable of jumping over Line-of-Sight blockers. - **Start** (string) - Required - The starting coordinates. - **End** (string) - Required - The ending coordinates. - **SpamJump** (string) - Optional - Whether to spam jump. - **ForceDismount** (string) - Optional - Whether to force dismount. ```xml ``` ``` -------------------------------- ### Configure ClimbSpiral Source: https://github.com/nt153133/__llamalibrary/wiki/OrderBot-Tags ClimbSpiral automatically navigates spiral staircases in the Carrotorium. Parameters can be adjusted for different staircase sizes and configurations. ```xml ``` -------------------------------- ### Configure BasicTreasureFight Source: https://github.com/nt153133/__llamalibrary/wiki/OrderBot-Tags BasicTreasureFight is designed for Mystery Maps to locate, open, and loot chests, then fight any spawned mobs. It requires XYZ coordinates and Zone/SubZone IDs. ```xml ``` -------------------------------- ### Define Desynth List in C# Source: https://github.com/nt153133/__llamalibrary/wiki/Reduce-Desynth This list defines items that the Reduce/Desynth feature will target. You can add or remove item names to customize the desynthesis behavior. ```csharp private static readonly List desynthList = new List { "Warg", "Amaurotine", "Lakeland", "Voeburtite", "Fae", "Ravel", "Nabaath", "Anamnesis" }; ``` -------------------------------- ### RetainerRoutine Source: https://context7.com/nt153133/__llamalibrary/llms.txt Automates retainer operations by iterating through active retainers and executing specified tasks. ```APIDOC ## RetainerRoutine — Iterate and Automate Retainers `RetainerRoutine` opens the summoning bell, iterates all active retainers, executes a caller-supplied async task for each, and closes the UI cleanly. ### Methods * **ReadRetainers(Func task)**: Executes a shared task for all retainers. * **ReadRetainers(Func task)**: Executes a task for each retainer, receiving the retainer's index. * **ReadRetainers(Func> task)**: Collects data from each retainer into a typed list, receiving retainer info and index. * **DumpItems(bool includeSaddle = false)**: Dumps player inventory items that match what each retainer already holds. * **RetainerVentureCheck(RetainerInfo info)**: Checks and handles retainer ventures. * **SelectRetainer(int index)**: Selects a single retainer manually (0-based index). * **DeSelectRetainer()**: Deselects the currently selected retainer. * **CloseRetainers()**: Closes the retainer list safely. * **RetainerHandleVentures()**: Reassigns ventures that are complete (called automatically within `ReadRetainers` loop when `ReassignVentures` is true). ``` -------------------------------- ### Define Offsets with [Offset] Attribute Source: https://github.com/nt153133/__llamalibrary/wiki/Offset-Manager Define static fields for memory offsets using the [Offset] attribute with a search pattern. These fields will be populated by the OffsetManager. ```csharp using System; using LlamaLibrary.Memory.Attributes; namespace LlamaBotBases.Tester { public static class Offsets { [Offset("Search 48 89 5C 24 ? 48 89 6C 24 ? 56 48 83 EC ? 8B DA 41 0F B7 E8")] public static IntPtr ItemDiscardFunc; [Offset("Search 48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC ? 8B FA 33 DB")] public static IntPtr ItemLowerQualityFunc; } } ``` -------------------------------- ### GrandCompanyHelper Source: https://context7.com/nt153133/__llamalibrary/llms.txt Provides functionalities for interacting with Grand Companies, including travel, NPC interactions, and rank-up procedures. ```APIDOC ## GrandCompanyHelper — GC Navigation and Interactions `GrandCompanyHelper` provides NPC ID tables for all three Grand Companies and async helpers to travel to the GC base, enter the barracks, interact with specific NPCs (quartermaster, personnel officer, etc.), and execute expert delivery or rank-up flows. ### Travel to GC Base - **`GetToGCBase()`**: Travels to the current character's Grand Company headquarters. - **`GetToGCBase(GrandCompany gc)`**: Travels to a specific Grand Company base. ### Barracks Interaction - **`GetToGCBarracks()`**: Enters the Grand Company squadron barracks. ### NPC Interaction - **`InteractWithNpc(GCNpc npcType)`**: Interacts with a specific NPC by role enum, navigating to them automatically. - **`InteractWithNpc(GCNpc npcType, GrandCompany gc)`**: Interacts with a specific NPC in a specified Grand Company. ### NPC ID Lookup - **`GetNpcByType(GCNpc npcType)`**: Looks up the NPC object ID for the current player's Grand Company. ### GC Actions - **`GCHandInExpert()`**: Submits all expert-delivery eligible items for seals. - **`GoGCRankUp()`**: Promotes Grand Company rank by interacting with the Personnel Officer and confirming the rank-up window. - **`BuyFCAction(GrandCompany gc, uint actionId)`**: Buys an FC action from the OIC Quartermaster. ``` -------------------------------- ### Enable Discarding Collectables in Ishgard Handin Source: https://github.com/nt153133/__llamalibrary/wiki/ExtraBotbases Set this boolean to true to discard collectables that do not meet the specified cutoff when using the Ishgard Handin botbase. This is useful for optimizing turn-ins. ```csharp public static bool DiscardCollectable = true; ``` -------------------------------- ### CharacterSwitcher Source: https://context7.com/nt153133/__llamalibrary/llms.txt Facilitates multi-character task delegation by allowing external plugins to register character-switching implementations and tasks. ```APIDOC ## CharacterSwitcher — Multi-Character Task Delegation `CharacterSwitcher` is a delegate-based bridge that lets external plugins (e.g., a character-switcher plugin) register the concrete character-switch implementation without creating a hard dependency. Botbases register tasks via `AddCharacterTask`; the switcher plugin provides the `FillCharacterListAsync` and `SwitchCharacterAsync` delegates at runtime. ### Plugin Implementation - **`FillCharacterListAsync`**: Delegate to populate the character select screen. - **`SwitchCharacterAsync(long characterId)`**: Delegate to switch to a specified character. - **`GetCharacterList`**: Function to retrieve a list of available characters with their details. ### Botbase Task Registration - **`IsCharacterSwitchingAvailable()`**: Checks if character switching is available. - **`AddCharacterTask(CharacterTask task)`**: Registers a task to be executed on a specific character. ### Task Observation - **`CharacterTasks`**: Collection of registered character tasks. ``` -------------------------------- ### Teleport by Aetheryte ID, Estate Type, or Shared Estate Source: https://context7.com/nt153133/__llamalibrary/llms.txt Use TeleportHelper to teleport to various locations using aetheryte IDs, player estates, or shared housing plots. It handles the cast animation and loading screen. Access TeleportList for cached teleport data. ```csharp using LlamaLibrary.Helpers; // Teleport to any aetheryte by its uint ID (uses teleport ticket mechanic) bool ok = await TeleportHelper.TeleportByIdTicket(8); // 8 = Limsa Lominsa Lower Decks // Teleport to player's private estate bool home = await TeleportHelper.TeleportToPrivateEstate(); // Teleport to player's apartment bool apt = await TeleportHelper.TeleportToApartment(); // Teleport to Free Company estate bool fc = await TeleportHelper.TeleportToFreeCompanyEstate(); // Teleport to a shared estate by zone/ward/plot bool shared = await TeleportHelper.TeleportToSharedEstate( zone: 639, // territory ID for Empyreum ward: 1, plot: 2); // Access the cached teleport list (refreshed every 5 min or on world change) foreach (var entry in TeleportHelper.TeleportList) { Console.WriteLine($"{entry.ZoneName} (AE {entry.AetheryteId}, Sub {entry.SubIndex})"); } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.