Playing "Assassin", I'm now at the section "A Kidnapping". So I talked to the governor of Santo Domingo, then sailed to Cape Francos and went to the shipwreck beach. There I auto-walked a little way, teleported to somewhere in the middle of the beach, turned around to face back to where I had come from and then... nothing. I could turn back to face the sea, find the soldier who could talk, talk to him and continue. But if I'm being auto-walked somewhere then I'd expect something else to happen.
Looking in "compile.log" showed a report of a teleport after a timeout, a report that "blaze" was not actor type, and the last quest case to be run was "sunken_ship2". Here's the relevant code:
The reason for the teleport is that 10 seconds isn't enough time to reach "locator25" and when functions like 'LAi_ActorGoToLocator' time out, the character teleports to the target. (*) The reason I turned around is that when a character teleports to a locator, he faces the direction the locator is pointing, and "locator25" probably points away from the sea. More interesting is what happens in case "sunken_ship2". It looks as though I'm supposed to initiate a dialog with the soldier, which is what caused the report about "blaze" not being actor type because of the line 'LAi_SetPlayerType(Pchar)'.
So I tried increasing the time in the 'LAi_ActorGoToLocator' line to 20, and for good measure also increased the times in the 'LAi_ActorDialog' line to 10. And I move the 'LAi_SetPlayerType(Pchar)' line down to case "leave_beach". Then I reloaded an earlier save and tried again. This worked the way the code appears to be intended. I walked to the middle of the beach, ran to the soldier, then talked to him automatically.
@Bartolomeu o Portugues: would you like me to include these changes in the next update?
(*) This is a useful safety feature in case the character can't get to the target at all. For example, in the sidequest "A Girl Won in a Card Game", you beat the gambler, talk to him again, he says he has something else to wager and you need to go upstairs. You're supposed to auto-walk upstairs but there are probably a lot of people in your way, especially if you have officers with you. Without that timeout teleport, you'd either be stuck there forever or the move would fail and the quest would break.
Looking in "compile.log" showed a report of a teleport after a timeout, a report that "blaze" was not actor type, and the last quest case to be run was "sunken_ship2". Here's the relevant code:
Code:
case "sunken_ship":
LAi_SetActorType(Pchar);
LAi_ActorGoToLocator(PChar, "goto", "locator25", "sunken_ship2", 10.0);
break;
case "sunken_ship2":
LAi_SetPlayerType(Pchar);
Characters[GetCharacterIndex("spanish_soldier_03")].dialog.currentnode = "begin_1";
LAi_ActorWaitDialog(characterFromID("spanish_soldier_03"), pchar);
LAi_ActorDialog(pchar, characterFromID("spanish_soldier_03"), "", 4.0, 1.0);
break;
case "leave_beach":
LAi_Fade("allisfine", "");
break;
So I tried increasing the time in the 'LAi_ActorGoToLocator' line to 20, and for good measure also increased the times in the 'LAi_ActorDialog' line to 10. And I move the 'LAi_SetPlayerType(Pchar)' line down to case "leave_beach". Then I reloaded an earlier save and tried again. This worked the way the code appears to be intended. I walked to the middle of the beach, ran to the soldier, then talked to him automatically.
@Bartolomeu o Portugues: would you like me to include these changes in the next update?
(*) This is a useful safety feature in case the character can't get to the target at all. For example, in the sidequest "A Girl Won in a Card Game", you beat the gambler, talk to him again, he says he has something else to wager and you need to go upstairs. You're supposed to auto-walk upstairs but there are probably a lot of people in your way, especially if you have officers with you. Without that timeout teleport, you'd either be stuck there forever or the move would fail and the quest would break.






