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

Mod Release Age of Pirates: Caribbean Tales - Historical Immersion Supermod

Here is some relevant code from PotC that might be useful.
It might be slightly different in CoAS, so you have to see if you can find anything similar. But it'll be close to this anyway.
Code:
       Group_CreateGroup("FlyingDutchman");
       Group_AddCharacter("FlyingDutchman", "Davy Jones");
       Group_SetGroupCommander("FlyingDutchman", "Davy Jones");
       Group_SetPursuitGroup("FlyingDutchman", PLAYER_GROUP);
       Group_SetTaskAttack("FlyingDutchman", PLAYER_GROUP);
       Group_SetAddress("FlyingDutchman", "Cayman", "Quest_ships", "Quest_ship_12");
       Group_LockTask("FlyingDutchman");

       Pchar.quest.Story_Sink_Dutchman1.win_condition.l1 = "Ship_HP";
       Pchar.quest.Story_Sink_Dutchman1.win_condition.l1.character = "Davy Jones";
       Pchar.quest.Story_Sink_Dutchman1.win_condition.l1.quantity = 1;
       Pchar.quest.Story_Sink_Dutchman1.win_condition.l1.operation = "<";
       Pchar.quest.Story_Sink_Dutchman1.win_condition = "Story_Sink_Dutchman";
       Pchar.quest.Story_Sink_Dutchman2.win_condition.l1 = "NPC_Death";
       Pchar.quest.Story_Sink_Dutchman2.win_condition.l1.character = "Davy Jones";
       Pchar.quest.Story_Sink_Dutchman2.win_condition = "Story_Sink_Dutchman";
And:
Code:
     case "Story_Sink_Dutchman":
       GiveItem2Character(PChar, "whatyouwant");
     break;
I will try it, but I will have to change the island (no cayman islands in AoP:CT) and change the quest ship # to the next available value. The AoP version the code is almost identical except for "pchar" vs "PChar".
I plan to tie this back in to quests.c for simplicity. Oh and I also accidentally added to the story_line quest without checking to see if my previous edit (i.e. bloody mischelle encounter) was still there. Thank god I still had the v3.5 in storage just in case or else I would have to download it from Mod DB! Its fixed now and I can work on this.

Here's a few questions:
Do you have to define the character using iChar before using this code?
If using as a quest file would I still have to define it as a quest?
Is it possible to give the player an item before this code initiates?
 
