Kronifer's Quest Showcase but again

11 posts / 0 new
Last post
kronifer's picture
kronifer
Interior DeveloperQuest Developer
Joined:
2023-04-02 06:01
Last seen:
3 weeks 4 days ago

See https://www.tamriel-rebuilt.org/claims/narsis-robe-heavy-swinging.

File should be clean and quest should be fully playable. Quest can be started by talking to Nelmyne Athones in her shop in the Market Quarter.

AttachmentSizeDate
Binary Data tr_m7_NS_RobeHeavySwinging.ESP23.54 KB2024-02-21 06:30
FlinSunset's picture
FlinSunset
Senior DeveloperQuest Reviewer
Joined:
2022-10-05 00:13
Last seen:
4 hours 12 min ago

Hey Kronifer, thanks for doing the showcase. Please get familiar with Writing and Dialogue Guidelines on the wiki if you haven't yet. Here are the changes I'd like you to make:

  1. The quest and the trainer encounter should work independently from each other. Gently-Rocking-Hull should provide training even without starting the quest, but until you meet the enchanter, nothing should reveal to you that she's making use of the stolen robe. In general, such situations in Morrowind are static and not quest-dependent.
  2. I think Nelmyne shouldn't know the Argonian's name and the fact that she's using the robe to provide training. It ruins the mystery straight from the beginning, and heavily decreases the exploration aspect of the quest. Instead, make her say that the Argonian looked like a sailor so she's probably at the Waterfront, and the rest will be revealed by talking to people and GRH herself.
  3. With the robe on, GRH shouldn't be able to move. It should be the player's initiative to train in private, not her, and without high disposition she should refuse. But when she agrees with high disposition, she has no other choice than to take off the robe and reveal it's enchanted.
  4. fadeout/fadein should NEVER be used for moving NPCs. In this quest, it's not necessary at all for the reason I described above. In general, all NPC movements should occur by using CellChanged or in other people's dialogue, seamlessly for the player. Vanilla game uses fadeout/fadein only for changing state of activators.
  5. Functions in scripts don't need commas, they usually cause nothing but random errors. Use only spaces as separators.
  6. Dialogue choices can be combined into one line. For example, instead of choice, "Yes.", 3 and choice, "No.", 2, it should be choice "Yes." 1 "No." 2
  7. Some "stolen robe" entries aren't filtered to Nelmyne Athones.
  8. When you give an item to a questgiver, you should have a choice whether or not to do it right now, instead of the questgiver confiscating it from your inventory.
  9. Instead of TR_m7_NS_NelmyneFirstMeet global, you can use a local variable such as control or controlQ.
  10. Generic dialogue should always have two filters: Local TR_Map = X (in your case, = 7) and Not Local T_Local_NoLore = 0. The first one ensured the dialogue appears only for npcs from the same map, and prevents it from appearing for companions and moving npcs from other maps. The second one restricts the dialogue to the npcs without NoLore (those who have generic topics).
  11. I think the rumors shouldn't explicitly say that "Nelmyne is looking for someone to recover a robe". She's not looking for the player specifically, she was swindled and maybe offered it to some other people who refused. Instead, make it say only that Nelmyne was robbed, and add one more entry to the Waterfront saying that GRH provides good long blade training, without mentioning the robe at all.
  12. According to the description, Nelmyne hires random people because she can't afford paying the guards (she's not poor, but they demanded too much). That's why it mentions soul gems as the reward instead of gold (and they're more unique than another 200 gold). Please make Nelmyne reward you with soul gems by using AddSoulGem function.
  13. "Now to return it to Nelmyne" looks unnatural in a journal entry. In general, try to avoid inserting player's thoughts in journal. Instead, it should contain only things said by npcs or discovered by the player, and instructions like "I should do X" are very rarely used in vanilla and usually provide information the player already knows.
  14. Journal entry 70 should be placed between 60 and 100 for easier understanding. Use left/right arrow keys to move it.
  15. "She has given me the chance to purchase the robe at a lower price" is not true, Nelmyne doesn't give you a discount here (and I don't think she should).
  16. Add a death check to Nelmyne. If you kill her, the quest should end. Remember that you still should be able to acquire the robe even when she's dead. To do this, add another journal id (such as TR_m7_Ns_RobeHeavySwinging_a), give it the same quest name and add one entry telling you Nelmyne's dead.
  17. It's nice that you added an OnPCAdd check in the robe script, but it can be avoided if you put the journal update in dialogue instead. In vanilla, you usually don't receive a journal update upon picking up quest items, only when you bring them to a questgiver.
  18. Everything added in scripts should be located below the declaration of local variables.
  19. In npcs' scripts, if they aren't Khajiit, T_Local_Khajiit variable and all related checks can be removed. The return the should happen when TR_Map is set, instead of T_Local_Khajiit.
  20. GRH should have "Corpses Persist" checked. Otherwise, she can disappear after death before you take the robe from her.
  21. The latest rumors should be filtered to "Dead Nelmyne = 0", so they don't appear if you killed Nelmyne. The rumors about GRH (if you add them) need the "Dead GRH = 0" filter instead.
  22. The part with low health percent is an unnecessary complication. It contradicts the game (she can train you no matter what your health is), and I think she wouldn't care about it when her primary goal is to make a large profit.
  23. Dialogue entries which unlock new topics should have addtopic to make sure new topics are always unlocked for the player.
  24. If you introduce a new topic together with a journal update, the new topic should have an entry available at the previous journal stage. Otherwise, it won't appear as a hyperlink on vanilla engine. In your case, the topic is "Gently-Rocking-Hull" and the new journal stage is 10.
