jonado's quester showcase

13 posts / 0 new
Last post
jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

I'm developing this asset as my showcase: https://www.tamriel-rebuilt.org/asset/rivaling-alchemists. I have not started any CS work yet, but I just finished the dialogue, so I am posting it here so you can have a look at it. I have to admit it got a lot bigger than I had expected, but I guess that is a consequence of adding a lot of player freedom.

English is not my native language, so I would be happy for any comments about improper grammar or word use. My main concern is stylistic, however. I have written a PhD thesis, so I am used to writing, but that has a quite different style than a dialogue manuscript. I would also appreciate if you tell me if spotting any terms that are inappropriate for the Elder Scrolls universe.

AttachmentSizeDate
File The Rivaling Alchemists -dialogue.docx67.4 KB2021-09-06 05:57
File The Rivaling Alchemists -dialogue v2.docx68.45 KB2021-09-08 21:29
Binary Data The Rivaling Alchemists.esp216.82 KB2021-09-20 18:43
File The Rivaling Alchemists -merge notes.docx19.19 KB2021-09-20 18:43
File The Rivaling Alchemists -dialogue v3b.docx77.41 KB2021-09-20 19:49
Binary Data The Rivaling Alchemists v2.esp218.06 KB2021-09-20 19:49
Binary Data Fixed Rot's remarks218.57 KB2021-10-16 18:28
Binary Data Added fadein/fadeout effect for Tilara218.51 KB2021-10-18 22:50
File Dialogue file updated to be the same as the most recent esp77.34 KB2021-11-06 20:46
Binary Data Fixed all Jack's dialogue remarks and replaced curses with abilities218.43 KB2022-02-10 17:24
jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

Finally done! I've tested it extensively on Morrowind.exe, but please report any bugs you may find (it would especially helpful if someone could try this out on OpenMW). Regarding dialogue, it should be the same in-game as in the v3 docx document, unless I made any parsing errors. I'm sure there are still some style/grammar errors, so please comment about those as well. I was not sure what are the guidelines regarding "..." clauses indicating a pause. If these should be preceded by a space, that has to be fixed.

For playtesting: Start the quest by speaking to Nevusa Falen. Make sure you read the merge notes first, though.

jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

Uploaded a new version with a few minor edits. Uses dialogue from version 3b.

Rot's picture
Rot
Quest Developer
Joined:
2014-03-16 17:45
Last seen:
1 year 11 months ago

 

 

script comments
 

 

Haven't run the file in game or looked at quest logic but on the technical side thumbs up for this showcase

jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

My comments:

; Unfortunately only works if chest has not been emptied before
if that's a concern I recall there's a hacky fix for that, maybe it's putting a no-model light object in the chest? something so it can't become empty

This is not very important. It would not be any logical move to loot the chest if choosing to proceed along this path.

; check if ANY spoiled potion is in the chest
if the script will need to be updated for any future generic MW spoiled potions that would be worth noting somewhere... don't know where, probably a couple other scripts like that in the mod

This is a bit of an edge case. The player receives one spoiled potion from the questgiver which they are supposed to put in the chest. I have just implemented it this way in case the player happens to have another spoiled potion in their inventory, so they would not need to be confused on which one to pick. It would however make sense to update the script if more variants are added, since later all spoiled potions in that chest are supposed to be confiscated, so it would be a bit illogical if some of them are missed. But again, edge case.

if ( TR_m4_Tilara_Danar->OnDeath )
if the NPC exists outside of this quest I'd consider making a script on her even if it's just with a comment for any later use to not try OnDeath on her without changing this script, because that function can only work in one script?

It would break this quest if some other quest would task the player to kill her, so I hope that would never happen. I tried to avoid giving Tilara a unique script since I had so many already, but I agree that this should be documented, in case another quest needs this check (e.g. for similar reasons as this one).

elseif ( GameHour >= ( frameHour + 1 ) ) ; player rested
it seems like the normal condition for this scene to start is player changing cells (like entering "Andothren, Nevusa Falen: Alchemist") so I guess the resting checks here at sceneState 0 are just in case she'd been commanded into that cell already?

It is just an alternative way to trigger the scene to start, in case the player would rather stay in the cell. Rats suggested that she could be triggered to leave from the dialogue instead, which would make this redundant. While I don't think that would be a good idea, making her leave as soon as closing the dialogue window would probably be the best option, possibly along with an "Open Door" sound (I was not aware how close she was to the door when writing the script).

if ( timer > 20 ) ; wander for at least 20 seconds upon entering
            TR_m4_Tilara_Danar->AITravel 4092 3885 15439
            TR_m4_Tilara_Danar->SetHello 0

