• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Animists Quest Fix

CatalinaThePirate

Unholy Terror,
Storm Modder
<img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/hi.gif" style="vertical-align:middle" emoid=":gday" border="0" alt="hi.gif" /> mateys!

I have been working on a fix for the Animists Quest - to make the quest clearer and so that you don't get lost in the middle of it.

As I've been working, it's been slow-going because I've had to stop to test things as I go, but so far I've had success, which is good. I'm now to the part where you are helping the church - trying to find out about those love letters - and I've run into a problem I need a bit of assistance to solve.

What I've got is a quest check - I've set it up so that you go talk to the tavern-keeper, and he's only got limited info on the forger - WHO he is, but not WHERE he is. SO, in the quest book, you will find the suggestion to talk to an ordinary citizen who should be able to tell you where this guy lives.

The dialog works well, and easily. Here's the pertinent part of the node:

<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->  case "info":
     dialog.snd1 = "";
     dialog.snd2 = "";
     dialog.snd3 = "";
   d.Text = RandPhrase(DLG_TEXT[79] + address_form.eng + DLG_TEXT[80], DLG_TEXT[81], DLG_TEXT[82] + address_form.eng + DLG_TEXT[83], &Dialog, Dialog.snd1, Dialog.snd2, Dialog.snd3);
   if (CheckQuestAttribute("Church_help", "Kinne"))  // --> Cat
   {
       Link.l1 = DLG_TEXT[162];
       Link.l1.go = "Kinne";
   }  //  <-- Cat
   else
   {
       if(Rand(1)==0)
       {    
       
     Link.l1 = DLG_TEXT[84];
     Link.l1.go = "governor";
       }
       else (&tc)<!--c2--></div><!--ec2-->

Here's the deal... I have set a quest attribute in the tavern-keeper's dialog, and the checker is this line in the Greenford Citizen dialog:

<span style='color:darkred'>if (CheckQuestAttribute("Church_help", "Kinne"))</span>

Only thing is, I need to "shut off" this quest attribute once my dialog with Kinne is over, so that the citizen dialog goes back to normal.

I've tried this with my sneaky trader mod, and have been having the same trouble... There's something I need to do that I'm not doing... I don't have the command syntax correct, or something. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/unsure.gif" style="vertical-align:middle" emoid=":?" border="0" alt="unsure.gif" />

How do I tell this thing, if the quest attribute is Kinne, but NOT Yedam (another attribute I can set), then "do this"?

Or conversely, how do I make it so that it will shut off the "Kinne" attribute so that things in the citizen dialog return to normal?

Hope this makes sense, I have been up all night working <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/wacko.gif" style="vertical-align:middle" emoid=":wacko:" border="0" alt="wacko.gif" /> up to this point, and it's frustrating to be stalled when things have otherwise been moving along so nicely. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/urgh.gif" style="vertical-align:middle" emoid=":urgh" border="0" alt="urgh.gif" />

Thanks. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
 
It´s good to hear about it. But did you try to proceed further when animists´ lair is destroyed and Nathaniel tells to Padre Domingues "I don´t have any business with you" or something in this style and Padre still stays in his cell? And after killing the animists no record is appearing in this moment in the logbook and all further traces disappear again? I wrote about it in my post somewhere else. Please, could you have a look at it yet so as anybody could play out this good quest to the end ? <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/modding.gif" style="vertical-align:middle" emoid=":modding" border="0" alt="modding.gif" /> <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/w00t.gif" style="vertical-align:middle" emoid=":woot" border="0" alt="w00t.gif" />
 
I'm getting there, Rad, slowly. Fixing all the rest of this stuff takes time. No worries, I'll be sure to fix that when I come to it. These fixes must go in order, or nothing will work. I'm heavily checking my work, so that this fix should work "out of the box" when I get it ready to share with everyone.

Now on to my dilemma; I fixed it this morning, thought I'd post to let everyone know. It's amazing what a little change - moving a parenthesis one way or another - will do.

Here's what I did:

<span style='color:darkred'>if (CheckQuestAttribute("Church_help", "Kinne") && !CheckQuestAttribute("Church_help", "Yedam"))</span>

What this does, is it checks to see if the quest attribute "Kinne" has been set, and also makes sure that the quest attribute "Yedam" has NOT been set.

"Kinne" is set via Simon Hanpool's dialog; and "Yedam" is set by Yedam Kinne's dialog. Talking to Simon leads you to talk to a citizen to find out which house is Yedam Kinne's. Talking to Kinne sets the other quest attribute, so that if you have already talked to him, his name won't come up when you talk to a citizen about anything else.

Thus:

<span style='color:blue'>if</span> (CheckQuestAttribute("Church_help", "Kinne") <span style='color:red'>is set</span> && ! <span style='color:red'>NOT (exclamation mark) this attribute set</span> CheckQuestAttribute("Church_help", "Yedam")) <span style='color:red'>then do this,</span> (dialog)
<span style='color:blue'>else</span> <span style='color:red'>do this...</span>

It was the incorrect positioning of the parenthesis that did me in. FIXED NOW! <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
 
Now, I don't normally double post, but I wanted to CLEARLY separate this from my previous message...

A couple of things have bugged me about this quest, and I'd like to address them:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

When you're in the church talking to Father Bernard, you keep hearing (repeatedly) merchant dialog such as "French quality and service are yours, M'sieur," and "Come sir, I have everything you need."

<img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_eek.gif" style="vertical-align:middle" emoid=":shock:" border="0" alt="icon_eek.gif" /> It's not quite the dialog you'd imagine would be going on in a church. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/no.gif" style="vertical-align:middle" emoid=":no" border="0" alt="no.gif" />

This is what the code looks like:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->case "First time":
     Dialog.defAni = "dialog_stay1";
     Dialog.defCam = "1";
     Dialog.defSnd = "dialogs\0\017";
     Dialog.defLinkAni = "dialog_1";
     Dialog.defLinkCam = "1";
     Dialog.defLinkSnd = "dialogs\woman\024";
     Dialog.ani = "dialog_stay2";
     Dialog.cam = "1";
     Dialog.snd = "dialogs\0\009";

     if(NPChar.quest.meeting == "0")
     {
   dialog.snd = "Voice\FATB\FATB001";
   d.Text = TimeGreeting() + DLG_TEXT[0];
   Link.l1 = DLG_TEXT[1] + Pchar.name + " " + Pchar.lastname + DLG_TEXT[2] + PChar.Ship.name + DLG_TEXT[3];
   Link.l1.go = "meeting";
   NPC_Meeting = "1";
     }
     else
     {
   dialog.snd1 = "Voice\FATB\FATB002";
   dialog.snd2 = "Voice\FATB\FATB003";
   dialog.snd3 = "Voice\FATB\FATB004"; (&tc)<!--c2--></div><!--ec2-->So I have looked in the directories of the game trying to find the files these sounds are apparently from or designated from. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/urgh.gif" style="vertical-align:middle" emoid=":urgh" border="0" alt="urgh.gif" /> No luck.

Are these sound appearances "hard coded" somewhere that I cannot alter? It would be really nice to have actual church-appropriate voices instead of the priests sounding like a bunch of hucksters of French paraphernalia... <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/piratesing.gif" style="vertical-align:middle" emoid=":shock" border="0" alt="piratesing.gif" />

This same kind of thing happens in the courtyard of the Douwesen Townhall. All those women waiting there creates a MULTITUDE of echoes of the same soundbytes mentioned above. It might be more appropriate for a different kind of soundbyte, you know? <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/yes.gif" style="vertical-align:middle" emoid=":yes" border="0" alt="yes.gif" />

~~~~~~~~~next subject~~~~~~~~~

I was thinking that Father Gareth and Gilbert Ballester (the assistant to Father Jerald), both rather sinister characters in this whole quest, look too much alike, but to change the skin/model of one of them would necessitate the start of a new game, unless I put them into the reinit file... Correct?

What should I do, leave this a fix for B13, or keep it a fix that can be added mid-game with a "I" key reinit instead of starting a whole game over?

The change to the character model/skin can always be added to this later on.

Opinions, please? <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid=":)" border="0" alt="smile.gif" /> Thanks! <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />

~~~~~~~~~next subject~~~~~~~~~

Another thing that should be done is change the Animist amulet back to a pentagram, and also fix the floor altar symbol in the cave so it is a pentagram instead of the beetle/scarab. These changes will not need a new gamestart. Just a note to myself on this - or if anyone has already done this, let me know. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/me.gif" style="vertical-align:middle" emoid=":onya" border="0" alt="me.gif" />

That's it for now, concerning this quest fix. Thanks... I'll get back to work, now. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/type_1.gif" style="vertical-align:middle" emoid=":nk" border="0" alt="type_1.gif" />
 
Hi, Catalina. I think it would be a good thing if you could concentrate on the substantial bugs and imperfetions in this quest so as the quest could be play out to the end. Some minor improvements can be added gradually if you will be willing to do that. The amulet seems to me quite good as it is, but you can change it if you want to do and change the voices and appearence of the prist as you wish in the near future.
I think so many new things will be added into the new Build 13 (I hope) that anybody will be willing to play it immediately without any hesitation over the loss of one´s open game. Don´t any trouble and dilema about this, please. I think you could do what you are capable to do and insert these changes, repairs and corrections into Build 13. I will start to play it quite eagerly if so many improvements will be in it, as it is announced. This issue isn´t based on a question if the game must be play from the beginning or not. This quest was buggy and probably even unplayable very long time, so, the main priority here is so as everything would work properly in it . Nothing another and more. So, please, do any changes which will need restart of the game, if they will be working everything will be good. And I think anybody will be glad and thankful about that. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/hi.gif" style="vertical-align:middle" emoid=":gday" border="0" alt="hi.gif" /> <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/me.gif" style="vertical-align:middle" emoid=":onya" border="0" alt="me.gif" /> <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/type_1.gif" style="vertical-align:middle" emoid=":nk" border="0" alt="type_1.gif" />
 
That's pretty much what I was thinking, Rad... The changes that require a game restart can wait for B13. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
 
I think to prevent the lasses trying to sell you fine French goods, Cat, you'd change the locators they're standing on to a different type... When I turned locators on as viewable, I saw for some goofball reason they were placed on the type of locator reserved for merchants... I think there're a number of locator types somehow tied to sounds, as with carpets sounding carpety and fireplaces crackling.
 
First: good work! <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/par-ty.gif" style="vertical-align:middle" emoid=":cheers" border="0" alt="par-ty.gif" />

<!--QuoteBegin-CatalinaThePirate+Apr 21 2005, 04:05 PM--><div class='quotetop'>QUOTE(CatalinaThePirate @ Apr 21 2005, 04:05 PM)</div><div class='quotemain'><!--QuoteEBegin--><snip>

Now on to my dilemma; I fixed it this morning, thought I'd post to let everyone know.  It's amazing what a little change - moving a parenthesis one way or another - will do.

Here's what I did:

<span style='color:darkred'>if (CheckQuestAttribute("Church_help", "Kinne") && !CheckQuestAttribute("Church_help", "Yedam"))</span>
<snip>
Thus:

<span style='color:blue'>if</span> (CheckQuestAttribute("Church_help", "Kinne") <span style='color:red'>is set</span> && ! <span style='color:red'>NOT (exclamation mark) this attribute set</span> CheckQuestAttribute("Church_help", "Yedam"))  <span style='color:red'>then do this,</span> (dialog)
<span style='color:blue'>else</span> <span style='color:red'>do this...</span>

It was the incorrect positioning of the parenthesis that did me in.  FIXED NOW!   <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
<div align="right">[snapback]102098[/snapback]</div><!--QuoteEnd--></div><!--QuoteEEnd-->

Um, actually, checkquestattribute is set up that the first string is the attribute name and the second is the value to check it against.
Which means that CheckQuestAttribute("Church_help", "Kinne") means:
find pchar:
Check attribute pchar.quest.Church_help (if no attribute at all, return false)
return true if and only if pchar.quest.church_help == "kinne"; (else return false)

So you don't need the && !second_check because that's implicit in the first returning true.
I.e. you are not checking for the _presence_ of some attribute pchar.quest.church_help.kinne, you are checking that the attribute's _value_ is kinne.

Now, a caveat:
That's what the code is written as (bool CheckQuestAttribute(string attr, string val) ); but from what you're saying it's not _behaving_ that way?

{ Plus, before I looked at the code, I thought the same as you did... }
 
In re the sounds in *_dialog.c, those are I think holdovers from when Akella meant the game to be voiced as well as text. So just ignore 'em...
{This _may_ be what the res\sounds\trep\*.* files are for as well? }

<!--QuoteBegin-alan_smithee+Apr 21 2005, 08:51 PM--><div class='quotetop'>QUOTE(alan_smithee @ Apr 21 2005, 08:51 PM)</div><div class='quotemain'><!--QuoteEBegin-->I think to prevent the lasses trying to sell you fine French goods, Cat, you'd change the locators they're standing on to a different type... When I turned locators on as viewable, I saw for some goofball reason they were placed on the type of locator reserved for merchants... I think there're a number of locator types somehow tied to sounds, as with carpets sounding carpety and fireplaces crackling.
<div align="right">[snapback]102133[/snapback]</div><!--QuoteEnd--></div><!--QuoteEEnd-->

Hmm, neat!
I wondered what triggered those sound clips...
You'd think they'd be triggered by character type (and there _is_ code for LAi_XXXX_type_play_sound or some suchlike)

The type->*.wav settings are in sounds_alias.ini, the PEOPLE_TALK section.

A way to test this is to set, say, Tom O'Reily to CitizenType and see if his voiceclips change...
 
Changing somebody's model is very simple.
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->string modelid = "some_model_name";
string charid = "some_character_id";
ref model = &Models[AppearanceMod_GetModelIndex(modelid)];
AppearanceMod_SetModel(CharacterFromID(charid), modelid, model.ani, model.sex, stf(model.height), false);<!--c2--></div><!--ec2-->

Just pop that somewhere in reinit and you're all set. If you want to do the change only if the model isn't right:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->string modelid = "some_model_name";
string charid = "some_character_id";
ref chr = CharacterFromID(charid);
if(chr.model != modelid) {
ref model = &Models[AppearanceMod_GetModelIndex(modelid)];
AppearanceMod_SetModel(&chr, modelid, model.ani, model.sex, stf(model.height), false); }<!--c2--></div><!--ec2-->
 
<!--QuoteBegin-NathanKell+Apr 21 2005, 06:19 PM--><div class='quotetop'>QUOTE(NathanKell @ Apr 21 2005, 06:19 PM)</div><div class='quotemain'><!--QuoteEBegin-->First: good work!  <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/par-ty.gif" style="vertical-align:middle" emoid=":cheers" border="0" alt="par-ty.gif" /><!--QuoteEnd--></div><!--QuoteEEnd--> <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/modding.gif" style="vertical-align:middle" emoid=":modding" border="0" alt="modding.gif" /> Huh, what? <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/wacko.gif" style="vertical-align:middle" emoid=":wacko:" border="0" alt="wacko.gif" /> Oh, thanks! <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/oops3.gif" style="vertical-align:middle" emoid=":eek:ops2" border="0" alt="oops3.gif" /> <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_wink.gif" style="vertical-align:middle" emoid=";)" border="0" alt="icon_wink.gif" /> <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/laugh.gif" style="vertical-align:middle" emoid="xD:" border="0" alt="laugh.gif" />
<!--QuoteBegin-NathanKell+--><div class='quotetop'>QUOTE(NathanKell)</div><div class='quotemain'><!--QuoteEBegin-->you don't need the && !second_check because that's implicit in the first returning true.<!--QuoteEnd--></div><!--QuoteEEnd-->Yes, but I needed the presence of the first but NOT the presence of the second. There is a time when BOTH will be present.
<!--QuoteBegin-NathanKell+--><div class='quotetop'>QUOTE(NathanKell)</div><div class='quotemain'><!--QuoteEBegin-->That's what the code is written as (bool CheckQuestAttribute(string attr, string val) ); but from what you're saying it's not _behaving_ that way?<!--QuoteEnd--></div><!--QuoteEEnd--> Well, actually when I had only the one quest check, but not the other, once you got finished talking to Kinne, you could still ask people on the street where he lived. I wanted to disable that.

I had this same problem with another questfix, or maybe my sneaky trader. It wouldn't work, and I was following what you suggested would work... (can't recall what that was at this point). I never got it to work right, and changed it to something else, did a work-around.