Here is my version:
Code:
void QuestComplete(string sQuestName, string qname)
{
    ref chr;

    //trace("--- QUEST " + sQuestName + " CHECKED ---");
    int iChar = -1;

    switch(sQuestName)
    {
    if (sti(pchar.rank) >= 2)
        {
            PostVideoAndQuest("IntroDutch",0,"login");
        }
        else
        {
            CheckStoryLineRank(qname, 2);
        }
          
        case "login":
        //login Davy Jones
        iChar = GenerateCharacter(PIRATE, WITH_SHIP, "officer", MAN, 1, BOSS);
        characters[iChar].id = "Davy Jones";
        characters[iChar].name = "Davy";
        characters[iChar].lastname = "Jones";
        characters[iChar].model = "pirate_5";
        characters[iChar].Ship.Type = GenerateShip(SHIP_DUTCHMAN, 1);
        characters[iChar].ship.name = "The Flying Dutchman";
        characters[iChar].skill.Fencing = 10;
        characters[iChar].skill.Gun = 10;
        GiveItem2Character(CharacterFromID("Davy Jones"), "blade15");
        EquipCharacterByItem(CharacterFromID("Davy Jones"), "blade15");
        characters[iChar].cannotsurrender = 1;
        DoQuestCheckDelay("rank5 check", 2);          
      
        //give item to char to find dutchman
        GiveItem2Character(pchar, "slip");
      
        //generate encounter
        iChar = GetCharacterIndex("Davy Jones");
        DeleteAttribute(&characters[iChar], "seaai");
        Group_CreateGroup("FlyingDutchman");
        Group_AddCharacter("FlyingDutchman", "Davy Jones");
        Group_SetGroupCommander("FlyingDutchman", "Davy Jones");
        Group_SetPursuitGroup("FlyingDutchman", PLAYER_GROUP);
        Group_SetAddress("FlyingDutchman", "Grenada", "quest_ships", "quest_ship_1");
        SetCharacterRelationBoth(nMainCharacterIndex, iChar, RELATION_ENEMY);
        Group_SetTaskAttack("FlyingDutchman", PLAYER_GROUP);
        Group_LockTask("FlyingDutchman");
        UpdateRelations();

        //check for death
        pchar.quest.Story_Sink_Dutchman1.win_condition.l1 = "Ship_HP";
        pchar.quest.Story_Sink_Dutchman1.win_condition.l1.character = "Davy Jones";
        pchar.quest.Story_Sink_Dutchman1.win_condition.l1.quantity = 1;
        pchar.quest.Story_Sink_Dutchman1.win_condition.l1.operation = "<";
        pchar.quest.Story_Sink_Dutchman1.win_condition = "Story_Sink_Dutchman";
        pchar.quest.Story_Sink_Dutchman2.win_condition.l1 = "NPC_Death";
        pchar.quest.Story_Sink_Dutchman2.win_condition.l1.character = "Davy Jones";
        pchar.quest.Story_Sink_Dutchman2.win_condition = "Story_Sink_Dutchman";
      
    case "Story_Sink_Dutchman":
        GiveItem2Character(pchar, "blade19");
        GiveItem2Character(pchar, "gun6");
        TakeItemFromCharacter(pchar, "slip");
        PostVideoAndQuest("OutroDutch",0,"")
    break;
    }
}

I know why the quest movie isn't working. There is something in the following code that makes the game pause with camera sleep and after playing the video reloads the location.
Code:
case "go_room":
            DoQuestReloadToLocation(pchar.location + "_room", "goto", "goto1", "sleep" + rand(2));
        break;

        case "sleep0":
            PostVideoAndQuest("Whore_0",0,"sleep");
        break;
       
        case "sleep1":
            PostVideoAndQuest("Whore_1",0,"sleep");
        break;
       
        case "sleep2":
            PostVideoAndQuest("Whore_2",0,"sleep");
        break;

        case "sleep":
            PlaceCharacter(characterFromID("whore2"), "reload", "reload1_back");
            LAi_SetActorType(pchar);
            LAi_SetActorType(characterFromID("whore2"));
            Characters[GetCharacterIndex("whore2")].Dialog.CurrentNode = "room_sleep";
            LAi_ActorFollow(pchar, characterFromID("whore2"), "5.0", 1.0);
            LAi_ActorWaitDialog(pchar, characterFromID("whore2"));
            LAi_ActorDialog(characterFromID("whore2"), pchar, "room_exit", 5.0, 0);
        break;

        case "room_exit":
            LAi_SetCurHPMax(pchar);
            LAi_ActorGoToLocation(CharacterFromID("whore2"), "reload", "reload1_back", "none", "goto", "goto4", "", 10.0);
            LAi_SetPlayerType(pchar);
        break;

More questions:
How could this code be modified to play only one video and unload before and reload after the video at pchar current location?
 
