Fixed various inaccuracies regarding player interaction

This commit is contained in:
jake 2021-06-29 21:00:22 -07:00
parent e53944bcb5
commit a085037fc6
3 changed files with 10 additions and 1 deletions

View File

@ -330,7 +330,6 @@ impl Player {
state.control_flags.set_interactions_disabled(true);
state.textscript_vm.executor_player = id;
state.textscript_vm.start_script(npc.event_num);
self.cond.set_interacted(false);
self.vel_x = 0;
self.question = false;
}

View File

@ -1537,6 +1537,7 @@ impl GameScene {
if self.player1.controller.trigger_inventory() {
state.textscript_vm.set_mode(ScriptMode::Inventory);
self.player1.cond.set_interacted(false);
}
}

View File

@ -879,6 +879,8 @@ impl TextScriptVM {
game_scene.player1.direction = direction;
game_scene.player2.direction = direction;
}
game_scene.player1.cond.set_interacted(false);
game_scene.player2.cond.set_interacted(false);
game_scene.player1.vel_x = 0;
game_scene.player2.vel_x = 0;
@ -891,6 +893,10 @@ impl TextScriptVM {
game_scene.player1.vel_y = -0x200;
game_scene.player2.vel_y = -0x200;
// Reset interaction condition, needed for places like talking to Toroko in shack
game_scene.player1.cond.set_interacted(false);
game_scene.player2.cond.set_interacted(false);
if let Some(direction) = Direction::from_int_facing(new_direction) {
match direction {
Direction::Left => {
@ -1221,6 +1227,9 @@ impl TextScriptVM {
new_scene.player2.vel_y = 0;
new_scene.player2.x = pos_x;
new_scene.player2.y = pos_y;
// Reset player interaction flag upon TRA
new_scene.player1.cond.set_interacted(false);
new_scene.player2.cond.set_interacted(false);
new_scene.frame.wait = game_scene.frame.wait;
let skip = state.textscript_vm.flags.cutscene_skip();