Journal not updating?

Post » Wed Aug 03, 2011 3:16 pm

I'm working on a little update to the official Firemoth plugin for myself.

I'm aiming for the following:

1) Ensure that the quest updates the journal correctly as per the enhancements from Tribuanl. - DONE
2) Make sure the friendly archer NPC's (Mara and J'Hanir) actually use Bows instead of swords. - DONE
3) Replace the tiny little boat with a copy of the Chargen ship - this will ensure that any shadows/reflections put in place buy MGE make sense during and after Chargen. This will involve adding a jetty to Firemoth Region and adjusting NPC positions. - DONE
4) Flesh out the Khajiit character by adding a little more dialogue and ensuring that if he survives he will travel to/from Seyda Neen with the rest of the group. - DONE
5) Add an additional journal entry when locating the Khajiit.
6) Add an additional journal entry when looting the Ward of Akavir from the corpse of Grurn.

It's points 5 and 6 that I need assistance with. For some reason the Journal refuses to update.

5) Journal is set to update when talking to the Khajiit NPC for the first time. The dialogue here displays correctly and local vars are set, but the journal does not update.

The following is set in the 'result' field for the greeting:
journal "ms_firemoth" 15set found_cat to 1"firemoth_cat"->AiFollow, player 0 0 0 0


6) Attached a script to the Ward so that it updates the Journal when the ward is added to the inventory - This just doesn't work.

Here is the attached script:
begin firemoth_akavirshort doneif ( done == 1 )	returnendifif ( OnPCAdd == 1 )	journal "ms_firemoth" 20	set done to 1	returnendifend


I'd really appreciate any help that could be offered!

Thanks
User avatar
Crystal Clear
 
Posts: 3552
Joined: Wed Aug 09, 2006 4:42 am

Post » Wed Aug 03, 2011 7:09 pm

OnPCAdd has to be declared as a short variable before it can be checked. As for #5, type GetJournalIndex "ms_firemoth" in the console before you talk to the Khajiit. It's possible that the index may be after 15 and that's why it's not updating. Other than that, I would make sure that there is an entry for index 15. Your syntax is right so either there is no index 15 or the index is greater than 15. If it's neither of those two then I don't know what's going on - some weird engine quirk because I've never had journal updating issues and I've dealt with a lot of them.
User avatar
Pawel Platek
 
Posts: 3489
Joined: Sat May 26, 2007 2:08 pm

Post » Wed Aug 03, 2011 5:50 am

OnPCAdd has to be declared as a short variable before it can be checked. As for #5, type GetJournalIndex "ms_firemoth" in the console before you talk to the Khajiit. It's possible that the index may be after 15 and that's why it's not updating. Other than that, I would make sure that there is an entry for index 15. Your syntax is right so either there is no index 15 or the index is greater than 15. If it's neither of those two then I don't know what's going on - some weird engine quirk because I've never had journal updating issues and I've dealt with a lot of them.


Thanks Jac - the Index should be 10 at that point, but I will go over things carefull and mate sure. (The journal entry *definately* exists).

I'll do some more testing based on your suggestions and post back in a while.
User avatar
Veronica Martinez
 
Posts: 3498
Joined: Tue Jun 20, 2006 9:43 am

Post » Wed Aug 03, 2011 10:52 am

Journal will only work if the index is before the index it uses. In this case, it will only work if the index is at 14 or earlier. If it's at 16 or later, the journal won't update. I hope you can get this fixed. :)
User avatar
maddison
 
Posts: 3498
Joined: Sat Mar 10, 2007 9:22 pm

Post » Wed Aug 03, 2011 7:03 pm

OnPCAdd has to be declared as a short variable before it can be checked. As for #5, type GetJournalIndex "ms_firemoth" in the console before you talk to the Khajiit. It's possible that the index may be after 15 and that's why it's not updating. Other than that, I would make sure that there is an entry for index 15. Your syntax is right so either there is no index 15 or the index is greater than 15. If it's neither of those two then I don't know what's going on - some weird engine quirk because I've never had journal updating issues and I've dealt with a lot of them.