Last edited:
Edited quest again:
Code:
void D_EQuestComplete(string sQuestName, string qname)
{
    ref chr;

    //trace("--- QUEST " + sQuestName + " CHECKED ---");
    int iChar = -1;

    switch(sQuestName)
    {
    if (sti(pchar.rank) >= 2)
        {
            DoQuestReloadToLocation(pchar.location + "reload_1", "video1", "", "" + rand(2));
        }
        else
        {
            CheckStoryLineRank(qname, 2);
        }
          
        case "video1":
        PostVideoAndQuest("IntroDutch",0,"login");
        break;
      
        case "login":
        //login Davy Jones
        iChar = GenerateCharacter(PIRATE, WITH_SHIP, "officer", MAN, 1, BOSS);
        characters[iChar].id = "Davy Jones";
        characters[iChar].name = "Davy";
        characters[iChar].lastname = "Jones";
        characters[iChar].model = "pirate_5";
        characters[iChar].Ship.Type = GenerateShip(SHIP_DUTCHMAN, 1);
        characters[iChar].ship.name = "The Flying Dutchman";
        characters[iChar].skill.Fencing = 10;
        characters[iChar].skill.Gun = 10;
        GiveItem2Character(CharacterFromID("Davy Jones"), "blade15");
        EquipCharacterByItem(CharacterFromID("Davy Jones"), "blade15");
        characters[iChar].cannotsurrender = 1;
        DoQuestCheckDelay("rank5 check", 2);          
      
        //give item to char to find dutchman
        GiveItem2Character(pchar, "slip");
      
        //generate encounter
        iChar = GetCharacterIndex("Davy Jones");
        DeleteAttribute(&characters[iChar], "seaai");
        Group_CreateGroup("FlyingDutchman");
        Group_AddCharacter("FlyingDutchman", "Davy Jones");
        Group_SetGroupCommander("FlyingDutchman", "Davy Jones");
        Group_SetPursuitGroup("FlyingDutchman", PLAYER_GROUP);
        Group_SetAddress("FlyingDutchman", "Grenada", "quest_ships", "quest_ship_1");
        SetCharacterRelationBoth(nMainCharacterIndex, iChar, RELATION_ENEMY);
        Group_SetTaskAttack("FlyingDutchman", PLAYER_GROUP);
        Group_LockTask("FlyingDutchman");
        UpdateRelations();

        //check for death
        pchar.quest.Story_Sink_Dutchman1.win_condition.l1 = "Ship_HP";
        pchar.quest.Story_Sink_Dutchman1.win_condition.l1.character = "Davy Jones";
        pchar.quest.Story_Sink_Dutchman1.win_condition.l1.quantity = 1;
        pchar.quest.Story_Sink_Dutchman1.win_condition.l1.operation = "<";
        pchar.quest.Story_Sink_Dutchman1.win_condition = "Story_Sink_Dutchman";
        pchar.quest.Story_Sink_Dutchman2.win_condition.l1 = "NPC_Death";
        pchar.quest.Story_Sink_Dutchman2.win_condition.l1.character = "Davy Jones";
        pchar.quest.Story_Sink_Dutchman2.win_condition = "Story_Sink_Dutchman";
      
    case "Story_Sink_Dutchman":
        GiveItem2Character(pchar, "blade19");
        GiveItem2Character(pchar, "gun6");
        TakeItemFromCharacter(pchar, "slip");
        DoQuestReloadToLocation(pchar.location + "", "video2", "", "" + rand(2));
    break;
  
    case "video2":
        PostVideoAndQuest("OutroDutch",0,"");
    break;
    }
}

Error is:
COMPILE ERROR - file: quests\dutch_encounter.c; line: 75
syntax error

In other words second to last bracket in the entire code. I already fixed the lack of 2 arguments in the reload code and reset the quest def in quests.c because just defining it as "QuestComplete" causes a conflict with another file that uses the same definition to run.
 
Last edited:
Couple of things that stand out:
Code:
  if (sti(pchar.rank) >= 2)
  {
  DoQuestReloadToLocation(pchar.location + "reload_1", "video1", "", "" + rand(2));
  }
  else
  {
  CheckStoryLineRank(qname, 2);
  }
Not sure what this part is for, but I think it should not be inside that switch-statement.

Also, it looks like pchar is not defined in the D_EQuestComplete function.
Recommend putting a line like this near that int iChar at the top:
Code:
ref pchar = GetMainCharacter();

Those are the main things that stand out to me right now.
 
