bloodmoon : ristaag quest broken ?

General discussion regarding the OpenMW project.
For technical support, please use the Support subforum.
Post Reply
zelurker
Posts: 35
Joined: 05 Sep 2015, 14:46

bloodmoon : ristaag quest broken ?

Post by zelurker »

I thought all the original quests could be done, but apparently there are some problems with this one, is it known ?

the problems are when the hunt begins, the player is supposed to follow some hunters at night.
1st test failing : getaipackagedone, it never returns true with openmw, when aitravel is finished it switches to aiwander, he doesn't move but it keeps on returning 0 anyway. So it can be forced by changing the getaipackagedone to return 1 if it is in aiwander mode.

Then 2nd problem : the tracking is done by trackerscript which takes the distance between the player and rolf long-tooth, and this distance sometimes becomes completely wrong ! It's probably linked to some cell change. Anyway in this case the script sets trackerpause to 1, and even if we return to the old position to reduce the distance, it's broken for good and never sees the correct end of movement !
This part doesn't happen all the time, I could pass the 1st stage once, got the noise and the 1st hunter was dead, then I got stuck at the 2nd stage. When I retried I was unable to pass the 1st stage this time, and never since then, so it breaks rather often apparently... !

So what, are we obliged to use the journal command to skip this quest ?
User avatar
lysol
Posts: 1513
Joined: 26 Mar 2013, 01:48
Location: Sweden

Re: bloodmoon : ristaag quest broken ?

Post by lysol »

All the main quests has been tested and are regarded as working as far as I know. Remember though that this is still in alpha, so it's fully possible that working quests break because of a fix for another bug for example.
User avatar
DestinedToDie
Posts: 1181
Joined: 29 Jun 2015, 09:08

Re: bloodmoon : ristaag quest broken ?

Post by DestinedToDie »

I remember this quest being totally buggy in vanilla Morrowind. This of course doesn't exclude that OpenMW might be at fault.
Cramal
Posts: 186
Joined: 19 Sep 2014, 13:37

Re: bloodmoon : ristaag quest broken ?

Post by Cramal »

I managed to pass this quest as intended, but it was really buggy.

Notably :

- getting to far from the guy you're supposed to follow block him for ever

- saving at the wrong moment and restarting the game, force you to use some console command to finish the quest.

But the quest was really buggy in Vanilla also, specially all this following stuff

If you can determine what exactly is causing the problem you should filla bug report
User avatar
sjek
Posts: 442
Joined: 22 Nov 2014, 10:51

Re: bloodmoon : ristaag quest broken ?

Post by sjek »

what found with quick look.