you may want to do that SetHello 0 earlier when she starts to wander or these 20 seconds could be spent staring at the player (maybe even before the AIActivate? depends on which engine you use in vanilla the waiting time after voicegreets is very long, in openmw iirc that was replaced with a much shorter anim)

20 seconds is pretty long. I tested this on the Vanilla engine, and the greeting interrupting the investigation was not a big concern. You also have to keep in mind that she is required to stay in the room for at least 1.5 hours before triggering the next state, so for most players it would rather be a few minutes than 20 seconds (you have the option to rest in case you think it takes too long).

should add one more argument in AITravel lines like these to prevent the sequence from breaking on player resting, one thing it does is some special AI failure resetting (something not relevant in cells that should have pathgrids like these) but also it makes sure GetAIPackageDone does get detected if resting happens - probably not necessary in MOST of this script since it already handles resting if scene >2 <7, but at scene 8-10 there's also something that depends on AITravel GetAIPackageDone. your other scripts with similar AITravel GetAIPackageDone already handle player resting in all cases it seems

Unless you kill Nevusa, player controls are disabled during this episode, so this is not of any concern. If you do kill Nevusa, sceneState will automatically be set to 10 if you leave the cell, causing Tilara to teleport anyway.

if ( timePassed <= 3 )
                PositionCell 4153.268 4940.933 15061 10800 "Andothren, Fauler's Philters"

no AIWander after this PositionCell? assume you know why since your other scripts do it

The guard is still disabled at this point, and if reentering the cell, he will get teleported here again, so I don't think this is of any concern. I tested to rest after this triggered, and it worked fine, but I'm not sure if I also tested to leave and reenter several times, which would be the only thing I could think of that could cause any problem.

lseif ( sceneState == 3 )
...
            if ( GetDeadCount "TR_m4_Hemmette_Fauler" == 0 )

if that NPC is dead it looks like nothing more happens on this script's side so this would remain at sceneState = 3, then you'd want to do something to put a stop to this check because GetDeadCount every frame while in range can cripple some players game, it's a special vanilla engine issue only with the GetDeadCount function if there are lots of dead IDs in a save file

This is really an edge case, which would only trigger if you have killed Hemmette during the short interval between when the guard "enters" the room and he is supposed to arrest Hemmette; otherwise it will only trigger once (sceneState is changed in the dialogue). I never tested this actually. On second thought, this check is probably redundant, since killing Hemmette will change the journal stage, preventing the script from reaching this line anyway.

Set TR_m4_Ando_AlchemistsTimer.timerSet to 0
    StartScript "TR_m4_Ando_AlchemistsTimer"

a note for when this gets tested in openmw, there might have been issue with setting scripts local variables base records like that? if someone reports it doesn't work in openmw yet maybe try swapping the order of these lines, same in script TR_m4_NPC_Nevusa_Falen and in some dialogue results

I have only tested this on the Vanilla engine, and there it worked. This could be the reason why Rats had problems with the TR_m4_Ando_TilaraInvest script, though, since I have done something similar there.

 if ( GetDistance Player <= 256 )
        if ( GetDeadCount "TR_m4_Nevusa_Falen" == 0 )

same comment about GetDeadCount as in script TR_m4_NPC_FaulerGuard

Here the check needs to be done unfortunately, and no, I didn't test it here either. I think I should add else Set sceneState to 5 here, because otherwise this could potentially break the quest. There is anyway already such a check in the dialogue, so this is really an edge case.

jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

I think I will remove the last GetDeadCount check as well. I don't believe anyone would play in a way that it would be worth to include.

jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

