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

Information aboute The New Pirate Age - Update! [WIP]

The thing is, doing a Windows search for "LAI_MONSTERS_GROUP" turns up a few hits in "PROGRAM\Loc_ai". Searching for "monsters" gets a lot more hits, most referring to the locator group rather than the LAi group. The one time I found something actively being assigned, it was in "quests_reactions.c" for "standard", case "monster_generate_in_alcove":
Code:
       case "monster_generate_in_alcove":
           //ChangeCharacterAddressGroup(pchar, "Treasure_alcove", "teleport", "teleport0");

           LAi_group_SetLookRadius("monsters", 30.0);
           /*NK*/ sld = LAi_CreateFantomCharacter(false, 0, true, true, 0.25, "mummy", "goto", "monster1");
           LAi_group_MoveCharacter(sld, "monsters");

           /*NK*/ sld = LAi_CreateFantomCharacter(false, 0, true, true, 0.25, "mummy", "goto", "monster2");
           LAi_group_MoveCharacter(sld, "monsters");

           /*NK*/ sld = LAi_CreateFantomCharacter(false, 0, true, true, 0.25, "mummy", "goto", "monster3");
           //LAi_SetMonkeyType(sld);
           LAi_group_MoveCharacter(sld, "monsters");
           LAi_group_FightGroups("monsters", LAI_GROUP_PLAYER, true);
       break;
In fact, I wasn't sure what the group name was either, at first, so I searched for keyword "monsters", ignored everything that referred to the locators, found that piece of code, and that's why I thought 'LAi_group_MoveCharacter(ch, "monsters");' would be right - someone has already used it. :confused:
 
In fact, I wasn't sure what the group name was either, at first, so I searched for keyword "monsters", ignored everything that referred to the locators, found that piece of code, and that's why I thought 'LAi_group_MoveCharacter(ch, "monsters");' would be right - someone has already used it. :confused:
That explains a lot. Please change it in case "monster_generate_in_alcove" then as well. :doff
 
Ok Thanks and your the compile.log File

And here are the Location:
Donquixote Familie
Doflamingo Donquixote - Douwesen_Pirate_Residence - goto2
Mike Pika - Pirate_Fort - goto19
John Diamante - Smugglers_Residence - goto5
Bellamy - Smugglers_Lair - goto25

The Lighthouse Pirates:
Kuro - Oxbay_Lighthouse - goto19
Jango - ------"----------- - goto14
Gino - ------------"------ - goto18
Genzo - --------"------- - goto28

The New Pirate Age Update - Bonus
Armando Salazar - Redmond_shore_01 - goto citizen01
 

Attachments

  • compile.log
    2.2 KB · Views: 70
Last edited:
The last line of that "compile.log" is:
Code:
SHIP MISSING: ?
Someone has been assigned a ship which is type "?". Check your character definition files - anything in "PROGRAM\Storyline\NewPirateAge\Characters\init". Make sure that everyone who has been given a ship, has a valid ship type as defined in "PROGRAM\Ships\Ships_init.c".
 
And here are the Location:
Donquixote Familie
Doflamingo Donquixote - Douwesen_Pirate_Residence - goto2
Mike Pika - Pirate_Fort - goto19
John Diamante - Smugglers_Residence - goto5
Bellamy - Smugglers_Lair - goto25

The Lighthouse Pirates:
Kuro - Oxbay_Lighthouse - goto19
Jango - ------"----------- - goto14
Gino - ------------"------ - goto18
Genzo - --------"------- - goto28

The New Pirate Age Update - Bonus
Armando Salazar - Redmond_shore_01 - goto citizen01
Then, for example, find where you have defined Mike Pika. Add this to his definition:
Code:
   ch.location   = "Pirate_Fort";
   ch.location.group = "goto";
   ch.location.locator = "goto19";
   LAi_group_MoveCharacter(ch, LAi_monsters_group);
Add similar lines in the definitions of the other characters to have them start the game at their locations.
 
Once again:
Someone has been assigned a ship which is type "?". Check your character definition files - anything in "PROGRAM\Storyline\NewPirateAge\Characters\init". Make sure that everyone who has been given a ship, has a valid ship type as defined in "PROGRAM\Ships\Ships_init.c".