kronifer's picture
kronifer
Interior DeveloperQuest Developer
Joined:
2023-04-02 06:01
Last seen:
3 weeks 4 days ago

Thanks for reviewing! there's a few points I'd like to touch on.

1. Gently-Rocking-Hull can still provide training before the quest. The training that happens during the quest is more of a scripted sparring match that ends when either you or Gently-Rocking-Hull hits half health. I agree that there should be 0 indication of who the thief is and that's why Gently-Rocking-Hull doesn't have the robe until the quest starts, as well as why it can't start with a dead Gently-Rocking-Hull but I do need to change how I did that.

12. I completely missed the part with the soul gems as a reward, thanks for reminding me lol

17. That check exists because you can get the robe after killing Gently-Rocking-Hull, as it felt like the most natural way to add a journal entry for getting the robe without assuming the player immediately takes it off of Gently-Rocking-Hull.

22. That's there solely to avoid either GRH or the player dying during the event (see 1, though this could still happen if someone had a sufficiently powerful spell). I'd be fine with removing this, I'd just need to remove that part and have it solely be a training event.

 

If we could talk about those here or on discord that would be great. It'd really help me on clarifying what I should do next.

uhhhhhh post complete

kronifer's picture
kronifer
Interior DeveloperQuest Developer
Joined:
2023-04-02 06:01
Last seen:
3 weeks 4 days ago

Reworked the quest, should fit the requirements above.

AttachmentSizeDate
Binary Data TR_m7_NS_RobeHeavySwinging.ESP26.17 KB2024-02-27 04:38

uhhhhhh post complete

FlinSunset's picture
FlinSunset
Senior DeveloperQuest Reviewer
Joined:
2022-10-05 00:13
Last seen:
4 hours 12 min ago

Thanks for fixing the things I mentioned. The quest is much better now, but it still has several important issues:

  1. You don't need to start a separate script to update journal. You can write everything from there in dialogue results. Besides, all global scripts should be stopped with StopScript after fulfilling their functions.
  2. "Training" topic is now dirtied and should be cleaned.
  3. The Waterfront rumor shouldn't appear if GRH fled or you took the robe from her. The Market Quarter rumor shouldn't appear if you started the quest.
  4. Journal stage 25: "They took their robe off." -> "She took her robe off". "They" should be used only for characters whose sex is currently unknown.
  5. Nelmyne and GRH shouldn't say rumors about themselves. Use a Not ID filter in rumors, or give them T_Local_NoLore.
  6. Like I said before, the quest and the trainer encounter should work independently from each other. GRH should have "long blade training" dialogue even before the quest, but without any dialogue options until you start the quest.
  7. "I don't know you enough" entry shouldn't have a 30 disp filter. If her disposition is less than 30, the game won't find a suitable Choice = 1 entry, resulting in a dialogue loop.
  8. "Continue" dialogue choices shouldn't have periods in the end.
  9. In Nelmyne's dialogue, you overexplain everything, telling the player about every smallest fact. Try to cut unimportant details to fit her initial dialogue into one entry.
  10. Like I also said before, Nelmyne kinda spoils the intrigue when she tells you that the robe can be used for training. I think it should be revealed only upon talking to GRH or the Waterfront citizens, it would make the quest more interesting.
  11. player->removeitem "TR_m7_NS_RobeHeavySwinging" 1 has a mistake, it should be "TR_m7_NS_RobeHeavySwing".
  12. Currently, it's impossible to give Nelmyne the robe if you've already obtained it before the quest.
  13. After Narsis generic dialogue is created, all citizens will have about 10 rumors with 10% chance each. The part about looking for GRH will result in asking every citizen repeatedly about rumors, waiting for the quest-related entry to show up with a 10% chance. To fix that, the Waterfront citizens should have the "stolen robe" topic available. They should say there that GRH always wears some robe, which they find strange, along with the general information about GRH. It should also update journal.
  14. "Argonian" topic is always used for information about Argonians in general, so it's not obvious that it's used in the quest. I suggest that it should be cut entirely.
  15. Rumors about GRH should also appear at the Rigged Challenge. Since it doesn't have a "Narsis, Waterfront" prefix, it needs separate dialogue in "latest rumors" and "stolen robe" topics.
  16. I see that you know how to use PositionCell correctly, but I think it overcomplicates the quest. I'll have to ask you to cut that part because it creates too many new edge cases, such as a moving corpse or GRH not having the robe in her inventory (which you currently don't handle). I suggest that everything should only be described in dialogue, something like: "I'd like to train in private." -> "[GRH takes off the robe.] Meet me outside." -> "I know why you've taken off the robe." -> "Fine, it's yours." . It's much simpler and remains as fun as before.
  17. Nelmyne's and GRH's scripts set TR_Map to 7 at every frame. It can be optimized with a TR_Map check directly above which does a return if TR_Map is non-zero. You can do it with a if ( TR_Map ) condition.