Couple of things that stand out:
Code:
  if (sti(pchar.rank) >= 2)
  {
  DoQuestReloadToLocation(pchar.location + "reload_1", "video1", "", "" + rand(2));
  }
  else
  {
  CheckStoryLineRank(qname, 2);
  }
Not sure what this part is for, but I think it should not be inside that switch-statement.

Also, it looks like pchar is not defined in the D_EQuestComplete function.
Recommend putting a line like this near that int iChar at the top:
Code:
ref pchar = GetMainCharacter();

Those are the main things that stand out to me right now.
Pieter,

"DoQuestReloadToLocation" is a quests.c defined variable. When used with four arguments signified by quotation marks it will do those arguments in order. If "pchar.location" is used, the game will reference the player's current location and determine the locators that should be used in the other arguments. Special arguments (ones that aren't locators determined by the game) are defined in a "dead end" case after the reload to location code; in which that function is only performed once such as "video1". This also allows for the game to pause while a movie plays and then reload the location you have set in the arguments to teleport.

Quests.c definition code (p.s. the "//" words at the top are roughly translated from Russian):
Code:
// Reboot the main character in another location and the completion of the quest cause
//-------------------------------------------------------------------------------
bool DoQuestReloadToLocation(string idLocation, string idGroup, string idLocator, string questName)
{
    if(sQuestNameAfterReload!="_") return false;
    sQuestNameAfterReload = questName;
    if(bSeaActive)
    {
        idxOldLocation = -1;
        SetEventHandler(EVENT_LOCATION_LOAD,"DoDeleteFakeLocation",0);
        return DoReloadFromSeaToLocation(idLocation,idGroup,idLocator);
    }
    if(IsEntity(worldMap))
    {
        idxOldLocation = -1;
        SetEventHandler(EVENT_LOCATION_LOAD,"DoDeleteFakeLocation",0);
        return DoReloadFromWorldMapToLocation(idLocation,idGroup,idLocator);
    }
    return DoReloadCharacterToLocation(idLocation,idGroup,idLocator);
}

An example of "DoQuestReloadToLocation":
Code:
case "sleep_in_tavern":
            DoQuestReloadToLocation(pchar.location + "_upstairs", "goto", "goto1", "restore_hp");
        break;
      
        case "restore_hp":
            int iOfficer;
            LAi_SetCurHPMax(pchar);
            for (int i=1; i<4; i++)
            {
                if (GetOfficersIndex(Pchar, i) != -1)
                {
                    iOfficer = GetOfficersIndex(Pchar, i);
                    LAi_SetCurHPMax(&characters[iOfficer]);
                }
            }          
        break;


And

Code:
case "go_room":
            DoQuestReloadToLocation(pchar.location + "_room", "goto", "goto1", "sleep" + rand(2));
        break;

        case "sleep0":
            PostVideoAndQuest("Whore_0",0,"sleep");
        break;
      
        case "sleep1":
            PostVideoAndQuest("Whore_1",0,"sleep");
        break;
      
        case "sleep2":
            PostVideoAndQuest("Whore_2",0,"sleep");
        break;

        case "sleep":
            PlaceCharacter(characterFromID("whore2"), "reload", "reload1_back");
            LAi_SetActorType(pchar);
            LAi_SetActorType(characterFromID("whore2"));
            Characters[GetCharacterIndex("whore2")].Dialog.CurrentNode = "room_sleep";
            LAi_ActorFollow(pchar, characterFromID("whore2"), "5.0", 1.0);
            LAi_ActorWaitDialog(pchar, characterFromID("whore2"));
            LAi_ActorDialog(characterFromID("whore2"), pchar, "room_exit", 5.0, 0);
        break;

        case "room_exit":
            LAi_SetCurHPMax(pchar);
            LAi_ActorGoToLocation(CharacterFromID("whore2"), "reload", "reload1_back", "none", "goto", "goto4", "", 10.0);
            LAi_SetPlayerType(pchar);
        break;
