Open lowlines opened 6 years ago
I think I just found a quest that breaks the assumption the vendor interactions are in sequence. Imperial Invitation [1306722632] has 5 interactions with Benedict 99-40 [1265988377].
Questline:
The interactions are as follows: Interaction 1
Interaction 4
Interaction 5
Interaction 6
Interaction 7
Interestingly the HeaderDisplayName name
and description
are have the next and previous quest step names respectively. If you compare these the correct interaction order should be:
Unless I am missing something, there is no way currently to dynamically determine which interaction the vendor should display (if any as the new weekly challenges use the vendor location to mark it on the map).
If anyone is curious on how looking at the interactions is useful, here's an example where the quest step says there is a Legendary Gear reward for speaking with Zavala, but if you look at the corresponding interaction (which I manually wired up since the interactions were out of order), you can see that the reward is a choice between 3 Vanguard weapons.
Ah, I'm glad someone's finally using this info! Good stuff lowlines! (I wonder if you're the first one? I'm not sure! I can't recall anyone else mentioning they were using it before)
The end goal is to create a "Quest & Milestones" view on the maps page that lists all pursuits and hidden questlines (ie story campaigns) that control the visibility of locations on the map. I've realized there's a lot of location information there I can hook into provided I do enough digging as up until now, I've had to manually add support for pursuit items. The followup would be to have a "View Questline" button that brings up the entire questline showing what rewards you get and where. I'm currently trying to generate a cached lookup file that will be a mix of manual wire ups and data from the manifest so that I can get the location of a specific objective on the map without having to walk through multiple definitions.
For challenge quests, I made the assumption these will always have 2 steps; the first being "do the thing" (ie complete Flashpoint on Io) and then "go talk to this vendor". So when dynamically building the interaction lookup table, I just skip over the first objective that points to the vendor locationHash as this is what triggers the icon to change to the light blue challenge quest icon.
I'm currently going through and setting up manual interactionIndex lookup tables for quests I can't dynamically generate from the manifest. There are also a few Y1 exotic quests which needed complete manual wire up such as "Relics of the Golden Age" and "Rat King's Crew". Because a lot of these older quests gave the reward weapon outright, I also had to manually hook up the itemHash to quest itself. Newer quests always seem to have a step that requires talking to a vendor to in order to receive the reward.
Yeah, that's part of the pain of trying to automate something like this: there's a dozen different ways that a game designer could make a quest or quest chain, and we don't really have any guarantees that one technique or another will actually be used - or that some entirely different way that we're not currently predicting might be employed.
Continuing my study of quest items, I've been trying walk through an entire quest chain to extract hidden information like when a reward isn't listed on the Quest Step. I am aware there is an
interactions
property on vendors, which can be filtered by the questlineItemHash, however it looks like there might be a missing link needed to connect these together.I tried iterating through a filtered list of interactions where a quest step that is part way through a quest line should expect an type 2 interaction ("QuestContinue") and the final step should be looking for a type 1 interaction ("QuestComplete"). It seems to work for some quests, but not others (which might be an error in my code due to the complexity of the task) and it is also dependant on the related vendor interactions being in sequential order.
What would be useful is having the absolute vendor interactionIndex stored on the objective itself, or perhaps on the
perObjectiveDisplayProperties
in the quest step as objectives are typically very sparse with information. If you went the latter, it'd also be good to get the vendorHash put here as well as currently you have to iterate through Objective->Location->VendorHash to get it.