Additionally, "error.log" is complaining about 'CreateTempQuestEnemyCharacters', which should be in "PROGRAM\Storyline\NewPirateAge\characters\init\TempQuestEnemy.c".

Could you upload all the files from folder "PROGRAM\Storyline\NewPirateAge\characters\init\"? The problems will almost certainly be in there.
 
In "TempQuest.c", for Trafalgar Law:
Code:
    ch.Ship.Name = "Polar Tank";
    ch.Ship.Type = "?";
That's what is causing the "SHIP MISSING: ?" in "compile.log". Give Trafalgar Law a valid ship type defined in "PROGRAM\Ships\Ships_init.c".

The first line of "TempQuestEnemy.c" is:
Code:
void CreateTempQuestCharacters(ref n)
That's what is causing the message "function 'CreateTempQuestEnemyCharacters' not found" in "error.log". It should be:
Code:
void CreateTempQuestEnemyCharacters(ref n)

Also in "TempQuestEnemy.c", for Armando Salazar:
Code:
    ch.Ship.Name = "Silent Mary";
    ch.Ship.Type = "Warship5";
Have you created an entry in "Ships_init.c" for "Warship5"? If not, he's going to have the same problem as Trafalgar Law - the game will probably crash and you'll get another "SHIP MISSING" report in "compile.log". Salazar's Silent Mary should look like a ghost ship, ideally a cursed version of "FR_Couronne", but no such model exists. You could try giving him "La_Marianna" instead, which is a cursed version of the fast war galleons.
 
@Grey Roger
Ok that i have fix.

But i get on screen this error.:
ERROR - Quest name Start NOT found in ANY function

:( Whats Wrong?

CU
PK
 

Attachments

  • quests_reaction.c
    2.8 KB · Views: 63
The reason for that error message is that the file ends like this:
Code:
       }
       
       PChar.questnotfound = true; // PB: Testing
}
Move 'PChar.questnotfound = true;' to above the first '}'. At the moment that line always runs, which tells the system that it failed to find a quest name, even though the quest name actually exists.

What are you trying to do here?
Code:
       case "Start":
           Pchar.quest.Join_the_ship_crew.win_condition.l1 = "location";
           PChar.quest.Join_the_ship_crew.win_condition.l1.character = Pchar.id;
           Pchar.quest.Join_the_ship_crew.win_condition.l1.location = "Alice_tavern";
           Pchar.quest.Join_the_ship_crew.win_condition = "Join_the_ship_crew";
           Pchar.quest.Join_the_ship_crew.win_condition.l1 = "location";
           PChar.quest.Join_the_ship_crew.win_condition.l1.character = Pchar.id;
           Pchar.quest.Join_the_ship_crew.win_condition.l1.location = "Turks_Tavern";
       break;
That sets up a condition so that case "Join_the_ship_crew" will activate if you enter the tavern in Alice Town. Then it replaces that with a new condition. Case "Join_the_ship_crew" will activate if you enter the tavern on Turks Island, and will not activate in Alice Town. Also, you have not written a case "Join_the_ship_crew", so it won't work anyway - you'll end up with another message saying "ERROR - Quest name Join_the_ship_crew NOT found in ANY function".

Case "crew" deletes the 'vcskip' attribute on a lot of places. Have you set 'vcskip' on them anywhere else? And how is case "crew" triggered?

Case "Officer" assigns both "Trafalgar D. Water Law" and "Red-Hair Shanks" as companions at the same time. Where is it triggered? Are they both supposed to join you at the same time?
 
I'm not going to write the file for you. You need to learn how to write quest cases yourself, which won't happen if I'm doing it all. So, I'll give you some hints, but you'll edit the file yourself and you'll need to figure out how to extend it to continue the story.

You already have the first hint - move the line PChar.questnotfound = true; to above the first '}'. That will put it inside the main block of code, between a '{' and a '}'. And that should stop the error message about quest case "Start" not being found.