NOW I find this DOES work. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/yes.gif" style="vertical-align:middle" emoid=":yes" border="0" alt="yes.gif" />

You are told to find Yedam Kinne, and it's suggested to go talk to someone on the street. This is where the attribute "Kinne" is set.

Previous to this you could talk to people on the street and get the usual rumors &tc, but when this is set, you go out to the street and ask someone about someone in Greenford, and you will get no other choice but Yedam Kinne.

You go talk to Kinne, and either kill him or trick him, and you're done. The second attribute, "Yedam", is set.

So now you go out to talk to a citizen, and their dialog is back to normal.

Without the presence of the second check, the dialogs remained stuck with Yedam Kinne. And having the second check but not including it in the code above did NOT negate the first check so that the dialog would go back to normal.

I'm happy that it works, and that I finally figured out how to do it... <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/unsure.gif" style="vertical-align:middle" emoid=":?" border="0" alt="unsure.gif" /> Whatever I did... <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/rolleyes.gif" style="vertical-align:middle" emoid=":rolleyes:" border="0" alt="rolleyes.gif" /> <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/laugh.gif" style="vertical-align:middle" emoid="xD:" border="0" alt="laugh.gif" />
 
<!--QuoteBegin-NathanKell+Apr 21 2005, 06:29 PM--><div class='quotetop'>QUOTE(NathanKell @ Apr 21 2005, 06:29 PM)</div><div class='quotemain'><!--QuoteEBegin-->Just pop that somewhere in reinit<!--QuoteEnd--></div><!--QuoteEEnd--> Ah, I know, basically, what to do and how to change things like that. I was trying to avoid using the reinit if I could.

