mapcreator git · master
SDL3 2.5D game and engine using assets, with map editor
C++ 99.3%git clone https://git.christianimmanuel.de/sdl-graphics/mapcreator.gitwget https://git.christianimmanuel.de/sdl-graphics/mapcreator/archive/mapcreator.tar.gzFix ignore Character if out of range AND decrease max walk distance
src/character/enemy.cpp | 10 +++++++--- src/game/state_playing.cpp | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/character/enemy.cpp b/src/character/enemy.cpp index 4e054af..cf60789 100644 --- a/src/character/enemy.cpp +++ b/src/character/enemy.cpp @@ -953,7 +953,7 @@ Enemy::set_MoveLogic(EnemyMovingType& type, Character& player) { int chance_move_far = rand() % 10; if (chance_move_far < 3) { moving_logic.min_distance = 100; - moving_logic.max_distance = 240; + moving_logic.max_distance = 140; } else { moving_logic.min_distance = 50; moving_logic.max_distance = 101; @@ -1000,8 +1000,12 @@ Enemy::Update(Character& player) { point_in_reach = false; is_character_in_range = character_InRange(player.collider_world); - if (!is_character_in_range && stats.is_attacking) + if (!is_character_in_range && moving_logic.move_type == EnemyMovingType::CHARACTER) { + next_moves.clear(); + move_focus = EnemyMovingType::NONE; + moving_logic.move_type = EnemyMovingType::NONE; attack_Stop(); + } // IS DEAD if (stats.health <= 0) { @@ -1015,6 +1019,7 @@ Enemy::Update(Character& player) { // std::cout << "MVTY " << (int)moving_logic.move_type << std::endl; // DECIDE // REDECIDE + //std::cout << "WLK " << moving_logic.moving_distance.x << " >= " << moving_logic.max_distance << " || " << moving_logic.moving_distance.y << " >= " << moving_logic.max_distance << std::endl; if ( moving_logic.move_type == EnemyMovingType::NONE || ( moving_logic.move_type == EnemyMovingType::IDLE && moving_logic.duration <= 0)) { @@ -1028,7 +1033,6 @@ Enemy::Update(Character& player) { return; } else if (moving_logic.move_type == EnemyMovingType::WALK) { - //std::cout << "WLK " << moving_logic.moving_distance.x << " >= " << moving_logic.max_distance << " || " << moving_logic.moving_distance.y << " >= " << moving_logic.max_distance << std::endl; if ( moving_logic.moving_distance.x >= moving_logic.max_distance || moving_logic.moving_distance.y >= moving_logic.max_distance ) { moving_logic.move_type = EnemyMovingType::NONE; diff --git a/src/game/state_playing.cpp b/src/game/state_playing.cpp index 1f014cb..adc6933 100644 --- a/src/game/state_playing.cpp +++ b/src/game/state_playing.cpp @@ -83,6 +83,9 @@ bool StatePlaying::Init(Game* game) { // Enemy Enemy::enemies.clear(); Enemy::enemies_to_spawn.clear(); + Enemy::init_SpawnEnemy(0, WeaponType::SWORD, WeaponMaterial::WOOD, {850, 520}, {16,16,2,false,false,0,1.2}); + Enemy::init_SpawnEnemy(0, WeaponType::SWORD, WeaponMaterial::WOOD, {450, 520}, {16,16,2,false,false,0,1.2}); + Enemy::init_SpawnEnemy(0, WeaponType::SWORD, WeaponMaterial::WOOD, {150, 520}, {16,16,2,false,false,0,1.2}); /* Enemy::init_SpawnEnemy(1, WeaponType::SWORD, WeaponMaterial::WOOD, {140, 100}, {6,6,1,false,false,0,1.2}); Enemy::init_SpawnEnemy(1, WeaponType::SWORD, WeaponMaterial::WOOD, {100, 10}, {6,6,1,false,false,0,1.2});