Just had a look comparing Bate 3 with Beta 4 quests_reaction.c
Beta 3
Code:
case "exit_after_speak_with_rheims":
LAi_SetActorType(characterFromID("danielle"));
SetMainCharacterIndex(0);
PChar = GetMainCharacter(); <<--- THIS HAS CHANGED
LAi_SetImmortal(pchar, false);
ChangeCharacterAddress(characterFromID("Danielle"), "none", "none");
ChangeCharacterAddress(characterFromID("Vincent Bethune"), "none", "none");
ChangeCharacterAddress(characterFromID("Raoul Rheims"), "none", "none");
DoQuestReloadToLocation("Rheims_house_inside", "goto", "goto5", "exit_after_speak_with_rheims_2");
Locations[FindLocation("Douwesen_port")].reload.l2.disable = 0;
Locations[FindLocation("Douwesen_port")].reload.l3.disable = 0;
Locations[FindLocation("Douwesen_shore_01")].reload.l2.disable = 0;
Locations[FindLocation("Douwesen_shore_02")].reload.l2.disable = 0;
pchar.quest.main_line = "danielle_speak_with_almost_dead_rheims_complete";
AddQuestRecord("again_find_rheims", 7);
CloseQuestHeader("again_find_rheims");
SetQuestHeader("search_danielle");
AddQuestrecord("search_danielle", 1);
locCameraFollow();
restorepassengers(pchar.id);
RemoveCharacterEquip(characterFromID("danielle"), BLADE_ITEM_TYPE);
GiveItem2Character(characterFromID("danielle"), "blade6");
EquipCharacterByItem(characterFromID("danielle"), "blade6");
if(AUTO_SKILL_SYSTEM) { AddPartyExpChar(pchar, "Sneak", 1000); }
else { AddPartyExp(pchar, 10000); }
break;
Beta 4 code
Code:
case "exit_after_speak_with_rheims":
LAi_SetActorType(characterFromID("danielle"));
SetMainCharacterIndex(0);
PChar = PChar; <<<---- CHANGED
LAi_SetImmortal(pchar, false);
ChangeCharacterAddress(characterFromID("Danielle"), "none", "none");
ChangeCharacterAddress(characterFromID("Vincent Bethune"), "none", "none");
ChangeCharacterAddress(characterFromID("Raoul Rheims"), "none", "none");
DoQuestReloadToLocation("Rheims_house_inside", "goto", "goto5", "exit_after_speak_with_rheims_2");
Locations[FindLocation("Douwesen_port")].reload.l2.disable = 0;
Locations[FindLocation("Douwesen_port")].reload.l3.disable = 0;
Locations[FindLocation("Douwesen_shore_01")].reload.l2.disable = 0;
Locations[FindLocation("Douwesen_shore_02")].reload.l2.disable = 0;
pchar.quest.main_line = "danielle_speak_with_almost_dead_rheims_complete";
AddQuestRecord("again_find_rheims", 7);
CloseQuestHeader("again_find_rheims");
SetQuestHeader("search_danielle");
AddQuestrecord("search_danielle", 1);
locCameraFollow();
restorepassengers("Blaze"); // PB: was restorepassengers(pchar.id) - Did not work as you are in control of "danielle" at that time
RemoveCharacterEquip(characterFromID("danielle"), BLADE_ITEM_TYPE);
GiveItem2Character(characterFromID("danielle"), "blade6");
EquipCharacterByItem(characterFromID("danielle"), "blade6");
if(AUTO_SKILL_SYSTEM) { AddPartyExpChar(pchar, "Sneak", 1000); }
else { AddPartyExp(pchar, 10000); }
break;
Could this be the cause of the problems --- if it happens elsewhere is it likely to cause problems there as well
That definitely looks to be related!
Try attached file starting again from PRIOR to your meeting with Rheims.
This should restore the functionality to Beta 3 state, with some extra comments added to explain why there are
PChar = GetMainCharacter(); lines in the
middle of the file.
It is definitely an uncommon occurrence to swap player characters and I don't think it happens anywhere else in the game code.
There are some parts where it is
faked, but this example is for real.
But as far as I understand that code, the following section means that the required attribute was ALWAYS added to DANIELLE:
Code:
case "dagger_3":
LAi_ActorAnimation(characterFromID("blaze"), "Lay_1", "", -1);
LAi_SetPlayerType(characterFromID("danielle"));
SetMainCharacterIndex(GetCharacterIndex("danielle"));
PChar = GetMainCharacter(); // PB: This is IMPORTANT to update that you are now 'Danielle'!
ChangeCharacterAddress(characterFromID("Blaze"), "Rheims_house_inside", "goto5");
DoQuestReloadToLocation("Rheims_house_inside", "item", "item1", "start_quest_movie_speak_with_rheims_complete");
pchar.quest.main_line = "danielle_speak_with_almost_dead_rheims";
locations[FindLocation("Douwesen_town_exit")].reload.l1.disable = 0;
locations[FindLocation("Douwesen_town_exit")].reload.l2.disable = 0;
break;
But by the time you're talking to Padre Domingues, you are back to Blaze again, so you wouldn't have the needed attribute (because it is Danielle who has it).
Which suggests that with the previous code change I suggested, it should now actually WORK because
pchar is then ALWAYS Blaze.
Yet somehow it appears to be the other way around?
Anyway, if this fixes it, you won't hear
me complaining....
Pirates
I have to say I have not really noticed any significant change - still sailing in and out of ports under false flags OK -- only noticeable thing is on Land -- I have had several bounty hunters after me - was wondering why since I have not angered anybody that I can recall.
When you encounter any again, can you make a screenshot of their dialog texts?
There are some bounty hunters who you can encounter regardless of anything even in the early game (though that never quite made sense to me).
But there are also the regular citizens who don't like your pirate status:
Code:
"Hmm... I have seen you before... during a ship skirmish some time ago, on a quarterdeck I think... HEY, you are the devious bastard who sailed close to our ship. We thought you were friendly right up to the moment you opened your gun-ports, fired into our ship, then boarded us and slaughtered our crew! ALARM! A pirate in disguise!",
" Should have killed ALL witnesses of my piratical past...",
So your false flags are never being detected? That does match with your fame level of "Unrecognized", I suppose.
Though even with that, I would expect there to be a slight chance of being detected anyway.
If you decide to get a LoM or join the Pirate Brotherhood and start to gain points with the various nations, this might begin to change.
Would be interesting to know at which Fame level, false flag detection becomes an actual risk.
At least it is good to know that in the early game, you are indeed pretty safe from being detected.
Keep an eye on ships as well as forts for this!
And thank you very much for your efforts in testing and helping out everywhere else.