Actually, I realize now that Terry Snider (the black wharf rat on QC), as I changed him, will need a new game to initialize. So I guess I'll HAVE to put these characters into reinit (like the FBQuest characters) to make this fix one that won't need a new game to implement. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/mybad.gif" style="vertical-align:middle" emoid=":facepalm" border="0" alt="mybad.gif" />

This has become quite interesting, because I'm essentially rebuilding this quest. I found some snippets of dialog that are not "part of the loop" - and that are quite obviously UNFINISHED - so I've tried to include these as part of making the quest more interesting. Fun stuff...

I've just re-written a scene, which I now need to test. Hope it works, it will make Father Gareth seem far more duplicitous and even more of a shock when he tries to kill Nathaniel.

Heh... Fun stuff, indeed. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
 
<!--QuoteBegin-alan_smithee+Apr 21 2005, 05:51 PM--><div class='quotetop'>QUOTE(alan_smithee @ Apr 21 2005, 05:51 PM)</div><div class='quotemain'><!--QuoteEBegin-->I think to prevent the lasses trying to sell you fine French goods, Cat, you'd change the locators they're standing on to a different type...<!--QuoteEnd--></div><!--QuoteEEnd-->Hummm, good thought. Although I find it odd that you'd put a merchant locator in a church, but hey... <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/dunno.gif" style="vertical-align:middle" emoid=":shrug" border="0" alt="dunno.gif" /> I guess it's all in how you look at religion! <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_wink.gif" style="vertical-align:middle" emoid=";)" border="0" alt="icon_wink.gif" />

