• 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!

Fixed Hispaniola Village Church missing priest

Levis

Find(Rum) = false;
Staff member
Administrator
Creative Support
Programmer
Storm Modder
The location "Village_church" On Hispaniola doesn't have a priest at the moment.
Who wants to create one?
 
Be careful here. The "Bartolomeu" storyline puts a priest there temporarily so that Bartolomeu can mug him. We don't want another priest who could be a witness. ;)

@Bartolomeu o Portugues: perhaps make Father Iguaran a permanent resident of the church?
 
Indeed the simplest solution would then probably be to make the storyline character a permanent one instead.
Should be a matter of moving around a few lines of code.
 
Should this guy not be a Spanish priest? On that assumption, I changed him into "Padre" and changed his greeting too:
Code:
// Padre Iguaran
   ch.old.name = "Padre";
   ch.old.lastname = "Iguaran";
   ch.name = TranslateString("","Padre");
   ch.lastname = TranslateString("","Iguaran");
   ch.id     = "Padre Iguaran";
   ch.model   = "Animistse";
   ch.sex = "man";
   LAi_NoRebirthEnable(ch);
   ch.sound_type = "priest";
   ch.location   = "village_church";
   ch.location.group = "goto";
   ch.location.locator = "goto11";
   ch.Dialog.Filename = "Father Samuel_dialog.c";
   ch.Dialog.Filename.group = "church.c";
   ch.rank    = 1;
   ch.reputation = "None";
   ch.experience = "0";
   ch.skill.Leadership = "1";
   ch.skill.Fencing = "1";
   ch.skill.Sailing = "1";
   ch.skill.Accuracy = "1";
   ch.skill.Cannons = "1";
   ch.skill.Grappling = "1";
   ch.skill.Repair = "1";
   ch.skill.Defence = "1";
   ch.skill.Commerce = "1";
   ch.skill.Sneak = "1";
   ch.money = "1";
   LAi_SetMerchantType(ch);
   LAi_SetLoginTime(ch, 0.0, 24.0);
   LAi_NoRebirthEnable(ch);
   ch.greeting = "Gr_Padre Domingues";
   AddGameCharacter(n, ch);
He gets the same dialog that @Grey Roger set up for the Nevis priest he added.

In the Bartolomeu quests_reaction.c file, he then gets his correct quest dialog just before the point where he is needed:
Code:
    case "voir_iguaran2":
       LAi_SetActorType(CharacterFromID("Sean Sparrow"));
       LAi_ActorRunToLocation(characterFromID("Sean Sparrow"), "reload", "reload1", "none", "", "", "", 0.0);
     //   ChangeCharacterAddressGroup(characterFromID("Padre Iguaran"), "village_church", "goto", "goto11");
       Characters[GetCharacterIndex("Padre Iguaran")].Dialog.Filename = "Spaniards_dialog.c";
       Characters[GetCharacterIndex("Padre Iguaran")].Dialog.CurrentNode = "begin_18";
And he goes back to normal later:
Code:
    case "habitmoine2":
       LAi_Fade("habitmoine3", "habitmoine31");
       //ChangeCharacterAddress(characterFromID("Padre Iguaran"), "none", "");
       Characters[GetCharacterIndex("Padre Iguaran")].Dialog.Filename = "Father Samuel_dialog.c";
       Characters[GetCharacterIndex("Padre Iguaran")].Dialog.Filename.group = "church.c";
       break;

I assume the "kill" here is meant to be only temporary?
Code:
    case "habitmoine":
       LAi_KillCharacter(characterFromID("Padre Iguaran"));
       LAi_QuestDelay("habitmoine2", 2.0);

       break;
 
even if the kill is permanent, if you kill a priest in a church I can understand no other priest appearing there for quite some time.
Maybe if @Bartolomeu o Portugues agrees with it, it would be nice to lock the church after that queststage so you can't enter it anymore.
 
It is presumably supposed to be temporary - Bartolomeu is meant to be a good guy and only wants the priest knocked out. From Bartolomeu's conversation with Emilio Soares at that point:
"Is the priest alive, it is a bad omen to kill a priest?",
"Yes, he's tied up in the presbytery. You only knocked him out."
But since he's never needed again in game then it doesn't matter - at least, not until now. I'd suggest not locking the church, or at least, lock it for the rest of the "Anaconda Capture" quest then unlock it later, and restore the priest. He may need to be renamed back to Father / Padre Iguaran as resurrected characters sometimes get new names. Or, instead of 'LAi_KillCharacter', perhaps use 'LAi_SetStunnedTypeNoGroup' or maybe 'LAi_SetLayType'. Then you can return later to the church and see that the priest was indeed only unconscious and is now back on his feet.
 