( https://gitlab.com/OpenMW/openmw/-/issues/2537 )
the current system handles cell move by leaving deleted reference to old cell but if it's same as with setdelete then it shouldn't recognize that anymore. fixed same time with disable for console at least


( https://gitlab.com/OpenMW/openmw/-/issues/1465 )
"GetAiPackageDone normally only returns 1 for one frame, when the Ai function has been executed (AiTravel: once the NPC reaches its destination). The last argument of Ai functions (AiTravel: 4th argument) is optional. If it is given (0 or 1 doesn't matter), once the package is executed, GetAiPackageDone will NOT reset to 0 until a new Ai command is called on that NPC.

The point of this is that scripted Ai sequences won't break if the "package done" frame is skipped for any reason" ?


possibly related
( https://gitlab.com/OpenMW/openmw/-/issues/1143 )
"GetCurrentAiPackage return the package that was run last, not the package that will be run in the next frame."


( https://gitlab.com/OpenMW/openmw/-/issues/1605 )
there might be possibility that being still the aitravel don't get complete call as immediately witching to aiwander

edit: if it's aiwander, then it might be there no pathgrid nearby or at all or only one. was fixed for bars and beth have those individual fixes for specifig situations scattered around. details elude but exteriors there might be own behaviour.

anyway. testing is the easiest way to see if not code

( Edit: updated links to gitlab from redmine tracker)
Last edited by sjek on 04 Feb 2021, 08:21, edited 3 times in total.
User avatar
sjek
Posts: 442
Joined: 22 Nov 2014, 10:51

Re: bloodmoon : ristaag quest broken ?

Post by sjek »

found the script:

Code: Select all

Begin trackerScript

short state
short sattirdone
short greriddone
short rolfdone
short distancecheck
short statereset
short paused
short moving
short movingreset
short wolfcount

if ( GetJournalIndex BM_BearHunt1 < 25 )
	return
endif

if ( GetJournalIndex BM_BearHunt1 >= 100 )
	return
endif

if ( Player->GetDistance "rolf long-tooth" > 500 )
	if ( state < 80 )
		;MessageBox "TRACKERPAUSE SET TO 1."
		set trackerpause to 1
	endif
endif

if ( trackerpause == 1 )
	if ( state != -1 )
		;MessageBox "STATERESET SET TO STATE. STATE SET TO -1"
		set statereset to state
		set movingreset to moving
		set moving to 0
		set state to -1
	endif
endif

if ( state == -1 )
	if ( paused == 0 )
		"sattir the bold"->AiWander 0 0 0 0 0 0
		"grerid axe-wife"->AiWander 0 0 0 0 0 0
		"rolf long-tooth"->AiWander 0 0 0 0 0 0
		set paused to 1
		;MessageBox "WANDER SET FOR ALL THREE. PAUSED SET TO 1."
	endif
endif
	
if ( paused == 1 )	
	if ( Player->GetDistance "rolf long-tooth" <= 512 )
		set trackerpause to 2	
		;MessageBox "DISTANCE OK AGAIN. TRACKERPAUSE SET TO 2."	
	endif
endif

if ( trackerpause == 2 )
	set state to statereset
	set statereset to 0
	set trackerpause to 0
	set paused to 0
	;MessageBox "STATE TO RESET. RESET TO 0. TRACKERPAUSE TO 0. PAUSED TO 0."
endif

if ( state == 0 )
	if ( moving == 0 )
		;MessageBox "STARTING TRAVEL PACKAGES"
		"sattir the bold"->AiTravel -173940.828 194911.391 632.957
		"grerid axe-wife"->AiTravel -170245.578 195622.125 697.838
		"rolf long-tooth"->AiTravel -172008.281 195049.297 810.818
		"sattir the bold"->SetHello 10
		"grerid axe-wife"->SetHello 10
		"rolf long-tooth"->SetHello 10
		;"rolf long-tooth"->AiEscort Player 0 -172008.281 195049.297 810.818 0
		set moving to 10
	endif
endif

if ( moving > 0 )
	;MessageBox "GETPACKAGEDONE STUFF STARTING"
	if ( "sattir the bold"->GetAiPackageDone == 1 )
		set sattirdone to 1
	endif
	if ( "grerid axe-wife"->GetAiPackageDone == 1 )
		set greriddone to 1
	endif
	if ( "rolf long-tooth"->GetAiPackageDone == 1 )
		set rolfdone to 1
	endif
endif 

if ( moving > 0 )
	if ( sattirdone == 1 )
	;elseif ( GetJournalIndex BM_Ceremony1 >= 45 )
		if ( greriddone == 1 )
		;elseif ( GetJournalIndex BM_Ceremony1 >= 60 )
			if ( rolfdone == 1 )
				;MessageBox "ALL THREE SHOULD HAVE REACHED FIRST POINT"
				set state to ( state + 10 )
				set moving to 0
			endif
		endif
	endif
endif

if ( state == 10 )
	active_BM_huntscream1->PlaySound "BM Nord Attack"
	set "rolf long-tooth".rolfstate to 10
	"sattir the bold"->SetHealth 0
	"rolf long-tooth"->ForceGreeting
	set rolfdone to 0
	set greriddone to 0
	set state to 20
endif

if ( statereset == 20 )
	if ( Player->GetDistance "sattir the bold" <= 200 )
		if ( GetJournalIndex BM_BearHunt1 < 40 )
			Journal BM_BearHunt1 40
		endif
	endif
endif

if ( GetJournalIndex BM_BearHunt1 == 45 )
	if ( state == 20 )
		set state to 30
	endif
endif

if ( state == 30 )
	if ( moving == 0 )
		"rolf long-tooth"->AiTravel -172090.703 193469.188 452.030
		"grerid axe-wife"->AiTravel -169821.828 193690.719 140.888	
		set moving to 10
	endif
endif
 
if ( state == 40 )
	active_BM_huntscream2->PlaySound "BM Nord AttackF"
	set "rolf long-tooth".rolfstate to 20
	"grerid axe-wife"->SetHealth 0
	"rolf long-tooth"->ForceGreeting
	set rolfdone to 0
	set state to 50
endif

if ( statereset == 50 )
	if ( Player->GetDistance "grerid axe-wife" <= 200 )
		if ( GetJournalIndex BM_BearHunt1 < 55 )
			Journal BM_BearHunt1 55
		endif
	endif
endif

if ( GetJournalIndex BM_BearHunt1 == 60 )
	if ( state == 50 )
		set wolfcount to 128
		set state to 60
	endif
endif

if ( state == 60 )
	if ( moving == 0 )
		"rolf long-tooth"->AiTravel -172854.547 191164.219 902.094
		set moving to 10
	endif
endif		

if ( state == 70 )
	while ( wolfcount < 896 )
		PlaceAtPC werewolf_bearhunt 1 wolfcount 1
		set wolfcount to ( wolfcount + 256 )
		return
	endwhile
	"rolf long-tooth"->AiFollow Player 0 0 0 0 0 0
	set state to 80
endif

if ( state == 80 )
	if ( wereBdead == 3 )
		Journal BM_BearHunt1 70
		set state to 90
	endif
endif

if ( state == 90 )
	if ( player->GetItemCount BM_bearheart_UNIQUE == 1 )
		Journal BM_BearHunt1 80
		set state to 100
	endif
endif


End trackerScript
lots of bugtracking messages and in rolf hello topic here's:
;urgent [Lake Fjalding later]
- getting to far from the guy you're supposed to follow block him for ever

- saving at the wrong moment and restarting the game, force you to use some console command to finish the quest.
moving variable might be a culprit and handling those in one go possibly. needs closer look
same to variables how there are saved between saves. might be bug (or vanilla)

or that cell problem which can be checked by moving the aitravel command inside the same cell

other scripts dealing:
rolfscript is used for quest tracking on daytime and
spiritbearscript is used for disable/enable and quest tracking

werechange scripts deal with the werewolf version of the quest partly on BM_bearhunt2
pato
Posts: 1
Joined: 03 Feb 2021, 11:27

Re: bloodmoon : ristaag quest broken ?

Post by pato »

Hi
I just wanted to say that this bug still exists in OpenMW 0.47.0 (nightly for Android). I do have the addon Morrowind Rebirth installed, in case that is important.

I guess the same problem happens with the quest "To catch a thief", where Uryn Maren not starts to walk in the mine.

I was able to workaround it by using the console.

pato
Post Reply