I'll look into this, and what Nathan suggested... Hopefully this will help. I really hate the echoey vocalizations that happen when you walk through all those women in the yard of the Douwesen Townhall. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/piratesing.gif" style="vertical-align:middle" emoid=":shock" border="0" alt="piratesing.gif" />

THANKS! <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/me.gif" style="vertical-align:middle" emoid=":onya" border="0" alt="me.gif" />
 
<!--QuoteBegin-CatalinaThePirate+Apr 22 2005, 02:08 AM--><div class='quotetop'>QUOTE(CatalinaThePirate @ Apr 22 2005, 02:08 AM)</div><div class='quotemain'><!--QuoteEBegin-->Without the presence of the second check, the dialogs remained stuck with Yedam Kinne.<div align="right">[snapback]102159[/snapback]</div><!--QuoteEnd--></div><!--QuoteEEnd-->

That's _very_ odd, because at least theoretically it's impossible (according to the code). <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/huhh.gif" style="vertical-align:middle" emoid=":eek:k" border="0" alt="huhh.gif" />

And it works at least for me:
I put
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->pchar.quest.temp = "firsttest";
logit("test: " + CheckQuestAttribute("temp", "firsttest") + "," + CheckQuestAttribute("temp", "secondtest") + "," + CheckQuestAttribute("temp2", "firsttest"));
pchar.quest.temp = "secondtest";
logit("test: " + CheckQuestAttribute("temp", "firsttest") + "," + CheckQuestAttribute("temp", "secondtest") + "," + CheckQuestAttribute("temp2", "firsttest"));<!--c2--></div><!--ec2-->

