Who Me or Artois? <img src="http://www.piratesahoy.com/forum/style_emoticons/<#EMO_DIR#>/dunno.gif" style="vertical-align:middle" emoid="
" border="0" alt="dunno.gif" />
Right i now have build mod and when i save him and dont press him for information he goes back to the orginal dialog and the quest starts all over again excepet that the pirates are not standing over him so i cant save him
two files you will want to see
The relevent bit of quests_reaction.c
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->//Artois Voysey
case "Story_Artois":
if (CheckQuestAttribute("main_line", "ines_info_denied"))
{
LAi_QuestDelay("Story_Artois", 4.0);
}
else
{
DeleteAttribute(&Locations[FindLocation("QC_Town")],"vcskip"); // NK
LAi_SetHP(characterFromID("Artois Voysey"), 50.0, 50.0);
LAi_SetHP(characterFromID("Nigel Blythe"), 50.0, 50.0);
LAi_SetActorType(CharacterFromID("Artois Voysey"));
LAi_SetActorType(CharacterFromID("Nigel Blythe"));
LAi_group_MoveCharacter(CharacterFromID("Artois Voysey"), "Artois");
LAi_group_MoveCharacter(CharacterFromID("Nigel Blythe"), "Nigel");
LAi_SetImmortal(CharacterFromID("Nigel Blythe"), true);
LAi_ActorAttack(characterFromID("Nigel Blythe"), characterFromID("Artois Voysey"), "");
LAi_ActorAttack(characterFromID("Artois Voysey"), characterFromID("Nigel Blythe"), "");
LAi_SetCheckMinHP(characterFromID("Artois Voysey"), 20.0, true, "Story_Artois_2");
LAi_SetActorType(pchar);
LAi_ActorFollow(pchar, characterFromID("Nigel Blythe"), "", 25.0);
}
StartQuestMovie(true, false, false);
break;
case "Story_Artois_2":
LAi_SetStayType(pchar);
LAi_type_actor_Reset(characterFromID("Artois Voysey"));
LAi_type_actor_Reset(characterFromID("Nigel Blythe"));
LAi_ActorDialog(characterFromID("Nigel Blythe"), pchar, "", 2.0, 1.0);
break;
case "saving_artois":
LAi_SetImmortal(characterFromID("Nigel Blythe"), false);
LAi_SetPlayerType (Pchar);
LAi_group_MoveCharacter(CharacterFromID("Nigel Blythe"), "nigel_2");
//LAi_group_MoveCharacter(CharacterFromID("Artois Voysey"), "Artois");
LAi_group_FightGroups("nigel_2", LAI_GROUP_PLAYER, true);
LAi_group_SetCheck("nigel_2", "Artois_saved");
break;
case "Artois_saved":
EndQuestMovie();
SetQuestHeader("Artois");
AddQuestRecord("artois", "1");
LAi_SetActorType(pchar);
LAi_SetActorType(CharacterFromID("Artois Voysey"));
LAi_ActorWaitDialog(CharacterFromID("Artois Voysey"), PChar);
LAi_ActorDialog(PChar, CharacterFromID("Artois Voysey"), "", 2.0, 1.0);
break;
case "Voysey_listed":
LAi_SetImmortal(characterFromID("Artois Voysey"), false);
Pchar.quest.Artois_Voysey.win_condition.l1 = "location";
Pchar.quest.Artois_Voysey.win_condition.l1.character = "Artois Voysey";
Pchar.quest.Artois_Voysey.win_condition.l1.location = "Conceicao_port";
PChar.quest.Artois_Voysey.win_condition = "Artois_missed";
//NK --> fix for Artois quest repeating
pchar.quest.Voysey_lost = "0";
//NK <--
LAi_SetPlayerType(Pchar);
SetOfficersIndex(Pchar, 3, GetCharacterIndex("Artois Voysey")); // NK was -1
LAi_SetOfficerType(characterFromID("Artois Voysey"));
break;
case "Voysey_listed_2":
LAi_SetImmortal(characterFromID("Artois Voysey"), false);
LAi_SetPlayerType(Pchar);
SetOfficersIndex(Pchar, -1, GetCharacterIndex("Artois Voysey"));
break;
case "Artois_missed":
//NK -->
if(!CheckAttribute(PChar,"quest.Voysey_lost") || PChar.quest.Voysey_lost != "0") break;
//NK <--
if(FindFellowTravellers(PChar, CharacterFromId("Artois Voysey")) == FELLOWTRAVEL_OFFICER || FindFellowTravellers(PChar, CharacterFromId("Artois Voysey")) == FELLOWTRAVEL_PASSENGER)
{
LAi_LocationMonstersGen(&locations[FindLocation("Conceicao_town_exit")], false);
pchar.quest.Voysey_lost = "1";
RemovePassenger(pchar, characterFromID("Artois Voysey"));
LAi_SetActorType(Pchar);
Pchar.Temp.self.dialog = Pchar.dialog.currentnode;
Pchar.dialog.currentnode = "Artois_lost";
LAi_ActorSelfDialog(Pchar, "player_back");
AddQuestRecord("artois", "4");
characters[GetCharacterIndex("Artois Voysey")].location = "Redmond_store";
ChangeCharacterAddress(characterFromID("Artois Voysey"), "none", "");
}
break;
case "artois_before_room_on_second_floor":
AddQuestRecord("artois", "5");
Locations[FindLocation("Conceicao_tavern")].reload.l2.disable = false;
Pchar.quest.Blaze_arrest.win_condition.l1 = "location";
Pchar.quest.Blaze_arrest.win_condition.l1.location = "Conceicao_tavern_upstairs";
PChar.quest.Blaze_arrest.win_condition = "Blaze_arrest";
pchar.quest.Voysey_lost = "2";
break;
case "Blaze_arrest":
AddQuestRecord("artois", "6");
Locations[FindLocation("Conceicao_tavern")].reload.l2.disable = true;
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "brodyaga", "goto", "goto4");
sld.dialog.filename = "anacleto_dialog.c";
sld.dialog.currentnode = "ask_about_artois";
LAi_SetActorType(sld);
LAi_ActorSetLayMode(sld);
LAi_ActorWaitDialog(sld, pchar);
LAi_SetActorType(pchar);
LAi_ActorDialog(pchar, sld, "", 4.0, 1.0);
break;
case "Blaze_cop_dialog":
Locations[FindLocation("Conceicao_tavern_upstairs")].reload.l1.disable = true;
LAi_SetPlayerType(pchar);
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "reload", "reload1");
sld.Dialog.Filename = "Cops_dialog.c";
sld.dialog.currentnode = "First time";
sld.id = "solja";
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "reload", "reload1");
LAi_SetActorType(sld);
LAi_ActorFollow (sld, pchar, "", 10);
sld.id = "solja1";
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
LAi_SetActorType(characterfromID("solja"));
LAi_ActorDialog(characterfromID("solja"), PChar, "", 10, 10);
LAi_SetPlayerType(Pchar);
break;
case "artois_fight_in_tavern_upstairs":
LAi_SetWarriorType(characterfromID("solja"));
LAi_SetWarriorType(characterfromID("solja1"));
LAi_group_MoveCharacter(characterFromID("solja"), "CONCEICAO_SOLDIERS");
LAi_group_MoveCharacter(characterFromID("solja1"), "CONCEICAO_SOLDIERS");
LAi_group_SetCheck("CONCEICAO_SOLDIERS", "Open_Locators");
LAi_group_FightGroups("CONCEICAO_SOLDIERS", LAI_GROUP_PLAYER, true);
// unneeded if(GetRMRelation(GetMainCharacter(), PORTUGAL) > REL_AFTERATTACK) SetRMRelation(GetMainCharacter(), PORTUGAL, REL_AFTERATTACK); // RM - SetNationRelation2MainCharacter(PORTUGAL, RELATION_ENEMY);
LeaveService(PChar, PORTUGAL, false); // RM
AddQuestRecord("artois", "7");
break;
case "Open_Locators":
Locations[FindLocation("Conceicao_tavern_upstairs")].reload.l1.disable = false;
Pchar.quest.fight.win_condition.l1 = "location";
Pchar.quest.fight.win_condition.l1.location = "Conceicao_town";
PChar.quest.fight.win_condition = "Blaze_fight_the_world";
Pchar.quest.artois_captured.win_condition.l1 = "location";
Pchar.quest.artois_captured.win_condition.l1.location = "Conceicao_town_exit";
PChar.quest.artois_captured.win_condition = "artois_captured";
break;
case "Blaze_fight_the_world":
pchar.quest.escape_from_conceicao.win_condition.l1 = "location";
pchar.quest.escape_from_conceicao.win_condition.l1.location = "conceicao";
pchar.quest.escape_from_conceicao.win_condition = "escape_from_conceicao";
Locations[FindLocation("Conceicao_town")].reload.l3.disable = true;
if (GetCharacterSkill(pchar, SKILL_SNEAK) < 3)
{
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto3");
LAi_SetActorType(sld);
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto5");
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto5");
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto3");
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
LAi_group_FightGroups("CONCEICAO_SOLDIERS", LAI_GROUP_PLAYER, true);
}
break;
case "escape_from_conceicao":
Locations[FindLocation("Conceicao_town")].reload.l3.disable = false;
PChar.quest.possible_for_resque_artois.win_condition.l1 = "Timer";
PChar.quest.possible_for_resque_artois.win_condition.l1.date.day = GetAddingDataDay(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition.l1.date.month = GetAddingDataMonth(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition.l1.date.year = GetAddingDataYear(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition = "possible_for_resque_artois";
break;
case "possible_for_resque_artois":
pchar.quest.artois_captured.over = "yes";
ChangeCharacterAddress(CharacterFromID("Artois Voysey"), "none", "");
ChangeCharacterAddress(CharacterFromID("Pirates_1"), "none", "");
ChangeCharacterAddress(CharacterFromID("Pirates_2"), "none", "");
ChangeCharacterAddress(CharacterFromID("Pirates_3"), "none", "");
CloseQuestHeader("Artois");
break;
case "artois_captured":
LAi_SetImmortal(characterFromID("Artois Voysey"), true);
ChangeCharacterAddress(CharacterFromID("Artois Voysey"), "Conceicao_town_exit", "goto14");
characters[GetCharacterIndex("Artois Voysey")].dialog.currentnode = "Captured";
LAi_SetActorType(characterfromID("Artois Voysey"));
LAi_ActorSetLayMode(characterfromID("Artois Voysey"));
characters[GetCharacterIndex("Pirates_1")].dialog.filename = "anacleto_dialog.c";
characters[GetCharacterIndex("Pirates_1")].dialog.currentnode = "artois_lay";
characters[GetCharacterIndex("Pirates_2")].dialog.filename = "anacleto_dialog.c";
characters[GetCharacterIndex("Pirates_2")].dialog.currentnode = "artois_lay";
characters[GetCharacterIndex("Pirates_3")].dialog.filename = "anacleto_dialog.c";
characters[GetCharacterIndex("Pirates_3")].dialog.currentnode = "artois_lay";
ChangeCharacterAddress(CharacterFromID("Pirates_1"), "Conceicao_town_exit", "goto8");
ChangeCharacterAddress(CharacterFromID("Pirates_2"), "Conceicao_town_exit", "goto9");
ChangeCharacterAddress(CharacterFromID("Pirates_3"), "Conceicao_town_exit", "goto10");
LAi_SetActorType(CharacterFromID("Pirates_1"));
LAi_SetActorType(CharacterFromID("Pirates_2"));
LAi_SetActorType(CharacterFromID("Pirates_3"));
LAi_ActorFollow(CharacterFromID("Pirates_1"), CharacterFromID("Artois Voysey"), "reset_pirates", 7.0);
LAi_ActorFollow(CharacterFromID("Pirates_2"), CharacterFromID("Artois Voysey"), "reset_pirates", 7.0);
LAi_ActorFollow(CharacterFromID("Pirates_3"), CharacterFromID("Artois Voysey"), "reset_pirates", 7.0);
//LAi_QuestDelay("go_to_artois", 20.0);
DeleteAttribute(pchar, "quest.voysey_lost");
LAi_SetHP(CharacterFromID("Pirates_1"), 80.0, 80.0);
LAi_SetHP(CharacterFromID("Pirates_2"), 80.0, 80.0);
LAi_SetHP(CharacterFromID("Pirates_3"), 80.0, 80.0);
LAi_SetCheckMinHP(CharacterFromID("Pirates_1"), 79.0, false, "fight_for_artois_with_child_of_giens");
LAi_SetCheckMinHP(CharacterFromID("Pirates_2"), 79.0, false, "fight_for_artois_with_child_of_giens");
LAi_SetCheckMinHP(CharacterFromID("Pirates_3"), 79.0, false, "fight_for_artois_with_child_of_giens");
break;
case "reset_pirates":
LAi_SetStayType(CharacterFromID("Pirates_1"));
LAi_SetStayType(CharacterFromID("Pirates_2"));
LAi_SetStayType(CharacterFromID("Pirates_3"));
AddQuestRecord("artois", "10");
break;
case "fight_for_artois_with_child_of_giens":
LAi_RemoveCheckMinHP(CharacterFromID("Pirates_1"));
LAi_RemoveCheckMinHP(CharacterFromID("Pirates_2"));
LAi_RemoveCheckMinHP(CharacterFromID("Pirates_3"));
LAi_SetPlayerType(pchar);
LAi_group_MoveCharacter(characterFromID("Pirates_1"), "CHILD_OF_GIEN");
LAi_group_MoveCharacter(characterFromID("Pirates_2"), "CHILD_OF_GIEN");
LAi_group_MoveCharacter(characterFromID("Pirates_3"), "CHILD_OF_GIEN");
LAi_group_FightGroups("CHILD_OF_GIEN", LAI_GROUP_PLAYER, true);
LAi_group_SetCheck("CHILD_OF_GIEN", "Artois_resque_in_jungles");
pchar.quest.possible_for_resque_artois.over = "yes";
break;
case "portugal_becomes_neutral":
if(GetRMRelation(GetMainCharacter(), PORTUGAL) < REL_AMNESTY) SetRMRelation(GetMainCharacter(), PORTUGAL, REL_AMNESTY); // RM - SetNationRelation2MainCharacter(PORTUGAL, RELATION_NEUTRAL);
LAi_group_SetRelation("CONCEICAO_SOLDIERS", LAI_GROUP_PLAYER, LAI_GROUP_NEITRAL);
break;
case "Artois_resque_in_jungles":
pchar.quest.artois_line = "resqued";
LAi_fade("Artois_resque_in_jungles_2", "Artois_resque_in_jungles_3");
break;
case "Artois_resque_in_jungles_2":
LAi_ActorSetStayMode(characterFromID("Artois Voysey"));
LAi_ActorWaitDialog(characterFromID("Artois Voysey"), pchar);
break;
case "Artois_resque_in_jungles_3":
LAi_SetActorType(pchar);
LAi_ActorDialog(pchar, characterFromID("Artois Voysey"), "pchar_back_to_player", 5.0, 1.0);
AddPartyExp(pchar, 5000);
break;
case "pause":
AddQuestRecord("artois", "8");
Locations[FindLocation("Conceicao_townhall")].reload.l1.disable = 1;
DoQuestReloadToLocation ("Conceicao_townhall", "goto", "goto7", "pause2");
break;
case "pause2":
Locations[FindLocation("Conceicao_tavern_upstairs")].reload.l1.disable = false;
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto8");
LAi_SetActorType(sld);
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto1");
LAi_SetActorType(sld);
sld.id = "guard";
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "man6", "goto", "goto2");
LAi_SetActorType(sld);
sld.id = "witness";
sld.Dialog.Filename = "witness-dialog.c";
LAi_SetActorType(CharacterFromID("Jacinto Arcibaldo Barreto"));
LAi_ActorSetSitMode(CharacterFromID("Jacinto Arcibaldo Barreto"));
characters[GetCharacterIndex("Jacinto Arcibaldo Barreto")].dialog.currentnode = "j_day";
LAi_ActorDialog(characterfromID("Jacinto Arcibaldo Barreto"), PChar, "", 2.0, 1.0);
break;
case "ex_dialog":
LAi_ActorDialog(characterfromID("witness"), PChar, "", 1.0, 1.0);
LAi_ActorGoToLocator(CharacterFromID("guard"), "goto", "goto9", "ex_dialog2_3", 3.0);
break;
case "ex_dialog2_3":
//LAi_SetActorType(characterfromID("Jacinto Arcibaldo Barreto"));
LAi_ActorWaitDialog(characterfromID("Jacinto Arcibaldo Barreto"), characterfromID("guard"));
LAi_ActorDialog(characterfromID("guard"), characterfromID("Jacinto Arcibaldo Barreto"), "ex_dialog2_4", 1.0, 2.0);
break;
case "ex_dialog2_4":
LAi_ActorGoToLocator(CharacterFromID("guard"), "goto", "goto1", "ex_dialog2_5", 3.0);
break;
case "ex_dialog2_5":
LAi_ActorDialog(characterfromID("Jacinto Arcibaldo Barreto"), PChar, "acrcibaldo_back_to_hub_type", 1.0, 1.0);
Pchar.quest.artois_captured.win_condition.l1 = "location";
Pchar.quest.artois_captured.win_condition.l1.location = "Conceicao_town_exit";
PChar.quest.artois_captured.win_condition = "artois_captured";
PChar.quest.possible_for_resque_artois.win_condition.l1 = "Timer";
PChar.quest.possible_for_resque_artois.win_condition.l1.date.day = GetAddingDataDay(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition.l1.date.month = GetAddingDataMonth(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition.l1.date.year = GetAddingDataYear(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition = "possible_for_resque_artois";
AddQuestRecord("artois", "9");
break;
case "acrcibaldo_back_to_hub_type":
Locations[FindLocation("Conceicao_townhall")].reload.l1.disable = 0;
LAi_SetHuberType(characterfromID("Jacinto Arcibaldo Barreto"));
break;
case "prepare_shoot_in_artois":
LAi_SetImmortal(characterFromID("Artois Voysey"), false);
LAi_SetPlayerType(Pchar);
SetOfficersIndex(Pchar, 3, GetCharacterIndex("Artois Voysey")); // NK was -1
Officersreaction("good");
pchar.quest.shoot_in_artois.win_condition.l1 = "location";
pchar.quest.shoot_in_artois.win_condition.l1.location = "QC_port";
pchar.quest.shoot_in_artois.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois1.win_condition.l1 = "location";
pchar.quest.shoot_in_artois1.win_condition.l1.location = "Redmond_port";
pchar.quest.shoot_in_artois1.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois2.win_condition.l1 = "location";
pchar.quest.shoot_in_artois2.win_condition.l1.location = "Greenford_port";
pchar.quest.shoot_in_artois2.win_condition = "shoot_in_artois";
if (pchar.location != "Oxbay_port" && !CheckAttribute(PChar, "Quest.Story_OxbayCaptured"))
{
pchar.quest.shoot_in_artois3.win_condition.l1 = "location";
pchar.quest.shoot_in_artois3.win_condition.l1.location = "Oxbay_port";
pchar.quest.shoot_in_artois3.win_condition = "shoot_in_artois";
}
pchar.quest.shoot_in_artois4.win_condition.l1 = "location";
pchar.quest.shoot_in_artois4.win_condition.l1.location = "Douwesen_port";
pchar.quest.shoot_in_artois4.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois5.win_condition.l1 = "location";
pchar.quest.shoot_in_artois5.win_condition.l1.location = "Muelle_port";
pchar.quest.shoot_in_artois5.win_condition = "shoot_in_artois";
break;
case "shoot_in_artois":
if (CheckQuestAttribute("generate_convoy_quest_progress", ""))
{
for (int l=1; l<4; l++)
{
if (GetOfficersIndex(Pchar, l) > 0)
{
if (characters[GetOfficersIndex(Pchar, l)].id == "Artois Voysey")
{
pchar.quest.shoot_in_artois_complete = "complete";
}
}
}
if (CheckQuestAttribute("shoot_in_artois_complete", "complete"))
{
pchar.quest.shoot_in_artois.over = "yes";
pchar.quest.shoot_in_artois1.over = "yes";
pchar.quest.shoot_in_artois2.over = "yes";
pchar.quest.shoot_in_artois3.over = "yes";
pchar.quest.shoot_in_artois4.over = "yes";
pchar.quest.shoot_in_artois5.over = "yes";
GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
homelocator = LAi_FindFarLocator("goto", locx, locy, locz);
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "corsair1", "goto", homelocator);
sld.id = "gunman";
LAi_QuestDelay("shooting_in_artois_begin", 2.0);
pchar.quest.location = pchar.location;
pchar.quest.locator = pchar.location.locator;
}
else
{
pchar.quest.shoot_in_artois.win_condition.l1 = "location";
pchar.quest.shoot_in_artois.win_condition.l1.location = "QC_port";
pchar.quest.shoot_in_artois.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois1.win_condition.l1 = "location";
pchar.quest.shoot_in_artois1.win_condition.l1.location = "Redmond_port";
pchar.quest.shoot_in_artois1.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois2.win_condition.l1 = "location";
pchar.quest.shoot_in_artois2.win_condition.l1.location = "Greenford_port";
pchar.quest.shoot_in_artois2.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois3.win_condition.l1 = "location";
pchar.quest.shoot_in_artois3.win_condition.l1.location = "Oxbay_port";
pchar.quest.shoot_in_artois3.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois4.win_condition.l1 = "location";
pchar.quest.shoot_in_artois4.win_condition.l1.location = "Douwesen_port";
pchar.quest.shoot_in_artois4.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois5.win_condition.l1 = "location";
pchar.quest.shoot_in_artois5.win_condition.l1.location = "Muelle_port";
pchar.quest.shoot_in_artois5.win_condition = "shoot_in_artois";
}
}
else
{
LAi_QuestDelay("shoot_in_artois", 3.0);
}
break;
case "shooting_in_artois_begin":
GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
homelocator = LAi_FindFarLocator("goto", locx, locy, locz);
homelocation = pchar.location;
CreateParticleSystemOnLocator(homelocation, homelocator, "gunfire");
LAi_SetActorType(characterFromID("Artois Voysey"));
LAi_ActorAnimation(characterFromID("Artois Voysey"), "death_1", "almost_killed_artois", 4.0);
Play3DSound("objects\duel\pistol_shot1.wav", locx, locy, locz);
break;
case "almost_killed_artois":
GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
homelocator = LAi_FindFarLocator("reload", locx, locy, locz);
LAi_SetActorType(characterFromID("gunman"));
LAi_ActorRunToLocation(characterFromID("gunman"), "reload", homelocator, "none", "", "", "", 10.0);
LAi_ActorAnimation(characterFromID("Artois Voysey"), "lay_2", "", 4.0);
LAi_SetActorType(Pchar);
Pchar.Temp.self.dialog = Pchar.dialog.currentnode;
Pchar.dialog.currentnode = "artois_shooted";
LAi_ActorSelfDialog(Pchar, "player_back");
AddQuestRecord("artois", "14");
break;
case "to_tavern_with_almost_dead_artois":
RemoveOfficersIndex(pchar, GetCharacterIndex("Artois Voysey"));
RemovePassenger(pchar, characterFromID("Artois Voysey"));
ChangeCharacterAddress(characterFromID("Artois Voysey"), "none", "");
DoQuestReloadToLocation("Muelle_tavern_upstairs", "goto", "goto2", "talk_with_doctor");
break;
case "talk_with_doctor":
GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
homelocator = LAi_FindNearestFreeLocator("goto", locx, locy, locz);
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "fatman2", "goto", homelocator);
sld.id = "doctor";
sld.dialog.filename = "anacleto_dialog.c";
sld.dialog.currentnode = "doctor";
LAi_SetActorType(sld);
LAi_ActorDialog(sld, pchar, "", 2.0, 1.0);
LAi_SetStayType(pchar);
break;
case "exit_doctor_bad":
AddQuestRecord("artois", "15");
CloseQuestHeader("artois");
homelocation = pchar.quest.location;
homelocator = pchar.quest.locator;
DoQuestReloadToLocation(homelocation, "reload", homelocator, "pchar_back_to_player");
Officersreaction("bad");
ChangeCharacterReputation(pchar, -2);
break;
case "exit_doctor_good":
environment.date.day = GetAddingDataDay(0,0,14);
environment.date.month = GetAddingDataMonth(0,0,14);
environment.date.year = GetAddingDataYear(0,0,14);
AddQuestRecord("artois", "16");
homelocation = pchar.quest.location;
homelocator = pchar.quest.locator;
DoQuestReloadToLocation(homelocation, "reload", homelocator, "final_talk_with_artois");
Officersreaction("good");
ChangeCharacterReputation(pchar, 2);
break;
case "final_talk_with_artois":
LAi_SetPlayerType(pchar);
homelocation = pchar.location;
PlaceCharacter(characterFromID("Artois Voysey"), "goto", homelocation);
LAi_SetActorType(characterFromID("Artois Voysey"));
LAi_type_actor_Reset(characterFromID("Artois Voysey"));
Characters[GetCharacterIndex("Artois Voysey")].dialog.currentnode = "final_talk";
LAi_ActorDialog(characterFromID("Artois Voysey"), pchar, "Voysey_listed_2", 3.0, 1.0);
pchar.quest.treasure_found.win_condition.l1 = "locator";
pchar.quest.treasure_found.win_condition.l1.location = "Douwesen_Shore_ship";
pchar.quest.treasure_found.win_condition.l1.locator_group = "randitem";
pchar.quest.treasure_found.win_condition.l1.locator = "randitem1";
pchar.quest.treasure_found.win_condition = "treasure_found";
AddQuestRecord("artois", "17");
AddPartyExp(pchar, 5000);
//AddPassenger(Pchar, characterFromID("Artois Voysey"), 0);
break;
case "treasure_found":
AddMoneyToCharacter(PChar, 50000);
Log_SetStringToLog(QUEST_MESSAGE4);
AddQuestRecord("artois", "18");
AddPartyExp(pchar, 15000);
if (CheckQuestAttribute("artois_line", "completed"))
{
PChar.quest.Wait_For_donate.win_condition.l1 = "Timer";
PChar.quest.Wait_For_donate.win_condition.l1.date.day = GetAddingDataDay(0,1,0);
PChar.quest.Wait_For_donate.win_condition.l1.date.month = GetAddingDataMonth(0,1,0);
PChar.quest.Wait_For_donate.win_condition.l1.date.year = GetAddingDataYear(0,1,0);
PChar.quest.Wait_For_donate.win_condition = "Wait_For_donate";
pchar.quest.artois_line = "found_gold";
}
else
{
CloseQuestHeader("artois");
}
break;
case "Wait_For_donate":
OfficersReaction("bad");
ChangeCharacterReputation(pchar, -2);
pchar.quest.artois_line = "final_state";
AddQuestRecord("artois", "20");
CloseQuestHeader("artois");
break;
case "artois_donate_done":
pchar.quest.Wait_For_donate.over = "yes";
OfficersReaction("good");
ChangeCharacterReputation(pchar, 4);
AddMoneyToCharacter(PChar, -4000);
AddQuestRecord("artois", "19");
CloseQuestHeader("artois");
DeleteQuestAttribute("artois_line"); // NK
AddPArtyExp(pchar, 7000);
break;<!--c2--></div><!--ec2-->
Artois Voysey_dialog.c
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include "DIALOGS\Artois Voysey_dialog.h"
void ProcessDialogEvent()
{
ref NPChar, PChar, d;
PChar = GetMainCharacter();
aref Link, Diag;
string NPC_Meeting;
DeleteAttribute(&Dialog,"Links");
makeref(NPChar,CharacterRef);
makearef(Link, Dialog.Links);
makeref(d, Dialog);
makearef(Diag, NPChar.Dialog);
switch(Dialog.CurrentNode)
{
// -----------------------------------Äèà ëîã ïåðâûé - ïåðâà ÿ âñòðå÷Ã
case "exit":
Diag.CurrentNode = Diag.TempNode;
NPChar.quest.meeting = NPC_Meeting;
DialogExit();
break;
case "exit1":
AddDialogExitQuest("Leave_Voysey");
Diag.CurrentNode = "continue2";
DialogExit();
AddQuestRecord("artois", "3");
break;
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 = "Voice\ARVO\ARVO001";
d.Text = DLG_TEXT[0];
if (PChar.sex == "man")
{
Link.l1 = DLG_TEXT[1];
}
else
{
Link.l1 = DLG_TEXT[2];
}
Link.l1.go = "continue";
break;
case "continue":
dialog.snd = "Voice\ARVO\ARVO002";
d.Text = DLG_TEXT[3];
Link.l1 = PCharPhrase (DLG_TEXT[4], DLG_TEXT[5] + PChar.name + DLG_TEXT[6]);
Link.l1.go = "continue2";
break;
case "continue2":
dialog.snd = "Voice\ARVO\ARVO003";
d.Text = DLG_TEXT[7];
Link.l99 = DLG_TEXT[8];
Link.l99.go = "exit1";
Link.l2 = DLG_TEXT[9];
Link.l2.go = "listed";
break;
case "listed":
AddDialogExitQuest("Voysey_listed");
AddQuestRecord("artois", "2");
Diag.CurrentNode = "officer_Artois";
NPChar.quest.meeting = NPC_Meeting;
DialogExit();
break;
case "officer_Artois":
dialog.snd1 = "Voice\ARVO\ARVO004";
dialog.snd2 = "Voice\ARVO\ARVO005";
dialog.snd3 = "Voice\ARVO\ARVO006";
Diag.TempNode = "officer_Artois";
d.Text = RandPhrase (DLG_TEXT[10], DLG_TEXT[11], DLG_TEXT[12], &dialog, dialog.snd1, dialog.snd2, dialog.snd3);
Link.l1 = DLG_TEXT[13];
Link.l1.go = "exit";
break;
case "Captured":
dialog.snd = "Voice\ARVO\ARVO007";
d.Text = DLG_TEXT[14];
Link.l1 = DLG_TEXT[15];
Link.l1.go = "continue4";
break;
case "continue4":
dialog.snd = "Voice\ARVO\ARVO008";
d.Text = DLG_TEXT[16];
Link.l1 = DLG_TEXT[17];
Link.l1.go = "continue5";
Link.l2 = DLG_TEXT[18];
Link.l2.go = "continue6";
break;
case "continue5":
dialog.snd = "Voice\ARVO\ARVO009";
pchar.quest.treasure_found.win_condition.l1 = "locator";
pchar.quest.treasure_found.win_condition.l1.location = "Douwesen_shore_ship";
pchar.quest.treasure_found.win_condition.l1.locator_group = "randitem";
pchar.quest.treasure_found.win_condition.l1.locator = "randitem1";
pchar.quest.treasure_found.win_condition = "treasure_found";
NPChar.loyality = makeint(NPChar.loyality) - 5;
d.Text = DLG_TEXT[19];
Link.l1 = DLG_TEXT[20];
Link.l1.go = "exit";
OfficersReaction("bad");
AddDialogExitQuest("Voysey_listed_2");
AddQuestRecord("artois", "11");
break;
case "continue6":
dialog.snd = "Voice\ARVO\ARVO010";
dialog.text = DLG_TEXT[21];
link.l1 = DLG_TEXT[22];
if (GetNationRelation2MainCharacter(PORTUGAL) == RELATION_ENEMY)
{
link.l1.go = "continue7";
}
else
{
link.l1.go = "exit";
}
AddQuestRecord("artois", "12");
AddDialogExitQuest("prepare_shoot_in_artois");
break;
case "continue7":
dialog.snd = "Voice\ARVO\ARVO011";
dialog.text = DLG_TEXT[23];
link.l1 = DLG_TEXT[24];
link.l1.go = "continue_8";
break;
case "continue_8":
dialog.snd = "Voice\ARVO\ARVO012";
dialog.text = DLG_TEXT[25];
link.l1 = DLG_TEXT[26];
link.l1.go = "exit";
AddDialogExitQuest("portugal_becomes_neutral");
AddQuestRecord("artois", "13");
break;
case "final_talk":
dialog.snd = "Voice\ARVO\ARVO013";
dialog.text = DLG_TEXT[27];
link.l1 = DLG_TEXT[28];
link.l1.go = "final_talk_2";
break;
case "final_talk_2":
dialog.snd = "Voice\ARVO\ARVO014";
dialog.text = DLG_TEXT[29];
link.l1 = DLG_TEXT[30];
link.l1.go = "exit";
pchar.quest.artois_line = "completed";
break;
}
}<!--c2--></div><!--ec2-->

Right i now have build mod and when i save him and dont press him for information he goes back to the orginal dialog and the quest starts all over again excepet that the pirates are not standing over him so i cant save him
two files you will want to see
The relevent bit of quests_reaction.c
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->//Artois Voysey
case "Story_Artois":
if (CheckQuestAttribute("main_line", "ines_info_denied"))
{
LAi_QuestDelay("Story_Artois", 4.0);
}
else
{
DeleteAttribute(&Locations[FindLocation("QC_Town")],"vcskip"); // NK
LAi_SetHP(characterFromID("Artois Voysey"), 50.0, 50.0);
LAi_SetHP(characterFromID("Nigel Blythe"), 50.0, 50.0);
LAi_SetActorType(CharacterFromID("Artois Voysey"));
LAi_SetActorType(CharacterFromID("Nigel Blythe"));
LAi_group_MoveCharacter(CharacterFromID("Artois Voysey"), "Artois");
LAi_group_MoveCharacter(CharacterFromID("Nigel Blythe"), "Nigel");
LAi_SetImmortal(CharacterFromID("Nigel Blythe"), true);
LAi_ActorAttack(characterFromID("Nigel Blythe"), characterFromID("Artois Voysey"), "");
LAi_ActorAttack(characterFromID("Artois Voysey"), characterFromID("Nigel Blythe"), "");
LAi_SetCheckMinHP(characterFromID("Artois Voysey"), 20.0, true, "Story_Artois_2");
LAi_SetActorType(pchar);
LAi_ActorFollow(pchar, characterFromID("Nigel Blythe"), "", 25.0);
}
StartQuestMovie(true, false, false);
break;
case "Story_Artois_2":
LAi_SetStayType(pchar);
LAi_type_actor_Reset(characterFromID("Artois Voysey"));
LAi_type_actor_Reset(characterFromID("Nigel Blythe"));
LAi_ActorDialog(characterFromID("Nigel Blythe"), pchar, "", 2.0, 1.0);
break;
case "saving_artois":
LAi_SetImmortal(characterFromID("Nigel Blythe"), false);
LAi_SetPlayerType (Pchar);
LAi_group_MoveCharacter(CharacterFromID("Nigel Blythe"), "nigel_2");
//LAi_group_MoveCharacter(CharacterFromID("Artois Voysey"), "Artois");
LAi_group_FightGroups("nigel_2", LAI_GROUP_PLAYER, true);
LAi_group_SetCheck("nigel_2", "Artois_saved");
break;
case "Artois_saved":
EndQuestMovie();
SetQuestHeader("Artois");
AddQuestRecord("artois", "1");
LAi_SetActorType(pchar);
LAi_SetActorType(CharacterFromID("Artois Voysey"));
LAi_ActorWaitDialog(CharacterFromID("Artois Voysey"), PChar);
LAi_ActorDialog(PChar, CharacterFromID("Artois Voysey"), "", 2.0, 1.0);
break;
case "Voysey_listed":
LAi_SetImmortal(characterFromID("Artois Voysey"), false);
Pchar.quest.Artois_Voysey.win_condition.l1 = "location";
Pchar.quest.Artois_Voysey.win_condition.l1.character = "Artois Voysey";
Pchar.quest.Artois_Voysey.win_condition.l1.location = "Conceicao_port";
PChar.quest.Artois_Voysey.win_condition = "Artois_missed";
//NK --> fix for Artois quest repeating
pchar.quest.Voysey_lost = "0";
//NK <--
LAi_SetPlayerType(Pchar);
SetOfficersIndex(Pchar, 3, GetCharacterIndex("Artois Voysey")); // NK was -1
LAi_SetOfficerType(characterFromID("Artois Voysey"));
break;
case "Voysey_listed_2":
LAi_SetImmortal(characterFromID("Artois Voysey"), false);
LAi_SetPlayerType(Pchar);
SetOfficersIndex(Pchar, -1, GetCharacterIndex("Artois Voysey"));
break;
case "Artois_missed":
//NK -->
if(!CheckAttribute(PChar,"quest.Voysey_lost") || PChar.quest.Voysey_lost != "0") break;
//NK <--
if(FindFellowTravellers(PChar, CharacterFromId("Artois Voysey")) == FELLOWTRAVEL_OFFICER || FindFellowTravellers(PChar, CharacterFromId("Artois Voysey")) == FELLOWTRAVEL_PASSENGER)
{
LAi_LocationMonstersGen(&locations[FindLocation("Conceicao_town_exit")], false);
pchar.quest.Voysey_lost = "1";
RemovePassenger(pchar, characterFromID("Artois Voysey"));
LAi_SetActorType(Pchar);
Pchar.Temp.self.dialog = Pchar.dialog.currentnode;
Pchar.dialog.currentnode = "Artois_lost";
LAi_ActorSelfDialog(Pchar, "player_back");
AddQuestRecord("artois", "4");
characters[GetCharacterIndex("Artois Voysey")].location = "Redmond_store";
ChangeCharacterAddress(characterFromID("Artois Voysey"), "none", "");
}
break;
case "artois_before_room_on_second_floor":
AddQuestRecord("artois", "5");
Locations[FindLocation("Conceicao_tavern")].reload.l2.disable = false;
Pchar.quest.Blaze_arrest.win_condition.l1 = "location";
Pchar.quest.Blaze_arrest.win_condition.l1.location = "Conceicao_tavern_upstairs";
PChar.quest.Blaze_arrest.win_condition = "Blaze_arrest";
pchar.quest.Voysey_lost = "2";
break;
case "Blaze_arrest":
AddQuestRecord("artois", "6");
Locations[FindLocation("Conceicao_tavern")].reload.l2.disable = true;
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "brodyaga", "goto", "goto4");
sld.dialog.filename = "anacleto_dialog.c";
sld.dialog.currentnode = "ask_about_artois";
LAi_SetActorType(sld);
LAi_ActorSetLayMode(sld);
LAi_ActorWaitDialog(sld, pchar);
LAi_SetActorType(pchar);
LAi_ActorDialog(pchar, sld, "", 4.0, 1.0);
break;
case "Blaze_cop_dialog":
Locations[FindLocation("Conceicao_tavern_upstairs")].reload.l1.disable = true;
LAi_SetPlayerType(pchar);
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "reload", "reload1");
sld.Dialog.Filename = "Cops_dialog.c";
sld.dialog.currentnode = "First time";
sld.id = "solja";
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "reload", "reload1");
LAi_SetActorType(sld);
LAi_ActorFollow (sld, pchar, "", 10);
sld.id = "solja1";
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
LAi_SetActorType(characterfromID("solja"));
LAi_ActorDialog(characterfromID("solja"), PChar, "", 10, 10);
LAi_SetPlayerType(Pchar);
break;
case "artois_fight_in_tavern_upstairs":
LAi_SetWarriorType(characterfromID("solja"));
LAi_SetWarriorType(characterfromID("solja1"));
LAi_group_MoveCharacter(characterFromID("solja"), "CONCEICAO_SOLDIERS");
LAi_group_MoveCharacter(characterFromID("solja1"), "CONCEICAO_SOLDIERS");
LAi_group_SetCheck("CONCEICAO_SOLDIERS", "Open_Locators");
LAi_group_FightGroups("CONCEICAO_SOLDIERS", LAI_GROUP_PLAYER, true);
// unneeded if(GetRMRelation(GetMainCharacter(), PORTUGAL) > REL_AFTERATTACK) SetRMRelation(GetMainCharacter(), PORTUGAL, REL_AFTERATTACK); // RM - SetNationRelation2MainCharacter(PORTUGAL, RELATION_ENEMY);
LeaveService(PChar, PORTUGAL, false); // RM
AddQuestRecord("artois", "7");
break;
case "Open_Locators":
Locations[FindLocation("Conceicao_tavern_upstairs")].reload.l1.disable = false;
Pchar.quest.fight.win_condition.l1 = "location";
Pchar.quest.fight.win_condition.l1.location = "Conceicao_town";
PChar.quest.fight.win_condition = "Blaze_fight_the_world";
Pchar.quest.artois_captured.win_condition.l1 = "location";
Pchar.quest.artois_captured.win_condition.l1.location = "Conceicao_town_exit";
PChar.quest.artois_captured.win_condition = "artois_captured";
break;
case "Blaze_fight_the_world":
pchar.quest.escape_from_conceicao.win_condition.l1 = "location";
pchar.quest.escape_from_conceicao.win_condition.l1.location = "conceicao";
pchar.quest.escape_from_conceicao.win_condition = "escape_from_conceicao";
Locations[FindLocation("Conceicao_town")].reload.l3.disable = true;
if (GetCharacterSkill(pchar, SKILL_SNEAK) < 3)
{
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto3");
LAi_SetActorType(sld);
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto5");
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto5");
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto3");
LAi_group_MoveCharacter(sld, "CONCEICAO_SOLDIERS");
LAi_group_FightGroups("CONCEICAO_SOLDIERS", LAI_GROUP_PLAYER, true);
}
break;
case "escape_from_conceicao":
Locations[FindLocation("Conceicao_town")].reload.l3.disable = false;
PChar.quest.possible_for_resque_artois.win_condition.l1 = "Timer";
PChar.quest.possible_for_resque_artois.win_condition.l1.date.day = GetAddingDataDay(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition.l1.date.month = GetAddingDataMonth(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition.l1.date.year = GetAddingDataYear(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition = "possible_for_resque_artois";
break;
case "possible_for_resque_artois":
pchar.quest.artois_captured.over = "yes";
ChangeCharacterAddress(CharacterFromID("Artois Voysey"), "none", "");
ChangeCharacterAddress(CharacterFromID("Pirates_1"), "none", "");
ChangeCharacterAddress(CharacterFromID("Pirates_2"), "none", "");
ChangeCharacterAddress(CharacterFromID("Pirates_3"), "none", "");
CloseQuestHeader("Artois");
break;
case "artois_captured":
LAi_SetImmortal(characterFromID("Artois Voysey"), true);
ChangeCharacterAddress(CharacterFromID("Artois Voysey"), "Conceicao_town_exit", "goto14");
characters[GetCharacterIndex("Artois Voysey")].dialog.currentnode = "Captured";
LAi_SetActorType(characterfromID("Artois Voysey"));
LAi_ActorSetLayMode(characterfromID("Artois Voysey"));
characters[GetCharacterIndex("Pirates_1")].dialog.filename = "anacleto_dialog.c";
characters[GetCharacterIndex("Pirates_1")].dialog.currentnode = "artois_lay";
characters[GetCharacterIndex("Pirates_2")].dialog.filename = "anacleto_dialog.c";
characters[GetCharacterIndex("Pirates_2")].dialog.currentnode = "artois_lay";
characters[GetCharacterIndex("Pirates_3")].dialog.filename = "anacleto_dialog.c";
characters[GetCharacterIndex("Pirates_3")].dialog.currentnode = "artois_lay";
ChangeCharacterAddress(CharacterFromID("Pirates_1"), "Conceicao_town_exit", "goto8");
ChangeCharacterAddress(CharacterFromID("Pirates_2"), "Conceicao_town_exit", "goto9");
ChangeCharacterAddress(CharacterFromID("Pirates_3"), "Conceicao_town_exit", "goto10");
LAi_SetActorType(CharacterFromID("Pirates_1"));
LAi_SetActorType(CharacterFromID("Pirates_2"));
LAi_SetActorType(CharacterFromID("Pirates_3"));
LAi_ActorFollow(CharacterFromID("Pirates_1"), CharacterFromID("Artois Voysey"), "reset_pirates", 7.0);
LAi_ActorFollow(CharacterFromID("Pirates_2"), CharacterFromID("Artois Voysey"), "reset_pirates", 7.0);
LAi_ActorFollow(CharacterFromID("Pirates_3"), CharacterFromID("Artois Voysey"), "reset_pirates", 7.0);
//LAi_QuestDelay("go_to_artois", 20.0);
DeleteAttribute(pchar, "quest.voysey_lost");
LAi_SetHP(CharacterFromID("Pirates_1"), 80.0, 80.0);
LAi_SetHP(CharacterFromID("Pirates_2"), 80.0, 80.0);
LAi_SetHP(CharacterFromID("Pirates_3"), 80.0, 80.0);
LAi_SetCheckMinHP(CharacterFromID("Pirates_1"), 79.0, false, "fight_for_artois_with_child_of_giens");
LAi_SetCheckMinHP(CharacterFromID("Pirates_2"), 79.0, false, "fight_for_artois_with_child_of_giens");
LAi_SetCheckMinHP(CharacterFromID("Pirates_3"), 79.0, false, "fight_for_artois_with_child_of_giens");
break;
case "reset_pirates":
LAi_SetStayType(CharacterFromID("Pirates_1"));
LAi_SetStayType(CharacterFromID("Pirates_2"));
LAi_SetStayType(CharacterFromID("Pirates_3"));
AddQuestRecord("artois", "10");
break;
case "fight_for_artois_with_child_of_giens":
LAi_RemoveCheckMinHP(CharacterFromID("Pirates_1"));
LAi_RemoveCheckMinHP(CharacterFromID("Pirates_2"));
LAi_RemoveCheckMinHP(CharacterFromID("Pirates_3"));
LAi_SetPlayerType(pchar);
LAi_group_MoveCharacter(characterFromID("Pirates_1"), "CHILD_OF_GIEN");
LAi_group_MoveCharacter(characterFromID("Pirates_2"), "CHILD_OF_GIEN");
LAi_group_MoveCharacter(characterFromID("Pirates_3"), "CHILD_OF_GIEN");
LAi_group_FightGroups("CHILD_OF_GIEN", LAI_GROUP_PLAYER, true);
LAi_group_SetCheck("CHILD_OF_GIEN", "Artois_resque_in_jungles");
pchar.quest.possible_for_resque_artois.over = "yes";
break;
case "portugal_becomes_neutral":
if(GetRMRelation(GetMainCharacter(), PORTUGAL) < REL_AMNESTY) SetRMRelation(GetMainCharacter(), PORTUGAL, REL_AMNESTY); // RM - SetNationRelation2MainCharacter(PORTUGAL, RELATION_NEUTRAL);
LAi_group_SetRelation("CONCEICAO_SOLDIERS", LAI_GROUP_PLAYER, LAI_GROUP_NEITRAL);
break;
case "Artois_resque_in_jungles":
pchar.quest.artois_line = "resqued";
LAi_fade("Artois_resque_in_jungles_2", "Artois_resque_in_jungles_3");
break;
case "Artois_resque_in_jungles_2":
LAi_ActorSetStayMode(characterFromID("Artois Voysey"));
LAi_ActorWaitDialog(characterFromID("Artois Voysey"), pchar);
break;
case "Artois_resque_in_jungles_3":
LAi_SetActorType(pchar);
LAi_ActorDialog(pchar, characterFromID("Artois Voysey"), "pchar_back_to_player", 5.0, 1.0);
AddPartyExp(pchar, 5000);
break;
case "pause":
AddQuestRecord("artois", "8");
Locations[FindLocation("Conceicao_townhall")].reload.l1.disable = 1;
DoQuestReloadToLocation ("Conceicao_townhall", "goto", "goto7", "pause2");
break;
case "pause2":
Locations[FindLocation("Conceicao_tavern_upstairs")].reload.l1.disable = false;
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto8");
LAi_SetActorType(sld);
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "soldier_por", "goto", "goto1");
LAi_SetActorType(sld);
sld.id = "guard";
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "man6", "goto", "goto2");
LAi_SetActorType(sld);
sld.id = "witness";
sld.Dialog.Filename = "witness-dialog.c";
LAi_SetActorType(CharacterFromID("Jacinto Arcibaldo Barreto"));
LAi_ActorSetSitMode(CharacterFromID("Jacinto Arcibaldo Barreto"));
characters[GetCharacterIndex("Jacinto Arcibaldo Barreto")].dialog.currentnode = "j_day";
LAi_ActorDialog(characterfromID("Jacinto Arcibaldo Barreto"), PChar, "", 2.0, 1.0);
break;
case "ex_dialog":
LAi_ActorDialog(characterfromID("witness"), PChar, "", 1.0, 1.0);
LAi_ActorGoToLocator(CharacterFromID("guard"), "goto", "goto9", "ex_dialog2_3", 3.0);
break;
case "ex_dialog2_3":
//LAi_SetActorType(characterfromID("Jacinto Arcibaldo Barreto"));
LAi_ActorWaitDialog(characterfromID("Jacinto Arcibaldo Barreto"), characterfromID("guard"));
LAi_ActorDialog(characterfromID("guard"), characterfromID("Jacinto Arcibaldo Barreto"), "ex_dialog2_4", 1.0, 2.0);
break;
case "ex_dialog2_4":
LAi_ActorGoToLocator(CharacterFromID("guard"), "goto", "goto1", "ex_dialog2_5", 3.0);
break;
case "ex_dialog2_5":
LAi_ActorDialog(characterfromID("Jacinto Arcibaldo Barreto"), PChar, "acrcibaldo_back_to_hub_type", 1.0, 1.0);
Pchar.quest.artois_captured.win_condition.l1 = "location";
Pchar.quest.artois_captured.win_condition.l1.location = "Conceicao_town_exit";
PChar.quest.artois_captured.win_condition = "artois_captured";
PChar.quest.possible_for_resque_artois.win_condition.l1 = "Timer";
PChar.quest.possible_for_resque_artois.win_condition.l1.date.day = GetAddingDataDay(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition.l1.date.month = GetAddingDataMonth(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition.l1.date.year = GetAddingDataYear(0,0,4);
PChar.quest.possible_for_resque_artois.win_condition = "possible_for_resque_artois";
AddQuestRecord("artois", "9");
break;
case "acrcibaldo_back_to_hub_type":
Locations[FindLocation("Conceicao_townhall")].reload.l1.disable = 0;
LAi_SetHuberType(characterfromID("Jacinto Arcibaldo Barreto"));
break;
case "prepare_shoot_in_artois":
LAi_SetImmortal(characterFromID("Artois Voysey"), false);
LAi_SetPlayerType(Pchar);
SetOfficersIndex(Pchar, 3, GetCharacterIndex("Artois Voysey")); // NK was -1
Officersreaction("good");
pchar.quest.shoot_in_artois.win_condition.l1 = "location";
pchar.quest.shoot_in_artois.win_condition.l1.location = "QC_port";
pchar.quest.shoot_in_artois.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois1.win_condition.l1 = "location";
pchar.quest.shoot_in_artois1.win_condition.l1.location = "Redmond_port";
pchar.quest.shoot_in_artois1.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois2.win_condition.l1 = "location";
pchar.quest.shoot_in_artois2.win_condition.l1.location = "Greenford_port";
pchar.quest.shoot_in_artois2.win_condition = "shoot_in_artois";
if (pchar.location != "Oxbay_port" && !CheckAttribute(PChar, "Quest.Story_OxbayCaptured"))
{
pchar.quest.shoot_in_artois3.win_condition.l1 = "location";
pchar.quest.shoot_in_artois3.win_condition.l1.location = "Oxbay_port";
pchar.quest.shoot_in_artois3.win_condition = "shoot_in_artois";
}
pchar.quest.shoot_in_artois4.win_condition.l1 = "location";
pchar.quest.shoot_in_artois4.win_condition.l1.location = "Douwesen_port";
pchar.quest.shoot_in_artois4.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois5.win_condition.l1 = "location";
pchar.quest.shoot_in_artois5.win_condition.l1.location = "Muelle_port";
pchar.quest.shoot_in_artois5.win_condition = "shoot_in_artois";
break;
case "shoot_in_artois":
if (CheckQuestAttribute("generate_convoy_quest_progress", ""))
{
for (int l=1; l<4; l++)
{
if (GetOfficersIndex(Pchar, l) > 0)
{
if (characters[GetOfficersIndex(Pchar, l)].id == "Artois Voysey")
{
pchar.quest.shoot_in_artois_complete = "complete";
}
}
}
if (CheckQuestAttribute("shoot_in_artois_complete", "complete"))
{
pchar.quest.shoot_in_artois.over = "yes";
pchar.quest.shoot_in_artois1.over = "yes";
pchar.quest.shoot_in_artois2.over = "yes";
pchar.quest.shoot_in_artois3.over = "yes";
pchar.quest.shoot_in_artois4.over = "yes";
pchar.quest.shoot_in_artois5.over = "yes";
GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
homelocator = LAi_FindFarLocator("goto", locx, locy, locz);
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "corsair1", "goto", homelocator);
sld.id = "gunman";
LAi_QuestDelay("shooting_in_artois_begin", 2.0);
pchar.quest.location = pchar.location;
pchar.quest.locator = pchar.location.locator;
}
else
{
pchar.quest.shoot_in_artois.win_condition.l1 = "location";
pchar.quest.shoot_in_artois.win_condition.l1.location = "QC_port";
pchar.quest.shoot_in_artois.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois1.win_condition.l1 = "location";
pchar.quest.shoot_in_artois1.win_condition.l1.location = "Redmond_port";
pchar.quest.shoot_in_artois1.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois2.win_condition.l1 = "location";
pchar.quest.shoot_in_artois2.win_condition.l1.location = "Greenford_port";
pchar.quest.shoot_in_artois2.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois3.win_condition.l1 = "location";
pchar.quest.shoot_in_artois3.win_condition.l1.location = "Oxbay_port";
pchar.quest.shoot_in_artois3.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois4.win_condition.l1 = "location";
pchar.quest.shoot_in_artois4.win_condition.l1.location = "Douwesen_port";
pchar.quest.shoot_in_artois4.win_condition = "shoot_in_artois";
pchar.quest.shoot_in_artois5.win_condition.l1 = "location";
pchar.quest.shoot_in_artois5.win_condition.l1.location = "Muelle_port";
pchar.quest.shoot_in_artois5.win_condition = "shoot_in_artois";
}
}
else
{
LAi_QuestDelay("shoot_in_artois", 3.0);
}
break;
case "shooting_in_artois_begin":
GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
homelocator = LAi_FindFarLocator("goto", locx, locy, locz);
homelocation = pchar.location;
CreateParticleSystemOnLocator(homelocation, homelocator, "gunfire");
LAi_SetActorType(characterFromID("Artois Voysey"));
LAi_ActorAnimation(characterFromID("Artois Voysey"), "death_1", "almost_killed_artois", 4.0);
Play3DSound("objects\duel\pistol_shot1.wav", locx, locy, locz);
break;
case "almost_killed_artois":
GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
homelocator = LAi_FindFarLocator("reload", locx, locy, locz);
LAi_SetActorType(characterFromID("gunman"));
LAi_ActorRunToLocation(characterFromID("gunman"), "reload", homelocator, "none", "", "", "", 10.0);
LAi_ActorAnimation(characterFromID("Artois Voysey"), "lay_2", "", 4.0);
LAi_SetActorType(Pchar);
Pchar.Temp.self.dialog = Pchar.dialog.currentnode;
Pchar.dialog.currentnode = "artois_shooted";
LAi_ActorSelfDialog(Pchar, "player_back");
AddQuestRecord("artois", "14");
break;
case "to_tavern_with_almost_dead_artois":
RemoveOfficersIndex(pchar, GetCharacterIndex("Artois Voysey"));
RemovePassenger(pchar, characterFromID("Artois Voysey"));
ChangeCharacterAddress(characterFromID("Artois Voysey"), "none", "");
DoQuestReloadToLocation("Muelle_tavern_upstairs", "goto", "goto2", "talk_with_doctor");
break;
case "talk_with_doctor":
GetCharacterPos(GetMainCharacter(), &locx, &locy, &locz);
homelocator = LAi_FindNearestFreeLocator("goto", locx, locy, locz);
/*NK*/ sld = LAi_CreateFantomCharacter(0, true, true, 0.25, "fatman2", "goto", homelocator);
sld.id = "doctor";
sld.dialog.filename = "anacleto_dialog.c";
sld.dialog.currentnode = "doctor";
LAi_SetActorType(sld);
LAi_ActorDialog(sld, pchar, "", 2.0, 1.0);
LAi_SetStayType(pchar);
break;
case "exit_doctor_bad":
AddQuestRecord("artois", "15");
CloseQuestHeader("artois");
homelocation = pchar.quest.location;
homelocator = pchar.quest.locator;
DoQuestReloadToLocation(homelocation, "reload", homelocator, "pchar_back_to_player");
Officersreaction("bad");
ChangeCharacterReputation(pchar, -2);
break;
case "exit_doctor_good":
environment.date.day = GetAddingDataDay(0,0,14);
environment.date.month = GetAddingDataMonth(0,0,14);
environment.date.year = GetAddingDataYear(0,0,14);
AddQuestRecord("artois", "16");
homelocation = pchar.quest.location;
homelocator = pchar.quest.locator;
DoQuestReloadToLocation(homelocation, "reload", homelocator, "final_talk_with_artois");
Officersreaction("good");
ChangeCharacterReputation(pchar, 2);
break;
case "final_talk_with_artois":
LAi_SetPlayerType(pchar);
homelocation = pchar.location;
PlaceCharacter(characterFromID("Artois Voysey"), "goto", homelocation);
LAi_SetActorType(characterFromID("Artois Voysey"));
LAi_type_actor_Reset(characterFromID("Artois Voysey"));
Characters[GetCharacterIndex("Artois Voysey")].dialog.currentnode = "final_talk";
LAi_ActorDialog(characterFromID("Artois Voysey"), pchar, "Voysey_listed_2", 3.0, 1.0);
pchar.quest.treasure_found.win_condition.l1 = "locator";
pchar.quest.treasure_found.win_condition.l1.location = "Douwesen_Shore_ship";
pchar.quest.treasure_found.win_condition.l1.locator_group = "randitem";
pchar.quest.treasure_found.win_condition.l1.locator = "randitem1";
pchar.quest.treasure_found.win_condition = "treasure_found";
AddQuestRecord("artois", "17");
AddPartyExp(pchar, 5000);
//AddPassenger(Pchar, characterFromID("Artois Voysey"), 0);
break;
case "treasure_found":
AddMoneyToCharacter(PChar, 50000);
Log_SetStringToLog(QUEST_MESSAGE4);
AddQuestRecord("artois", "18");
AddPartyExp(pchar, 15000);
if (CheckQuestAttribute("artois_line", "completed"))
{
PChar.quest.Wait_For_donate.win_condition.l1 = "Timer";
PChar.quest.Wait_For_donate.win_condition.l1.date.day = GetAddingDataDay(0,1,0);
PChar.quest.Wait_For_donate.win_condition.l1.date.month = GetAddingDataMonth(0,1,0);
PChar.quest.Wait_For_donate.win_condition.l1.date.year = GetAddingDataYear(0,1,0);
PChar.quest.Wait_For_donate.win_condition = "Wait_For_donate";
pchar.quest.artois_line = "found_gold";
}
else
{
CloseQuestHeader("artois");
}
break;
case "Wait_For_donate":
OfficersReaction("bad");
ChangeCharacterReputation(pchar, -2);
pchar.quest.artois_line = "final_state";
AddQuestRecord("artois", "20");
CloseQuestHeader("artois");
break;
case "artois_donate_done":
pchar.quest.Wait_For_donate.over = "yes";
OfficersReaction("good");
ChangeCharacterReputation(pchar, 4);
AddMoneyToCharacter(PChar, -4000);
AddQuestRecord("artois", "19");
CloseQuestHeader("artois");
DeleteQuestAttribute("artois_line"); // NK
AddPArtyExp(pchar, 7000);
break;<!--c2--></div><!--ec2-->
Artois Voysey_dialog.c
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include "DIALOGS\Artois Voysey_dialog.h"
void ProcessDialogEvent()
{
ref NPChar, PChar, d;
PChar = GetMainCharacter();
aref Link, Diag;
string NPC_Meeting;
DeleteAttribute(&Dialog,"Links");
makeref(NPChar,CharacterRef);
makearef(Link, Dialog.Links);
makeref(d, Dialog);
makearef(Diag, NPChar.Dialog);
switch(Dialog.CurrentNode)
{
// -----------------------------------Äèà ëîã ïåðâûé - ïåðâà ÿ âñòðå÷Ã
case "exit":
Diag.CurrentNode = Diag.TempNode;
NPChar.quest.meeting = NPC_Meeting;
DialogExit();
break;
case "exit1":
AddDialogExitQuest("Leave_Voysey");
Diag.CurrentNode = "continue2";
DialogExit();
AddQuestRecord("artois", "3");
break;
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 = "Voice\ARVO\ARVO001";
d.Text = DLG_TEXT[0];
if (PChar.sex == "man")
{
Link.l1 = DLG_TEXT[1];
}
else
{
Link.l1 = DLG_TEXT[2];
}
Link.l1.go = "continue";
break;
case "continue":
dialog.snd = "Voice\ARVO\ARVO002";
d.Text = DLG_TEXT[3];
Link.l1 = PCharPhrase (DLG_TEXT[4], DLG_TEXT[5] + PChar.name + DLG_TEXT[6]);
Link.l1.go = "continue2";
break;
case "continue2":
dialog.snd = "Voice\ARVO\ARVO003";
d.Text = DLG_TEXT[7];
Link.l99 = DLG_TEXT[8];
Link.l99.go = "exit1";
Link.l2 = DLG_TEXT[9];
Link.l2.go = "listed";
break;
case "listed":
AddDialogExitQuest("Voysey_listed");
AddQuestRecord("artois", "2");
Diag.CurrentNode = "officer_Artois";
NPChar.quest.meeting = NPC_Meeting;
DialogExit();
break;
case "officer_Artois":
dialog.snd1 = "Voice\ARVO\ARVO004";
dialog.snd2 = "Voice\ARVO\ARVO005";
dialog.snd3 = "Voice\ARVO\ARVO006";
Diag.TempNode = "officer_Artois";
d.Text = RandPhrase (DLG_TEXT[10], DLG_TEXT[11], DLG_TEXT[12], &dialog, dialog.snd1, dialog.snd2, dialog.snd3);
Link.l1 = DLG_TEXT[13];
Link.l1.go = "exit";
break;
case "Captured":
dialog.snd = "Voice\ARVO\ARVO007";
d.Text = DLG_TEXT[14];
Link.l1 = DLG_TEXT[15];
Link.l1.go = "continue4";
break;
case "continue4":
dialog.snd = "Voice\ARVO\ARVO008";
d.Text = DLG_TEXT[16];
Link.l1 = DLG_TEXT[17];
Link.l1.go = "continue5";
Link.l2 = DLG_TEXT[18];
Link.l2.go = "continue6";
break;
case "continue5":
dialog.snd = "Voice\ARVO\ARVO009";
pchar.quest.treasure_found.win_condition.l1 = "locator";
pchar.quest.treasure_found.win_condition.l1.location = "Douwesen_shore_ship";
pchar.quest.treasure_found.win_condition.l1.locator_group = "randitem";
pchar.quest.treasure_found.win_condition.l1.locator = "randitem1";
pchar.quest.treasure_found.win_condition = "treasure_found";
NPChar.loyality = makeint(NPChar.loyality) - 5;
d.Text = DLG_TEXT[19];
Link.l1 = DLG_TEXT[20];
Link.l1.go = "exit";
OfficersReaction("bad");
AddDialogExitQuest("Voysey_listed_2");
AddQuestRecord("artois", "11");
break;
case "continue6":
dialog.snd = "Voice\ARVO\ARVO010";
dialog.text = DLG_TEXT[21];
link.l1 = DLG_TEXT[22];
if (GetNationRelation2MainCharacter(PORTUGAL) == RELATION_ENEMY)
{
link.l1.go = "continue7";
}
else
{
link.l1.go = "exit";
}
AddQuestRecord("artois", "12");
AddDialogExitQuest("prepare_shoot_in_artois");
break;
case "continue7":
dialog.snd = "Voice\ARVO\ARVO011";
dialog.text = DLG_TEXT[23];
link.l1 = DLG_TEXT[24];
link.l1.go = "continue_8";
break;
case "continue_8":
dialog.snd = "Voice\ARVO\ARVO012";
dialog.text = DLG_TEXT[25];
link.l1 = DLG_TEXT[26];
link.l1.go = "exit";
AddDialogExitQuest("portugal_becomes_neutral");
AddQuestRecord("artois", "13");
break;
case "final_talk":
dialog.snd = "Voice\ARVO\ARVO013";
dialog.text = DLG_TEXT[27];
link.l1 = DLG_TEXT[28];
link.l1.go = "final_talk_2";
break;
case "final_talk_2":
dialog.snd = "Voice\ARVO\ARVO014";
dialog.text = DLG_TEXT[29];
link.l1 = DLG_TEXT[30];
link.l1.go = "exit";
pchar.quest.artois_line = "completed";
break;
}
}<!--c2--></div><!--ec2-->