(rand must be a randomizer. This code was the old brothel code from the original supermod. although the videos have been removed the code still works.)

story_line.c nor any other quest file has the code "ref pchar = GetMainCharacter();" thus it doesn't exist in AoP.

Have you noticed the error?

"COMPILE ERROR - file: quests\dutch_encounter.c; line: 75
syntax error"

The error points to the second to last bracket in the code shown in post #163.
 
Last edited:
It finally works!

the battle is only half over. Either giving item "slip" infinitely or doing the encounter. Trying to use the story line to give the item and the quest file to take it away. New code:
Code:
void D_EQuestComplete(string sQuestName, string qname)
{
    ref chr;

    //trace("--- QUEST " + sQuestName + " CHECKED ---");
    int iChar = -1;
    string sVideoFile = "";

    switch(sQuestName)
    {  
            case "login":
            //login Davy Jones
            iChar = GenerateCharacter(PIRATE, WITH_SHIP, "officer", MAN, 1, BOSS);
            characters[iChar].id = "Davy Jones";
            characters[iChar].name = "Davy";
            characters[iChar].lastname = "Jones";
            characters[iChar].model = "pirate_5";
            characters[iChar].Ship.Type = GenerateShip(SHIP_DUTCHMAN, 1);
            characters[iChar].ship.name = "The Flying Dutchman";
            characters[iChar].skill.Fencing = 10;
            characters[iChar].skill.Gun = 10;
            GiveItem2Character(CharacterFromID("Davy Jones"), "blade15");
            EquipCharacterByItem(CharacterFromID("Davy Jones"), "blade15");
            characters[iChar].cannotsurrender = 1;          
      
            //generate encounter
            iChar = GetCharacterIndex("Davy Jones");
            DeleteAttribute(&characters[iChar], "seaai");
            Group_CreateGroup("FlyingDutchman");
            Group_AddCharacter("FlyingDutchman", "Davy Jones");
            Group_SetGroupCommander("FlyingDutchman", "Davy Jones");
            Group_SetPursuitGroup("FlyingDutchman", PLAYER_GROUP);
            Group_SetAddress("FlyingDutchman", "Grenada", "quest_ships", "quest_ship_1");
            SetCharacterRelationBoth(nMainCharacterIndex, iChar, RELATION_ENEMY);
            Group_SetTaskAttack("FlyingDutchman", PLAYER_GROUP);
            Group_LockTask("FlyingDutchman");
            UpdateRelations();
          
            GiveItem2Character(pchar, "slip")

            //check for death
            pchar.quest.Story_Sink_Dutchman1.win_condition.l1 = "Ship_HP";
            pchar.quest.Story_Sink_Dutchman1.win_condition.l1.character = "Davy Jones";
            pchar.quest.Story_Sink_Dutchman1.win_condition.l1.quantity = 1;
            pchar.quest.Story_Sink_Dutchman1.win_condition.l1.operation = "<";
            pchar.quest.Story_Sink_Dutchman1.win_condition = "Story_Sink_Dutchman";
            pchar.quest.Story_Sink_Dutchman2.win_condition.l1 = "NPC_Death";
            pchar.quest.Story_Sink_Dutchman2.win_condition.l1.character = "Davy Jones";
            pchar.quest.Story_Sink_Dutchman2.win_condition = "Story_Sink_Dutchman";
        break;
      
      
      
        case "Story_Sink_Dutchman":
            GiveItem2Character(pchar, "blade19");
            GiveItem2Character(pchar, "gun6");
            TakeItemFromCharacter(pchar, "slip")
        break;      
    }
}

EDIT: pslip is now given via the Storyline along with the half map. The take item and give items at the end is still not working.
 
Last edited:
EDIT: New Results MUCH BETTER! xD

The quest is init by the quester_1 in Bridgetown tavern. he gives you "slip". the ship encounter is good but not great (ironing out the bugs now). The only problem is giving the reward items for some odd reason:wp. The videos are never working so I removed the links, but kept the videos in the directory as an "easter egg".