It looks like declaring OnPcAdd has worked out the kink when collecting the Ward of Akavir. However, I checked the index before and after speaking to the Khajiit - it was 10.00 both times. It should be 10 before and 15 after. I manually entered 'Journal "ms_firemoth" 15' and it updated - so I know that the Journal entry itself is ok. I managed to complete the quest with the Khajiit alive, but I've discovered that he no longer travels back to seyda neen with the rest of the group - this was working in a previous edit, so I must have stuffed something up.

One of the conditions for the dialogue is that:

Journal ms_firemoth >=10

I'm wondering if this is what is causing the problem. I've made a couple of changes to how I've structured the journal entries and the dialogue - I'll test it out shortly and post back again.
User avatar
Campbell
 
Posts: 3262
Joined: Tue Jun 05, 2007 8:54 am

Post » Wed Aug 03, 2011 8:08 am

If he's not following, then your filtering and/or dialog stacking is wrong: in that your response line is being block by something above it. It should be at the top or near it unless you have a line that stops the Khajiit from following. I would also change the filtering to = 10 if that's the line that causes him to first follow you. I would then have one above it for when you want him to stop - you'll need to set up the filters for that to prevent him from stopping following until you're ready for him to.
User avatar
Taylrea Teodor
 
Posts: 3378
Joined: Sat Nov 18, 2006 12:20 am

Post » Wed Aug 03, 2011 5:48 pm

If he's not following, then your filtering and/or dialog stacking is wrong: in that your response line is being block by something above it. It should be at the top or near it unless you have a line that stops the Khajiit from following. I would also change the filtering to = 10 if that's the line that causes him to first follow you. I would then have one above it for when you want him to stop - you'll need to set up the filters for that to prevent him from stopping following until you're ready for him to.


The dialogue stacking is fine as far as I can tell. The dialogue entries I'm working with are just Greetings. I've set it up as follows:

Get the mission (no changes from default) (Sets Index to 10)

2) Found the cat *before* killing the boss
Criteria:
  • Journal ms_firemoth = 10
  • Function Talked To PC = 0
  • Not Local NoLore = 1

Result:
  • journal "ms_firemoth" 15
  • set firemoth_cat_found to 1
  • "firemoth_cat"->AiFollow, player 0 0 0 0


Kill the boss and obtain the item (Sets Index to 20)

4) Found the cat *after" killing the boss
Criteria:
  • Journal ms_firemoth = 20
  • Function Talked To PC = 0
  • Not Local NoLore = 1

Result:
  • journal "ms_firemoth" 25
  • set firemoth_cat_found to 1
  • "firemoth_cat"->AiFollow, player 0 0 0 0


5) Standard greeting (used if met cat and talking again *before* boss is killed and item obtained)
Criteria:
  • Not Local NoLore = 1
  • Function Talked To PC = 1
  • Dead Skeleton_FM_King = 0
  • Item Ward of Akavir = 0


6) 'Completed' greeting (used if met cat and talking again once boss is killed and item obtained)
Criteria:
  • Dead Skeleton_FM_King = 1
  • Function Talked To PC = 1
  • Item Ward of Akavir = 1
  • Journal ms_firemoth > 15



For now, I'd like to get item (4) working correctly. As far as I can tell, NONE of the 'Result' script is executing at all. The journal does not get updated, the AiFollow does not get set, and the variable 'firemoth_cat_found' does not appear to get set to 1. The Khajiit spawning with the rest of the group in Seyda Neen when travel is initiated will only work if this variable is 1, and that's not working.
User avatar
Joe Bonney
 
Posts: 3466
Joined: Tue Jul 17, 2007 12:00 pm

Post » Wed Aug 03, 2011 9:43 am

I think something *weird* is going on....the script attached to the Ward (which updates the journal index to 20) is no longer working - WTF??

