From 136079426429f6eee31401750a211eaa4fb99d39 Mon Sep 17 00:00:00 2001 From: Alula <6276139+alula@users.noreply.github.com> Date: Wed, 5 May 2021 18:34:14 +0200 Subject: [PATCH] a bunch of npc bugfixes --- src/npc/ai/balrog.rs | 42 ++++++++++++++++---------------- src/npc/ai/booster.rs | 8 +++---- src/npc/ai/chaco.rs | 2 +- src/npc/ai/characters.rs | 6 ++--- src/npc/ai/egg_corridor.rs | 14 +++++------ src/npc/ai/first_cave.rs | 2 +- src/npc/ai/grasstown.rs | 34 +++++++++++++------------- src/npc/ai/igor.rs | 8 +++---- src/npc/ai/intro.rs | 6 ++--- src/npc/ai/last_cave.rs | 2 +- src/npc/ai/mimiga_village.rs | 8 +++---- src/npc/ai/misc.rs | 46 ++++++++++++++++++------------------ src/npc/ai/misery.rs | 16 ++++++------- src/npc/ai/outer_wall.rs | 2 +- src/npc/ai/quote.rs | 10 ++++---- src/npc/ai/sand_zone.rs | 8 +++---- src/npc/ai/santa.rs | 2 +- src/npc/ai/sue.rs | 14 +++++------ src/npc/ai/toroko.rs | 8 +++---- 19 files changed, 119 insertions(+), 119 deletions(-) diff --git a/src/npc/ai/balrog.rs b/src/npc/ai/balrog.rs index 8976869..a1c28f8 100644 --- a/src/npc/ai/balrog.rs +++ b/src/npc/ai/balrog.rs @@ -109,9 +109,9 @@ impl NPC { npc.cond.set_alive(true); npc.x = self.x; - npc.y = self.y + 4 * 0x200; // 4.0fix9 + npc.y = self.y + 0x800; // 4.0fix9 - let mut angle = ((self.y + 4 * 0x200 - player.y) as f64 / (self.x - player.y) as f64).atan(); + let mut angle = ((self.y + 0x800 - player.y) as f64 / (self.x - player.y) as f64).atan(); angle += self.rng.range(-16..16) as f64 * std::f64::consts::FRAC_PI_8; npc.vel_x = (angle.cos() * 512.0) as i32; // 1.0fix9 npc.vel_y = (angle.sin() * 512.0) as i32; @@ -132,7 +132,7 @@ impl NPC { self.action_num = 4; self.action_counter = 0; self.vel_x = (player.x - self.x) / 0x64; - self.vel_y = -3 * 0x200; + self.vel_y = -0x600; self.anim_num = 3; } } @@ -141,7 +141,7 @@ impl NPC { self.vel_x = 0; } - self.damage = if self.y + 16 * 0x200 < player.y { 5 } else { 0 }; + self.damage = if self.y + 0x2000 < player.y { 5 } else { 0 }; if self.flags.hit_bottom_wall() { self.action_num = 5; @@ -271,7 +271,7 @@ impl NPC { self.action_num = 12; self.action_counter = 0; self.anim_num = 3; - self.vel_y = -4 * 0x200; + self.vel_y = -0x800; self.npc_flags.set_ignore_solidity(true); } } @@ -456,7 +456,7 @@ impl NPC { self.action_num = 102; self.action_counter = 0; self.anim_num = 3; - self.vel_y = -4 * 0x200; + self.vel_y = -0x800; self.npc_flags.set_ignore_solidity(true); for npc in npc_list.iter_alive().filter(|npc| npc.npc_type == 117 || npc.npc_type == 150) { @@ -473,8 +473,8 @@ impl NPC { } } 102 => { - let x = clamp(self.x / (16 * 0x200), 0, stage.map.width as i32) as usize; - let y = clamp(self.y / (16 * 0x200), 0, stage.map.height as i32) as usize; + let x = clamp(self.x / (0x2000), 0, stage.map.width as i32) as usize; + let y = clamp(self.y / (0x2000), 0, stage.map.height as i32) as usize; if y <= 34 && stage.change_tile(x, y, 0) { state.sound_manager.play_sfx(44); @@ -482,20 +482,20 @@ impl NPC { let mut npc = NPC::create(4, &state.npc_table); npc.cond.set_alive(true); - npc.x = x as i32 * 16 * 0x200; - npc.y = y as i32 * 16 * 0x200; + npc.x = x as i32 * 0x2000; + npc.y = y as i32 * 0x2000; let _ = npc_list.spawn(0x100, npc.clone()); let _ = npc_list.spawn(0x100, npc.clone()); if x > 0 && stage.change_tile(x - 1, y, 0) { - npc.x = (x - 1) as i32 * 16 * 0x200; + npc.x = (x - 1) as i32 * 0x2000; let _ = npc_list.spawn(0x100, npc.clone()); let _ = npc_list.spawn(0x100, npc.clone()); } if x < stage.map.width as usize && stage.change_tile(x + 1, y, 0) { - npc.x = (x + 1) as i32 * 16 * 0x200; + npc.x = (x + 1) as i32 * 0x2000; let _ = npc_list.spawn(0x100, npc.clone()); let _ = npc_list.spawn(0x100, npc); } @@ -623,7 +623,7 @@ impl NPC { self.cond.set_alive(false); state.create_caret(self.x, self.y, CaretType::ProjectileDissipation, Direction::Left); } else if self.flags.hit_bottom_wall() { - self.vel_y = -2 * 0x200; + self.vel_y = -0x400; } self.vel_y += 0x2a; @@ -688,7 +688,7 @@ impl NPC { npc.vel_x = (angle.cos() * -512.0) as i32; npc.vel_y = (angle.sin() * -512.0) as i32; npc.x = self.x; - npc.y = self.y + 4 * 0x200; + npc.y = self.y + 0x800; let _ = npc_list.spawn(0x100, npc); state.sound_manager.play_sfx(39); @@ -707,7 +707,7 @@ impl NPC { self.anim_num = 3; self.vel_x = (player.x - self.x) / 100; - self.vel_y = -3 * 0x200; + self.vel_y = -0x600; } } 4 => { @@ -744,7 +744,7 @@ impl NPC { self.vel_y = clamp(self.vel_y, -0x200, 0x200); } 6 => { - if self.y + 16 * 0x200 < player.y { + if self.y + 0x2000 < player.y { self.damage = 10; } else { self.damage = 0; @@ -870,7 +870,7 @@ impl NPC { let pi = self.get_closest_player_idx_mut(&players); if self.action_counter >= 8 && (players[pi].x - self.x).abs() < 12 * 0x200 // 12.0fix9 - && self.y - 12 * 0x200 < players[pi].y && self.y + 8 * 0x200 > players[pi].y + && self.y - 12 * 0x200 < players[pi].y && self.y + 0x1000 > players[pi].y { // 12.0fix9 / 8.0fix9 self.action_num = 10; @@ -887,7 +887,7 @@ impl NPC { } else if (self.action_counter2 % 3 == 0) && self.action_counter > 25 { self.action_num = 4; self.anim_num = 7; - self.vel_y = -2 * 0x200; // -2.0fix9 + self.vel_y = -0x400; // -2.0fix9 } } } @@ -903,7 +903,7 @@ impl NPC { if self.action_counter >= 8 && (players[pi].x - self.x).abs() < 12 * 0x200 && self.y - 12 * 0x200 < players[pi].y - && self.y + 8 * 0x200 > players[pi].y + && self.y + 0x1000 > players[pi].y { self.action_num = 10; self.anim_num = 5; @@ -962,8 +962,8 @@ impl NPC { self.direction = self.direction.opposite(); player.direction = self.direction; - player.x += 4 * 0x200 * self.direction.vector_x(); - player.y -= 8 * 0x200; + player.x += 0x800 * self.direction.vector_x(); + player.y -= 0x1000; player.vel_x = 0x5ff * self.direction.vector_x(); player.vel_y = -0x200; diff --git a/src/npc/ai/booster.rs b/src/npc/ai/booster.rs index d957c46..cf7bc09 100644 --- a/src/npc/ai/booster.rs +++ b/src/npc/ai/booster.rs @@ -47,9 +47,9 @@ impl NPC { self.action_num = 31; self.anim_num = 0; self.anim_counter = 0; - self.hit_bounds.bottom = 16 * 0x200; - self.x -= 16 * 0x200; - self.y += 8 * 0x200; + self.hit_bounds.bottom = 0x2000; + self.x -= 0x2000; + self.y += 0x1000; // interpolation glitch fix self.prev_x = self.x; self.prev_y = self.y; @@ -66,7 +66,7 @@ impl NPC { if self.action_counter > 20 { self.action_num = 33; self.anim_num = 1; - self.hit_bounds.bottom = 8 * 0x200; + self.hit_bounds.bottom = 0x1000; } } 33 => { diff --git a/src/npc/ai/chaco.rs b/src/npc/ai/chaco.rs index 5f636e3..ee857f1 100644 --- a/src/npc/ai/chaco.rs +++ b/src/npc/ai/chaco.rs @@ -26,7 +26,7 @@ impl NPC { let player = self.get_closest_player_mut(players); if (self.x - player.x).abs() < 32 * 0x200 && self.y - 32 * 0x200 < player.y - && self.y + 16 * 0x200 > player.y { + && self.y + 0x2000 > player.y { self.direction = if self.x > player.x { Direction::Left } else { Direction::Right }; } } diff --git a/src/npc/ai/characters.rs b/src/npc/ai/characters.rs index cbf7f20..44c2a66 100644 --- a/src/npc/ai/characters.rs +++ b/src/npc/ai/characters.rs @@ -18,7 +18,7 @@ impl NPC { let player = self.get_closest_player_mut(players); - if abs(self.x - player.x) < 48 * 0x200 && self.y - 48 * 0x200 < player.y && self.y + 16 * 0x200 > player.y { + if abs(self.x - player.x) < 48 * 0x200 && self.y - 48 * 0x200 < player.y && self.y + 0x2000 > player.y { self.anim_num = 1; } else { self.anim_num = 0; @@ -251,8 +251,8 @@ impl NPC { match self.action_num { 0 | 1 => { if self.action_num == 0 { - self.x -= 4 * 0x200; - self.y += 16 * 0x200; + self.x -= 0x800; + self.y += 0x2000; self.action_num = 1; self.anim_num = 0; self.anim_counter = 0; diff --git a/src/npc/ai/egg_corridor.rs b/src/npc/ai/egg_corridor.rs index 452ae21..317faca 100644 --- a/src/npc/ai/egg_corridor.rs +++ b/src/npc/ai/egg_corridor.rs @@ -101,7 +101,7 @@ impl NPC { match self.action_num { 0 | 1 => { if self.action_num == 0 { - self.y += 3 * 0x200; + self.y += 0x600; self.action_num = 1; self.anim_num = 0; self.anim_rect = state.constants.npc.n005_green_critter[self.anim_num as usize + if self.direction == Direction::Right { 3 } else { 0 }]; @@ -378,7 +378,7 @@ impl NPC { 0 => { let player = self.get_closest_player_mut(players); - if player.x < self.x + 16 * 0x200 && player.x > self.x - 16 * 0x200 { + if player.x < self.x + 0x2000 && player.x > self.x - 0x2000 { self.npc_flags.set_shootable(true); self.vel_y = -0x100; self.target_y = self.y; @@ -455,7 +455,7 @@ impl NPC { match self.action_num { 0 | 1 => { if self.action_num == 0 { - self.x += 8 * 0x200; + self.x += 0x1000; self.action_num = 1; self.anim_num = 0; self.anim_counter = 1; @@ -549,7 +549,7 @@ impl NPC { match self.action_num { 0 => { - if player.x < self.x + 16 * 0x200 && player.x > self.x - 16 * 0x200 { + if player.x < self.x + 0x2000 && player.x > self.x - 0x2000 { self.target_x = self.x; self.target_y = self.y; self.action_num = 1; @@ -560,7 +560,7 @@ impl NPC { self.tsc_direction = self.direction as u16; self.npc_flags.set_shootable(true); - self.x = player.x + self.direction.vector_x() * 16 * 16 * 0x200; + self.x = player.x + self.direction.vector_x() * 16 * 0x2000; self.vel_x = self.direction.vector_x() * 0x2ff; } else { self.anim_rect = Rect::new(0, 0, 0, 0); @@ -721,7 +721,7 @@ impl NPC { match self.action_num { 0 => { - if player.x < self.x + 16 * 0x200 && player.x > self.x - 16 * 0x200 { + if player.x < self.x + 0x2000 && player.x > self.x - 0x2000 { self.target_x = self.x; self.target_y = self.y; self.action_num = 1; @@ -732,7 +732,7 @@ impl NPC { self.tsc_direction = self.direction as u16; self.npc_flags.set_shootable(true); - self.x = player.x + self.direction.vector_x() * 16 * 16 * 0x200; + self.x = player.x + self.direction.vector_x() * 16 * 0x2000; self.vel_x = self.direction.vector_x() * 0x2ff; } else { self.anim_rect = Rect::new(0, 0, 0, 0); diff --git a/src/npc/ai/first_cave.rs b/src/npc/ai/first_cave.rs index c84938a..9b2cdd6 100644 --- a/src/npc/ai/first_cave.rs +++ b/src/npc/ai/first_cave.rs @@ -71,7 +71,7 @@ impl NPC { match self.action_num { 0 | 1 => { if self.action_num == 0 { - self.y += 3 * 0x200; + self.y += 0x600; self.action_num = 1; self.anim_num = 0; self.anim_rect = state.constants.npc.n064_first_cave_critter[self.anim_num as usize + if self.direction == Direction::Right { 3 } else { 0 }]; diff --git a/src/npc/ai/grasstown.rs b/src/npc/ai/grasstown.rs index dce2c18..73e3630 100644 --- a/src/npc/ai/grasstown.rs +++ b/src/npc/ai/grasstown.rs @@ -177,7 +177,7 @@ impl NPC { if self.action_counter2 < 120 { self.action_counter2 += 1; - } else if abs(self.x - player.x) < 8 * 0x200 && self.y < player.y && self.y + 96 * 0x200 > player.y { + } else if abs(self.x - player.x) < 0x1000 && self.y < player.y && self.y + 96 * 0x200 > player.y { self.vel_x /= 2; self.vel_y = 0; self.action_num = 3; @@ -226,7 +226,7 @@ impl NPC { match self.action_num { 0 | 1 => { if self.action_num == 0 { - self.y += 3 * 0x200; + self.y += 0x600; self.action_num = 1; } @@ -370,7 +370,7 @@ impl NPC { self.anim_num = 1; } - if abs(self.x - player.x) < 8 * 0x200 && self.y - 8 * 0x200 < player.y && self.y + 96 * 0x200 > player.y + if abs(self.x - player.x) < 0x1000 && self.y - 0x1000 < player.y && self.y + 96 * 0x200 > player.y { self.action_num = 3; self.anim_num = 0; @@ -400,7 +400,7 @@ impl NPC { } self.action_counter += 1; - if self.action_counter >= 20 && (self.flags.hit_bottom_wall() || self.y > player.y - 16 * 0x200) { + if self.action_counter >= 20 && (self.flags.hit_bottom_wall() || self.y > player.y - 0x2000) { self.action_num = 5; self.anim_num = 2; self.anim_counter = 0; @@ -483,8 +483,8 @@ impl NPC { let mut npc = NPC::create(103, &state.npc_table); npc.cond.set_alive(true); - npc.x = self.x + self.direction.vector_x() * 8 * 0x200; - npc.y = self.y + 8 * 0x200; + npc.x = self.x + self.direction.vector_x() * 0x1000; + npc.y = self.y + 0x1000; npc.direction = self.direction; let _ = npc_list.spawn(0x100, npc); @@ -589,7 +589,7 @@ impl NPC { self.vel_y += 0x10; if self.flags.hit_bottom_wall() { - self.vel_y = -2 * 0x200; + self.vel_y = -0x400; } } @@ -673,7 +673,7 @@ impl NPC { self.vel_y += 0x20; if self.flags.hit_bottom_wall() { - self.vel_y = -2 * 0x200; + self.vel_y = -0x400; } self.vel_x = clamp(self.vel_x, -0x100, 0x100); @@ -696,7 +696,7 @@ impl NPC { pub(crate) fn tick_n100_grate(&mut self, state: &mut SharedGameState) -> GameResult { if self.action_num == 0 { - self.y += 16 * 0x200; + self.y += 0x2000; self.action_num = 1; self.anim_rect = if self.direction == Direction::Left { @@ -719,7 +719,7 @@ impl NPC { pub(crate) fn tick_n102_malco_computer_wave(&mut self, state: &mut SharedGameState) -> GameResult { if self.action_num == 0 { self.action_num = 1; - self.y += 8 * 0x200; + self.y += 0x1000; } self.animate(0, 0, 3); @@ -1018,7 +1018,7 @@ impl NPC { self.animate(4, 6, 9); } 110 => { - npc_list.create_death_smoke(self.x, self.y, 16 * 0x200, 16, state, &self.rng); + npc_list.create_death_smoke(self.x, self.y, 0x2000, 16, state, &self.rng); self.cond.set_alive(false); } _ => {} @@ -1058,7 +1058,7 @@ impl NPC { if abs(self.x - player.x) < 32 * 0x200 && self.y - 32 * 0x200 < player.y - && self.y + 16 * 0x200 > player.y + && self.y + 0x2000 > player.y { self.direction = if self.x > player.x { Direction::Left } else { Direction::Right }; } @@ -1356,14 +1356,14 @@ impl NPC { match self.action_num { 0 => { self.action_num = 1; - self.display_bounds = Rect { left: 16 * 0x200, top: 8 * 0x200, right: 16 * 0x200, bottom: 8 * 0x200 }; + self.display_bounds = Rect { left: 0x2000, top: 0x1000, right: 0x2000, bottom: 0x1000 }; } 10 => { self.action_num = 11; self.anim_num = 1; self.y -= 5 * 0x200; - self.display_bounds.top = 16 * 0x200; - self.display_bounds.bottom = 16 * 0x200 + self.display_bounds.top = 0x2000; + self.display_bounds.bottom = 0x2000 } 20 | 21 => { if self.action_num == 20 { @@ -1385,7 +1385,7 @@ impl NPC { if self.action_num == 30 { self.action_num = 31; self.action_counter = 1; - self.vel_x = -4 * 0x200; + self.vel_x = -0x800; self.x = self.target_x; self.y = self.target_y; @@ -1411,7 +1411,7 @@ impl NPC { self.action_counter = 2; self.direction = Direction::Left; self.y -= 48 * 0x200; - self.vel_x = -8 * 0x200; + self.vel_x = -0x1000; } self.x += self.vel_x; diff --git a/src/npc/ai/igor.rs b/src/npc/ai/igor.rs index f2b9b9e..1f47df8 100644 --- a/src/npc/ai/igor.rs +++ b/src/npc/ai/igor.rs @@ -186,8 +186,8 @@ impl NPC { self.action_num = 0; self.anim_num = 0; self.damage = 0; - self.hit_bounds.left = 8 * 0x200; - self.hit_bounds.top = 16 * 0x200; + self.hit_bounds.left = 0x1000; + self.hit_bounds.top = 0x2000; } } 7 => { @@ -242,7 +242,7 @@ impl NPC { npc.cond.set_alive(true); npc.direction = Direction::Left; npc.x = self.x; - npc.y = self.y + 4 * 0x200; + npc.y = self.y + 0x800; npc.vel_x = vel_x; npc.vel_y = vel_y; @@ -334,7 +334,7 @@ impl NPC { self.anim_num = 1; self.display_bounds.left = 12 * 0x200; self.display_bounds.right = 12 * 0x200; - self.display_bounds.top = 8 * 0x200; + self.display_bounds.top = 0x1000; } if self.action_counter > 150 { diff --git a/src/npc/ai/intro.rs b/src/npc/ai/intro.rs index c08a252..490e911 100644 --- a/src/npc/ai/intro.rs +++ b/src/npc/ai/intro.rs @@ -12,7 +12,7 @@ impl NPC { 0 | 1 => { if self.action_num == 0 { self.action_num = 1; - self.y -= 8 * 0x200; + self.y -= 0x1000; } self.anim_num = 0; @@ -116,14 +116,14 @@ impl NPC { pub(crate) fn tick_n300_intro_demon_crown(&mut self, state: &mut SharedGameState) -> GameResult { if self.action_num == 0 { self.action_num = 1; - self.y += 6 * 0x200; + self.y += 0xc00; self.anim_rect = state.constants.npc.n300_intro_demon_crown; } self.anim_counter += 1; if (self.anim_counter % 8) == 1 { state.create_caret(self.x + state.effect_rng.range(-8..8) as i32 * 0x200, - self.y + 8 * 0x200, + self.y + 0x1000, CaretType::LittleParticles, Direction::Up); } diff --git a/src/npc/ai/last_cave.rs b/src/npc/ai/last_cave.rs index 5b5312d..fe411a3 100644 --- a/src/npc/ai/last_cave.rs +++ b/src/npc/ai/last_cave.rs @@ -13,7 +13,7 @@ impl NPC { match self.action_num { 0 | 1 => { if self.action_num == 0 { - self.y += 3 * 0x200; + self.y += 0x600; self.action_num = 1; self.anim_num = 0; } diff --git a/src/npc/ai/mimiga_village.rs b/src/npc/ai/mimiga_village.rs index 5e8955f..6bf19cf 100644 --- a/src/npc/ai/mimiga_village.rs +++ b/src/npc/ai/mimiga_village.rs @@ -228,7 +228,7 @@ impl NPC { let player = self.get_closest_player_mut(players); if (self.x - (32 * 0x200) < player.x) && (self.x + (32 * 0x200) > player.x) - && (self.y - (32 * 0x200) < player.y) && (self.y + (16 * 0x200) > player.y) { + && (self.y - (32 * 0x200) < player.y) && (self.y + (0x2000) > player.y) { if self.x > player.x { self.direction = Direction::Left; } else { @@ -268,7 +268,7 @@ impl NPC { self.npc_flags.set_shootable(false); self.damage = 0; self.action_num = 1; - self.hit_bounds.left = 4 * 0x200; + self.hit_bounds.left = 0x800; } self.anim_num = 0; @@ -300,7 +300,7 @@ impl NPC { } let player = self.get_closest_player_mut(players); - if abs(player.x - self.x) < 16 * 0x200 { + if abs(player.x - self.x) < 0x2000 { self.hit_bounds.left = 18 * 0x200; self.action_counter = 0; self.action_num = 3; @@ -454,7 +454,7 @@ impl NPC { pub(crate) fn tick_n091_mimiga_cage(&mut self, state: &SharedGameState) -> GameResult { if self.action_num == 0 { self.action_num = 1; - self.y += 16 * 0x200; + self.y += 0x2000; self.anim_rect = state.constants.npc.n091_mimiga_cage; } diff --git a/src/npc/ai/misc.rs b/src/npc/ai/misc.rs index c296123..ad672bc 100644 --- a/src/npc/ai/misc.rs +++ b/src/npc/ai/misc.rs @@ -17,7 +17,7 @@ impl NPC { self.action_num = 1; if self.direction == Direction::Right { - self.y += 16 * 0x200; + self.y += 0x2000; } } @@ -335,7 +335,7 @@ impl NPC { self.action_num = 1; if self.direction == Direction::Right { - self.y += 16 * 0x200; + self.y += 0x2000; } self.anim_rect = state.constants.npc.n021_chest_open; @@ -414,7 +414,7 @@ impl NPC { if self.action_num == 0 { self.action_num = 1; self.anim_rect = state.constants.npc.n030_hermit_gunsmith[2]; - self.y += 16 * 0x200; + self.y += 0x2000; } self.action_counter += 1; @@ -497,7 +497,7 @@ impl NPC { self.action_num = 1; self.layer = NPCLayer::Background; self.anim_rect = state.constants.npc.n041_busted_door; - self.y -= 16 * 0x200; + self.y -= 0x2000; } Ok(()) @@ -506,7 +506,7 @@ impl NPC { pub(crate) fn tick_n043_chalkboard(&mut self, state: &mut SharedGameState) -> GameResult { if self.action_num == 0 { self.action_num = 1; - self.y -= 16 * 0x200; + self.y -= 0x2000; match self.direction { Direction::Left => self.anim_rect = state.constants.npc.n043_chalkboard[0], @@ -609,7 +609,7 @@ impl NPC { self.cond.set_alive(false); } - if self.y > stage.map.height as i32 * 16 * 0x200 { + if self.y > stage.map.height as i32 * 0x2000 { // out of map self.cond.set_alive(false); } @@ -650,7 +650,7 @@ impl NPC { self.anim_num = 0; let player = self.get_closest_player_mut(players); - if abs(player.x - self.x) < 8 * 0x200 && player.y < self.y + 8 * 0x200 && player.y > self.y - 16 * 0x200 + if abs(player.x - self.x) < 0x1000 && player.y < self.y + 0x1000 && player.y > self.y - 0x2000 { state.sound_manager.play_sfx(43); self.action_num = 1; @@ -724,7 +724,7 @@ impl NPC { continue; } - if abs(player.y - self.y) < 8 * 0x200 && player.x < self.x && player.x > self.x - 96 * 0x200 { + if abs(player.y - self.y) < 0x1000 && player.x < self.x && player.x > self.x - 96 * 0x200 { player.vel_x -= 0x88; player.cond.set_increase_acceleration(true); } @@ -784,7 +784,7 @@ impl NPC { continue; } - if abs(player.x - self.x) < 8 * 0x200 && player.y < self.y && player.y > self.y - 96 * 0x200 { + if abs(player.x - self.x) < 0x1000 && player.y < self.y && player.y > self.y - 96 * 0x200 { player.vel_y -= 0x88; } } @@ -839,7 +839,7 @@ impl NPC { } for player in players.iter_mut() { - if abs(player.y - self.y) < 8 * 0x200 && player.x > self.x && player.x < self.x + 96 * 0x200 { + if abs(player.y - self.y) < 0x1000 && player.x > self.x && player.x < self.x + 96 * 0x200 { player.vel_x += 0x88; player.cond.set_increase_acceleration(true); } @@ -895,7 +895,7 @@ impl NPC { } for player in players.iter_mut() { - if abs(player.x - self.x) < 8 * 0x200 && player.y > self.y && player.y < self.y + 96 * 0x200 { + if abs(player.x - self.x) < 0x1000 && player.y > self.y && player.y < self.y + 96 * 0x200 { player.vel_y -= 0x88; } } @@ -931,7 +931,7 @@ impl NPC { let mut npc = NPC::create(105, &state.npc_table); npc.cond.set_alive(true); npc.x = self.x; - npc.y = self.y - 8 * 0x200; + npc.y = self.y - 0x1000; let _ = npc_list.spawn(0x180, npc); } @@ -949,7 +949,7 @@ impl NPC { 0 | 1 => { if self.action_num == 0 { self.action_num = 1; - self.y -= 4 * 0x200; + self.y -= 0x800; } if !self.flags.hit_bottom_wall() { @@ -1135,8 +1135,8 @@ impl NPC { ) -> GameResult { match self.action_num { 0 => { - self.x += 8 * 0x200; - self.y += 8 * 0x200; + self.x += 0x1000; + self.y += 0x1000; self.npc_flags.set_solid_hard(true); self.vel_x = 0; self.vel_y = 0; @@ -1147,7 +1147,7 @@ impl NPC { self.damage = 0; let player = self.get_closest_player_mut(players); if (player.x < self.x + 25 * 0x200) - && (player.x > self.x - 25 * 16 * 0x200) + && (player.x > self.x - 25 * 0x2000) && (player.y < self.y + 25 * 0x200) && (player.y > self.y - 25 * 0x200) { @@ -1198,7 +1198,7 @@ impl NPC { let player = self.get_closest_player_mut(players); if (player.x > self.x - 25 * 0x200) - && (player.x < self.x + 25 * 16 * 0x200) + && (player.x < self.x + 25 * 0x2000) && (player.y < self.y + 25 * 0x200) && (player.y > self.y - 25 * 0x200) { @@ -1279,8 +1279,8 @@ impl NPC { ) -> GameResult { match self.action_num { 0 => { - self.x += 8 * 0x200; - self.y += 8 * 0x200; + self.x += 0x1000; + self.y += 0x1000; self.npc_flags.set_solid_hard(true); self.vel_x = 0; self.vel_y = 0; @@ -1291,7 +1291,7 @@ impl NPC { self.damage = 0; let player = self.get_closest_player_mut(players); if (player.y < self.y + 25 * 0x200) - && (player.y > self.y - 25 * 16 * 0x200) + && (player.y > self.y - 25 * 0x2000) && (player.x < self.x + 25 * 0x200) && (player.x > self.x - 25 * 0x200) { @@ -1342,7 +1342,7 @@ impl NPC { let player = self.get_closest_player_mut(players); if (player.y > self.y - 25 * 0x200) - && (player.y < self.y + 25 * 16 * 0x200) + && (player.y < self.y + 25 * 0x2000) && (player.x < self.x + 25 * 0x200) && (player.x > self.x - 25 * 0x200) { @@ -1404,7 +1404,7 @@ impl NPC { pub(crate) fn tick_n194_broken_blue_robot(&mut self, state: &mut SharedGameState) -> GameResult { if self.action_num == 0 { self.action_num = 1; - self.y += 4 * 0x200; + self.y += 0x800; } self.anim_rect = state.constants.npc.n194_broken_blue_robot; @@ -1517,7 +1517,7 @@ impl NPC { pub(crate) fn tick_n234_red_flowers_picked(&mut self, state: &mut SharedGameState) -> GameResult { if self.action_num == 0 { self.action_num = 1; - self.y += 16 * 0x200; + self.y += 0x2000; match self.direction { Direction::Left => self.anim_rect = state.constants.npc.n234_red_flowers_picked[0], diff --git a/src/npc/ai/misery.rs b/src/npc/ai/misery.rs index 469bee1..720e74d 100644 --- a/src/npc/ai/misery.rs +++ b/src/npc/ai/misery.rs @@ -32,7 +32,7 @@ impl NPC { self.animate(1, 0, 1); - if (self.x - self.target_x).abs() < 3 * 0x200 && (self.y - self.target_y).abs() < 3 * 0x200 { + if (self.x - self.target_x).abs() < 0x600 && (self.y - self.target_y).abs() < 0x600 { self.action_num = 2; self.anim_num = 2; state.sound_manager.play_sfx(21); @@ -49,7 +49,7 @@ impl NPC { self.vel_x = clamp(self.vel_x, -0x5ff, 0x5ff); self.vel_y = clamp(self.vel_y, -0x5ff, 0x5ff); - if self.y < -8 * 0x200 { + if self.y < -0x1000 { self.cond.set_alive(false); } @@ -133,7 +133,7 @@ impl NPC { let mut npc = NPC::create(66, &state.npc_table); npc.cond.set_alive(true); npc.x = self.x; - npc.y = self.y - 16 * 0x200; + npc.y = self.y - 0x2000; let _ = npc_list.spawn(0, npc); } @@ -152,7 +152,7 @@ impl NPC { self.vel_y -= 0x20; - if self.y < -8 * 0x200 { + if self.y < -0x1000 { self.cond.set_alive(false); } } @@ -253,7 +253,7 @@ impl NPC { let mut npc = NPC::create(66, &state.npc_table); npc.x = self.x; - npc.y = self.y - 16 * 0x200; + npc.y = self.y - 0x2000; npc.cond.set_alive(true); let _ = npc_list.spawn(0, npc); @@ -273,7 +273,7 @@ impl NPC { self.vel_y -= 0x20; - if self.y < -8 * 0x200 { + if self.y < -0x1000 { self.cond.set_alive(false); } } @@ -338,8 +338,8 @@ impl NPC { state.sound_manager.play_sfx(33); let mut npc = NPC::create(11, &state.npc_table); - npc.x = self.x + 8 * 0x200; - npc.y = self.y - 8 * 0x200; + npc.x = self.x + 0x1000; + npc.y = self.y - 0x1000; npc.vel_x = 0x600; npc.vel_y = self.rng.range(-0x200..0) as i32; npc.cond.set_alive(true); diff --git a/src/npc/ai/outer_wall.rs b/src/npc/ai/outer_wall.rs index 2f16a05..1cfd9af 100644 --- a/src/npc/ai/outer_wall.rs +++ b/src/npc/ai/outer_wall.rs @@ -21,7 +21,7 @@ impl NPC { } let player = self.get_closest_player_mut(players); - if abs(self.x - player.x) < 12 * 0x200 && player.y > self.y && player.y < self.y + 8 * 0x200 { + if abs(self.x - player.x) < 12 * 0x200 && player.y > self.y && player.y < self.y + 0x1000 { self.action_num = 15; self.action_counter = 0; } diff --git a/src/npc/ai/quote.rs b/src/npc/ai/quote.rs index ae6d700..62f89d2 100644 --- a/src/npc/ai/quote.rs +++ b/src/npc/ai/quote.rs @@ -13,7 +13,7 @@ impl NPC { 0 => { self.action_num = 1; self.anim_num = 0; - self.y -= 16 * 0x200; + self.y -= 0x2000; } 1 => { self.action_counter += 1; @@ -26,7 +26,7 @@ impl NPC { } 2 => { if self.vel_y > 0 { - self.hit_bounds.bottom = 16 * 0x200; + self.hit_bounds.bottom = 0x2000; } if self.flags.hit_bottom_wall() { @@ -82,8 +82,8 @@ impl NPC { self.action_num = 1; self.anim_num = 0; self.anim_counter = 0; - self.x += 16 * 0x200; - self.y += 8 * 0x200; + self.x += 0x2000; + self.y += 0x1000; state.sound_manager.play_sfx(29); } @@ -99,7 +99,7 @@ impl NPC { if self.action_counter > 20 { self.action_num = 3; self.anim_num = 1; - self.hit_bounds.bottom = 8 * 0x200; + self.hit_bounds.bottom = 0x1000; } } 3 => { diff --git a/src/npc/ai/sand_zone.rs b/src/npc/ai/sand_zone.rs index d552306..bb601dd 100644 --- a/src/npc/ai/sand_zone.rs +++ b/src/npc/ai/sand_zone.rs @@ -225,13 +225,13 @@ impl NPC { } let player = self.get_closest_player_mut(players); - if abs(self.x - player.x) < 8 * 0x200 && player.y > self.y && player.y < self.y + 8 * 0x200 { + if abs(self.x - player.x) < 0x1000 && player.y > self.y && player.y < self.y + 0x1000 { self.action_num = 2; self.action_counter = 0; state.sound_manager.play_sfx(102); } - self.x += (player.x - self.x).signum() * 2 * 0x200; + self.x += (player.x - self.x).signum() * 0x400; } 2 => { self.anim_counter += 1; @@ -1051,8 +1051,8 @@ impl NPC { 0 | 1 => { if self.action_num == 0 { self.action_num = 1; - self.x += 8 * 0x200; - self.y += 8 * 0x200; + self.x += 0x1000; + self.y += 0x1000; } self.npc_flags.set_ignore_solidity(false); diff --git a/src/npc/ai/santa.rs b/src/npc/ai/santa.rs index cbc7da0..f595713 100644 --- a/src/npc/ai/santa.rs +++ b/src/npc/ai/santa.rs @@ -25,7 +25,7 @@ impl NPC { let player = self.get_closest_player_mut(players); if abs(self.x - player.x) < 32 * 0x200 - && self.y - 32 * 0x200 < player.y && self.y + 16 * 0x200 > player.y { + && self.y - 32 * 0x200 < player.y && self.y + 0x2000 > player.y { self.direction = if self.x > player.x { Direction::Left } else { diff --git a/src/npc/ai/sue.rs b/src/npc/ai/sue.rs index e1a0e10..f2b97fa 100644 --- a/src/npc/ai/sue.rs +++ b/src/npc/ai/sue.rs @@ -118,8 +118,8 @@ impl NPC { if let Some(npc) = self.get_parent_ref_mut(npc_list) { self.direction = npc.direction.opposite(); - self.x = npc.x + npc.direction.vector_x() * 6 * 0x200; - self.y = npc.y + 4 * 0x200; + self.x = npc.x + npc.direction.vector_x() * 0xc00; + self.y = npc.y + 0x800; if npc.anim_num == 2 || npc.anim_num == 4 { self.y -= 0x200; @@ -145,7 +145,7 @@ impl NPC { state.npc_super_pos = ( self.x - 24 * 0x200, - self.y - 8 * 0x200 + self.y - 0x1000 ); } 17 => { @@ -154,7 +154,7 @@ impl NPC { state.npc_super_pos = ( self.x, - self.y - 8 * 0x200 + self.y - 0x1000 ); } 20 | 21 => { @@ -176,7 +176,7 @@ impl NPC { self.vel_x = self.direction.vector_x() * 0x400; let player = self.get_closest_player_mut(players); - if self.x < player.x - 8 * 0x200 { + if self.x < player.x - 0x1000 { self.direction = Direction::Right; self.action_num = 0; } @@ -234,8 +234,8 @@ impl NPC { self.action_counter = 0; self.anim_counter = 0; - self.x -= 4 * 0x200; - self.y += 16 * 0x200; + self.x -= 0x800; + self.y += 0x2000; } self.anim_counter += 1; diff --git a/src/npc/ai/toroko.rs b/src/npc/ai/toroko.rs index e5d04cc..479bd8f 100644 --- a/src/npc/ai/toroko.rs +++ b/src/npc/ai/toroko.rs @@ -26,10 +26,10 @@ impl NPC { } let player = self.get_closest_player_mut(players); - if (self.x - (16 * 0x200) < player.x) - && (self.x + (16 * 0x200) > player.x) - && (self.y - (16 * 0x200) < player.y) - && (self.y + (16 * 0x200) > player.y) + if (self.x - (0x2000) < player.x) + && (self.x + (0x2000) > player.x) + && (self.y - (0x2000) < player.y) + && (self.y + (0x2000) > player.y) { if self.x > player.x { self.direction = Direction::Left;