NEW QUEST CODE:
Code:
void DutchEncounterQuestComplete(string sQuestName, string qname)
{
    ref chr;

    //trace("--- QUEST " + sQuestName + " CHECKED ---");
    int iChar = -1;
    string sVideoFile = "";

    switch(sQuestName)
    {
        case "begin_dutchencounter":
            DoQuestReloadToLocation(pchar.location + "_upstairs", "goto", "goto1", "Exit to IM sea");
        break;

        case "Exit to IM sea":
     
        //login Davy Jones
            iChar = GenerateCharacter(PIRATE, WITH_SHIP, "officer", MAN, 1, BOSS);
            characters[iChar].id = "Davy Jones";
            characters[iChar].name = "Davy";
            characters[iChar].lastname = "Jones";
            characters[iChar].model = "pirate_5";
            characters[iChar].Ship.Type = GenerateShip(SHIP_DUTCHMAN, 1);
            characters[iChar].ship.name = "The Flying Dutchman";
            characters[iChar].skill.cannons = 10;
            characters[iChar].skill.grappling = 10;
            characters[iChar].skill.defense = 10;
            characters[iChar].cannotsurrender = 1;
     
        //generate encounter
            iChar = GetCharacterIndex("Davy Jones");
            DeleteAttribute(&characters[iChar], "seaai");
            Group_CreateGroup("FlyingDutchman");
            Group_AddCharacter("FlyingDutchman", "Davy Jones");
            Group_SetGroupCommander("FlyingDutchman", "Davy Jones");
            Group_SetPursuitGroup("FlyingDutchman", PLAYER_GROUP);
         
            string sLocator = "quest_ship_1" + (rand(2)+4);
            Group_SetAddress("FlyingDutchman", "Grenada", "quest_ships", "quest_ship_1");
            SetCharacterRelationBoth(nMainCharacterIndex, iChar, RELATION_ENEMY);
         
            Group_SetTaskAttack("FlyingDutchman", PLAYER_GROUP);
            Group_LockTask("FlyingDutchman");
            UpdateRelations();
        break;
         

            //start check: kill ships
            pchar.quest.Kill_ships.win_condition.l1 = "npc_death";
            pchar.quest.Kill_ships.win_condition.l1.character = iChar;
            pchar.quest.Kill_ships.win_condition = "dutchman_dead";
         

        case "dutchman_dead":
            GiveItem2Character(pchar, "blade19");
            GiveItem2Character(pchar, "gun6");
            TakeItemFromCharacter(pchar, "slip");
        break;
    }

}
 
Last edited:
I know what DoQuestReloadToLocation does, buy I wasn't sure what its purpose was there in the code.
An error in the last bracket of the file generally indicates a problem elsewhere in the file.
These can be quite hard to track down, but you can try by putting in your sections of code bit-by-bit and see when it stops working.

Also, if I see correctly, this line is still missing:
Code:
ref pchar = GetMainCharacter();
That might be the reason for the problem.
 
I know what DoQuestReloadToLocation does, buy I wasn't sure what its purpose was there in the code.
An error in the last bracket of the file generally indicates a problem elsewhere in the file.
These can be quite hard to track down, but you can try by putting in your sections of code bit-by-bit and see when it stops working.

Also, if I see correctly, this line is still missing:
Code:
ref pchar = GetMainCharacter();
That might be the reason for the problem.

There's no record in AoP of the definition or use of that code. I have checked thoroughly. I need a new method of checking if the ship is captured or sunk. In the edit in post 168 I told you everything up to the second to last break in that code was working.

The reward check code:

Code:
  //start check: kill ships
            pchar.quest.Kill_ships.win_condition.l1 = "npc_death";
            pchar.quest.Kill_ships.win_condition.l1.character = iChar;
            pchar.quest.Kill_ships.win_condition = "dutchman_dead";

This is not working to init the final case where the Items are given and lost at the end of this quest. The beginning and the encounter is working FINALLY.:bow
 
