diff --git a/source/core/src/main/com/csse3200/game/components/tasks/MobMeleeAttackTask.java b/source/core/src/main/com/csse3200/game/components/tasks/MobMeleeAttackTask.java index 461428870..3ac8c6c3c 100644 --- a/source/core/src/main/com/csse3200/game/components/tasks/MobMeleeAttackTask.java +++ b/source/core/src/main/com/csse3200/game/components/tasks/MobMeleeAttackTask.java @@ -208,7 +208,7 @@ private int getInactivePriority() { * @return true if a target is visible, false otherwise */ private boolean isTargetVisible() { - Vector2 newVector = new Vector2(owner.getEntity().getPosition().x - 10f, owner.getEntity().getPosition().y - 2f); + Vector2 newVector = new Vector2(owner.getEntity().getPosition().x - 100f, owner.getEntity().getPosition().y - 2f); return physics.raycast(owner.getEntity().getPosition(), newVector, TARGET, hit); } @@ -236,7 +236,7 @@ private Weapon meleeOrProjectile() { } private void setTarget() { - Vector2 newVector = new Vector2(owner.getEntity().getPosition().x - 10f, owner.getEntity().getPosition().y - 2f); + Vector2 newVector = new Vector2(owner.getEntity().getPosition().x - 100f, owner.getEntity().getPosition().y - 2f); target = physics.raycastGetHit(owner.getEntity().getPosition(), newVector, TARGET); } } diff --git a/source/core/src/main/com/csse3200/game/components/tasks/MobRangedAttackTask.java b/source/core/src/main/com/csse3200/game/components/tasks/MobRangedAttackTask.java index e3885ae8b..b10dad91f 100644 --- a/source/core/src/main/com/csse3200/game/components/tasks/MobRangedAttackTask.java +++ b/source/core/src/main/com/csse3200/game/components/tasks/MobRangedAttackTask.java @@ -214,7 +214,7 @@ private int getInactivePriority() { * @return true if a target is visible, false otherwise */ private boolean isTargetVisible() { - Vector2 newVector = new Vector2(owner.getEntity().getPosition().x - 10f, owner.getEntity().getPosition().y - 2f); + Vector2 newVector = new Vector2(owner.getEntity().getPosition().x - 100f, owner.getEntity().getPosition().y - 2f); return physics.raycast(owner.getEntity().getPosition(), newVector, TARGET, hit); } @@ -242,7 +242,7 @@ private Weapon meleeOrProjectile() { } private void setTarget() { - Vector2 newVector = new Vector2(owner.getEntity().getPosition().x - 10f, owner.getEntity().getPosition().y - 2f); + Vector2 newVector = new Vector2(owner.getEntity().getPosition().x - 100f, owner.getEntity().getPosition().y - 2f); target = physics.raycastGetHit(owner.getEntity().getPosition(), newVector, TARGET); } } diff --git a/source/core/src/main/com/csse3200/game/components/tasks/bosstask/DemonBossTask.java b/source/core/src/main/com/csse3200/game/components/tasks/bosstask/DemonBossTask.java index e9fc0e514..6349e51ab 100644 --- a/source/core/src/main/com/csse3200/game/components/tasks/bosstask/DemonBossTask.java +++ b/source/core/src/main/com/csse3200/game/components/tasks/bosstask/DemonBossTask.java @@ -123,6 +123,10 @@ public void run() { */ @Override public void update() { + // * Don't know if this is actually needed. + if(ServiceLocator.getGameEndService().hasGameEnded()) { + stop(); + } // give game time to load in then start if (!startFlag) { return; @@ -381,6 +385,11 @@ private void fireBreath() { Timer.schedule(new Timer.Task() { @Override public void run() { + // service locator getting a service could be anything here. + if(ServiceLocator.getTimeSource() == null) { + stop(); + return; // prevent current iteration from running. + } Entity projectile = ProjectileFactory.createEffectProjectile(PhysicsLayer.HUMANS, destination, new Vector2(2, 2), effect, aoe); projectile.setPosition(demon.getPosition().x, demon.getPosition().y); diff --git a/source/core/src/main/com/csse3200/game/components/tasks/bosstask/IceBabyTask.java b/source/core/src/main/com/csse3200/game/components/tasks/bosstask/IceBabyTask.java index 31f61136c..f89f12ed0 100644 --- a/source/core/src/main/com/csse3200/game/components/tasks/bosstask/IceBabyTask.java +++ b/source/core/src/main/com/csse3200/game/components/tasks/bosstask/IceBabyTask.java @@ -124,7 +124,10 @@ public void update() { } if (health <= 0) { changeState(STATE.DEATH); - iceBaby.setFlagForDelete(true); + animate(); + if (animation.isFinished()) { + iceBaby.setFlagForDelete(true); + } } switch (iceBabyState) { diff --git a/source/core/src/main/com/csse3200/game/components/tasks/bosstask/PatrickTask.java b/source/core/src/main/com/csse3200/game/components/tasks/bosstask/PatrickTask.java index 9e41941dd..ee06a9d44 100644 --- a/source/core/src/main/com/csse3200/game/components/tasks/bosstask/PatrickTask.java +++ b/source/core/src/main/com/csse3200/game/components/tasks/bosstask/PatrickTask.java @@ -251,6 +251,10 @@ private void meleeAttack() { initialPos = patrick.getPosition(); meleeTarget = ServiceLocator.getEntityService().getClosestEntityOfLayer( patrick, PhysicsLayer.HUMANS); + // check if melee target exists + if (meleeTarget == null) { + return; + } teleport(meleeTarget.getPosition()); meleeFlag = true; } diff --git a/source/core/src/main/com/csse3200/game/entities/factories/WaveFactory.java b/source/core/src/main/com/csse3200/game/entities/factories/WaveFactory.java index 23c76f4eb..c3376095d 100644 --- a/source/core/src/main/com/csse3200/game/entities/factories/WaveFactory.java +++ b/source/core/src/main/com/csse3200/game/entities/factories/WaveFactory.java @@ -97,9 +97,9 @@ public static LevelWaves createLevel(int maxDiff, int maxWaves, int chosenLevel) String boss1 = "IceBoss"; // String boss1 = "PatrickBoss"; String boss2 = "PatrickBoss"; - String boss3 = "IceBoss"; + // String boss3 = "IceBoss"; //TODO change this to a fire boss in sprint 4 -// String boss3 = "FireBoss"; + String boss3 = "FireBoss"; LevelWaves level = new LevelWaves(5); ArrayList possibleMobs; diff --git a/source/core/src/test/com/csse3200/game/entities/factories/WaveFactoryTest.java b/source/core/src/test/com/csse3200/game/entities/factories/WaveFactoryTest.java index a5f666ff4..8e43b601e 100644 --- a/source/core/src/test/com/csse3200/game/entities/factories/WaveFactoryTest.java +++ b/source/core/src/test/com/csse3200/game/entities/factories/WaveFactoryTest.java @@ -59,7 +59,7 @@ class WaveFactoryTest { private final int LVL3_WAVES = 15; private final int LVL3_CHOSEN_LVL = 2; private final ArrayList LVL3_MOBS = new ArrayList<>(Arrays.asList("Xeno", "DodgingDragon", "FireWorm")); - private final String LVL3_BOSS = "IceBoss"; + private final String LVL3_BOSS = "FireBoss"; // private final String LVL3_BOSS = "FireBoss"; //TODO: make this a fire boss in sprint 4