TekNoLogic / TourGuide

WoW Addon - Powerleveling guide framework
http://www.tekkub.net/
17 stars 26 forks source link

Multiple Steps with |O| quests. K's with QID's, multiple C's, etc. #9

Closed Flawlessa closed 15 years ago

Flawlessa commented 15 years ago

Description - Coding up multi-step quests that must use |O| tags does not appear to have a suitable solution. This makes coding up rotating daily quests difficult. The cause of this is due to issues with K and C statements, as described below.

Demo -

Let's start with a working example:

A Defending Wyrmrest Temple |QID|12372| |N|Obtain quest from Lord Afrasastrasz (59.23,54.32).| |Z|Dragonblight|

K Defending Wyrmrest Temple - Azure Dragonshrine |Q|Defending Wyrmrest Temple| |QO|Destabilize the Azure Dragonshrine: 1/1| |N| Use ability 5 of your Wyrmrest Defender inside the purple beam (55.43,66.12)| |Z|Dragonblight|

K Azure Dragon |Q|Defending Wyrmrest Temple| |QO|Azure Dragon slain: 3/3| |N| Kill the drakes (bright blue) and dragons (pale blue-green) around the temple. Use abilities 1 & 2 to attack, and ability 3 to heal. (57,55)| |Z|Dragonblight|

K Azure Drake |Q|Defending Wyrmrest Temple| |QO|Azure Drake slain: 5/5| |N| Continue killing until you have 5 drakes. (57,55)| |Z|Dragonblight|

T Defending Wyrmrest Temple |QID|12372| |N|Turn-in quest to Lord Afrasastrasz (59.23,54.32) |Z|Dragonblight|

The above works fine. Now, make one change and things will break:

A Defending Wyrmrest Temple |QID|12372| |N|Obtain quest from Lord Afrasastrasz (59.23,54.32).| |Z|Dragonblight|

K Defending Wyrmrest Temple - Azure Dragonshrine |QID|12372| |Q|Defending Wyrmrest Temple| |QO|Destabilize the Azure Dragonshrine: 1/1| |N| Use ability 5 of your Wyrmrest Defender inside the purple beam (55.43,66.12)| |Z|Dragonblight|

K Azure Dragon |QID|12372| |Q|Defending Wyrmrest Temple| |QO|Azure Dragon slain: 3/3| |N| Kill the drakes (bright blue) and dragons (pale blue-green) around the temple. Use abilities 1 & 2 to attack, and ability 3 to heal. (57,55)| |Z|Dragonblight|

K Azure Drake |QID|12372| |Q|Defending Wyrmrest Temple| |QO|Azure Drake slain: 5/5| |N| Continue killing until you have 5 drakes. (57,55)| |Z|Dragonblight|

T Defending Wyrmrest Temple |QID|12372| |N|Turn-in quest to Lord Afrasastrasz (59.23,54.32) |Z|Dragonblight|

When combining QID with K steps, end-user completion of that first step auto-marks the remaining K's as complete. Worse, it sometimes will also mark the T step completed as well.

Why would we ever need QID with K step? In case we need to throw |O| into the mix, as in the case of rotating daily quests:

K A Cleansing Song |O| |QID|12735| |Q|A Cleansing Song| |QO|Spirit of Atha slain: 1/1| |N|Use the Chime of Cleansing to call the Spirit of Atha (43,32). Slay the spirit.| |U|39572| |Z|Sholazar Basin|

K A Cleansing Song |O| |QID|12735| |Q|A Cleansing Song| |QO|Spirit of Ha-Khalan slain: 1/1| |N|Use the Chime of Cleansing to call the Spirit of Ha-Khalan (49,63). Slay the spirit.| |U|39572| |Z|Sholazar Basin|

K A Cleansing Song |O| |QID|12735| |Q|A Cleansing Song| |QO|Spirit of Koosu slain: 1/1| |N|Use the Chime of Cleansing to call the Spirit of Koosu (46,74). Slay the spirit.| |U|39572| |Z|Sholazar Basin|

There are currently two kludges I am using to work around this, neither great.

Route A is to jam everything into a huge monolithic statement:

C A Worthy Weapon (see detailed steps) |QID|13763| |O| |Q|A Worthy Weapon| |QO|Blade of Drak'Mar: 1/1| |Z|Dragonblight| |N| First head to the Ironwall Dam 79,76 in Crystalsong Forest and pick 4 Winter Hyacinth. Then head to the circle in Dragonblight's Drak'Mar Lake (93.20,26.00). Use the Hyacinths to summon the maiden of the lake. Loot the sword when it appears.| |U|45000|

This isn't great, because there are certain quests where the multiple steps occur in multiple zones, like this example above. This means coordinates presented to end-user are whatever |Z| they're in.

Route B is to replace those multiple K's with C's. But this brings up a different issue:

C A Cleansing Song |O| |QID|12735| |Q|A Cleansing Song| |QO|Spirit of Atha slain: 1/1| |N|Use the Chime of Cleansing to call the Spirits of Atha (43,32), Ha-Khalan (49,63), and Koosu (46,74). Slay each spirit.| |U|39572| |Z|Sholazar Basin|

C A Cleansing Song (continued 2/3) |O| |QID|12735| |Q|A Cleansing Song| |QO|Spirit of Ha-Khalan slain: 1/1| |N|Use the Chime of Cleansing to call the Spirits of Atha (43,32), Ha-Khalan (49,63), and Koosu (46,74). Slay each spirit.| |U|39572| |Z|Sholazar Basin|

C A Cleansing Song (continued 3/3) |O| |QID|12735| |Q|A Cleansing Song| |QO|Spirit of Koosu slain: 1/1| |N|Use the Chime of Cleansing to call the Spirits of Atha (43,32), Ha-Khalan (49,63), and Koosu (46,74). Slay each spirit.| |U|39572| |Z|Sholazar Basin|

When multiple C's are used with QIDs (and O), the first step remains the current step until all quest objectives are completed. Once the final objective is met, then all will mark close, and the user can continue on to the T step. I gather C was never intended for multiple steps, but when trying to write up multi-step rotating dailies, I tried multiple syntax variations, this being one.

Lastly, |L| tags do not appear to work with |O| quests at all. As example, consider the rotating cooking dailies, that have the user pick Wild Mustard-this, or Ugly Mushroom that, before combining with some meatstuff and cooking over fire |U|sing some questgiver object. It'd be nice to separate that first picking requirement as a separate step with |L|.

Hope this description has been sufficient. Please let me know if more info is needed.

Thank-you for writing TourGuide framework. I've coded up all the Northrend daily quests with it, and have posted the results to WowInterface for all to use.

tekkub commented 15 years ago

You should never user multiple C objectives, Q/QO are not for C objectives, you shouldn't use multiple K objectives when a singe C objective would do, and |O| only works with A/C/T objectives.

In short, TG isn't designed for random daily quests, it's designed for leveling quests that are always the same.