[Morrowind] Map 1 Beta 2.0 Quest error reporting

Old and generally outdated discussions, with the rare hidden gem. Enter at your own risk.

Moderators: Haplo, Lead Developers

Rad
Member
Posts: 16
Joined: Mon Sep 05, 2011 11:54 am

Post by Rad »

I copy&pasted my text from another section of the forum.I was suggested to report this to have it fixed in new releases.

"Hello!
First of all, I'd like to commend you for this mod. For a guy that's finished every single quest in Morrowind/Tribunal/Bloodmoon and Oblivion, this is a most welcome refreshment.

I have a problem though. I've finished the long quest line with the Nord fiance and the inquisition to get the location of the perfect blade (again, it's a great job you did joining most of that town's quests together) and the Nord guy revealed it. He also gave me some potions.

I swam to the wreck site and found it. It was creepily stashed in the deeps. Swam to the ship itself hoping for a quick find-and-loot, but then is where my troubles started.

I went to the lower deck where all the skeletons are, but once I entered, I couldn't move from my place, I couldn't find an exit (so without a divine intervention packed, I'd drown), and I couldn't reach or even find the key with the given potions.

Is it bugged, or was I unprepared?
How do I finish this quest?

Thank you in advance! "


Or
Quest: The Search For The Perfect Sword.
Cell: Entrenched shipwreck
Location: Lower Deck
Error 1: My character is stuck to the ceiling when I enter and I cannot move.
Error 2: There is no reachable exit door once I enter the lower deck. But that might not be the case, since I cannot move my character to be able to see it. So, error 1 is probably the priority.

I'm not too sure if this comes under map one or two.
abot
TR Tester
Posts: 94
Joined: Sun Nov 30, 2008 11:58 pm
Contact:

Re: [Morrowind] Map 1 Beta 2.0 Quest error reporting

Post by abot »

some proposed script revision for Map1 in Mash script export text format, nothing critical but maybe useful if you like.

Also, is available/planned somewhere info (e.g. something like tables [url=http://www.uesp.net/wiki/Tes3Mod:Tamriel_Rebuilt/Transport]here[/url], but updated to next release) on how missing/unassigned shipmaster/riverstrider services NPCs/destinations will be updated in next release?
As you may know, me and Arcimaestro Antares are working on real time transport mods for TR area, knowing these things could probably spare us a little work.

Unrelated, but while I am writing...
I think the migration to TR_Mainland.esm vs. TR_Map1.esm + TR_Map2.esm could be less risky for people using mods with global scripts referencing persistent objects (e.g. Rise of House Telvanni.esm, many companion mods) if you would provide also a dummy, empty new TR_map1.esm with same timestamp as old TR_map1.esm (Mash has some handy empty .esp in Mopy\Extras\ folder, just rename one and copy it to .esm).
This way people could replace old TR_Map1.esm with new empty TR_Map1.esm and old TR_Map2.esm with new TR_Mainland.esm preserving load order/mod index for critical mods loaded after.
Attachments
TR_Map1_Scripts_revised.zip
(2.67 KiB) Downloaded 143 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Re: [Morrowind] Map 1 Beta 2.0 Quest error reporting

Post by arvisrend »

abot: This looks very nice but could you give a few comments on the logic behind?

- You didn't seem to do any changes to TR_m1_RelianeScript at all (either that, or we already incorporated them... or my kdiff3 sucks).

- In TR_m1_q50_GO5_Husband_scpt, you replaced OnDeath by GetHealth < 1; why this? Is some different script also accessing this OnDeath variable? Or is there a chance that the husband is dead before the state variable reaches 2?

- In most scripts, you replaced one way to avert divide-by-zero errors by another; apart from covering the case when the distance between the y's of player and NPC is between -0.05 and 0.05, what does it do?

- Script TR_m1_Q59_MaI_Script_4 was pretty much messed up; I see you fixed it. That one's well-done.

Thanks and please don't see this as a critique; I just like to know what these things exactly do before putting them into the file.

@Rad: yes, your bugreport is correct and will be fixed soon. The doormarker is misplaced. EDIT: fixed.
Last edited by arvisrend on Sun Apr 29, 2012 3:39 am, edited 2 times in total.
Theo
Developer Emeritus
Posts: 1683
Joined: Thu Dec 16, 2004 5:01 pm
Location: PRAGUE

Post by Theo »

What would really need reviewing is map 1 quests in general. They were made in times where there was little to no coordination on quest implementation. Some of them were even implemented without proper testing. There may be even orphan scripts and dialogue entries for quests that no longer exist or are not implemented. Highway robbery is the one I recall. Of course, players will never notice this, but the esp is somehow dirty and messy. If someone would look into this, he would help a lot.
THEO
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Moonraker0 wrote:8/30/2009 (19:42) TR_Map1.esm 11/29/2008 (03:28) Sam TR_m1_Q50_GO1_Trena00000000 Llothanis, Empty House 4188 4030 15603 "She asks if I know if Ansuma is spreading Temple propaganda and I have found out that he is not, but my only dialogue option is 'I don't know yet.'"
NPC: Trena Teltereneth
Topic: Ansuma Veloth
"found out that he is not" = asked him and he said no?
In that case, I don't think it is a bug; this should not be enough to convince anyone.
Or did you already get some more information?
Moonraker0 wrote:I'm not sure what to do with this, exactly...it's a quest error, but there is seemingly no topic for reporting quest errors with Map 2. But here it is anyway.
Cell: Boethian Mountains Region 30, 3
Type: Quest error
Location: Shrine of Solitude
Error: Does not accept a noble sedge flower like it should; the script was found to check for a horn lily bulb instead.
I'm making it a noble sedge flower.

EDIT: completely fixed:
page 3 Haplo's post 1 (alits)
page 3 Haplo's post 3 (Dral realm)
page 3 Yeti's post 1 (alits)
page 3 MMow's post 2 (alits)
page 3 rpeh's post 1 (romance)
abot
TR Tester
Posts: 94
Joined: Sun Nov 30, 2008 11:58 pm
Contact:

Re: [Morrowind] Map 1 Beta 2.0 Quest error reporting

Post by abot »

arvisrend wrote:- You didn't seem to do any changes to TR_m1_RelianeScript at all (either that, or we already incorporated them... or my kdiff3 sucks).
I have this

Code: Select all

begin TR_m1_RelianeScript

short DoOnce
short GaveGold

if (DoOnce == 0)
	if (GetDistance Player < 1024)
		ForceGreeting
		Set DoOnce to 1
	endif
endif

if (GetDeadCount TR_m1_reliane_sele > 0)
	if (OnActivate == 1)
		journal TR_m1_wil_WhichWitch 40
		activate
	endif
endif
	

end TR_m1_RelianeScript
in my last TR_Map2_AntediluvianSecrets download,
and this

Code: Select all

begin TR_m1_RelianeScript

short DoOnce
short GaveGold

if ( OnActivate )
	if ( GetHealth < 1 )
		if ( GetJournalIndex "TR_m1_wil_WhichWitch" < 40 )
			journal TR_m1_wil_WhichWitch 40
		endif
	endif
	activate
endif

if ( DoOnce )
	return
endif

float t1
if ( t1 < 3 )
	set t1 to ( t1 + GetSecondsPassed )
	return
endif
set t1 to Random 1001
set t1 to ( t1 * 0.0005 )

if ( GetDistance "Player" < 1024 )
	ForceGreeting
	Set DoOnce to 1
endif

end
in my changes. Maybe already incorporated in your more recent TR_Map1.esm?
- In TR_m1_q50_GO5_Husband_scpt, you replaced OnDeath by GetHealth < 1; why this? Is some different script also accessing this OnDeath variable? Or is there a chance that the husband is dead before the state variable reaches 2?
OnDeath is a function set to 1 once for a single frame, so sometimes checking for GetHealth < 1 (or 2, something near zero) is more safe. When not too complicated, I tend to use GetHealth. This is my current version with some more comment

Code: Select all

Begin TR_m1_q50_GO5_Husband_scpt

short state
short control
short TR_Map
short nolore
float fPCX
float fPCY
float fPCAngle
float fdx
float fdy
float fRatio
short sPCLookAtMe
float timer

if ( MenuMode )
	Return
endif

if ( state == -10 )
	if ( timer > 3 )
		SetDelete 1
		Return
	endif
	set timer to ( timer + GetSecondsPassed )
	Return
endif

if ( state == 0 )
	Disable
	set TR_Map to 1
	set state to 1
	return
elseif ( state == 1 )
	if ( GetJournalIndex TR_m1_GO_5 >= 10 )
		Enable
		set state to 2
	endif
	return
elseif ( state == 2 )
	if ( GetDeadCount TR_m1_Q50_GO5_Cultist > 0 )
		if ( control != 2 )
			set control to 2
		endif
		set state to 3
		ForceGreeting
		return 	; avoid problems with Forcegreeting possibly skipping endif 
	endif
	if ( GetHealth < 2 )	; safer than OnDeath 1 frame event
		ModCurrentHealth -2  ; ensure really dead
		if ( GetDeadCount TR_m1_Q50_GO5_Cultist < 1 )
			if ( GetJournalIndex TR_m1_GO_5 < 100 )
				set TR_m1_Q50_GO5_Cultist.control to 2
				TR_m1_Q50_GO5_Cultist->RemoveSpell "TR_m1_Q50_G05Paral_Curse"
				set state to -1
				TR_m1_Q50_GO5_Cultist->ForceGreeting
				return
			endif
		endif
	endif
	return
elseif ( state == 3 )
	if ( GetHealth < 2 )
		ModCurrentHealth -2
		Journal TR_m1_GO_5 103
		set state to -1
		return
	endif
	if ( timer < 3 )
		set timer to ( timer + GetSecondsPassed )
		return
	endif
	set timer to 0
	set sPCLookAtMe to 1

	;All credit to MSFD from which this was untimely ripped

	if ( GetDistance, Player > 8000 )
		set sPCLookAtMe to 0
	else
		;yay trigonometry
		;this basically does a rough calculation of the PCs direction relative
		;to the Actor, it only uses 45 degree chunks, though
		set fPCX to ( player->GetPos, X )
		set fPCY to ( player->GetPos, Y )
		set fPCAngle to ( player->GetAngle, Z )
		set fdx to GetPos, X
		set fdy to GetPos, Y
		set fdx to ( fdx - fPCX )
		set fdy to ( fdy - fPCY )

		if ( fdy >= 0 )
			set fRatio to fdy
		else
			set fRatio to ( 0 - fdy )
		endif

		if ( fRatio < 0.0001 )
			return		; divide by 0 safety revised /abot
		endif

		set fRatio to ( fdx / fdy )

		if ( fdx > 0 )
			if ( fdy > 0 )
				if ( fRatio > 1 )
					if ( fPCAngle < -45 )
						set sPCLookAtMe to 0
					endif
				else
					if ( fPCAngle < -90 )
						set sPCLookAtMe to 0
					endif

					if ( fPCAngle > 135 )
						set sPCLookAtMe to 0
					endif
				endif
			else
				if ( fRatio < -1 )
					if ( fPCAngle < 0 )
						if ( fPCAngle > -135 )
							set sPCLookAtMe to 0
						endif
					endif
				else
					if ( fPCAngle < 45 )
						if ( fPCAngle > -90 )
							set sPCLookAtMe to 0
						endif
					endif
				endif
			endif
		else
			if ( fdy > 0 )
				if ( fRatio < -1 )
					if ( fPCAngle > 45 )
						set sPCLookAtMe to 0
					endif
				else
					if ( fPCAngle > 90 )
						set sPCLookAtMe to 0
					endif

					if ( fPCAngle < -135 )
						set sPCLookAtMe to 0
					endif
				endif
			else
				if ( fRatio > 1 )
					if ( fPCAngle > 0 )
						if ( fPCAngle < 135 )
							set sPCLookAtMe to 0
						endif
					endif
				else

					if ( fPCAngle > -35 )
						if ( fPCAngle < 90 )
							set sPCLookAtMe to 0
						endif
					endif
				endif
			endif
		endif
	endif

	if ( sPCLookAtMe == 0 )
		disable
		set timer to 0
		set state to -10
		PlaceAtPC "TR_m1_Q50_GO5_TrHusband" 1 256 1
	endif
endif

End
- In most scripts, you replaced one way to avert divide-by-zero errors by another; apart from covering the case when the distance between the y's of player and NPC is between -0.05 and 0.05, what does it do?
IIRC I had something like

Code: Select all

		set fdx to GetPos, X
		set fdy to GetPos, Y
		set fdx to ( fdx - fPCX )
		set fdy to ( fdy - fPCY )
		set fdy to ( fdy + 0.00001 ) ; divide by 0 safety
		set fRatio to ( fdx / fdy )
which I found could CTD when fdy is near -0.00001 (rare, but still not completely impossible)
Thanks and please don't see this as a critique; I just like to know what these things exactly do before putting them into the file.
No prob, I consider them just as hint/suggestions then you keep what ideas you may like and disregard the rest!
Attachments
TR_Map1_Scripts_revised.zip
last version
(2.66 KiB) Downloaded 142 times
arvisrend
Lead Developer
Posts: 1971
Joined: Mon Oct 04, 2010 11:39 am
Location: substitutional world

Post by arvisrend »

Oh, I messed up the Reliane part: the script is not exactly the same as in our Mainland file; the script does not even appear in our Mainland file. I don't know how I came up with that bullshit. The whole quest ("Which witch?") has been moved to map 2 territory and rewritten from scratch long ago, so that script is out of date. Sorry for wasting your time on obsolete stuff. If I was an admin, I'd just give you mainland access (and I'll talk to the admins about that).

I am going to implement your fixes to TR_m1_Q59_MaI_Script_4 the next time I get to edit the mainland file. As I said in the other topic, though, I will not replace OnDeath by GetHealth unless I can rule out definitely that the NPC dies without his health ever getting negative.

In other news, the overwhelming majority of bugs reported in this thread (not only those boldfaced in my posts) is fixed in the internal version now (so won't appear in SE anymore).
User avatar
Haplo
Lead Developer
Posts: 11651
Joined: Sat Aug 30, 2003 6:22 pm
Location: Celibacy

Post by Haplo »

I've added abot to the TR Tester usergroup and updated his title so that he has increased access to our files and forums to avoid redundant or wasted error reports. Thanks, arvisrend, for bringing this to my attention.
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
Locked