Last Test (I hope) of the quest. Used the chat_quester_1.c dialog to have another case init after the Dutchman is spawned. After you sink the dutchman you will go back to him to get the reward.

EDIT:
Just need to iron out a bug with the dialog file and the quest will be ready!

EDIT2:
The Quest is like 5 or less edits away to becoming done!

EDIT3:
LAST EDIT :D if all goes well!

EDIT_FINAL:
QUEST IS DONE!
:ship
 
Last edited:
Need to do a clean install like I did with 3.5 and copy the files over to the new test game "3". Then I can see what I forgot to copy over from test game "2" to the supermod folder. I have checked the supermod already and it looks like I have all the files I edited/created, but I cannot be too careful.

Prerelease v4.0 Changelog:
- Added COAS Dutchman (flyingdutchman1(GOF ERAS))

- Edited stats for COAS Dutchman - Same HP as a manowar with 92pdr mortars.

- Edited starting ship for Beatrice and Blaze Sharp - Both get a Sloop.

- Edited starting money - they both get 40,000 gold.

- Made 7z file a self extracting archive.

- Replaced schooner (ColonialSchooner(GOF ERAS))

- got sailorspoints for all ships

- revamped dialog

-revamped voice files

- added EasterEgg in files (bonus videos)

- added better 8 and 12 pounder gun sounds

- added Dutchman encounter quest

- Fixed some English showing in Russian and French

- Replaced "all music" scheme with a custom music scheme from COAS (classical music mod)
 
Found a problem! it seems that the "encounter" part of the quest isn't terminating making the game think that Marcus, the iChar defined and elaborated in story_line generates the flying dutchman for bloody mischelle and a random ship for Le Mona. The last test was my Dutchman vs the bloody mischelle as a DUTCHMAN! and Le mona as a random ship, but that time it was a man-o-war! Im going to try adding at the end of the quest "DutchEncounterQuestComplete(sQuestName, qname)" to try and calm things down. If not I'm going to have to think of another way of defining the dutchman char.

EDIT1: That didn't work. The game now crashes when you try to start a new profile. Removing it and trying to define a new char type.

EDIT2: I put the "init" where the iChar details are, not outside the brackets. What a Difference inside vs outside makes! The storyline has its ship back! I have to make sure sound_alias.ini and music_ini are "up to snuff", but I think by George the III we've done it!

EDIT_FINAL!
PACKING VERSION 4.0! THIS VERSION WILL SET SAIL SOON! :doff
 
Last edited:
I'll find the time to audio commentary a full mod overview and a "lets play series" next week maybe. I'll be out of town the week after next and the next week following I'm getting all 4 of my wisdom teeth pulled so I will not be available.
 
:pflag
I'm starting this thread back up again as I have given a full test game to David Binkley, a master at C/C++, so he can look at and help me implement features that weren't quite realized and help me fix a few fatal bugs and deadlock fixes that couldn't be implemented before. The new update is currently in neonatal stages. The new update is not official yet, but it may come. In the meantime please continue watching this thread for possible upcoming updates! :doff
:ship
 
Good to hear everything worked out in the end. If you need any help just tag me in a post and I will look at it :).
 
Good to hear everything worked out in the end. If you need any help just tag me in a post and I will look at it :).
Now that you mention it, I really want a thorough look into it because it seems David Binkley is not having the time to look at such an convoluted set of H and C files..... I am more experienced in visual basic than I am in C/C++ (in the case of C/C++ more situational than proficient). It may drastically help to have a fresh set of eyes looking at it with me. Do you have AOP:CT on your computer? I can give you a dev test game if you'd like. The specific things I want to fix is the surrender dialog CTD bug, the stacking music bug, and complete the quest in the way I intended it. The quest should redirect to the dialog file to do the next.diag.currentnode which will be set to the case of "dutchman_reward" when the moment AI Character iChar HP <=0.
 
Back
Top