Closed df-ferital closed 4 years ago
Really? Wow, that's quite a surprise that classic wont offer certain quests if the quest giver is not male. Thinking through all the guilds though, all quest giver NPCs are male aren't they? Even the temples from memory anyway.
Have you actually identified a circumstance where this is an issue?
Some commoner quests where quest giver requires some help with his lover require quest giver to be a male. Well, we might also consider that gay mariage is common in the Iliac Bay, after all.
On another side, children should not be allowed to give any of commoners and noble quests but this can easily be corrected using their faction ID.
How can the children be excluded, static NPCs of commoners all have faction ids of 0. It's probably something to do with the flags byte. So far only bit 5 is known, set = female, unset = male. The one I'm referring to is RmbBlockPeopleRecord.Flags.
I've made a list of the flags value for 10 or so NPCs and I can't discern much of a pattern for the other bits, but possible one has to be set for that NPC to be candidate for offering a quest? Probably the only way we'll be able to get to the bottom of it is to reverse engineer classic.
Children are not excluded from quests in classic, this is my own idea to do that because quests are clearly supposed to be offered by adults only. This does not prevent DFU quest writers to make children specific quests in the future, since children normally have their own faction ID (I need to check if it correctly assigned in buildings).
Have you confirmed or refuted my findings about children yet?
Sorry for the late answer. Unfortunately, it seems only children in Daggerfall, Sentinel and Wayrest castles have been assigned the correct faction ID of 514. All other children have a faction ID of 0 as you said.
I see two solutions there: the first one would be to check the texture archive and record to know if a NPC is a child, but this is a really ugly solution in my opinion. The other solution would be to patch BLOCKS.BSA at runtime to assign correct faction IDs to not only children, but to all NPCs having an incorrect faction ID. I can do that but it will require some time.
I'll leave that to you for now then.
I'm implementing the gender restriction and something is worrying me.. all the coven quests have the "group Questor male" definition. These quests are dispensed like a hybrid of guild and social quest dispensing and often the quest giver is definitely female. I don't think this is an issue for these quests as they don't seem gender specific, although not checked them all.
However, it makes me doubt that setting all social quests with "group Questor male" to only be dispensed by male NPCs may be incorrect. Once I push a PR I think the quests will need checking to see if some are also not gender specific and should not be male only.
Ok, thanks for your PR. For coven quests, I need to check how classic works exactly. What I think is that every guild (including covens) questor is unaffected by the "group Questor male" tag if you ask for a quest from the "Quest" submenu, as in this case, a quest is always randomly chosen from the faction pool of quests, no matter what the questor gender is. From what I understood, the tag is only effective to provide random quests when talking to commoners or nobles.
Ah, sorry, you misunderstand me. I am confident regarding behaviour of coven quest dispensing. It just makes me wonder whether my use of the simple rule for commoner, merchant and noble quests is actually 100% correct. That's all. Sorry for rambling.
Ah OK. No problem, I'll verify your PR by checking it against classic behavior to be sure I interpreted the tag correctly. I may need to do a little reverse engineering before that.
Some classic quests are supposed to be offered only by male questors. In fact, all quests in which the quest giver is set as
group Questor male
. Verified in classic to be sure of what I'm saying here.The easiest way to correct this is to add a new
gender
field toQuestData
structure with the corresponding column in QuestList-Classic.txt and QuestList-DFU.txt.