I think what I did yesterday may suffice for now and agree with @Grey Roger about keeping the church open and the Padre in place.
Not sure if he gets resurrected properly and will be renamed or not. In the worst case, he never comes back to life and/or gets a random name.
But random names can be easily prevented with "questchar". Would need to be checked from testing, I suppose. :shrug
 
If you replace 'LAi_KillCharacter' with 'LAi_SetStunnedTypeNoGroup' or maybe 'LAi_SetLayType' then he doesn't die and renaming is not a problem. ;) ('LAi_SetStunnedTypeNoGroup' makes the character sit down on the ground and has been used elsewhere, including in "Hornblower", which is how I know about it. I'm guessing that 'LAi_SetLayType' makes the character lie down.)
 
If you replace 'LAi_KillCharacter' with 'LAi_SetStunnedTypeNoGroup' or maybe 'LAi_SetLayType' then he doesn't die and renaming is not a problem. ;) ('LAi_SetStunnedTypeNoGroup' makes the character sit down on the ground and has been used elsewhere, including in "Hornblower", which is how I know about it. I'm guessing that 'LAi_SetLayType' makes the character lie down.)
That would be a quick fix, I suppose. And if you've seen it used for similar purposes before, hopefully it makes for a safe solution too.
Thanks! I'll make that change tonight. If it doesn't work as we hope, I'm sure somebody will report it at some point. :onya
 
I haven't used 'LAi_SetLayType' before, but if you can't find anywhere quicker to try it, try using it on Haggman at the end of case "voltigeurs_fire" in the "Hornblower" story and see what he does... (I hadn't even heard of that one when I wrote that case, which is why Haggman sits down when he's been wounded instead of lying down. For now, anyway.)
 
If you replace 'LAi_KillCharacter' with 'LAi_SetStunnedTypeNoGroup' or maybe 'LAi_SetLayType' then he doesn't die and renaming is not a problem. ;) ('LAi_SetStunnedTypeNoGroup' makes the character sit down on the ground and has been used elsewhere, including in "Hornblower", which is how I know about it. I'm guessing that 'LAi_SetLayType' makes the character lie down.)
Did a quick test on it. LAi_SetStunnedTypeNoGroup plays a nice animation to make the guy sit down.
LAi_SetLayTypeNoGroup does make the character lay down, but instantly without animation.
 
Further checking here and I found that three identical "Father" dialog files, so I'm removing two.
And "Father Samuel dialog" doesn't exist, so I'll make him use the remaining one too.
 
SetCharacterTask_Dead seems to do the job:
Code:
    case "habitmoine":
       SetCharacterTask_Dead(characterFromID("Padre Iguaran")); // PB: was LAi_KillCharacter
       LAi_QuestDelay("habitmoine2", 2.0);

       break;

Then the Padre will be missing for a while and is restored shortly after here:
Code:
    case "porte_garde":
       // PB: Return the Padre -->
       ChangeCharacterAddressGroup(characterFromID("Padre Iguaran"), "village_church", "goto", "goto11");
       Characters[GetCharacterIndex("Padre Iguaran")].Dialog.Filename = "Father Abbott_dialog.c";
       Characters[GetCharacterIndex("Padre Iguaran")].Dialog.Filename.group = "church.c";
       LAi_SetMerchantType(characterFromID("Padre Iguaran"));
       // PB: Return the Padre <--
     
       locations[FindLocation("Santo_Domingo_town")].reload.l3.disable = 1;
       locations[FindLocation("Hispaniola_shore_01")].reload.l2.disable = 0;
       ChangeCharacterAddressGroup(characterFromID("spanish_soldier_01"), "Santo_Domingo_town", "goto", "goto52");
       Characters[GetCharacterIndex("spanish_soldier_01")].dialog.filename = "Spaniards_dialog.c";
       Characters[GetCharacterIndex("spanish_soldier_01")].dialog.CurrentNode = "begin_22";
       LAi_SetActorType(characterFromID("spanish_soldier_01"));
       LAi_ActorDialog(characterFromID("spanish_soldier_01"), pchar, "", 2.0, 1.0);

       break;

So at least when you double-back right into the church, he'll still be missing (hiding in that cupboard of his, or something. :cheeky ).

Tested and works. :doff
 
Back
Top