Since I got some interest in playtesting this, I have now made a few changes following Rot's comments. I have fixed the following:

  • Tilara Danar now leaves for the investigation immediately after telling the player.
  • Tilara Danar has got her own script in order to control her OnDeath behaviour.
  • Local variables in global scripts are no longer set before running them (I hope I didn't miss any).
  • The GetDeadCount issues have been resolved by either removing them or replaced with a GetHealth check. In the latter case, sceneState is automatically changed.
jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

I accidentallt introduced a bug in the version I uploaded yesterday. Fixed now.

Rats's picture
Rats
Developer EmeritusAsset ReviewerWriting ReviewerExterior DeveloperInterior ReviewerQuest Reviewer
Joined:
2014-01-08 21:55
Last seen:
1 hour 13 min ago

After new playthroughs, rot's technical review, and looking at the new file in the CS I'm marking this as good to go.

jonado promoted to Quests.

huzzah and congrats! thanks for your patience.

Denis418's picture
Denis418
ModeratorSenior DeveloperExterior DeveloperInterior ReviewerQuest Developer
Joined:
2020-12-31 14:03
Last seen:
3 hours 54 min ago

Hullo, I was curious to try this quest! Found only one typo and that's all. I chose to help the Breton alchemist by planting the forged letter in the desk of the initial questgiver. But I couldn't finish the quest due to the desk being duplicated. So, if I plant the letter, the Breton alchemist does not recognize me as doing so. Help me, as I'm obviously installed it incorrectly

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

jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

Thanks for testing! I'll fix the typo, no worries. Regarding your other remark, I can only say to you'll have to edit the esp according to the merge notes. For this to work properly, you'll have to remove all the indicated objects.

jackimoff wackimoff's picture
jackimoff wackimoff
ModeratorSenior DeveloperWriting ReviewerInterior ReviewerQuest Reviewer
Joined:
2021-02-06 12:11
Last seen:
1 week 4 days ago

Did a dialogue pass as requested:

"Nevusa was furious about my deceit. However, she was able to escape justice by bribing the guard. As a token of gratitude, he offered me 50 gold for it. I think I should keep away from Nevusa’s shop for a while." Change for it to either for my efforts, or remove the words for it

"Meanwhile, she has spread out a rumor in the city about this business. My task is to plant the letter among Nevusa’s belongings, but I need to decide whether I want to place it in her desk, or at the invented hiding place along with some gold that I’d have to provide myself." Remove the word out as it makes the sentence a bit clunky. Restructure the last bit to or at the hiding place Hemmette invented along with some gold I'll have to provide myself to flow better

"With the evidence planted, and the rumor having got time to spread" Change to had

"Hemmette was disappointed when she learned about my failure. She fears Nevusa will make another attempt on framing her in the near future. Oh well, this conflict won’t end anytime soon." Remove last sentence, it's a bit too personal for journal entry.

"Yes, I've heard. Someone has been spreading that Nevusa Falen is having shady dealings with Camonna Tong. In my profession, I've learned not to trust such rumors without evidence, though." Technically grammatically correct but reads unnaturally, change to spreading rumours that.

"Nevusa Falen was found innocent -- who’d thought anything else? Those outlanders always come up with stories to frame us -- I think the best would be to get rid of them all. Not to speak of the Thieves Guild!" Change thought to expect. Also it seems weird that the cammona tong mention the thieves guild in so much dialogue, and this line reads a bit odd anyway, therefore remove the last sentence and put the exclaimation mark at the end of all instead.

"So you dare visiting me after all the harm you’ve caused me? Don’t play the innocent -- I’m sure you knew I got arrested!" change to visit.

"I have a plan, though, which should make every honest mer turning their backs from her." change to turn

"I have a spoiled potion here, and if someone would plant it into her belongings, we could use it to trick the guards that she’s still selling them?" This reads strangely and the question mark doesn't make sense here, change to we could use it to trick the guards into thinking she's still selling them.

"Of course, that hag’s exploiting that mistake I did to get rid of me!" change to made. This is in several dialogue options so make sure to change them all.

"Well, you underestimated me. You seem like a smart fellow, though, so perhaps you have other skills?" Fellow is a word for a male but the player could be female, change to person

There's multiple references to people "falling off the line". I think this might be an idiom that's been lost in translation.

  1. I bet they’ll continue fighting until one of them falls off the line. Change to I bet they’ll continue fighting until one of them drops dead.
  2. Are you ready to help me pushing Nevusa Falen off the line? change to Are you ready to help me push Nevusa Falen out of business?
  3. I’d needed help from the late guard captain to push Nevusa off the line change to I’d needed help from the late guard captain to get Nevusa out of my hair
  4. Are you ready to push Nevusa Falen off the line? change to Are you ready to finally get rid Nevusa Falen?

"Just put the letter there, along with 400 gold, not more." change to no more

"I don’t know how to deal with the smallfolk" change to townsfolk

"Can’t stand a bit of competition, aye?" Remove aye, doesn't work here. This is in two dialogues.

"She won’t expect you to work against you, so I bet she wouldn’t notice." change to you to work against her

"If it weren’t for her, I’d never end up in that cold cell!" change to I'd never have ended up

"Got to prepare for the investigation, you now" change to know

"Investigating the matter could help putting an end to that rumor." change to put

"And should there be any truth to it, we’d catch another criminal instead." change to we'll

"Hmm, some extra gold would fit nice into my porch." change to pouch

"That Breton alchemist did a real blunder, I can tell" change to made

"You were the one seeing the potion after all." change to who saw

"by repeatedly tricking her customers into buying spoiled potions." tricking is a bit too informal for an official document, change to misleading

ₒₕ, bₒₒ𝒹?

jonado's picture
jonado
Quest Developer
Joined:
2020-03-22 23:41
Last seen:
2 months 1 week ago

Thanks for your comments! I have now fixed all your comments, so I think this can get merged now.