q2-16-Mis

After a quest claim has been cleared by a review, the thread will be moved here. Discussion is still allowed.

Moderator: Lead Developers

Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

One slight suggestion. I do not think a quest for fetching a generic items can be implemented well to make sense. If you are a slave in such a position will you accept only 5 standard healing potions instead of, say 3 quality and chitin armor instead of glass? This cries "implementation limitation!" like nothing else, as there is no in game rationale for this.
What if the slave would still have the bracelets and would only ask you to find a key and unlock them. For that you would have to steal it from the plantation. This is more logical solution and also more exciting than fetching a random junk from the nearest armorer.
Attachments
tr_m2_ep_free_v2.jpg
(261.41 KiB) Downloaded 611 times
THEO
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Grant!


re: dialogue,
the technical correctness of the writing isn't a problem imo as that's relatively easy to fix; what's important is what it says and how it flows, and that mostly carries across languages. eg does it make sense for the character to be saying this in that situation? Does it sound artificial or like something the character would *naturally* say?
for instance, I recall a weak point of the previous iteration of this was the slaver sending you to the tower in a "go talk to X" quest fashion. Similarly, getting directions from ?Pedivur?(tower) to the mage sounds tricky. Again feel free to change locations if you find a better one, this mage's current cave is so far away it might be hard to work with



Agree about the chitin armour being a silly limitation; one COULD script things so as to allow giving him any type of light armour (start script from resultbox, check lowest in inventory, return Choices from the script, remove from script) though it wouldn't allow enchanted ones unless all listed.
Also wouldn't take mod content into account but that is by convention not a concern, same as self-made potions -> slave asking for health potions is still an option if you wish, allowing fitting amounts of any combination of standard types is easy.


Reg flowchart:

- You don't need to deal with the slaver being killed before accepting the quest from them. The initial rumour prolly shouldn't give a journal entry either, but if it does it should be a 'Finished' one, so no need to give another journal entry to close the log if the PC kills the slaver before actually taking the quest. (having a last Finished journal entry that simply finishes/cancels everything if you kill the slaver is still good)

- relatedly, to keep things simple, you can keep the mage and slave Disabled before the quest is started/mentioned by the slaver (otherwise need to provide an alternate start/path to the quest if you find them first)

- reporting failure: I'd rather not have fail-timers on quests unless it's for very specific reasons, because 99% of quests that are otherwise still supposed to have a general sense of urgency aren't and shouldn't be timed.

- reporting to the questgiver on failure (slave dead) is optional. It's also possible for the slave to die while you're escorting it, so generic wording ("is dead", not "I killed...") is better

- would the PC still have the option to report the location after refusing to help the slave with a key? or is that what "timer" refers to? perhaps showing the slave running out of the cave on his own is enough to plug that case.
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

I am still more in favor of having the slave ask for a key from the bracelet, if it is fine with the original design.

Not that I would mind the extra work put into an armor/potion script, but the result should matter somehow, like that the slave was in some fight after being released where the equipment of the slave could decide the outcome, but I do not want to go that crazy on this simple misc. quest.

This mechanic should be better implemented in a quest, where it makes more sense and player gets to see the result of his decision.

The option with a slave ties things more closely, as a player has to return to the plantation and steal there, rather than go shopping for specific items.
THEO
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

OK, so I have finished a dialog, which is in an enclosed spreadsheet for easier dialog/language/lore review. I have also simplified the quest flowchart, which I also enclose for easier orientation in the file.

Once this is approved I will implement it in CS. Meanwhile I will be working on scripts and interior/exterior adjustments.

These include:

- The only interior in the directions mentioned in the quest idea is a harru cave. Currently an abandoned bandit cave that has been taken over by a necromancer and an argonian thief.
I have:

a) Put a scripted rock in front of the entrance to the cave that disappears at the stage 30 of the quest.
b) Replaced the argonian with a khajiit slave and slightly modified the mage.
c) Replaced the undead in the tomb with scripted skeletons. They should be passive and non-hostile unless player starts a combat with the mage for some reason. Then he will have to fight his way back on the surface past strategically placed skeleton archers and mages.
Attachments
TR_m2_q_A8_5.xls
Dialog
(40.5 KiB) Downloaded 274 times
tr_m2_ep_free_v2.jpg
Flowchart
(174.31 KiB) Downloaded 204 times
THEO
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

a) I'd rather see the default/quest NPCs and creatures disabled and enabled according to quest states, than the exterior entrance being blocked by a rock (for many reasons - if the player has already explored that area without looking at the map they could have a VERY hard time figuring out the cave entrance has 'appeared' there; entrance would still be displayed on the minimap even when blocked; doorblocks don't really fit the open-world model without rather special reasons; etc.)
If the whole interior itself has to be retailored for the new occupants then it shouldn't be too hard to make the quest work both ways (eg even when finding them first)

