I put together a short simple quest for a showcase! It's not very complicated but I was a complete novice going into this so I learned a lot in the process. I'm sure there is a lot to improve and errors I'm not catching. I don't really think this is ready for a full review yet but since this is my first attempt at modding of any kind I would really appreciate some initial feedback to make sure I don't waste a bunch of additional time.
Including my documentation below:
A Simple Delivery
Global Dialogue:
latest rumors (waterfront narsis only): I hear Bilderu Ranan needs some help with a delivery. Careful though, there are rumors that he works the Camonna Tong.
Topics:
a simple delivery -- main topic to advance quest with various NPCs
Greetings:
Greeting5 - Journal based -- Added unique greetings to Telean, Bilderu Ranaan and Relran
-- While traveling I have a greeting for each version of Relran which says "come on, its up here." and then closes the dialogue.
Walkthrough
Talk with Bilderu Ranan to start the quest in the Waterfront district. Topic is added via greeting "a simple delivery"
Bilderu directs you to the warehouse. You should talk with Telean to get the shipment which consists of 9 shien and 7 matze. This is meant to be sizable so the PC must have a decent amount of inventory weight free.
Optionally the PC can talk with the scribe, Kausha to get a little nugget that this may not be a straightforward task. The captain hasn't logged anything about the delivery, but you are encouraged to go ahead.
The player then goes to the Merchant's Purse in the Grand Bazaar, Underground. There they talk with Maldus, the prioprietor and he directs them to his associate (NEW NPC -- Relran Densul). Maldus does a check with the NPC to make sure they do have the shipment and if not he gets upset with the player.
Left unsaid is that Maldus does business with the Camonna Tong and Relran is a low level thug that hangs out to provide "protection". He sees an easy mark and decides to rob the player.
Relran asks the player to follow him and he leaves the Merchant's Purse and then walks through the Grand Bazaar, Underground until he gets to the sewer. At this point he goes into the sewer and the player can choose to follow or not -- at the moment I don't really have handling around the player NOT following. Will come up with something there (open to suggestions!)
Once in the sewer Relran goes down to the hallway until reaching a nice ambush point. There he is met by another Camonna Tong thug and then he turns and forcegreets the player. At this point he is going to shake the player down. However if the player has UNDER 200g on him Relran will comment about how the player isnt' worth robbing and lets him go (the player can still force a fight). IF the player has MORE than 200g on him then the player will have a choice to either give up the money or start a fight. If starting a fight the secondary Camonna Tong thug joins in and must be defeated.
If the player either gives Relran the gold OR fights afterword he can return to Maldus to close the quest. IF the player has killed Relran, Maldus is happy and gives a higher reward assuming the player still has the shipment. If not he is more gaurded but still gives a small reward (not enough to cover the shakedown), again if the player has the shipment. If the player does NOT have the shipment but has killed Relran he understands and still gives a decent reward, but if not he gets upset and sends the player on there way.
Note: the checks for the shipment are intentionally 1 less than what was given. This is understanding that sometimes things get skimmed off the top and also to protect the player if they accidently drink one of the provisions.
Scripting Summary:
tr_m7_q_simple1: this is a simple script that is added to the items on the warehouse shelf to give the impression to the player that they are being used as the shipment. Just disables them upon journal entry. Note that I've created a unique version of matze and shein to use for this quest so that the script does not attach to ALL instances of Matze and shein.
tr_m7_q_simple2: This is the first NPC script for Relran. It sets variables for nolore, timers and a control variable (state) to track progress and his actions depending on question state. It also exits if state 3 (everything is completed) or if menumode is active.
The first state (0) executes upon a getjournal call which moves Relran to the door.
The next state determines if he has reached the door, and then after a short timer plays the door sound and disables Relran. This also moves the Journal to the next phase which will be used in the next script to enable a new version of Relran to have him walk to the sewers.
The final state only happens if the quest is closed and you did NOT kill Relran (using a Journalentry -- I don't THINK the player can short circuit this but wondering if there is a better way to accomplish this). Basically it sets a short timer and Relran is reenabled and takes his spot back in the bar.
tr_m7_q_simple3: This script moves a new copy of Relran through the grand bazaar, undergound to the entrance to the sewers. Works the same as script2 and moves the journal forward again to use in the next cell.
tr_m7_q_simple4: Final script for Relran (3rd copy) -- this one moves him to the ambush spot and faces the player (assuming the player is in a logical spot). Then it does a distance check (in case the player ran away) and checks the players gold. If the player has UNDER 200g it moves to a slightly different journal (same text but different number) than what they get if they have OVER 200g. Both checks then forcegreet to start the shakedown.
Finally the last state of the script disables Relran IF the player paid him once they are far enough away.
tr_m7_q_simple5: very simple NPC script for the Camonna Tong thug that is with Relran for the ambush. Basically just enables / disables and makes sure if you attack Relran AFTER paying him (or not having enough gold) she will also join in. Also disables once the quest advances and the player moves far enough away.
CELL EDITS:
Narsis, Grand Bazaar: Underground
-- Added Relran2
-- sewer door -- Need to clean?
Narsis, Ranan Warehouse
-- Swapped out 7 matze and 9 shein with quest versions for the script, placement should be almost identical
-- Slightly moved Telean to make it look more natural when disabling the "provisions"
-- Removed Telean's wander (not a cell edit)
Narsis, Sewers: Grand Bazaar
-- the sewer door somehow -- Need to clean?
-- Added Relran3 and Gervil Vhul
Narsis, The Merchant's Purse
-- a stool to try to get a position -- need to clean? (side note -- is there a good tip for finding a position? I couldn't find anything useful in the documentation I've read to this point)
-- the door -- need to clean?
-- Added Relran
General Questions/ Notes:
Found 1 error already that I can / will fix -- when you get the quest the greeting doesn't get updated for Bilderu so you can keep agreeing (or not) to the quest over and over.
The messageboxes in the scripts are just for debugging purposes -- will be removed for final product.
Relran walking to the intended destination isn't umm.. perfect? Are there any tips to smooth this out?
I see how I can condition dialogue and different actions on faction / reputation / rank but I'm curious if there is a good way to control for if the person has completed the main quest. If so I think a quest like this probably shouldn't even be offered (at least assuming the quest giver recongizes the player). I may also add conditioning where if you are > particular level whe you talk to Relran he decides discretion is the better part of valor and just takes the shipment from you and completes the quest. That may make the most sense?
I also wasn't really sure how I should power / equip the NPCs the player fights in this. I gave them some low level gear and made sure their stats made sense. Gave the nightblade 1 spell (absorb fatigue). Should be a straightforward fight and a player level 10+ I don't think will have to many issues.
On cleaning -- I ran TESAME and saw how to easily clean the dialogue entries but I admit I was a bit lost when I tried to figure out how to remove my edits to the cells. The autoclean function said everything was ok? I feel like I'm missing something here.
Thanks so much for reading! I'm sure there are lots of tweaks needed, so please let me know how I can address things!
2024-09-20 19:00
58 min 10 sec ago
Think it's in a bit better shape now. Cleaned up some stuff and added an alternative path to completing the quest.
CHANGELOG
v.1 - Initial version
v.2 - Punched up the fight, added a 3rd NPC that spawns in BEHIND the player (forces sneak -- not sure that will do much but at least signals the player didn't notice him because he was so sneaky?) and then attacks. Had to add a Journal entry to trigger the 3rd NPC because I didn't want to spawn him unless the player chooses to fight -- also spawns him in if they attack Relran
v.3 - Added an alterntive way to close the quest. There is now a note which spawns in the room with the sewer entrance that implies Relran's plan. If the player picks it up and then returns to Maldus he admits it looks like Relran is "up to no good" and takes the provisions directly and rewards the player. Closing the quest. Added scripting to disable any of the NPCs once the quest is closed. If the quest closes without killing Relran he will appear back in the Merchant's Purse if the player stays there for more than a few seconds. Fixed a few typos.
If the PC is level 25 or more now Relran simply remarks the player look "experienced" and takes the provisions and gives a gold reward.
SCRIPT ADDITIONS
tr_m7_q_simple6: Script for 3rd NPC which spawns in behind the player if they choose to fight or later attack Relran.
tr_m7_q_simple7: Script added to note to disable it if not on that stage of the quest. This may be unnecessary? Shouldn't break anything if the player finds the note early?
2024-09-20 19:00
58 min 10 sec ago
v.4 Fixed some bugs
2022-12-11 22:16
1 week 6 days ago
I only looked the first file in the CS (2024-09-20) and did a bit of playtesting, here are my notes. Sorry if there's stuff you already fixed in later versions. I'm also not a reviewer so if someone else from the project says I'm wrong, they're probably right ^^'
You should give the questgiver's name and location in first journal entry.
Remove double spaces and take care of your punctuation (missing colons and commas).
Remove "i should" in journal entries; "she said i should" is good.
Way too many journal entries: most of them could be replaced with local variables like controlQ or doonce.
Two identical journal entries for if the player has or doesn't have the gold: you should instead do something like this in dialogue results:
If ( player->GetItemCount Gold_001 >= 200 )
Choice "Here, take this and leave me alone." 1
Else
Choice "I'm poor." 2
Endif
There's no journal entries with "finished" tag.
No need to addtopic "a simple delivery" more than once. Once a topic is added to the player's journal, it will be available when talking to every npc if the conditions are met.
In topics and greetings, dialogue entries should be in descending order wrt Journal filtering.
You don't need the "Item" conditions at all for the "where are the provisions" lines (and thus don't need to duplicate them). if the conditions aren't meant for the "You have the goods? Yes good" line, then the player will automatically get the line below it, if the conditions are met. For example, if I want line A if %PCName killed Dagoth Ur and line B if they didn't, I can have line A with a "Dead Dagoth Ur = 1" condition above a line B with no condition, and my filtering will work. My point is: you should use the position of the lines as a filter, rather than bloating a topic with pointless conditions.
Remove commas in scripts.
Way too many messageboxes in your script. get rid of them unless they're absolutely necessary (they're probably not).
The ID of your local script should give a clue as to what object they're assigned to.
Maybe help the player in the rumor find the questgiver, telling she's on a boat, or calling her "Shipmaster Beldiran". Narsis is huge.
Tell the player where the warehouse is when the questgiver directs you to it.
Not sure about the shelf emptying in front of the player. I'd give the booze from the NPC's inventory.
When Relran says "Go talk to Maldus first", it feels like he knows how the quest will play out in advance.
Faces with glass are high Hlaalu nobility only.
I can't complete the quest, Relran gets stuck in the sewer corridors.
Journal updates incorrectly if I kill Relran while following him.
2024-09-20 19:00
58 min 10 sec ago
Thank you! Working on implemeting this feedback, will upate soon.
2024-09-20 19:00
58 min 10 sec ago
Ok, I think I've addressed most of this now. Reworked a lot of how the scripting functions.
Changelog v.5:
Reworked scripting and dialogue.
Added global variable to track quest state instead of journal entries and removed many journal entries as a result.
Added Global script to fail quest if player takes too long after starting the escort.
Changed travel from AItravel to AIEscort and tested extensively -- escort works a lot better. Note: left travel in the bar since the distance is so close.
Fixed bug with Relran moving in circles after the ambush.
Commented out messageboxes (debugging).
Added additional documentation to the scripts.
I think this is in much better shape now but sure there are still things to fix. Hopefully this is ready for a real review now.
I did have one question -- In the global script I was hoping to use a getpccell call in order to prevent the quest from failing if the player was still someplace in the grand bazaar (feels like they should get more time in that instance). However I couldn't figure out how to make it work without throwing an error. Here is what I was doing at the end (I tried some different nesting options, including doing If's with returns, if / else / etc.) Probably missing something obvious here since it feels like this should be doable!
Script Example:
if ( state == 2 )
if ( getpccell != "Narsis, Sewers: Grand Bazaar" )
if ( getpccell != "Narsis, Grand Bazaar" )
if ( getpccell != "Narsis, The Merchant's Purse" )
if ( getpccell != "Narsis, Grand Bazaar: Underground" )
journal tr_m7_q_simpledelivery 150
set tr_m7_q_simpledeliverystate to 17
stopscript tr_m7_q_simpleglobal
endif
endif
endif
endif
endif
2024-09-20 19:00
58 min 10 sec ago
Fixed the global script! Updated version.
2024-09-20 19:00
58 min 10 sec ago
Removed global script! Reuploading here.
2024-09-20 19:00
58 min 10 sec ago
Forgot to clean script.
2024-09-20 19:00
58 min 10 sec ago
Ok -- Did a bunch more playtesting and made sure I cleaned everything. I think this should be final R4R.
2023-04-16 18:05
1 sec ago
Hi, thank you for submitting your showcase.
We have already chatted on Discord a bit and agreed that you’ll make a simplified version of the showcase that omits the AiTravel/AiEscort sequence which is simply a bit too ambitious for a misc quest (or Morrowind in general, really). We agreed that the end goal is to have a quest that we could merge to the mod proper with minimal changes. We talked a bit about different ways to simplify it, and if you’ll have any specific questions, please feel free to reach out to me or ask in our showcase channel on Discord.
Here’s the full review for the moment.
The escort sequence
Journal
Quest Flow
Scripting
Dialogue
NPCs
That's it for the moment. Looking forward to the simplified version :)
2024-09-20 19:00
58 min 10 sec ago
Thank you!! I'll get it fixed up and re-uploaded soon. I'll run the dialogue through google docs and see what that catches. I thought it was good but I didn't do an actual spellcheck. Will make sure to do that going forward.
Quick question on the NPCs. I honestly just gave them a random head that I liked since I didn't see any guidelines for that. Is there a document someplace that breaks down those guidelines so I can familarize myself?
Thank you for the link to the validator! I probably just missed it but I couldn't find it (I saw it mentioned and I went looking for it but didn't see where / how to use it, I'll let you know if I have any questions).
For the directions - if you raise disposition with the Wood Elf she gives you good directions :) Honestly I just really liked her telling you to buzz off and I felt it fit the personality of the entire quest. I'll add a topic for the Merchant's purse and filter it to the Grand Bazaar NPCs and maybe the friendlier warehouse employee (the scribe on the top level) if that works.
Thanks so much!
2024-09-20 19:00
58 min 10 sec ago
Ok!
I think I've addressed everything now and also changed how I handled some of the edge cases.
I also ran the validator and it only comes up with a single error (that I used position). However I think I'm actually using it correctly given the circumstances of the script so I left it in.
I think I may have made the combat a bit to hard and I'm not sure what the right reputation cut-off point is to short circuit the quest (I did 12).
After removing the escort honestly I think it feels just as good. In hindsight I'm not sure the escort really added much other than some funny moments watching Relran bash his head into a sewer wall. This is better all around.
Please take a look and let me know what you think. Thanks!
2024-09-20 19:00
58 min 10 sec ago
Put together an int showcase as well. Would greatly appreciate it if someone could take a quick look.
2020-12-31 14:03
4 days 7 hours ago
Thanks for the interior showcase. Gave feedback on Discord
There is no fear in love. But perfect love drives out fear,
because fear has to do with punishment.
The one who fears is not made perfect in love. 1 John 4:18
2024-09-20 19:00
58 min 10 sec ago
Quest showcase SMALL update.
Changed position to positioncell -- now standards validator returns NO errors.
For the "merchant's purse" topic I added 2, so the player doesn't just automatically get directions, they may have to ask a few people. Orginally I set the "bad" response at random100 <= 60 with the idea that this would come up ~60% of the time. I tested this a LOT (probably 50+ times clicking on the topic on DIFFERENT NPCs) and there is NO way this response only came up 60% of the time, seemed more like 80-90%. Obviously it's possible this is just edge case luck but I changed the random100 to be <= 50 in the updated plugin and I'm gonna run through and click on every NPC that qualifies to see if I'm crazy or not! Or what is more likely is I'm doing something else a bit odd that is causing that chance to be lower than it should be.
Anyway! Updated ESP that I think looks pretty good!
2024-09-20 19:00
58 min 10 sec ago
Interior Showcaes update attached. Think all issues fixed! Please let me know if I missed anything.
2020-12-31 14:03
4 days 7 hours ago
Thanks, replied again in Discord
There is no fear in love. But perfect love drives out fear,
because fear has to do with punishment.
The one who fears is not made perfect in love. 1 John 4:18
2024-09-20 19:00
58 min 10 sec ago
Updated ESP -- struggling to find the right entrance piece though. This version uses the 4 post hall piece with a 1 sided wall.
2024-09-20 19:00
58 min 10 sec ago
Another update to the int showcase.
2020-12-31 14:03
4 days 7 hours ago
All issues fixed, recommending for promotion.
There is no fear in love. But perfect love drives out fear,
because fear has to do with punishment.
The one who fears is not made perfect in love. 1 John 4:18
2024-09-20 19:00
58 min 10 sec ago
Changelog:
Edited dialogue to remove comma splicing.
Edited Journals to use simple past tense.
Edited dialogue conditions to fix bug where you could immediately talk with Maldus after taling with Relran to complete the quest early.
Edited scripts to set TR_Map to 7 below a TR_Map == 7 return as to only run once.
Added greeting to Camonna Tong Thugs that they will use if you choose to pay or don't have money. This way you can't engage in conversation with them AFTER the shakedown which was jarring.
Added journal entry after Relran directs the player to the sewers with directions.
Edited script to change "player->cellchanged" to "cellchanged". This may resolve a bug in OpenMW.
Edited dialogue to remove all instances of "Ya" -- either deleted or changed to "Yes"
Edited dialogue results to add punctuation to some of the choice lines.
Edited NPC's to change Hello value to 0 and removed SetHello 0 from NPC scripts
2023-04-16 18:05
1 sec ago
The last version still has some tiny issues, but nothing major.
You've definitely shown a proclivity for scripting, and it's great that you've been so receptive to feedback during the whole process - thank you! :)
Recommending for promotion. Welcome to the team!