I've just tested this with a new game, and no dice. Really frustrating.
User avatar
saxon
 
Posts: 3376
Joined: Wed Sep 19, 2007 2:45 am

Post » Wed Aug 03, 2011 6:04 am

I thought it might help if I included a bit of an explanation about how I intend this to work:

1) Get the quest - this sets the Index to 10.

2) Find the cat - this sets the Index to 15. Current Index value must be 10. (displays and journals 'thanks for saving me, lets kick his ass' text).

3) Kill the Boss and obtain the ward. This sets the Index to 20.

4) Find the cat - this sets the Index to 25. Current Index value must be 20. (displays and journals 'thanks for saving me and kicking his ass' text).

5) Return the Ward. This sets the Index to 100 and completes the quest.


I want to make sure the dialogue with the cat makes sense all the way through - I don't want anyone to find him after killing the boss and then find that his dialogue is nonsense.

All of the 'companion' NPC's in the quest now have 'well done' greetings in addition to the standard 'I'll follow you' greetings. These are made available once the Journal value is greater than 15 and are all working nicely.
User avatar
kristy dunn
 
Posts: 3410
Joined: Thu Mar 01, 2007 2:08 am

Post » Wed Aug 03, 2011 7:19 pm

I found something new:

In the main script of the plugin - 'Firemoth_sail_script' I created a local variable:

short firemoth_cat_found

this variable is supposed to get set to 1 by the dialogue with the cat when you find him. It isn't being set.

I used 'sv' in the console and could not see firemoth_cat_found listed anywhere.

When I tried:

set firemoth_cat_found to 1

I got an error stating the variable didn't exist...now that seems a bit odd to me...

Here is the complete script:

begin Firemoth_sail_script;Local script on the sailor that checks local variable “sail” for warping the whole party to the island and back. ;Does the checking for who’s alive and the coordinates they get warped to. ;Sets variable "firemoth_at_island" to 1 when at the island.short state short sailshort firemoth_at_islandshort firemoth_cat_found;startup, disable it allif ( state == 0 )	"firemoth_sailor"->disable	"firemoth_warrior"->disable	"firemoth_archer"->disable	"firemoth_mage"->disable	"fm_boat_dock"->disable	"fm_boat_island"->disable	"fm_plank_dock"->disable	"fm_plank_island"->disable	"fm_cabindoor_dock"->disable	"fm_cabindoor_dock"->disable	"fm_ship_trapdoor_dock"->disable	"fm_ship_trapdoor_dock"->disable	"fm_lantern_dock"->disable	"fm_lantern_island"->disable	"skeleton_fm_king"->disable	set state to 10	returnendifif ( CharGenState == -1 )	"fm_boat_dock"->enable	"fm_plank_dock"->enable	"fm_cabindoor_dock"->enable	"fm_ship_trapdoor_dock"->enable	"fm_lantern_dock"->enable	"fm_boat_island"->enable	"fm_plank_island"->enable	"fm_cabindoor_island"->enable	"fm_ship_trapdoor_island"->enable	"fm_lantern_island"->enableendif;check for journal entry and turn everything onif ( GetJournalIndex "ms_firemoth" == 10 )	if ( state != 20 )		"firemoth_sailor"->enable		"firemoth_warrior"->enable		"firemoth_archer"->enable		"firemoth_mage"->enable		"firemoth_gate_1"->unlock		"firemoth_gate_2"->unlock		"skeleton_fm_king"->enable		set state to 20		return	endifendifif ( menumode == 1 )	returnendif;disable everything again now that quest is overif ( GetJournalIndex "ms_firemoth" == 100 )	if ( state != 100 )		"firemoth_sailor"->disable		"firemoth_warrior"->disable		"firemoth_archer"->disable		"firemoth_mage"->disable		"firemoth_cat"->disable		"skeleton_fm_king"->disable		set state to 100		return	endifendifif ( sail == 0 )	returnendif;**********************************************************;;    warping!!!;;**********************************************************;boat has been told to sail from dialogue (sailor sets sail to 1)if ( sail == 1 )	;the boat is at dock	if ( firemoth_at_island == 0 )	;the boat is at dock				;everyone to island		if (GetDeadCount "firemoth_sailor" == 0 )			;"firemoth_sailor"->position -62789, -68350, 76, 126			"firemoth_sailor"->position -64260.484, -66447.242, 211.193, 74		endif		if (GetDeadCount "firemoth_warrior" == 0 )			"firemoth_warrior"->position -62550, -68662, 146, 57			"firemoth_warrior"->AiFollow, player, 0 0 0 0		endif		if (GetDeadCount "firemoth_archer" == 0 )			"firemoth_archer"->position -62634, -68808, 124, 46			"firemoth_archer"->AiFollow, player 0 0 0 0 		endif		if (GetDeadCount "firemoth_mage" == 0 )			"firemoth_mage"->position  -62701, -68693, 119, 74			"firemoth_mage"->AiFollow, player 0 0 0 0 		endif		if ( firemoth_cat_found == 1)			if ( GetDeadCount "firemoth_cat" == 0 )				"firemoth_cat"->positioncell -62781.461, -68788.531, 124.000, 74 "Firemoth Region"				"firemoth_cat"->AiFollow, player 0 0 0 0			endif		endif				player->position -62501, -68693, 119, 74		set firemoth_at_island to 1	;sail back to Seyda Neen	else		if (GetDeadCount "firemoth_sailor" == 0 )			"firemoth_sailor"->position -8992, -73041, 209, 331		endif		if (GetDeadCount "firemoth_warrior" == 0 )			"firemoth_warrior"->position -8115, -73335, 250, 268			"firemoth_warrior"->AiWander 0 0 0 0 0		endif			if (GetDeadCount "firemoth_archer" == 0 )			"firemoth_archer"->position -8436, -73596, 250, 46			"firemoth_archer"->AiWander 0 0 0 0 0		endif		if (GetDeadCount "firemoth_mage" == 0 )			"firemoth_mage"->position -8589, -73584, 250, 74			"firemoth_mage"->AiWander 0 0 0 0 0		endif		if ( firemoth_cat_found == 1 )			if ( GetDeadCount "firemoth_cat" == 0 )				"firemoth_cat"->positioncell -8274.615, -73236.875, 250, 225.0 "Seyda Neen"				"firemoth_cat"->AiWander 0 0 0 0 0			endif		endif				player->position -9128, -73043, 209, 300		set firemoth_at_island to 0 			endif			set sail to 0endifend Firemoth_sail_script

User avatar
Flesh Tunnel
 
Posts: 3409
Joined: Mon Sep 18, 2006 7:43 pm

Post » Wed Aug 03, 2011 5:48 pm

Can you post a link to just the esp file? I'd like to take a look at it. As for your script, is it a global script or a local one attached to something? If it's a global, you'll need to have it run before you can change any of its variables.
User avatar
Zualett
 
Posts: 3567
Joined: Mon Aug 20, 2007 6:36 pm

Post » Wed Aug 03, 2011 5:05 pm

Can you post a link to just the esp file? I'd like to take a look at it. As for your script, is it a global script or a local one attached to something? If it's a global, you'll need to have it run before you can change any of its variables.


http://www.megaupload.com/?d=1M7JFN9I

Thanks Jac - your help is very much appreciated.

The script, afaik, is a local one attached to the firemoth_sailor npc - it's the original script created by bethesda that I've been adapting.

EDIT:

Wait up...is the script completely local to the npc it's attached to? That would make the variable local to that npc too...which would make setting it via a completely different npc's dialogue pretty unlikely and would suggest I'd need a global - correct?

(I haven't seen anything that would suggest I could do anything as nice as npcid.variable ;) )
User avatar
Lavender Brown
 
Posts: 3448
Joined: Tue Jul 25, 2006 9:37 am


Return to III - Morrowind

cron