b),c) - just a reminder that you can't replace or delete objects from an .esp file (since you're working based on TR_Mainland.esp, not TR_Mainland.esm - there are things you can't do on an ESP from another ESP); if something needs to be moved or deleted -> merge instructions


Gave your dialogue file a quick look; seems mostly fine, as in it will need grammar/conjugation... fixes here and there but little rephrasing, though I find the mage's dialogue a bit awkward in places ("How nice of you to ask so kindly!"...; the magic effects discussions with him and Pedivur sound gameplayish... don't think his being a Dunmer buying fire resist potions would be especially stressed as the reason why she'd suspect him)

- should never use "gp" (gold, coins, drakes... are all fine)
- topic "unlock Shamirrs bracers" -> "unlock Shamirr's bracers" (could also use "go free"; also if there are any other slaves @that farm, the key might need to work for them too?)
- in case you copy-paste dialogue from the xls file, many entries have words beginning with caps in the middle of sentences, I assume due to line breaks
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

Ad a) That is probably a valid point, but exploring an empty cave only to find later that it has been a home for a mage for some time and he has not just been at home is also weird, but I guess this is more standard implementation so I will go with that.

b),c) I will keep that in mind.
THEO
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

re:a), having the mage & slave be non-hostile and present in the cave by default (even if the quest wasn't started) would be fine if you're willing to adapt for it:

- either uncondition all dialogue with the mage & slave so that all the options can be accessed with or without the quest, making sure dialogue still makes sense (slave mentions the farm when asking for help so you'd know where to escort him, mage mentions they plucked the slave from elsewhere on their own, etc.), and then tweaking or adding alternative finish/'start' entries to the quest giver at the farm

- or, when not sent by the farm questgiver, let the NPCs have only default dialogue - though it'd probably make sense for the slave to ask you to get the key if you've killed the mage, and it'd still need alternative entries from the questgiver if you've already found/killed them
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

Well, that would mean redesigning the quest quite a lot so this time I think I will just go with the lazy solution and disable them in the inappropriate stages as you suggested. After all it is only temporary hideout for both of them.

Moreover this, I think, is quite a standard solution. Introducing more alternatives to the quest, I believe, would only be worthwhile if there were some alternative endings or payoffs for different paths.
THEO
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

The quest should be done now, but I had (and will not have anytime soon) time to test it even once. It may not even be playable at this stage. If it is so, I will revisit it later in game.
THEO
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

Ok, it is clearly a while since I wrote my last TES script. Could someone more knowledgable please take a look at those and tell me why thei compile in CS, but in the game they trhow "missing right eval" error?

Code: Select all

Begin TR_m2_q_A8_5_Undead

if ( GetJournalIndex TR_m2_A8_5_FreeAtLast  < 30 )	
	if (GetDisabled == 0 )
		Disable
	endif
endif

if ( GetJournalIndex TR_m2_A8_5_FreeAtLast  == 30 )	
	if (GetDisabled == 1 )
		Enable
	endif
endif

if ( GetFight < 50 )
	if ( GetJournalIndex TR_m2_A8_5_FreeAtLast == 60 ) 
		SetFight 80
	endif
	if ( OnPCHitMe == 1 ) 
		SetFight 60
	endif
endif

if (GetHealth > 0)
	if ( GetJournalIndex TR_m2_A8_5_FreeAtLast == 130 )
		SetHealth -5
	endif
endif

end

Code: Select all

Begin TR_m2_q_A8_5_Dras_Varethi
if ( GetJournalIndex TR_m2_A8_5_FreeAtLast  < 30 )	
	if ( GetDisabled == 0 )
		Disable
	endif
endif

if ( GetJournalIndex TR_m2_A8_5_FreeAtLast  == 30 )	
	if ( GetDisabled == 1 )
		Enable
	endif
	if ( GetDistance Player < 1024)
		ForceGreeting
	endif
endif

if (GetFight <100)
	if ( GetJournalIndex TR_m2_A8_5_FreeAtLast == 60 ) 
		SetFight 100
		StartCombat Player
	endif
	if ( OnPCHitMe == 1) 
		SetFight 100
		StartCombat Player
	endif
endif

if ( OnDeath == 1)
	if ( GetJournalIndex TR_m2_A8_5_FreeAtLast < 70 ) 
		Journal TR_m2_A8_5_FreeAtLast 70
	endif
endif

if ( GetJournalIndex TR_m2_A8_5_FreeAtLast == 45 )
	SetHealth -5
	Journal TR_m2_A8_5_FreeAtLast 130
endif

if ( GetJournalIndex TR_m2_A8_5_FreeAtLast == 55 )
	SetHealth -5
	Journal TR_m2_A8_5_FreeAtLast 130
endif

if ( GetJournalIndex TR_m2_A8_5_FreeAtLast == 65 )
	SetHealth -5
	Journal TR_m2_A8_5_FreeAtLast 130
endif

if ( GetJournalIndex TR_m2_A8_5_FreeAtLast == 75 )
	SetHealth -5
	Journal TR_m2_A8_5_FreeAtLast 130
endif

end
THEO
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

OnPCHitMe needs to be declared as short variable.

Unrelated: use of spaces before/after parentheses, commas... has to be consistent within the same line, something like

Code: Select all

if (GetDisabled == 0 )     ;----> ( GetDisabled == 0 )

Code: Select all

if ( OnPCHitMe == 1)     ;----> ( OnPCHitMe == 1 )

that seems to work most of the time might still rarely cause issues

(why the OnPCHitMe blocks in the first place? unless they have 0 fight by default, or are already using the OnPCHitMe detection for another purpose, attacking them will automatically trigger combat through the game AI)
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

Thank you rot, I will try that out.
EDIT: It worked and so here it is. Still not completely bugfree, but testable version.
THEO
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

OK, here it is. Alpha testing completed ready for review.
THEO
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Tried playing your file, crashes due to .esm dependency :< we work on the[url=http://tamriel-rebuilt.org/old_forum/viewtopic.php?p=322015#322015]internal version ESP[/url], which is also why
you can't replace or delete objects from an .esp file (since you're working based on TR_Mainland.esp, not TR_Mainland.esm - there are things you can't do on an ESP from another ESP); if something needs to be moved or deleted -> merge instructions

(plugins for the internal version don't display any dependency, they're just created with TR_Mainland.esp loaded but not 'Active' - and have to always be opened with it manually loaded along, else data gets lost when saved)

I've tried dryremoving the dependency with wrye mash,
hopefully nothing has been lost or unlinked, could you check to make sure?
also did you edit any exterior cells aside from Erethan Plantation? (CS automatically dirties some ext cells close to this quest, so can't tell at a glance)
Attachments
TR_q2-16-Mis_Theo_3.esp
(60.97 KiB) Downloaded 234 times
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

I have checked the file and nothing is missing. All the unnamed cells can be removed.

The key locations are
"Erethan Plantation"
"Pedivur's Tower"
and
"Harru Cavern"
THEO
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

(really like that Shamirr blows himself up btw)

From only looking in the CS - haven't played it at all, so may not all be relevant and may have missed some:





llarys

- Greeting 5, journal state 125 defaults to "So have you found Shamirr yet?"

- standard procedure is to not block a quest forever if initially refused unless there's a specific reason for it;
here in particular having the choice between "No, thanks." and "Not right now." would let the player expect to be able to change their mind
(easy to add the choice again on Shamirr entry:"I am sure we will find it sooner or later even without your help." + checking Restart on journal state 10)

- not important but, Shamirr "I am starting to grow impatient. Any news about that cat?" could be one entry instead of 4
(by conditioning the "tell what happened" answers on journal states instead)

- Shamirr, "You did your part. Now let me do mine." conditioned as catch-all for journal>40 , looks like it's going to break the quest eg if journal = 50, 60 or 70.
should probably be positioned under those entries? ("I am starting to grow impatient. Any news about that cat?)

- Dras Varethi, "He lives in a Harru cave, I believe."...
should exclude journal=40 (so player doesn't pick that before telling Llarys about finding him)





pedivur

- Shamirr, "I already told you all that I had to say. I am not interested in this story any further. Period."
this entry from Pedivur could be obtained without having ever spoken to her (if Llarys killed... don't think the slave can be found without talking to her?) Could exclude those cases or use her controlQ local variable (exists by default in the NPC script) to make sure that isn't the case





wizard

- Shamirr, "Very well! After I turn your corpse into my minion, you will never see light of a day again!"
dunno whether it can cause trouble but resultbox "Journal TR_m2_A8_5_FreeAtLast 60" has two whitespaces

- Shamirr, "As I said, do with it whatever you want." should exclude journal=60

- Dras_Varet's Greeting 1: going with Choice 2 -> 1 -> 5 gives the "He belongs to Erethan Plantation" choice twice in a row, might or might not be weird &/or unintended

- Greeting 1, "What made you think I would do any deals with YOU?! I have only one proposal for you to consider -- Get lost from my cave or I will turn you into one of my undead minions. How does that sound to you?"
the answer that resultbox choice 6 ("Alright, alright! I am leaving.") leads to doesn't make sense

- Disposition requirement changes, can have weird results: you get the offer to buy at disposition 25 from greetings, but afterwards it gets blocked on topic Shamirr if under disp 50





slave

- Greeting 5, two of Shamirr's entries are for Choice=2 but you never get that option (choice is always 1,3,4) so they'll never appear; what were they supposed to be for?
"Dras Varethi promised to unlock Shamirrs bracers. Perhaps %PCName could talk to him. %PCName could also steal the key from Erethan plantation."
"Now that Dras Varethi is dead the only chance to unlock Shamirrs bracers is to get the key from Erethan plantation."

- Greeting 5 "Shamirr has no words for %PCName. Shamirr has to think about his plan so that masters did not capture Shamirr again."
should have a different (Goodbye?) entry for recaptured states 100 & 120

- Shamirr has default Slave dialogue eg. on topic "go free"; since it's preferrable to keep his class for generic dialogue conditioning, should probably add the option to free him from this topic as well if the PC has the key

- likewise topic "unlock Shamirr's bracers" should also have the standard vanilla result:
Set FreedSlavesCounter to FreedSlavesCounter + 1

- since there is now an Erethan slaves key, the other slaves there should probably be freeable too. How do we go about freeing slaves while they're still in a "civilian" situation? something about keeping their bracers on till they find an occasion to slip away and not drop them intead of default behaviour? or perhaps the slaves should say something about shamirr before/after the quest depending on results? so as not to trust the PC if captured him

- do TES slaves really use "messa" for master?






scripts:



didn't look at scripts much yet, but at a glance


- some have inconsistent spacing (which again might or might not cause trouble)

Code: Select all

if (GetDistance Player < 1024 )
- TR_m2_q_A8_5_Midave_Larys shouldn't give a journal update ondeath if the quest wasn't started

- TR_m2_q_A8_5_Shamirr also has double whitespaces ( GetJournalIndex TR_m2_A8_5_FreeAtLast == 30 ),
probably not a problem but would still avoid it

- think good practice is to regroup ifblocks when possible eg

Code: Select all

If ( GetJournalIndex TR_m2_A8_5_FreeAtLast < 30 )
...
endif

If ( GetJournalIndex TR_m2_A8_5_FreeAtLast  == 30 )
...
endif

If ( GetJournalIndex TR_m2_A8_5_FreeAtLast  == 50 )
...
endif
etc. becomes

Code: Select all

If ( GetJournalIndex TR_m2_A8_5_FreeAtLast < 30 )
...
elseif ( GetJournalIndex TR_m2_A8_5_FreeAtLast  == 30 )
...
elseif ( GetJournalIndex TR_m2_A8_5_FreeAtLast  == 50 )
...
endif
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

Thanks rot, these are really good comments. I have fixed them and uploaded new file. Only some comments:

- The inconsistent and moody behaviour of the wizard is part of a way I wish to portray him, but I made the disposition requirements for selling the slave equal.

- The key is named "key from Shamirr's bracer" and unlocks his bracers only. But perhaps it should be turned to unversal key for Slaves in Erethan plantation and handled in a way you suggest.

- Would it be maybe reasonable to cancel the topic 'unlock Shamirr's bracers' and edit the topic 'go free' instead?

- Not sure about the messa.

- I was also continuing to playtest the quest and have noticed that the fact that Shamirr blows himself up results in bounty on Players (?) head. Perhaps putting a fire damage curse on him instead could be a workaround to that scripting bug?
THEO
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

Theo wrote: - Would it be maybe reasonable to cancel the topic 'unlock Shamirr's bracers' and edit the topic 'go free' instead?
If it still makes sense when used with the wizard; I think you needed 'unlock Shamirr's bracers' to ask him about it? Otherwise either redirecting to the chosen topic or using both are fine imo.

Theo wrote: - I was also continuing to playtest the quest and have noticed that the fact that Shamirr blows himself up results in bounty on Players (?) head. Perhaps putting a fire damage curse on him instead could be a workaround to that scripting bug?
Ya I think that's a bug with death from damage spells cast by the AI, so it should work with a curse -(if not, can have a weak fire effect for show and manually kill him by script)
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Theo, please remove the dependency on TR_Mainland.esm and work with the [url=http://www.tamriel-rebuilt.org/old_forum/viewtopic.php?p=322056#322056]TR_Mainland.esp[/url] active instead. Otherwise testing becomes a real pain.
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

I have finished my work. I am uploading the independent file, you can test it with esp. If you will merge it with esp just remove all the non-quest related NPCs and monsters from Harru cavern.
THEO
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

So is there any problem with the new file? Can this be moved to review_?
THEO
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

(haven't been very diligent in sorting things between Claimed and Review, sorry)

Sending to review, hopefully there are no more viewing authorisation issues (and if so making Reviewing boards public for other categories might solve theirs too)
rot
Lead Developer
Posts: 696
Joined: Sun Oct 21, 2012 10:34 pm

Post by rot »

is on new browser
Locked