q2-17-Mis

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

Moderator: Lead Developers

Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

q2-17-Mis

Post by Why »

Claim type: Quest
Claim ID: TR_q2-17-Mis (#1961)
Faction: Misc
Parent claim: TR_2-37-Ind (#100)
Claimed by: rot
Status: Approved (Progress: 100%)
Location: 1:(3645, -1859):0
Files: TR_q2-17-Mis_adamantum_9.esp; TR_q2-17-Mis_rot_1.esp; TR_q2-17-Mis_rot_10.esp; TR_q2-17-Mis_rot_2.esp; TR_q2-17-Mis_rot_3.esp; TR_q2-17-Mis_rot_4.esp; TR_q2-17-Mis_rot_5.esp; TR_q2-17-Mis_rot_6.esp; TR_q2-17-Mis_rot_7.esp; TR_q2-17-Mis_rot_8.esp; TR_q2-17-Mis_rot_9.esp

---

Walk the Talk

Journal Entry: TR_m2_wil_Between
IDs: TR_m2_q_A8_6_
Quest Giver, Location: Orc at Inn Between

The orc standing around in the tavern wants you to play a prank on an annoying regular: the self-proclaimed vampire hunter (a Nord) on the top floor. He suggests that you frame the Redguard duelist (who is also not very popular due to his arrogant "no time for you" behavior) as a possible vampire (as in: why does this guy always go out at night?). Whatever conversation or conflict ensues will surely be fun, and probably the best use for the stupid Nord. The orc suggests you to get some booze for maximum lulz.

You can talk to the Redguard and ask him what he is doing out there at nighttime; he will say he is looking for treasures in Dun Akafell.

You can talk to the Nord and tell him about the Redguard being out at night. If you have heard him mentioning Dun Akafell, the better; this will convince the Nord that he really is a vampire. Alternatively, offering some booze can do the trick. There could also be different ways to get the Nord convinced. [BC Note: Because the hunter's a bit dumb, I was going to have the player either plant or 'discover' some vampire dust about the duelist - because obviously vampires shed dust all the time]

Once the Nord is convinced, he stops the Redguard and it comes to a scandal on the ground floor of the tavern. If the Nord is sober, the thing cools down soon. If the Nord is drunk as well, a fight ensues. I assume the Nord gets killed, although really it's up to the claimant to decide (and probably the player should have a way to help either side as well); anyway the survivor either leaves the place (if it's the Redguard) or is banned (if it's the Nord).

I don't know what suitable rewards / aftermath the quest should have. In the event of a deadly fight, the orc should be somewhat shocked about the stupidity and might end up saying that orcs shouldn't scheme.

(feel free to improve too)
Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

Post by Why »

This is now open for claiming. Not had this originally but she's busy with other things.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Here's one more idea for a little quest involving Eifid. It requires someone who feels able to write dialogue for Eifid (I don't).

Basically some of his dialogue should contain a hint about the existence of a vampire in some ruined chambers of Bisandryon which haven't been entered for years. This should give a journal update, similar to how M'aiq gives you a journal update about Boethiah's sunken shrine. When you kill the vampire (he already exists: Bisandryon, Sunken Chamber; but he should drop some unique item for you to show Eifid), you can tell Eifid and he'll accept you as the better vampire hunter. (Possibly he even gives up telling his stupid stories. :) )
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

Claiming. Here's what I had in mind:

Hozgub doesn't like how everybody in the inn think he's stupid (being an orc), so he decides to play a prank on them (topic: Hozgub's joke).
First stage: The player should convince Eifid that Kaye is a vampire. There are a few ways to do this:
- High enough speechcraft and disposition. I think I'll even give the player a chance to repay Eifid in kind for those boring stories, and tell him a similar one that he made up, where Kaye turns out to be a vampire in the end. It should be fun.
- Planting some vampire dust near Kaye's chair (I'll make a new activator on the bottom floor), and showing some more to Eifid.
- Getting him drunk. Requires a few tankards of mead.
I might think of more ways to convince him in the meantime.
Second stage: Eifid goes downstairs and confronts Kaye. The player will be able to influence the outcome in some ways, I'll decide how later.
Third stage: The confrontation is over. They either didn't fight at all, or one of them is dead, or both of them are. The reward depends on the outcome.

I'll think more about the second and the third stage along the way.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

I'm kinda unhappy with this being claimed before q2-27 is merged, because q2-27 puts a script on Hozgub and gives him some nontrivial dialogue that you should keep in your mind (it shouldn't be easy to tell two different writers apart by the dialogue on one and the same NPC). Can you open the latest q2-27 file and check that whatever you're doing doesn't conflict with his script and is in line with his speech style? It's not impossible to do this claim until q2-27 is merged, but it's easier to make mistakes this way.
adamantum wrote:Hozgub doesn't like how everybody in the inn think he's stupid (being an orc), so he decides to play a prank on them (topic: Hozgub's joke).
Yep. You can play with Orc stereotypes. Hozgub was sent to root out a bandit cave, but he hasn't done so since the traps chickened him off. While this alone doesn't speak highly of his intellect, some patrons might even think he couldn't find the cave (that was the original quest plan back before I changed it).
adamantum wrote:First stage: The player should convince Eifid that Kaye is a vampire. There are a few ways to do this:
- High enough speechcraft and disposition. I think I'll even give the player a chance to repay Eifid in kind for those boring stories, and tell him a similar one that he made up, where Kaye turns out to be a vampire in the end. It should be fun.
Not sure this needs a speechcraft check.
adamantum wrote: - Planting some vampire dust near Kaye's chair (I'll make a new activator on the bottom floor), and showing some more to Eifid.
Not sure this looks nice. Try "he always leaves at nighttime". Eifid won't know since he never checked, being the armchair adventurer he is, but he is not going to admit.
adamantum wrote: - Getting him drunk. Requires a few tankards of mead.
I might think of more ways to convince him in the meantime.
Second stage: Eifid goes downstairs and confronts Kaye. The player will be able to influence the outcome in some ways, I'll decide how later.
Third stage: The confrontation is over. They either didn't fight at all, or one of them is dead, or both of them are. The reward depends on the outcome.
Both of them dying is a bit difficult. If I were you, I'd script-force one of them to survive (depending on some choice you made, like warning Kaye or getting Eifid hammered), but this is just a personal preference of mine and you're free to do as you wish.
Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

Post by Why »

arvisrend wrote:
adamantum wrote:First stage: The player should convince Eifid that Kaye is a vampire. There are a few ways to do this:
- High enough speechcraft and disposition. I think I'll even give the player a chance to repay Eifid in kind for those boring stories, and tell him a similar one that he made up, where Kaye turns out to be a vampire in the end. It should be fun.
Not sure this needs a speechcraft check.
I'm not against speechcraft checks as long as there's an alternative and it's reflected in dialog. It might take a bit of work, but I can imagine the player telling a crappy unconvincing story with low speechcraft and a better one which does convince the guy with higher speechcraft. Make sure there's an alternative to get both outcomes though.
arvisrend wrote:
adamantum wrote: - Planting some vampire dust near Kaye's chair (I'll make a new activator on the bottom floor), and showing some more to Eifid.
Not sure this looks nice. Try "he always leaves at nighttime". Eifid won't know since he never checked, being the armchair adventurer he is, but he is not going to admit.
The nighttime thing is overused a lot though. Maybe just giving Eifid a handful of Dust and claiming you found it in Kaye's room is enough, again, he won't check if he's been tricked into tunnel vision.
arvisrend wrote:
adamantum wrote: - Getting him drunk. Requires a few tankards of mead.
I might think of more ways to convince him in the meantime.
Second stage: Eifid goes downstairs and confronts Kaye. The player will be able to influence the outcome in some ways, I'll decide how later.
Third stage: The confrontation is over. They either didn't fight at all, or one of them is dead, or both of them are. The reward depends on the outcome.
Both of them dying is a bit difficult. If I were you, I'd script-force one of them to survive (depending on some choice you made, like warning Kaye or getting Eifid hammered), but this is just a personal preference of mine and you're free to do as you wish.
Try modifying their stats (primarily hit points, I suppose) based on your previous actions, to ensure the right one wins if the player doesn't interfere. Don't make them invincible though, the player might just decide to join the fray. Oh, and about the booze, make sure you require quite a lot of it (but do show progression after each shot, otherwise players might think it doesn't work), I've had enough of game characters getting drunk after just a couple of drinks, a Nord should be able to hold his alcohol quite well.

Granted!
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

I didn't know about q2-27, but now I do, and I'll be careful not to do anything that would conflict its story. I might also make the dialogue slightly different depending on the stage of the other quest. And I'll make sure Hozgub's speech style is similar.

The vampire dust planting and speechcraft check was meant to make the player do more work for the quest - why would you sacrifice valuable vampire dust or mead if you don't have to. There will be both a crappy story and a good story, and no more dust planting, only dust giving.

The scenario where both of them die is just in case player decides to kill both of them for teh lulz, and I was thinking about 4-5 tankards of mead, since that barmaid has that many in her inventory. Guess that should be enough to get him tipsy enough.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

The stage of q2-27 shouldn't be very relevant to the dialogue; it doesn't change his standing in the tavern. What you have to care about is the script and the style, as I said. If this was Skyrim, you could just ignore the q2-27 script on Hozgub and give him a second script for your quest, but in Morrowind this isn't that easy. That said, maybe you don't need a script on him at all.
adamantum wrote:The scenario where both of them die is just in case player decides to kill both of them for teh lulz
Ah, that's ok.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

q2-27 has now been merged into TR_Mainland (see http://www.tamriel-rebuilt.org/old_forum/viewtopic.php?p=308156#308156 for the link).
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

Just a tiny update: I think I've finished the journal entries covering more-less all scenarios. But I'm sure I'll add more along the way. The dialogue is next, and then I'll script the crap out of this quest.

EDIT: Another small update - I'll just edit it into this post. Finished most of Hozgub's dialogue and the booze scenario for Eifid. Also did a bit of scripting - since Hozgub already has a non-trivial script on him, I'll be scripting him by using global scripts. I'll get to finishing Eifid's dialogue later.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Some scripting stuff:

Code: Select all

;------------------------------------------------------------
; The TR_m2_NPC part starts here...
short TR_Map
short control
short controlQ

if ( TR_Map == 2 )
	return
endif

set TR_Map to 2
;------------------------------------------------------------
;...and ends here.

if ( ( GetJournalIndex "TR_m2_wil_Between" ) > 30 )
	if ( walkstate == 0 )
		AiTravel 4012, 4407, 13952
		set walkstate to 1
		set timer to 0
	elseif ( walkstate == 1 )
		set timer to timer + GetSecondsPassed
		if ( timer >=30 )
			AiTravel 4012, 4407, 13952
								;just in case Eifid somehow gets stuck - reminds him to move
								;every 30 seconds.
			set timer to 0
		endif
	endif
		
endif
This is the wrong way round: the "if ( TR_Map == 2 )" block should be at the very end, because of the "return" that would otherwise render the rest of the script inoperative.

Also, "short timer" should be "float timer". You don't want it to be incremented by 0 every frame ;)

The getdistance check in TR_m2_q_A8_6_HozgubGlobalScript is too costly in terms of computing power; it should be inside an "if ( GetPCCell "The Inn Between" )" or something similar. Otherwise, from the moment when you start the quest until its completion, the script will spam getdistance checks every frame.

Why did you modify a TR_in_MH_int_floor in The Inn Between?

I haven't looked at the dialogue yet, but I hope the above was of use.
Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

Post by Why »

Feel free to replace

Code: Select all

if ( TR_Map == 2 )
	return
endif

set TR_Map to 2
with

Code: Select all

if ( TR_Map != 2 )
	Set TR_Map to 2
endif
I never quite understood why we use the first version anyway. If it's a script performance thing the impact should be negligible and all it does now is complicate scripting. We should probably consider a TR_Data side fix for this.
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

Ah yes, I didn't notice that return in the TR_m2_NPC. The getdistance spamming is supposed to last only for a few seconds - after the player talks to Eifid, he should go downstairs, and be ForceGreeted by Hozgub. But I guess he could always just go outside or something. Added a cell check, it will be in the next update. Also, the file is still somewhad dirty - I'll clean all the unwanted modifications later, of course...

EDIT: Finished the first version of the 'telling a story' scenario and also some other dialogue and scripting. Reactions to the outcome of the battle are next.

EDIT 2: Worked on the battle between Eifid and Kaye, did some playtesting and bugfixing. The file is still pretty much a mess, but I'll sort it out later. The battle scripts also do some weird stuff, I'll have to debug them step by step...
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Not sure what this is for:

Code: Select all

	elseif ( state == 2 )
		if ( Tr_m2_Kaye->GetHealth < 10 )
			if ( Tr_m2_Kaye->GetHealth <= 0 )
				Resurrect Tr_m2_Kaye
				Tr_m2_Kaye->setHealth 10
			endif

			set state to 3
MessageBox "Eifid 3"
		endif
But anyway, getHealth less or equal to 0 is not equivalent to the NPC being dead. When an NPC dies with a healing spell active (this is quite likely if the player decides to heal the NPC but isn't fast enough), the health never drops below 0 (and often stays heavily in the positive). I'm also not sure about the Resurrect thing; it might break the script (as in: resetting all variables, etc.). If the purpose of this piece of code is to ensure that Kaye doesn't die, you should do it differently. Here is what I did in TR_m2_q_27_HeelKurSCN:

Code: Select all

	if ( gethealth < 40 )												; as long as he is following the player,
																			; Heel-Kur should not be able to die except
																			; if the player wants him to.
		if ( GetInterior != 1 )
			if ( PChitme < 3 )
				ModCurrentHealth 15
			endif
		endif
	endif
The "GetInterior != 1" part is just to make sure that this block doesn't run in ints (where only the player can attack Heel-Kur). In your case it should probably be "GetPCCell "The Inn Between" == 1". The PChitme variable is set in the following block:

Code: Select all

; The following counts how often the player hits Heel-Kur, so that Heel-Kur loses his
; scripted immortality if the player REALLY wants to kill him.
if ( OnPCHitMe == 1 )
	set OnPCHitMe to 0
	set PChitme to PChitme + 1
	if ( PChitme >= 3 )
		startcombat player
	endif
endif
It makes sure that if the player *wants* to kill Heel-Kur, he loses his immortality after 3 hits (less than 3 hits are considered accidental friendly fire). This stuff requires the variable short OnPCHitMe to be declared in the script.

Note that the numbers 40 and 15 in the above code

Code: Select all

	if ( gethealth < 40 )												; as long as he is following the player,
																			; Heel-Kur should not be able to die except
																			; if the player wants him to.
		if ( GetInterior != 1 )
			if ( PChitme < 3 )
				ModCurrentHealth 15
			endif
		endif
	endif
should be increased in your case; I made them with nixhounds and kwama foragers in mind, but you have to account for a mage and a duelist fighting each other, and they will usually make way more damage.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Re: q2-17-Mis

Post by arvisrend »

Something else... TR_m2_q_A8_6_HozgubGlobalScript:

Code: Select all

if ( GetJournalIndex "TR_m2_wil_Between" > 40 )
	StopScript TR_m2_q_A8_6_HozgubGlobalScript
elseif ( GetPCCell "The Inn Between" )
	return
endif
Do you really want to return if the player is in the Inn, rather than if the player is NOT in the Inn?

Journal entries:

10: typo "adventures"

30: typo "convincig"

150: [url=http://www.bordom.net/view/27106/You_Spelled_Congratulations_Wrong]typo "congradulated"[/url]

190: replace "them" by something like "the two adversaries"

200: "humor", not "humour" (we use AE, alas)

In other news, the claim looks very promising. You're doing good work and I really appreciate how you're not trying to simplify your life by linearizing this quest.
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

Now, about those battle scripts. They aren't doing weird stuff anymore, they don't seem to be doing anything now. At least the Kaye's script. It's down there in the text file.

I've looked thoroughly and I can't find what is wrong with it. It is almost the same as Eifid's script, but it just doesn't work. The player speaks with Kaye, asks him for a duel, Kaye accepts, and then he is supposed to wait for the player to remove his weapon and draw his fists. This part used to work fine, and I didn't change anything crucial, but it doesn't work anymore. Is it something with the script or is the save file messed up or what? Any ideas

EDIT: I also removed the resurrection (we'll just have to assume none of them does more than 50 damage) and fixed the typos. Thanks for pointing them out avisrend.
Attachments
Kaye's script.txt
The script on Kaye
(2.48 KiB) Downloaded 206 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Hmm, I'm getting some worse issues:

[url]http://i.imgur.com/i8jdT.jpg[/url]

I think the line that is too long is not in the script, but in the dialogue result:

Choice "Actually, that is quite strange. His skin looked too dark for a vampire, so I concluded he was a Redguard before he turned into that beast. And there was one more thing, his whole left arm was armored, I could see it shine on the moonlight. He soon finished with the poor miner, and I followed him further to this very inn. I couldn't enter right away or he would suspect I knew about his dark side. I waited some time, and here I am now. Do you think it could be Kaye?" 60 "I'll tell you the end a bit later." 9

(Morrowind error messages often falsely refer to dialogue results as scripts on the respective NPC.)

Note also the doubled Eifid: I guess this is related to your file not using the newest TR_Mainland.esp (get it from the latest post at http://www.tamriel-rebuilt.org/old_forum/viewtopic.php?t=21859&start=440 ) and the newest TR_Data.esm (get it from http://tamriel-rebuilt.org/esp/browser.php , along with the 7z).

Now about the Kaye script. What do you mean by "is the save file messed up"? When you change your ESP, any savegame which was saved with the old version becomes useless (it will show bugs which aren't there), unless your only changes were in dialogue and statics.

There are some issues with the script itself, too: the "timer" variable, for instance, is used but never declared (you commented out the declaration). My guess it that this kept the script from properly compiling.

Hope this was of help.
Last edited by arvisrend on Sat Oct 06, 2012 11:58 am, edited 1 time in total.
User avatar
6plus
Developer
Posts: 154
Joined: Sun Apr 24, 2011 10:18 am

Post by 6plus »

1. At stage == 1 you should delete one of the MessageBox commands (two messages in one frame should be avoided)

2. During the last part (if Kaye dies) you should use OnDeath instead of GetHealth <= 0

3. I don't know Kaye's fight settings, but if it is too low you'll need...

Code: Select all

StartCombat Player
SetFight 100
and...

Code: Select all

StopCombat Player
SetFight 30
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

Yeah, it was the choice string. I didn't know there was a length restriction on the choices, and now I have to think of a better way to tell the story... Maybe using MessageBox in the dialogue? I'd hate to cut every choice string in half, and it wouldn't look nice at all.

I've commented out the timer because I thought it wasn't needed - I forgot that I used it again later. There was a block that showed a 'Kaye script running' every 5 seconds in the script, and I thought it wasn't needed anymore when I removed it. Anyway, that's not what was causing the problem. I also noticed that the saber, which the script was supposed to interact with was not made persistent, so I fixed that too, but the problem is still here.

The doubled Eifid is because I moved him. In TR_Mainland, he is placed too close to that bench behind him, which causes him to get stuck when I use AiTravel. He then spins around for a few seconds, and then teleported to the next pathgrid node. Is there a way of moving him without causing the doubling and dirtying the file? I could do it using his script, but it'd be better if there was an easier way.

EDIT: Disregard the first part of this post, I've solved most of it :D (it was bugged due to the dirtiness). Two problems still remain though - the saber script and the storytelling.
The sabre can't seem to appear when I tell it to do so. I've handled this by editing its variable, 'state' . If state=1, it should enable itself, if state=0, it should disable itself, but it doesn't work, it never enables itself. And when I try TR_m2_blahblahblah_KayeSaber->show state, it can't find the variable. Any ideas why is that?
About the storytelling - since I can't put whole strings in choices, I have a few options:
- Cut the strings in two and double the number of topic entries. I really wouldn't like doing this as it would be the most time consuming, and it would harm the story flow, by making Eifid constantly interrupt you ("go on", "go on", "go on").
- Make two choice strings instead of one. Both of them would point to the same choice result, but they won't get highlighted at the same time. Probably most convenient for me, but it might seem that the player is telling either one half or the other, not both.
- Use MessageBox. The result box would look like this:
MessageBox "My story begins blah blah blah"
Choice "...(blah blah blah continued)" 20 "I'll tell you this story some other time perhaps" 9
The problem with this is that the messagebox content would stay visible regardless of what the player chooses. If he chooses the 'I'll tell you later' option, it would still look as though he told Eifid half the story and then changed his mind.
- Put one half of the story in the dialogue itself. The topic entry would now look like this:
[...I was staying at an inn over there, when strange rumors started circulating.]
That is interesting. Tell me, what were those rumors about?
The problem with this is that it would look like Eifid was telling a half of the story instead of player doing so.

What do you think is the best option? Or should I do something else?
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

About moving Eifid, I can do that in the mainland this evening (not right now, though).

About the saber, are you sure the variable is called "state" and not "isenabled"?

I don't know the best way to fix the dialogue, I'd split it in half... Apparently MW was never made to have the player tell stories.
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

arvisrend wrote:About moving Eifid, I can do that in the mainland this evening (not right now, though).

About the saber, are you sure the variable is called "state" and not "isenabled"?

I don't know the best way to fix the dialogue, I'd split it in half... Apparently MW was never made to have the player tell stories.
There is no need for moving him anymore, I've done it in his script, and everything goes smoothly now. I've renamed it to see if it would change anything - I don't know how it's called in the latest file, but it is called state now. Anyway, it didn't change anything, and the script still isn't working. I'll probably rework it to depend on journal indexes if I can't get it to work like this.
I'll see if I could make the storytelling work somehow. If everything fails, I think I'll just add placeholder topic entries (Eifid saying '...') and work with that. There obviously isn't a pretty way of doing that, so I'll try to find the least ugly one.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

It would still be nice if you could upload your latest version so we have a better chance at finding out what's causing the mess.
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

The new file is up (it's the 7th one, not the 6th one that is currently on top of the list), and most of the scriptmess seems to be fixed. I've also finished the storytelling - and I found out that a choice string can be 200 characters long at most (which is strange, I was honestly expecting 256). So there you go, if anyone else ever needs this information.
Anyway, the saber is disappearing and appearing like it should, and the battle goes as it should. I have yet to write a few closing dialogue entries for Hozgub, and probably some misc entries for the other patrons. The core of the quest is almost finished though.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

@adamantium: great to hear! Will look at your quest once I'm done with rats.

Drop the optimization in TR_m2_q_A8_6_HozgubGlobalScript (getdistance is only being called inside the Inn, where it doesn't matter much) and replace the distance 100 by something like 400 plus GetDetected (yes, GetDetected is an even slower function, but still, we are in an interior and this script is not going to run for long). The GetDetected is needed to ensure that Hozgub won't greet the player with "Who's there?".

Eifid should also have closing dialogue: one reply for directly after the fight, and one for when he has sobered up.

It seems that a big problem with this quest is getting the right topics. I need to learn the "The Inn Between" topic to even start it; I think it should be linked from Hozgub's greeting. Also, is "mead" the only topic one can use with Eifid to incite him against Kaye? It seems I'm missing some more topics...
Last edited by arvisrend on Wed Oct 10, 2012 8:54 pm, edited 1 time in total.
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

OK, Hozgub's script will be redone in the next upload. I am yet to work on the closing dialogue for this, so there would be more greetings - I'll tie them up to the journal index.
I've also noticed that problem, and I'll fix it in the next upload. When I used an earlier save file in which I didn't yet learn the "Kaye" topic, I had to add it manually in order to tell stories and give dust to Eifid. I'll look into that too, it shouldn't be too complicated.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

The easy way to solve the "Kaye" problem is to make Hozgub have a "Kaye" topic where he tells you his opinion about the redguard (and optionally an "Eifid" topic as well).
User avatar
adamantum
Developer
Posts: 198
Joined: Mon Jun 25, 2007 10:31 am
Location: Belgrade / Velika Plana

Post by adamantum »

This one is nearly done. Just to hunt down all the bugs, or maybe make a topic entry or two. The missing topics are fixed, and I've removed the debug message boxes. If anyone notices something that I overlooked, please let me know.

EDIT: Finished.
Why
Lead Developer
Posts: 1654
Joined: Sat Jul 04, 2009 3:18 am
Location: Utrecht

Post by Why »

Great, to reviewing we go then!

Small note, please do post when you finish a claim rather than edit as edits are easy to miss. Even when it'd be a double post, in this case.
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Minor edits made, yet far from a real review. I am not happy about the dialogue, but it isn't something I could have done any better. Parts of it could use some improvement, though most of it is good.

In the script on Eifid, you had this:

Code: Select all

			set timer to timer + GetSecondsPassed
			if ( timer >= 5 )				
				if ( ( GetPos x ) == tempx )
					if ( ( GetPos y ) == tempy )				
						AiTravel 4287, 4686, 13952
										;just in case Eifid somehow gets stuck - reminds him to move
										;if he haven't moved for 5 seconds.
					endif
				endif
			set timer to 0	
The "set timer to 0" instruction would ensure that timer would never become 5 (unless the game lagged so much that a frame took at least 5 seconds), rendering the preceding if-block useless. I've put the instruction inside the if-block. Also, fixed some indentation, optimized around a bit, and replaced GetHealth by OnDeath (OnDeath isn't a panacea but here it won't fail).

In TR_m2_q_A8_6_HozgubGlobalScript, I moved the

Code: Select all

if ( GetPCCell "The Inn Between" != 1 )
	return
endif
block to the beginning, since nothing in this quest happens outside the Inn (at least in the way it has been implemented). The distance limit for Hozgub's forcegreeting is now 250 rather than 150. Also, replaced "getDetected" by "getLOS" (as in: "TR_m2_Hozgub gro-Hazor"->getLOS, player == 1). This is very important! getDetected means *any* NPC has spotted the player, not necessarily Hozgub.

In the script on Kaye, I gave him a hand-to-hand skill of 58 when he attacks the player. Also, minor optimization done (look at the diff file I uploaded below).

I've fixed a few dialogue typos as well (notice the difference between "adventure" and "adventurer"). Removed mention of "that trapped cave" in Hozgub's dialogue, replacing it by something more subtle. The dispo requirement for starting the quest is now 50, rather than 70.

Redguard vampires aren't anything strange, so I've deleted that part of the dialogue.

Also done some cleaning (with TESAME).

Along with the ESP file I'm also uploading text dumps of the file before and after my edits. Comparing them with a tool like [url=http://kdiff3.sourceforge.net/]kdiff3[/url] should show what I've done (disregard the "MODL: Model:base_anim.nif" lines; the CS seems to insert them at random, and they don't have any effect).
Attachments
dump2-17-after.txt
Text dump of ESP using tes3cmd after edits.
(108.33 KiB) Downloaded 72 times
dump2-17-before.txt
Text dump of ESP using tes3cmd before edits.
(107.77 KiB) Downloaded 104 times
TR_q2-17-Mis_adamantum_10.esp
New version of claim.
(68.27 KiB) Downloaded 88 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Okay, this is weird and must be fixed: If I let Eifid attack Kaye without notifying Kaye, then Kaye falls down, Eifid asks me whether to finish him, I say No, then before the dialogue window closes Kaye suddenly declares Eifid to be beaten and asks me whether I want to him finish Eifid Kaye (in the same dialogue window). Maybe some script fails to check for MenuMode == 0, but there seems to be a deeper issue. I'll look at it later today.

http://www.tamriel-rebuilt.org/old_forum/files/wtf2_840.jpg
Attachments
wtf2.jpg
(268.9 KiB) Downloaded 8 times
User avatar
Haplo
Lead Developer
Posts: 11651
Joined: Sat Aug 30, 2003 6:22 pm
Location: Celibacy

Post by Haplo »

Also that last sentence should have the "yet" removed, and the "ask you - what shall" should be "ask you--what shall"
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
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Thanks, Haplo; I should have noticed that!

Minor fixes made; the bug I reported above should now be history. Again, diff the new dump file against the previous "after" version if you want to see what I changed.

Unfortunately, three big UNFIXED ISSUES remain:

1) The "kill or let live" forcegreetings are both Greeting-5's, which means that certain other greetings (PC Vampire and possibly disease?) can take precedence over them. While this can (and probably should) be fixed by moving them over to Greeting-1, there is a further issue:

2) If there is no LOS between the NPC and the player during those greetings, they just become "Who's there?", even if they are Greeting-1's. This allows both Kaye and Eifid to die. Loss of LOS can happen for various reasons, not only because the player walks away during the fight; for instance, the two fighters can move up the stairway. I don't know what exactly to do about this; it's not completely trivial to freeze the combat until the player is in sight of the NPCs involved.

3) Post-quest dialogue is still lacking, particularly in the case when Eifid kills Kaye.
Attachments
dump2-17-newer.txt
(106.79 KiB) Downloaded 71 times
TR_q2-17-Mis_adamantum_11.esp
(68.51 KiB) Downloaded 58 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

More changes made, solving unfixed issue 2 from the above post. #1 and #3 still remain.

Comments on some changes:

- Comparing two floats for equality is generally a very bad idea. In Morrowind scripting it *sometimes* works, but one shouldn't build on that expectation. Comparing a float with a short is an even worse idea. Here is a reasonable way to find out whether an NPC has moved within a timeframe of 5 seconds:

Code: Select all

			;just in case Eifid somehow gets stuck - reminds him to move
			;if he haven't moved for 5 seconds.
			set timer to ( timer + GetSecondsPassed )
			if ( timer >= 5 )
				if ( GetPos x < tempx + 15 )
					if ( GetPos x > tempx - 15 )
						if ( GetPos y < tempy + 15 )
							if ( GetPos y > tempy - 15 )
								AiTravel 4159, 4558, 13952
							endif
						endif
					endif
				endif
				set tempx to GetPos x
				set tempy to GetPos y   ;gets his position - will be used for checking if he moved	
				set timer to 0
			endif
(uses two short or float variables tempx and tempy).

- "Sethealth 1" can kill an NPC (I am not sure why). If you want to just make an NPC an easy target, try "Sethealth 2" instead.

- For some reason, NPCs sometimes stay forever in weapon-drawn position if they are knocked down in combat and then pacified (by the StopCombat instruction). I have fixed this issue here by removeitem'ing the weapons from the relevant NPCs, although I suspect that this won't be that easy to fix for fistfighters.
Attachments
dump2-17-ver12.txt
(109.24 KiB) Downloaded 74 times
TR_q2-17-Mis_adamantum_12.esp
(71.19 KiB) Downloaded 79 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

I wanted to do a review but again I only found time for a few fixes. So, first of all, unsolved issue #1 is fixed now: I've used "tes3cmd modify --replace" to change "Greeting 5" into "Greeting 1" everywhere in the ESP, then to replace the PNAM of the first added response and the NNAM of the last added response to two adjacent Greeting-1 response ID's from TR_Mainland.esp. It worked like a charm, and I suspect we could solve our other dialogue-tree issues this way if it wasn't for the additional complications that some of the responses are in TR_Mainland whereas others are in TR_Data.

Second, I've revamped (oops) the "mead" topic responses for this quest. Instead of copypasting the same response one time with condition "item potion_nord_mead >= 1" and another time with condition "item potion_nord_mead == 0", it is better to have only one response, and let an if-loop in the Result Script distinguish between the cases. Also, added a new reply to that topic.

Issue #3 remains to be fixed.

Do I see it correctly that the quest has basically the following three axes along which one has to distinguish cases in post-quest dialogue:

; TR_m2_wil_between quest variables:
short eifidconvinced
; eifidconvinced == 1 means the player convinced Eifid by showing him vampire dust.
; eifidconvinced == 2 means the player convinced Eifid by way of alcohol.
; eifidconvinced == 3 means the player convinced Eifid with a vampire story.
short kayewarned
; kayewarned == 0 means that Kaye has not been warned of Eifid, nor challenged to a duel.
; kayewarned == 1 means that Kaye has been warned by the player of Eifid approaching.
; kayewarned == -1 means that the player has distracted Kaye by challenging him to a brawl duel.
short punchline
; punchline == 1 means that Kaye has won (and therefore let Eifid live).
; punchline == 2 means that Eifid has won and let Kaye live.
; punchline == 3 means that Eifid has won and killed Kaye.
; punchline == 4 means that the player has killed Kaye.
; punchline == 5 means that the player has killed Eifid.
; punchline == 6 means that both Kaye and Eifid have been calmed before one could win. (Not
; accounted for at the moment.)
Attachments
dump2-17-ver13.txt
(105.01 KiB) Downloaded 91 times
TR_q2-17-Mis_adamantum_13.esp
(69.03 KiB) Downloaded 69 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Unsolved issue #3 should be resolved now, but I have not tested it ingame. Several new responses added, so it would be good if someone would look over them for grammar and style.

Also, there is another serious problem: The "celebration" variant (where Eifid is too drunk to be convinced that Kaye is not a vampire, but you get him to go upstairs for a "celebration") is not really functional. First, Eifid might bump into an NPC on his way upstairs and forget about his AI. This is easy to fix using a timer. Second, even when he arrives, he has nothing new to say. You can still finish the quest by talking to Hozgub, but this is clearly lacking something (and also, Kaye never wakes up from his scripted paralysis). I don't know how exactly we should fix this. My suggestion is that we make Eifid (on arrival) forcegreet the player, who can then give him another couple of meads (after which he falls down and you report to Hozgub) or tell him that this thing was a fake (which makes him RAGE but the laughter of the others convinces him that you might be right). Or do we even want him to go on a rampage in the inn? I figure this could be a nice thing, although it would require a lot more work.
Attachments
dump2-17-ver14.txt
(120.08 KiB) Downloaded 73 times
TR_q2-17-Mis_adamantum_14.esp
(81.01 KiB) Downloaded 79 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

More post-quest dialogue added (some more to go). Finishing stages made finishing.
Attachments
dump2-17-ver15.txt
(125.12 KiB) Downloaded 58 times
TR_q2-17-Mis_adamantum_15.esp
(83.87 KiB) Downloaded 88 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

More post-quest dialogue added. That's final for now, but detailing the "celebration" option will require adding more of it.

Post-merge to-do list:

- make Eifid and Kaye persistent, lest the quest break after 3 days of absence;
- ensure that Hozgub does have the changed script on him.
Attachments
dump2-17-ver16.txt
(127.13 KiB) Downloaded 110 times
TR_q2-17-Mis_adamantum_16.esp
(84.98 KiB) Downloaded 66 times
Last edited by arvisrend on Sat Jan 12, 2013 2:15 pm, edited 1 time in total.
User avatar
Haplo
Lead Developer
Posts: 11651
Joined: Sat Aug 30, 2003 6:22 pm
Location: Celibacy

Post by Haplo »

C-c-c-combo breaker! Nice sextuplet posting of progress, arvisrend :-)
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
User avatar
Not
Lead Developer
Posts: 542
Joined: Thu Mar 01, 2012 10:43 pm
Location: Elsewhere

Post by Not »

I'm going to take a good look at the dialogue for this one. Just figured I'd mention it'll probably have to wait till tomorrow. I'm not really feeling all that great all of a sudden. But I promise I will get to this one.
Not another memory

...And so my bad karma gets worse
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Just so that everyone knows, this is currently unfinished and can be taken by anyone (since Notling dropped it). Only a little part of the quest is missing, but it's the hardest part from the dialogue view.

Here is what's missing: Buy 5 mead (e. g. from the barkeep). Talk about "mead" to Eifid. While he walks down to the basement, challenge Kaye to a fistfight duel. Then, once Eifid has claimed victory, choose the "Wait, he won't go anywhere" dialogue, so that Eifid goes to the bar. When he has arrived at the bar, nothing happens; he just stands there and says "Meet me at the bar" although he already is there. The only way to finish the quest now is by talking to Hozgub about "Hozgub's joke", but that hardly makes sense.

What should happen: anything that would conclude the story in a believable way. My suggestion is this:

Once Eifid has arrived at the bar, he forcegreets the player (once he is sufficiently near and in sight). The player now has the following options:

A: Give Eifid another mead. This makes Eifid fall down (he already has drunk 4 pints of mead in this quest), and now you have good reason to talk to Hozgub and finish the quest.

B: Tell Eifid that he has been on the butt end of a prank. He goes into a rampage, possibly breaking stuff and/or attacking the barmaid, until someone (possibly the barmaid just mentioned) calm-humanoids him. This will require a lot of scripting which I can do.

C: Do nothing (this is to allow the player to buy some mead if he doesn't have enough for option A).

As I said I can do the scripting (and fix the existing bugs like Kaye not getting up, or Eifid getting stuck along his way to the bar); the problem is the dialogue for a drunk Eifid.

Anyone up to the challenge?
Locked