The command 'SetCompanionIndex' joins another ship to your fleet. Both Trafalgar and Redhair have ships in their definitions in "TempQuest.c". (Have you corrected Trafalgar's ship type?) Trafalgar is set to be in Alice Town tavern and Redhair is in Turks Island tavern. So my guess is that you are supposed to meet Trafalgar in Alice Town, where his ship will join you. And you are supposed to meet Redhair on Turks Island, where his ship will join you. Is this correct?
 
Quest i don't have Quest in me Update?
The update Projekt have no quests I will have the Normal Quests from the Game!

Yes that's correct.
 
You do have quests in the update - perhaps not very long ones, but you do have them. A quest is basically anything which happens in a storyline. Meeting Trafalgar Law in Alice town and having him join your fleet is a quest. Meeting Redhair Shanks on Turks Island is another one.

First, look at the statements in your case "Start":
Code:
Pchar.quest.Join_the_ship_crew.win_condition.l1 = "location";
This says that something is going to happen when someone enters a specific place.
Code:
PChar.quest.Join_the_ship_crew.win_condition.l1.character = Pchar.id;
This says that it's the player, i.e. you, who has to enter that place. The game assumes it's the player unless you tell it otherwise, so you can usually leave this line out.
Code:
Pchar.quest.Join_the_ship_crew.win_condition.l1.location = "Alice_tavern";
This says that the place is "Alice_tavern".
Code:
Pchar.quest.Join_the_ship_crew.win_condition = "Join_the_ship_crew";
This is what happens when the player enters "Alice_tavern". It triggers quest case "Join_the_ship_crew". You probably copied the name from "Hornblower" - change it to something more appropriate to your story. For example, if this is where Trafalgar Law is going to join your fleet then change it to something like "Trafalgar_joins".

So, change case "Start" to something like this:
Code:
       case "Start":
           Pchar.quest.Trafalgar_joins.win_condition.l1 = "location";
           Pchar.quest.Trafalgar_joins.win_condition.l1.location = "Alice_tavern";
           Pchar.quest.Trafalgar_joins.win_condition = "Trafalgar_joins";
       break;

That will trigger case "Trafalgar_joins" when you enter Alice Town tavern. So now you need to write case "Trafalgar_joins". You want Trafalgar Law to join your fleet, and you already know how to do that:
Code:
       case "Trafalgar_joins":
           SetCompanionIndex(PChar, -1, GetCharacterIndex("Trafalgar D. Water Law"));
       break;

Do you understand how it all works? Then you can add similar code to case "Start" to trigger case "Redhair_joins" when you enter "Turks_tavern". And write case "Redhair_joins", similar to "Trafalgar_joins", to make Redhair Shanks join your fleet.
 
@Grey Roger
Ah ok! i understand!

Ist the File so ok?

Or musst i copie this to:
Code:
        case "Join_the_ship_crew":
            locations[FindLocation("Antigua_port")].type = "port";
            ChangeCharacterAddress(characterFromID("Major Dunnitt"), "None", "");
            ChangeCharacterAddress(characterFromID("Rifleman Cooper"), "None", "");
            ChangeCharacterAddress(characterFromID("Rifleman Haggman"), "None", "");
            ChangeCharacterAddress(characterFromID("Rifleman Harris"), "None", "");
            ChangeCharacterAddress(characterFromID("Rifleman Higgins"), "None", "");
            ChangeCharacterAddress(characterFromID("Rifleman Tongue"), "None", "");
            ChangeCharacterAddressGroup(CharacterFromID("C.S. Forester"), "none", "", ""); // PB

            ChangeCharacterAddressGroup(characterFromID("Captain Keene"), "Antigua_academy", "goto", "goto4");
            ChangeCharacterAddressGroup(characterFromID("Captain James Sawyer"), "Antigua_academy", "sit", "sit1");
            LAi_ActorSetSitMode(characterFromID("Captain James Sawyer"));
            ChangeCharacterAddressGroup(characterFromID("Jack Simpson"), "Antigua_Academy", "goto", "goto6");
            ChangeCharacterAddressGroup(characterFromID("Archie Kennedy"), "Antigua_Academy", "goto", "goto3");
            ChangeCharacterAddressGroup(characterFromID("Clayton"), "Antigua_Academy", "goto", "goto2");
            ChangeCharacterAddressGroup(characterFromID("Rifleman Cooper"), "Antigua_Academy", "officers", "reload1_2");
            ChangeCharacterAddressGroup(characterFromID("Rifleman Haggman"), "Antigua_Academy", "reload", "reload2");
            ChangeCharacterAddressGroup(characterFromID("William Chumley"), "Antigua_Academy", "goto", "goto5");
            LAi_SetActorType(characterFromID("William Chumley"));
            LAi_SetActorType(characterFromID("Jack Simpson"));
            LAi_SetSitType(characterfromID("Captain James Sawyer"));
            LAi_SetActorType(characterFromID("Captain James Sawyer"));
            characters[GetCharacterIndex("Captain James Sawyer")].Dialog.Filename = "Captain James Sawyer_dialog.c";
            Characters[GetCharacterIndex("Captain James Sawyer")].dialog.currentnode = "Continue_with_Justinian";
            LAi_SetActorType(pchar);
            LAi_ActorGoToLocator((Pchar), "goto", "goto1", "arrived_from_England", 10);
        break;

Placse send me a feedback

PS: Some littel Change:
A Sailer on the Beach tell about the sceound Retun of Salazar.
-> Then Salazar can be found on the Devils Thorne.

:( What i have to doe!
 

Attachments

  • quests_reaction.c
    2.1 KB · Views: 54
You have:
Code:
        case "Start":
          Pchar.quest.Trafalgar_joins.win_condition.l1 = "location";
           Pchar.quest.Trafalgar_joins.win_condition.l1.location = "Alice_tavern";
           Pchar.quest.Trafalgar_joins.win_condition = "Trafalgar_joins";
              Pchar.quest.Trafalgar_joins.win_condition.l1 = "location";
           Pchar.quest.Trafalgar_joins.win_condition.l1.location = "Turks_Tavern";
           Pchar.quest.Trafalgar_joins.win_condition = "Redhair_joins";

        break;
All the lines start "Pchar.quest.Trafalgar_joins", so the condition to set up the meeting in "Turks_Tavern" will replace the condition to set up "Alice_tavern". Nothing will happen when you go into Alice Town tavern. Change the three lines dealing with "Redhair_joins" - replace "Pchar.quest.Trafalgar_joins" with "Pchar.quest.Redhair_joins".

Then you need to write quest cases "Trafalgar_joins" and "Redhair_joins". I already showed you what needs to go into "Trafalgar_joins" in post #375. "Redhair_joins" should be similar, but should make "Red-Hair Shanks" join your fleet instead.

Do not copy all that code from case "Join_the_ship_crew"! It is from the "Hornblower" storyline and refers to characters who do not exist in your storyline. You could, however, look at them to see what they do:
Code:
ChangeCharacterAddress(characterFromID("Major Dunnitt"), "None", "");
This makes a character called "Major Dunnitt" disappear. If you want to make someone else disappear, use that command, and change the name from "Major Dunnitt" to your own character.

Code:
ChangeCharacterAddressGroup(characterFromID("Jack Simpson"), "Antigua_Academy", "goto", "goto6");
This puts a character called "Jack Simpson" onto locator "goto6" in place "Antigua_Academy". If you want to place your own character somewhere else, copy that line and change the character name, place and locator.

In particular, you want to put a sailor on a beach. Have you defined that sailor in one of the files in "PROGRAM\Storyline\NewPirateAge\characters\init"? If not, you will need to do so.

You will also need the name of the beach, and you will need to find the locator on that beach where you want the sailor to stand. You know how to do that - edit "InternalSettings.h", change "VISIBLE_LOCATORS" to 1, then visit the beach and look for the locator. Then copy that line, replace "Jack Simpson" with the name of your sailor, replace "Antigua_Academy" with the name of your beach, and replace "goto" and "goto6" with the names of your locator. We will make him tell you about Salazar when you have done that.
 
@Grey Roger and @Pieter Boelen

Ah ok yes i saw it.

Is there a quest script for meet ..... where I can copy and editot for me storyline for this little quests:
1 Find Trafalgar and Raidhair!
2. The Salazar Quest: Find the Last Navigator from ..... and talke with him, he tells you about the second return of Salazar!
 
Re-read post #377. I already told you there how to edit your existing code to find Trafalgar and Red-Hair, and how to put the navigator on the beach. When you have done that, we can make the navigator tell you about Salazar.
 
Yes I have done that all.

Yes I that Navigator tells in a diloag where Salazar is.

I only need help to make this Quests.
And what have I to doe in the Questbook.
 
Back
Top