in the console, and it returned the expected 1,0,0 and 0,1,0.

So are you sure the quest.Church_help attribute is being set to "Yedam" correctly later on? (i.e. PChar.quest.Church_help = "Yedam"; ).
Maybe there's something else, some factor I'm missing?
 
<!--QuoteBegin-CatalinaThePirate+Apr 22 2005, 02:18 AM--><div class='quotetop'>QUOTE(CatalinaThePirate @ Apr 22 2005, 02:18 AM)</div><div class='quotemain'><!--QuoteEBegin-->Ah, I know, basically, what to do and how to change things like that.  I was trying to avoid using the reinit if I could. <div align="right">[snapback]102160[/snapback]</div><!--QuoteEnd--></div><!--QuoteEEnd-->
Why not?
For speed reasons? (it takes ~1min, at least for me).

<!--QuoteBegin-CatalinaThePirate+Apr 22 2005, 02:18 AM--><div class='quotetop'>QUOTE(CatalinaThePirate @ Apr 22 2005, 02:18 AM)</div><div class='quotemain'><!--QuoteEBegin-->Actually, I realize now that Terry Snider (the black wharf rat on QC), as I changed him, will need a new game to initialize.  So I guess I'll HAVE to put these characters into reinit (like the FBQuest characters) to make this fix one that won't need a new game to implement.  <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/mybad.gif" style="vertical-align:middle" emoid=":facepalm" border="0" alt="mybad.gif" /> <div align="right">[snapback]102160[/snapback]</div><!--QuoteEnd--></div><!--QuoteEEnd-->
SFAIK the only things that need a new game are object array resizings.
If you change his dialog, we can write a handler to check for his old dialog, port his old quest attributes over, and, compared to the player's state in the Animists quest, assign new quest attributes appropriately.