kronifer's picture
kronifer
Interior DeveloperQuest Developer
Joined:
2023-04-02 06:01
Last seen:
3 weeks 4 days ago

Should be fixed now.

AttachmentSizeDate
Binary Data TR_m7_NS_RobeHeavySwinging.ESP27.71 KB2024-02-28 04:32

uhhhhhh post complete

FlinSunset's picture
FlinSunset
Senior DeveloperQuest Reviewer
Joined:
2022-10-05 00:13
Last seen:
4 hours 12 min ago

Good work, only a few minor issues left. Fix them and you'll be promoted:

  1. The quest doesn't end if you start it, kill GRH, then kill Nelmyne. Delete duplicate journal entries for killing or confronting GRH which end the quest, and instead make "Nelmyne is dead" stage finish it. If Nelmyne's dead, it's fine to finish the quest because the player no longer has the objective to return the robe.
  2. Generic dialogue in "stolen robe" topic doesn't have TR_Map and T_Local_NoLore filters.
  3. Generic dialogue about GRH shouldn't disappear until you obtain the robe. Topics that disappear immediately after asking about them look a bit unnatural.
  4. Your duplicate rumors and greetings can be combined into one entry. You can remove one journal filter and update journal inside a GetJournalIndex condition in dialogue results.
  5. If you already have the robe before the quest, you also should have a choice whether or not to return it. Use a GetItemCount condition in dialogue results to avoid duplicate entries.
  6. Your esp has a dirty edit of a script with empty name. It should be cleaned.
  7. In most cases, you don't need to set T_Local_NoLore to 1. Declaring it only is enough to remove all generic topics from the npc. "Not Local T_Local_NoLore = 0" filter means "T_Local_NoLore is either not declared or declared and isn't equal to 0".

And three things I mentioned before which haven't been fixed:

  1. GRH should have "Corpses Persist" checked. Otherwise, she can disappear after death before you take the robe from her.
  2. In Nelmyne's dialogue, you overexplain everything, telling the player about every smallest fact. Try to cut unimportant details to fit her initial dialogue into one entry.
  3. TR_m7_NS_AddWarnNelmyne can be removed, and its contents can be inserted into the dialogue result where you start it.

You can write any scripts in dialogue results. They will work the same way as the npc's local script, except the fact that they're compiled only upon receiving that dialogue entry in-game. If you need an example of using conditions in dialogue results, see the "stolen velk" topic.

kronifer's picture
kronifer
Interior DeveloperQuest Developer
Joined:
2023-04-02 06:01
Last seen:
3 weeks 4 days ago

Should have everything done.

AttachmentSizeDate
Binary Data TR_m7_NS_RobeHeavySwinging.ESP23.99 KB2024-02-29 02:17

uhhhhhh post complete

FlinSunset's picture
FlinSunset
Senior DeveloperQuest Reviewer
Joined:
2022-10-05 00:13
Last seen:
4 hours 12 min ago

A few more minor issues:

  1. The script TR_m7_MoveGentlyRocking doesn't exist. On vanilla engine, the game will crash due to a compilation error when you see that dialogue entry. OpenMW ignores such errors, so you should playtest your quests on vanilla engine at least once.
  2. In GetItemCount and GetDeadCount checks, it's better to check for >= 1 than == 1. That way, the quest won't break if you added more quest items or resurrected and killed a quest npc more than once via console.
  3. GRH should have a higher disposition requirement, like 80 or 90. Currently, the quest is a bit too easy because of that.
  4. In the bottom "stolen robe" entry, you don't need "Not Class Shipmaster" and "Not Class Sailor" filters. The entries above, filtered to those classes, will always overlap the bottom one for them.
  5. Unless that's intentional, the lowest GRH entry in "stolen robe" topic shouldn't have a disposition filter. If you have < 20 disposition, she will say she doesn't trust you with that, instead of attacking you.
  6. Generic dialogue in "stolen robe" topic should be located below GRH's entries, so as not to overlap them. It probably won't happen in this quest in particular, but still that's something you should be aware of.
kronifer's picture
kronifer
Interior DeveloperQuest Developer
Joined:
2023-04-02 06:01
Last seen:
3 weeks 4 days ago

All changes implemented.

AttachmentSizeDate
Binary Data TR_m7_NS_RobeHeavySwinging.ESP24.16 KB2024-03-01 04:24

uhhhhhh post complete

FlinSunset's picture
FlinSunset
Senior DeveloperQuest Reviewer
Joined:
2022-10-05 00:13
Last seen:
4 hours 12 min ago

Spotted only one more bug which I'll fix in a review: GRH should have alternative dialogue in "stolen robe" topic after you confront her. Currently, she still attacks you after being exposed.

Everything else is fixed. Recommended for promotion.