EQ2 Quest, Collection, and Recipe Data

Discussion in 'Developer Announcements' started by Feldon, Feb 25, 2015.

  1. Feldon Well-Known Member

    Quest, Collection, and Recipe data are available to EQ2 fansite developers. There are over 11,500 quests, 23,000 recipes and 850 shiny collections.

    Quests
    • crc: The unique identifier of the quest.
    • id: an unnecessary field
    • Category -- the journal category for this quest.
    • Shareable -- Quest can be shared while on the quest.
    • Complete_Shareable -- Quest can be shared with another player who has completed it at least once.
    • Repeatable -- If quest can be repeated.
    • is_tradeskill -- Is this a tradeskill quest?
    • level -- Quest level
    • scales_with_level -- Quest scales to player level
    • starter_text -- The text shown in the New Quest window when the quest is offered to the player.
    • completion_text -- The summary text shown in the Quests journal when a quest is completed.
    • Tier
      • 0-8: Solo
      • 9-10: Heroic
      • 11-12: Epic
    • Reward List -- Includes coin, experience, faction, and items rewarded from quests. These include items the character always receives and a list of items from which the character gets to choose one. We are not yet receiving rewards predicated upon the character's class, race, or other property.
    Quests are presented in Stages and Branches (steps within a stage).
    • Stage List -- Each stage includes a more generalized description of what you are supposed to do, like "Travel to Stonebrunt Mountains and find someone interested in the runic gem."
    • starter_text and completion_text -- This is the text shown when the character is in the middle of a stage, or has completed a stage.
    • Note that it is possible for a Stage to have more than one starter_text or completion_text. This allows designers to show different stage text depending on class, race, alignment, progress on another quest, etc.
    • Stages are exported with a "num" or increment counter starting from 0. Thus, the 5th stage on a quest will have a stage.num of 4. This is useful when parsing character_misc to see what stage of a quest the character is currently on.
    • Note that if a quest has a single stage, then the stage starter/completion text is not shown in-game. The branch starter text appears directly under the quest description.
    • Branches are the specific steps in a quest, such as:
      • Travel to Stonebrunt Mountains
      • Show the runic gem to Ashram McCawley.
    • Branches have starter_text and completion_text.
    • Note that if the completion_text for a quest branch is blank, the description text from the branch is shown instead.
    • Branches then show their specific steps either as descriptive text:
      • "Kill 10 rats"
    • or as one or more icons:
      • [IMG][IMG][IMG]
    • If an icon is specified, then it will contain an IconID and a Description.
    • NOTE: An iconid of 11 means "no icon".
    • Branches contain a Completion Zone which is a text string. Refer to EQ2Maps or other resource if you need to convert zone pathnames to human-friendly Zone names.
    Here's a useful diagram of how Quest, Stage, and Branch text appear in the in-game Quest Journal:

    [IMG]

    Quest Starters

    Quest Starter information is now available in the /questgiver/ collection. For example:

    <questgiver id="33587306" name="Bartleby Blatherback" zone="exp03_rgn_butcherblock">
    <quest_list>
    <quest id="1614783828"/>
    <quest id="2273806419"/>
    <quest id="4034967749"/>
    </quest_list>
    </questgiver>

    Collections

    Shiny Collections are presented in a very logical way...
    • Category -- Collection journal category.
    • Level -- Collecton level.
    • Name -- Collection name.
    • Reference_List-- the items within a collection.
      • Icon -- the icon for the shiny
      • ID -- the itemid for the shiny
      • name -- the name of the shiny
    Here's an example:

    <collection category="Tears of Veeshan" id="2428117129" last_update="1386707765.983559" level="95" name="Relics of Vesspyr" ts="1386707765.983559">
    <reference_list>
    <reference icon="1290" id="3374878346" name="Mark of Lendiniara"/>
    <reference icon="3431" id="2825683080" name="Dragonkin Essence"/>
    <reference icon="3054" id="2565808781" name="Vesspyr Mist"/>
    </reference_list>
    </collection>
  2. Feldon Well-Known Member

    Recipes
    • crc: The unique identifier for a recipe.
    • id: an unnecessary field
    • Bench: Crafting table type (link to all of them)
    • Primary Component -- primary component by Name* and Quantity
    • Secondary Component List -- list of secondary components by Name* and their Quantities.
    • Fuel Component -- fuel with Name* and Quantity
    • Output
      • ItemID and Quantity when crafted to Pristine (Elaborate)
      • ItemID and Quantity when crafted to Shaped (Formed)
      • ItemID and Quantity when crafted to Worked (Worked)
      • ItemID and Quantity when crafted to Crude (Simple)
      • ItemID and Quantity when crafting fails -- Unfinished
    Component Name vs. ID or Classifications

    One aspect of EQ2's Recipe data that will likely cause headaches is how Recipe components are exported. Because some recipes can accept different items as components, we are given a displayname, rather than the possible ItemIDs that would be accepted as a component.

    Recipes that will accept different different components will include one or more "classifications" of matching valid items, rather than a specific itemID. These classifications can be seen on Items exported in Census. However classification data is not available on recipe data at this time.

    For example, there are several different types of rough malachite which will work in most recipes that require it. Recipes that require a "liquid" will accept dozens of different types of fluid (including canina saliva --yeech!). So instead of one or more ItemIDs, the component names are provided as text rather than numbers.

    To handle components, fan site operators must create a master list of components and suitable ItemIDs to match against.

    It's also worth noting that, at present, we are not receiving Byproducts from recipes. This will affect Scholars and Adorners who receive dusts or powders from completing their recipes.

    Recipes: Linking a Recipe Book to a Recipe to an Item

    Given a recipe book, you can now drill down to the item, or vice versa you can go from an item up to the recipe, up to the recipe book. Or given a recipe crc, you can determine either which book it's from, or what item it makes. Here are the 3 types of data for a single recipe and how they link together:


    <item displayname="Provisioner Essentials Volume 77" ... id="4190040166" ... type="Recipe Book" typeid="7" >
    <typeinfo name="recipescroll">
    <recipe_list>
    <recipe id="4176671147" name="Sparkling Cranberry Wine"/>
    .
    </recipe_list>
    </typeinfo>
    .
    </item>


    <recipe bench="stove and keg" crc="4176671147" id="1974887033" last_update="1386719056.878361" name="Sparkling Cranberry Wine" name_lower="Sparkling Cranberry Wine" ts="1386719056.878361" version="2">
    <secondarycomponent_list>
    <secondarycomponent description="Torsis Tea Leaf" quantity="2"/>
    <secondarycomponent description="Liquid" quantity="1"/>
    </secondarycomponent_list>
    <output elaborate="3209848405" elaborate_count="2" formed="3522626291" formed_count="3" simple="3522626291" simple_count="3" unfinished="1705398497" unfinished_count="1" worked="3209848405" worked_count="1"/>
    <fuelcomponent description="Smoldering Kindling" quantity="3"/>
    <primarycomponent description="Cranberry" quantity="1"/>
    </recipe>


    <item displayname="Sparkling Cranberry Wine" ... iconid="309" id="3209848405" ... tier="HANDCRAFTED" tierid="3" ts="1386901142.118859" type="Drink" typeid="8" >
    <typeinfo duration="1 hour and 30 minutes" foodlevel="80" name="food" satiation="High"/>
    .
    .
    </item>

    Notes

    So as you can see, it's possible to link from Recipe Book to Recipe to Item, or work your way back from an Item to a Recipe to its Recipe Book.

    If you have a Recipe CRC, you can find which book(s) can teach that recipe with a query like:


    Some recipe books are not findable such as those that autoscribe as part of a quest. This used to also apply to Tradeskill Apprentice books but as of Altar of Malice, these items are "discovered" and thus show up in Census.
  3. Feldon Well-Known Member

    Out of an abundance of caution, Known Recipes, Active Quest Journal, Completed Quests, and shiny Collection progress were NOT added to the Character record. Instead, a new collection has been created called Character_Misc for this purpose. Because some characters have completed over 7,000 quests, while other characters have memorized over 6,000 recipes, it seemed prudent to segregate this data out into a separate collection for those sites that will utilize it.

    Known Recipes

    Getting a known recipe list for a character is easy enough:


    That gives us the CRC of every Recipe this character knows. This can be cross-referenced to either the ItemID or the Recipe Book as explained above.

    Completed Quests

    Getting a completed quest list is similar:


    In this case, you get the CRC of every Quest the character has completed. Comparing this against the Quest collection will provide the list of quests (and categories, tiers, etc.) completed.

    Active Quests

    Loading the active quest journal for a character is done with this filter:


    Each quest record under character_misc exports with a stage_num value to quickly match up which stage the character is currently on. Matching by stage text is only required if you wish to support characters exported between Aug 2013and June 2014.

    You may optionally match the character's progress on specific Branches by drilling down into the requiredItem section and comparing against the Branches stored on the Quest. For example:

    <quest crc="1068789483" stage="I should destroy the creatures I find within the K'Val Ruins." stage_num="2">
    <requiredItem_list>
    <requiredItem no_maximum="0" progress="2" progress_text="Destroy wildgrown Kromzek giants" quota="5"/>
    <requiredItem no_maximum="0" progress="1" progress_text="Destroy wildgrown Drakkel wolves" quota="5"/>
    <requiredItem no_maximum="0" progress="0" progress_text="Destroy briarthorn entrallers" quota="5"/>
    </requiredItem_list>
    </quest>

    This means on the quest stage with the description "I should destroy the creatures I find within the K'Val Ruins.", I have killed 2 of 5 wildgrown Kromzek giants, 1 of 5 wildgrown Drakkel wolves, and 0 of 5 briarthorn enthrallers.

    Collection Status

    Unfortunately, the charater's current status on completing shiny collections is not present in character_misc, so it is not currently possible to determine the character's progress in collecting and completing shiny collections.
  4. Feldon Well-Known Member

    Collection Rewards

    Collections are exported with both guaranteed and "select one" rewards. For example:

    <collection id="1734808640" name="Out on a Limb" category="Tears of Veeshan" level="95" ts="1418946891.955636">
    <reference_list>
    <reference id="1482695718" name="Human Hand" icon="87"/>
    <reference id="3547297480" name="Crow's Foot" icon="79"/>
    <reference id="938512206" name="Elephant Foot" icon="106"/>
    <reference id="4106538684" name="Puma Paw" icon="107"/>
    <reference id="1154681744" name="Wolf Paw" icon="104"/>
    </reference_list>
    <reward_list>
    <reward coin_max="0" coin_min="0">
    <item_list>
    <item id="2771662891" quantity="1"/>
    <item id="559493123" quantity="1"/>
    </item_list>
    <selected_item_list>
    <selected_item id="342128727" quantity="1"/>
    <selected_item id="1705592867" quantity="1"/>
    </selected_item_list>
    </reward>
    </reward_list>
    </collection>

    A player turning in this collection is guaranteed to get:
    • itemID #2771662891 which is a "Small Stack of Draconic Etyma"
    • itemID #559493123 which is a collectible item "Hand Bone Fragments"
    plus a choice of:
    • itemID #342128727 which is "Vesspyr Warrior's Red Bracers"
    • itemID #1705592867 which is "Vesspyr Scout's Steel Pants"
    Quest Rewards

    Quest rewards work the same way. For example:

    <quest id="2623191193" name="Close It Behind You" category="Eidolon Jungle"...>
    <reward_list>
    <reward coin_max="1300000" coin_min="1300000" exp="9383.999023">
    <factionchange_list/>
    <item_list/>
    <selected_item_list>
    <selected_item id="47751376" quantity="1"/>
    <selected_item id="3756311695" quantity="1"/>
    <selected_item id="4212603330" quantity="1"/>
    <selected_item id="2556005188" quantity="1"/>
    <selected_item id="3186164773" quantity="1"/>
    </selected_item_list>
    </reward>
    </reward_list>
    ...
    </quest>

    Completing this quest, the player receives coin, XP, and is granted a choice of:
    • Fearstrike Quarterstaff
    • Greatsword of Death's Respite
    • Crimson Star Staff
    • Gesture of the Last Rite
    • Blood of the Red Shadow
    Quests still do not support predicated rewards determined by your class, race, home city, progress on another quest, or other property. Due to the complexity of that data, it may be a longshot. We've asked about Status rewards and they are tricky due to scaling but it's possible!