<!--QuoteBegin-CatalinaThePirate+Apr 22 2005, 02:18 AM--><div class='quotetop'>QUOTE(CatalinaThePirate @ Apr 22 2005, 02:18 AM)</div><div class='quotemain'><!--QuoteEBegin-->This has become quite interesting, because I'm essentially rebuilding this quest.  I found some snippets of dialog that are not "part of the loop" - and that are quite obviously UNFINISHED - so I've tried to include these as part of making the quest more interesting.  Fun stuff...<div align="right">[snapback]102160[/snapback]</div><!--QuoteEnd--></div><!--QuoteEEnd-->
Hey, neat!
I know what you mean about the snippets--it's amazing how much stuff is there but unlinked.

<!--QuoteBegin-CatalinaThePirate+Apr 22 2005, 02:18 AM--><div class='quotetop'>QUOTE(CatalinaThePirate @ Apr 22 2005, 02:18 AM)</div><div class='quotemain'><!--QuoteEBegin-->I've just re-written a scene, which I now need to test.  Hope it works, it will make Father Gareth seem far more duplicitous and even more of a shock when he tries to kill Nathaniel.

Heh...  Fun stuff, indeed.  <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
<div align="right">[snapback]102160[/snapback]</div><!--QuoteEnd--></div><!--QuoteEEnd-->
Heh. Yup!
Good luck with the scene!
 
Thanks Nathan, for all the thoughts and suggestions...

I've been so dizzy doing this fix that I'm not sure anymore what worked and what did not. Here is the attribute from Simon's dialog:

<span style='color:red'>pchar.quest.Church_help = "Kinne"; </span>

And the attribute from Kinne's dialog:

<span style='color:red'>pchar.quest.Church_help = "Yedam"; // --Cat</span>

NOW, here is my quest check:
<span style='color:red'>
if (CheckQuestAttribute("Church_help", "Kinne") && !CheckQuestAttribute("Church_help", "Yedam")) // --> Cat </span>

I've edited this some, I looked at the wrong file before. The above is what works.

This is the node from Simon Hanpool's dialog -
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->  case "after_off_2":
     Dialog.snd = "voice\SIHA\SIHA013";
     dialog.text = DLG_TEXT[68] + characters[GetCharacterIndex(DLG_TEXT[69])].name + " " + characters[GetCharacterIndex(DLG_TEXT[70])].lastname + DLG_TEXT[71];
     link.l1 = DLG_TEXT[72];
     link.l1.go = "exit";
     pchar.quest.Church_help = "Kinne";  //  --Cat
     AddQuestRecord("church_help", "8");
     Characters[GetCharacterIndex("Father Bernard")].quest.church_help = "to_dautch";
     Locations[FindLocation("Yedam Kinne_house")].vcskip = true; // NK
 break;<!--c2--></div><!--ec2-->
