diff --git a/runner/src/main/kotlin/com/daylifecraft/minigames/minigames/instances/games/towerdefence/TowerData.kt b/runner/src/main/kotlin/com/daylifecraft/minigames/minigames/instances/games/towerdefence/TowerData.kt index cc26569..be2d151 100644 --- a/runner/src/main/kotlin/com/daylifecraft/minigames/minigames/instances/games/towerdefence/TowerData.kt +++ b/runner/src/main/kotlin/com/daylifecraft/minigames/minigames/instances/games/towerdefence/TowerData.kt @@ -1,8 +1,10 @@ package com.daylifecraft.minigames.minigames.instances.games.towerdefence import com.daylifecraft.common.config.ConfigFile +import com.daylifecraft.minigames.minigames.instances.games.towerdefence.monsters.MonsterData import net.minestom.server.coordinate.Point import net.minestom.server.coordinate.Pos +import net.minestom.server.entity.EntityCreature import net.minestom.server.instance.Instance import net.minestom.server.instance.block.Block import net.minestom.server.item.Material @@ -74,6 +76,7 @@ class TowerData private constructor( var ownerData: Pair? = null, ) { + var towerTargetEntity: MonsterData? = null /** * Returns all positions of current tower diff --git a/runner/src/main/kotlin/com/daylifecraft/minigames/minigames/instances/games/towerdefence/TowerDefenceInstance.kt b/runner/src/main/kotlin/com/daylifecraft/minigames/minigames/instances/games/towerdefence/TowerDefenceInstance.kt index 9e4c78a..f42750f 100644 --- a/runner/src/main/kotlin/com/daylifecraft/minigames/minigames/instances/games/towerdefence/TowerDefenceInstance.kt +++ b/runner/src/main/kotlin/com/daylifecraft/minigames/minigames/instances/games/towerdefence/TowerDefenceInstance.kt @@ -469,15 +469,20 @@ class TowerDefenceInstance private constructor( if(towerData.attackDamage == null) continue if(towerData.attackSpeedTicks != 0 && currentTicksCount % towerData.attackSpeedTicks.toLong() != 0L) continue - val randomMonsterData = miniGameWorldInstance.instance + val nearbyMonsterData = miniGameWorldInstance.instance .getNearbyEntities(towerData.position, towerData.attackRange.toDouble()) .filterIsInstance() .mapNotNull { getMonsterDataByLinkedEntity(it) } - .randomOrNull() - if(randomMonsterData == null) break + if(towerData.towerTargetEntity != null && nearbyMonsterData.contains(towerData.towerTargetEntity)) { + towerData.towerTargetEntity!! + .linkedEntityCreature!!.damage(DamageType.PLAYER_ATTACK, towerData.attackDamage.toFloat()) + }else { + val randomMonsterData = nearbyMonsterData.randomOrNull() ?: continue - randomMonsterData.linkedEntityCreature!!.damage(DamageType.PLAYER_ATTACK, towerData.attackDamage.toFloat()) + randomMonsterData.linkedEntityCreature!!.damage(DamageType.PLAYER_ATTACK, towerData.attackDamage.toFloat()) + + } } }