Quest Showcase

In order to implement content in-game, you must be a Developer. This is the place for you to introduce yourself, and apply to become a TR Developer.

Moderator: Lead Developers

Locked
QueenOfRats
Developer
Posts: 4
Joined: Thu Sep 04, 2014 1:25 pm

Quest Showcase

Post by QueenOfRats »

This is my first quest showcase. It goes as follows:
-Go to St. Delyn's Plaza in Vivec and talk to the Khajiit called Dro'Vakrin.
-Follow through his dialogue until he gives you the amulet and scroll.
-Go to St. Delyn North-Waist One (the cell has a ghost in it in the base game). Here you will find Heedal, although he won't be in the mood to chat.
-Equip the amulet, it will take you to a cell where you will find Heedal's soul attacking you. Here the quest splits.

Good Path:
-Cast the scroll on Heedal's soul. You will be returned to Vivec.
-Go talk to Dro'Vakrin. He will give you a ring. When you leave the Plaza he will move to being in Waist one with Heedal.

Evil Path:
-Kill Heedal's soul. You will be returned to Vivec and Heedal will die.
-Go talk to Dro'Vakrin. When he realises you killed Heedal he will attack you (he will do the same if you killed Heedal without entering his mind).
Attachments
heedal1.ESP
Cleaned with ESP Cleaner
(19.88 KiB) Downloaded 126 times
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Hi,
I don't suppose you've been summoned by our Resident [url=http://tamriel-rebuilt.org/old_forum/profile.php?mode=viewprofile&u=13226]Rats[/url]?


Here are some mostly technical comments on your mod:


dialogue entries:

"Greetings. I wonder if you could help Jo'Vakrin's friend Heedal."
- introduction hooks for TR quests would usually cut a bit less straightforward unless you were sent to the character,


"I have decided not to help Jo'Vakrin for the time being."
- I'd usually advocate either making refusal journal entries Finished (and checking Restart on the journal entries where you accept), or providing a more definitive refusal option than "maybe later" (to remove it from the quest index if the player plans never to do it)


"I have killed Heedal's soul and with it, Heedal. I should tell Jo'Vakrin of this."
"I have killed Heedal. I should tell Jo'Vakrin what has become of his friend."
- journal entries in general should assume as little as possible about the PC and avoid telling the player what to do when it's not necessary, especially when they might want to decide otherwise. Quest failure journal entries also benefit from being Finished for the same reason


- you'd really expect the Heedal to say something other than the default greetings after he's cured
(or if he's unaware of the PC's role, to at least have answers to the relevant topics)


Entries and cleaning :
- Vanilla entries that are edited when you create new entries (Greeting 0 "You say you've been attacked by assassins? ", Greeting 5 "Pardon me. But there's a very strange man in my house, and he won't leave. Will you go get him out of there, please?") need to be cleaned (eg with TESAME)
- New entries mustn't be at the very bottom (and preferrably not at the very top either) of the entries list on a topic or Greeting, because of issues when several mods editing dialogue are used together. New entries can be placed inbetween any two existing entries, and those two entries then cleaned



scripts:


general:
- it's good practice to stay consistent with whitespaces or lack thereof within the same lines, eg in NM_Heedal :
"if ( GetDeadCount NM_Heedal_Angry > 0 )" has two whitespaces
"if (OneDeath != 1 )" has no whitespace after the opening parenthesis but one before the closing one
these inconsistencies are known to very rarely cause issues, so even if most of the time they're fine they should be avoided,

- standard is to keep the opening "If" and their corresponding "Endif" at the same indentation level for readability;
extra ifs/endifs are easy to overlook and aren't necessarily picked up by the script engine when saving.



NM_Heedal_Jovakrin :
- "if ( GetDeadCount NM_Jovakrin > 0)" should use "OnDeath" instead, since "GetDeadCount" is known to be a very slow function in large savegames and shouldn't be called every frame.


NM_Heedal :
- here also "GetDeadCount" shouldn't be called every frame, and would need a one-time condition (or in other cases a "every X frames" condition). This NPC could more easily be killed when the _Angry version dies from a script on _Angry
- "if ( GetDeadCount NM_Heedal_Angry == 0 )" could have been an "Else" condition instead for performance
- "if ( GetDeadCount NM_Heedal_NPC > 0 )" : this one can use "OnDeath" since it's the NPC the script is attached to


NM_JovakrinTwo :
- Shouldn't the duplicate NPC have "nolore" too?


NM_NewJovakrin :
- Not sure I understand the reason why one NPC is replaced with a duplicate; is it only to change his position? If so there's a function for that (PositionCell - it can cause issues if used on a NPC that's never been encountered ingame, but that can't be the case here)
- If there was a real need for the duplication, both operations (enabling one NPC, disabling the other) could be done at the same time in this script when the player is detected as having left the cell
- these global scripts can and should terminate themselves whenever possible - this one is done when the swap happens, and shouldn't wait for the new NPC to be encountered to be Stopped. (note you have to save the script first, for the name to be recognised, to be able to use the StopScript line within the script itself)


nm_mindamulet_script :
- the two "if ( GetPCCell "Heedal's Mind" == 1 )" blocks can be grouped together
- same issue as above with GetDeadCount




Overall this works but I'd advise dealing with the GetDeadCounts, detecting the death of the _Angry version of the NPC from a script on itself, and using PositionCell to displace the questgiver instead of duplicating him.

As for the quest design I find some parts come out of the blue, having to go into the guy's mind and his friend having just made an amulet for that all seem somewhat arbitrary. That's probably acceptable for a showcase but the dialogue could still be developed a bit

and welcome!
QueenOfRats
Developer
Posts: 4
Joined: Thu Sep 04, 2014 1:25 pm

Post by QueenOfRats »

Okay, so I did what you said. There is one death count left, but it is in-cased in an on death, so it will only be called once. By less straightforward I guessed you meant that he should introduce himself first. I also added a bit of an explanation to the whole mind-amulet thing, but I don't know how you feel about people referencing some of the more obscure lore.

As for the user-name, I have no relation to Rats. The name comes from when I am playing Morrowind or Oblivion I can't bring myself to kill rats. In one game I somehow ended up with no calm spells, but a very long duration command spell, that ended up with me having about five rats following me at one point.
Attachments
Copy of NM_Heedal_Clean.esp
(18.76 KiB) Downloaded 147 times
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Ack must've missed your update when the site went down. Apologies, will get to it this week-end (otherwise please bump!)
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Good job cleaning things up, and the dialogue frames the quest better; now to pick nits:


- script NM_Heedal:
(you don't need the "OneDeath" variable and condition, because OnDeath (the function) only ever returns 1 for one frame)
However, since this NPC exists at all times and can be met first, you do need to condition this script so you don't get a quest journal entry upon his death if the PC didn't start the quest;
correspondingly, if Heedal was already killed before meeting the questgiver, you can either disable the start of the quest from dialogue entries (greeting & topics), or adapt the dialogue options.

- script NM_Heedal_Jovakrin:
same case: you shouldn't get a journal entry from this guy's death if you've never talked to him,

- script nm_mindamulet_script:
(you could boost Heedal's disposition from here to match his grateful dialogue)
if you accept the quest from Jovakrin, then kill Jovakrin (...), go to Heedal and try to use the amulet, it won't work - just want to point out that this is fine, since we don't as a rule account for the PC randomly killing non-hostile NPCs. (plus it makes sense that the amulet's divine element would refuse to work)

- script NM_NewJovakrin:
DoOnce is not needed since you terminate the script and thus can only perform the action once anyway.
(you could also check that the player didn't directly teleport back to "Vivec, St. Delyn Waist North-One" before moving the NPC there, but it's not too important - perfectly accounting for player teleportation sometimes isn't worth the trouble anyway)

- you might still want to disable teleportation ie Recall, Almsivi/Divine Intervention, from the cell "Heedal's mind". I think the DisableTeleporting/Enable... functions do work

- on syntax consistency in scripts: it also applies to commas - eg lines such as

Code: Select all

Player->PositionCell 245, -186, -114, 0 "Vivec, St. Delyn Waist North-One"

Code: Select all

Player->PositionCell 3139, 3292, 15943, 0 "Heedal's Mind"
since they use commas between arguments, should have a comma before the cell name too. Again, might not cause issues 99,9% of the time but good practice etc.

- bit of sentence missing/minor typos:
Greeting 5,

Code: Select all

Greetings, %PCName and welcome to Vivec. I am Jo'Vakrin, Witchhunter and that you are a seeker of adventure.
into his mind,

Code: Select all

Hopefully if will be

Code: Select all

I am forever it your debt, %PCName.
QueenOfRats
Developer
Posts: 4
Joined: Thu Sep 04, 2014 1:25 pm

Post by QueenOfRats »

Okay, updated file.
Attachments
Copy of NM_Heedal_Clean.esp
(19.15 KiB) Downloaded 148 times
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

All in order-

Last remark: the questgiver's initial greeting has a [Talked to PC == 0] condition - you can't really rely on this function, generally because it resets after 72 hours, but in this case because the greeting is in Greeting 5. Meaning if the PC is diseased, ... or any other reason for this greeting to be skipped, and talks to the questgiver, they might never get access to the quest (because the Talked condition would get burned without getting the topic). Usually a quest state condition is used instead, or the greeting is put in Greeting 1.
(also aside: Heedal's cell is excessively bright, I assume due to added lamps. Oh and, I'd get flogged if I didn't mention that the olde "you are an adventurer" opening line is so overused as to now be no-no'd at TR, with the preferred explanation for the PC dipping their nose in everyone's business being none)

------------



That said you show good mastery of scripting/dialogue questing tools etc. so you have my recommendation for promotion!

Sadly no claims open this moment, but if you want to stroll through old (released) or new (WiP sections) areas you're welcome to post quest ideas.
Seneca37
Lead Developer
Posts: 912
Joined: Mon Feb 10, 2014 1:04 pm

Post by Seneca37 »

Just wanted to say Welcome :D !!
Always good to have new people joining.
User avatar
Haplo
Lead Developer
Posts: 11651
Joined: Sat Aug 30, 2003 6:22 pm
Location: Celibacy

Post by Haplo »

Member Promoted for quests and scripting. Congratulations, and welcome to the team! Feel free to continue using this thread for questions or showcasing work of your own for critiques or constructive criticism.
Forum Administrator & Data Files Manager

[06/19/2012 04:15AM] +Cat table stabbing is apparently a really popular sport in morrowind

[August 29, 2014 04:05PM] <+Katze> I am writing an IRC bot! :O
[August 29, 2014 04:25PM] *** Katze has quit IRC: Z-Lined
RyanS
Lead Developer
Posts: 532
Joined: Mon Aug 19, 2013 12:32 am
Location: California

Post by RyanS »

Congrats and welcome, QueenofRats! :D
Strive not to be a success, but rather to be of value. –Albert Einstein

A creative man is motivated by the desire to achieve, not by the desire to beat others. -Ayn Rand
User avatar
Dormichigan64
Developer
Posts: 173
Joined: Thu Dec 26, 2013 10:27 pm
Location: Stop trying to see where I live, you creepy bastard! (Kingston, Ontario)

Post by Dormichigan64 »

Felicitations! And welcome, to where destiny is made.
"When life gives you lemonade, make lemons. And life will be all like 'what??'" - Phil Dunphy's Phil's-osophy


(\_/)
(-.-)
(>_<)
Shhh, bunny be snoozing. lolcatz
User avatar
Rats
Lead Developer
Posts: 785
Joined: Tue Jul 03, 2012 8:32 am

Post by Rats »

Thou art truly welcometh, my Queen! Huzzah, huzzah, huzzah!
sasquatch2o
Developer
Posts: 325
Joined: Tue Jul 15, 2014 1:56 pm

Post by sasquatch2o »

We need more quests and quest planning ASAP and forever! Dont wait for more claims or prompting to get started. Quest are the most important and needed group. Congrats and welcome to TR.
my opinion.
User avatar
Dormichigan64
Developer
Posts: 173
Joined: Thu Dec 26, 2013 10:27 pm
Location: Stop trying to see where I live, you creepy bastard! (Kingston, Ontario)

Post by Dormichigan64 »

sasquatch2o wrote: Quest are the most important and needed group.
Hey...
"When life gives you lemonade, make lemons. And life will be all like 'what??'" - Phil Dunphy's Phil's-osophy


(\_/)
(-.-)
(>_<)
Shhh, bunny be snoozing. lolcatz
Locked