Here's the context from Greenford_citizen_dialog.c -
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->case "info":
     dialog.snd1 = "";
     dialog.snd2 = "";
     dialog.snd3 = "";
   d.Text = RandPhrase(DLG_TEXT[79] + address_form.eng + DLG_TEXT[80], DLG_TEXT[81], DLG_TEXT[82] + address_form.eng + DLG_TEXT[83], &Dialog, Dialog.snd1, Dialog.snd2, Dialog.snd3);
   if (CheckQuestAttribute("Church_help", "Kinne") && !CheckQuestAttribute("Church_help", "Yedam")) // --> Cat  
   {
       Link.l1 = DLG_TEXT[162];
       Link.l1.go = "Kinne";
   }  //  <-- Cat (&tc)<!--c2--></div><!--ec2-->
This is from Yedam Kinne's dialog -
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->  case "good_6":
     Dialog.snd = "voice\YEKI\YEKI009";
     AddMoneyToCharacter(pchar, -2000);
     dialog.text = DLG_TEXT[21];
     link.l1 = DLG_TEXT[22];
     link.l1.go = "exit";
     AddQuestRecord("church_help", "10");
     AddPartyExp(pchar, 900);
     characters[GetCharacterIndex("Father bernard")].quest.church_help = "good_dautch";
     pchar.quest.Church_help = "Yedam";  //  --Cat
 break;<!--c2--></div><!--ec2--> <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/dunno.gif" style="vertical-align:middle" emoid=":shrug" border="0" alt="dunno.gif" /> Before I added the second attribute and the !Check, if you went out to talk to citizens after talking to Kinne, they'd tell you where he lives. After I added the code, it worked. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/dunno.gif" style="vertical-align:middle" emoid=":shrug" border="0" alt="dunno.gif" /> By "worked", I mean that the citizen dialog reverted back to normal and ignored the call to talk about Kinne. <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/bookish.gif" style="vertical-align:middle" emoid=":mm" border="0" alt="bookish.gif" />
 
<!--QuoteBegin-NathanKell+Apr 22 2005, 10:10 PM--><div class='quotetop'>QUOTE(NathanKell @ Apr 22 2005, 10:10 PM)</div><div class='quotemain'><!--QuoteEBegin-->SFAIK the only things that need a new game are object array resizings.
If you change his dialog, we can write a handler to check for his old dialog, port his old quest attributes over, and, compared to the player's state in the Animists quest, assign new quest attributes appropriately.<!--QuoteEnd--></div><!--QuoteEEnd-->What I did for Terry Snider, as his character profile gave him the dialog of a QC Citizen, was give him his OWN special dialog. I couldn't just change the QC Citizen dialog, I had to create a new one just for him. THAT necessitates the new game... If there's another way to do it, I don't know how.
 
ref chr = CharacterFromID("Terry Snider"); chr.dialog.filename = "new file_dialog.c";

You'll also want to reset chr.quest.meeting probably.
 
<!--QuoteBegin-CatalinaThePirate+Apr 23 2005, 03:34 AM--><div class='quotetop'>QUOTE(CatalinaThePirate @ Apr 23 2005, 03:34 AM)</div><div class='quotemain'><!--QuoteEBegin-->Thanks Nathan, for all the thoughts and suggestions...

I've been so dizzy doing this fix that I'm not sure anymore what worked and what did not.  Here is the attribute from Simon's dialog:

<span style='color:red'>pchar.quest.Church_help = "Kinne"; </span>

And the attribute from Kinne's dialog:

<span style='color:red'>pchar.quest.Church_help = "Yedam";  //  --Cat</span>

NOW, here is my quest check:
<span style='color:red'>
if (CheckQuestAttribute("Church_help", "Kinne") && !CheckQuestAttribute("Church_help", "Yedam")) // --> Cat  </span>

I've edited this some, I looked at the wrong file before.  The above is what works. 

This is the node from Simon Hanpool's dialog -
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->  case "after_off_2":
      Dialog.snd = "voice\SIHA\SIHA013";
      dialog.text = DLG_TEXT[68] + characters[GetCharacterIndex(DLG_TEXT[69])].name + " " + characters[GetCharacterIndex(DLG_TEXT[70])].lastname + DLG_TEXT[71];
      link.l1 = DLG_TEXT[72];
      link.l1.go = "exit";
      pchar.quest.Church_help = "Kinne";  //  --Cat
      AddQuestRecord("church_help", "8");
      Characters[GetCharacterIndex("Father Bernard")].quest.church_help = "to_dautch";
      Locations[FindLocation("Yedam Kinne_house")].vcskip = true; // NK
  break;<!--c2--></div><!--ec2-->
Here's the context from Greenford_citizen_dialog.c -
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->case "info":
      dialog.snd1 = "";
      dialog.snd2 = "";
      dialog.snd3 = "";
    d.Text = RandPhrase(DLG_TEXT[79] + address_form.eng + DLG_TEXT[80], DLG_TEXT[81], DLG_TEXT[82] + address_form.eng + DLG_TEXT[83], &Dialog, Dialog.snd1, Dialog.snd2, Dialog.snd3);
    if (CheckQuestAttribute("Church_help", "Kinne") && !CheckQuestAttribute("Church_help", "Yedam")) // --> Cat  
    {
        Link.l1 = DLG_TEXT[162];
        Link.l1.go = "Kinne";
    }  //  <-- Cat (&tc)<!--c2--></div><!--ec2-->
This is from Yedam Kinne's dialog -
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->  case "good_6":
      Dialog.snd = "voice\YEKI\YEKI009";
      AddMoneyToCharacter(pchar, -2000);
      dialog.text = DLG_TEXT[21];
      link.l1 = DLG_TEXT[22];
      link.l1.go = "exit";
      AddQuestRecord("church_help", "10");
      AddPartyExp(pchar, 900);
      characters[GetCharacterIndex("Father bernard")].quest.church_help = "good_dautch";
      pchar.quest.Church_help = "Yedam";  //  --Cat
  break;<!--c2--></div><!--ec2-->  <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/dunno.gif" style="vertical-align:middle" emoid=":shrug" border="0" alt="dunno.gif" /> Before I added the second attribute and the !Check, if you went out to talk to citizens after talking to Kinne, they'd tell you where he lives.  After I added the code, it worked.  <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/dunno.gif" style="vertical-align:middle" emoid=":shrug" border="0" alt="dunno.gif" />  By "worked", I mean that the citizen dialog reverted back to normal and ignored the call to talk about Kinne.  <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/bookish.gif" style="vertical-align:middle" emoid=":mm" border="0" alt="bookish.gif" />
<div align="right">[snapback]102234[/snapback]</div><!--QuoteEnd--></div><!--QuoteEEnd-->

Could you try again with just if(CheckQuestAttribute("Church_help", "Kinne")) ?
Because at least for me, I can't get it to _not_ work that way, so I'm wondering if maybe there's some other attribute check somewhere that's the problem.
Ah, wait a sec.
You said "Before I added the second attribute and the !Check"
The two are not connected; all you need is the first part of that sentence (because once you change what an attribute's value is, checks against that attribute and the /old/ value will indeed return false).

So:
Did you try changing the attribute (you're not adding a second-you're overwriting the first-when you set an attribute to something different) but without the &&!Check?
Because definitely if you /don't change the attribute/ the checkqattr will still return true; but if you _do_ change it (pchar.quest.church_help = "yedam";) , it [checkqattr "kinne"] will return false with no other check needed: you are checking the attribute is /equal/ to something, not whether the attribute exists (and it will still exist after you change it, just have a different value)
 
Uh, I realize you may well already know this, but for the record (and those who may not), and to perhaps clarify this some:
I've implied, but not stated explicitly, the following:
1. When you set an attribute to a value, just like when you set a variable to a value, the old value is overwritten. For example:
pchar.temp = 5;
pchar.temp = 6;
will not yield two temp attributes, one equal to five and one equal to six, but only /one/ temp attribute, and that equal to 6.

Now, attributes /on different trees/ can have different values, i.e.:
pchar.root1.temp = 5;
pchar.root2.temp = 6;
Will indeed yield two attributes, root1.temp and root2.temp, equal to five and six respectively--but the key is that they are not "both temp", they are "root1.temp" and "root2.temp".

So the short answer: in order to create a different attribute, the thing on the /left/ of the = sign must be different.

2. Boolean operations. When you check something with a bool (i.e. var == 5) it only compares what the variable is now, not what the variable once was. In fact, once you set anything to a new value, the old value is irretreivably lost. Both apply to attributes as well; attributes are just fancy ways for saving hierarchies of strings.
 
Back
Top