Sinceramente, tentar montar seu código sem ter acesso a ele seria muito difícil, então me dei ao luxo de criar um do 0 e te passar pra você se basear nele, caso queira.
Aqui está o link pra baixar o projeto.
Exemplo do "sistema":
Basicamente, quando o jogador(quadrado verde) ataca, caso tenha um inimigo na frente dele ele marca esse inimigo como um alvo(sei que não é exatamente o que você quer, mas foi um exemplo pra você adaptar).
Ao marcar esse inimigo como um alvo, o oManager vai criar o objeto de dano(quadrado azul) em cima dele.
Todos os monstros dentro do objeto de dano vão ser atingidos por ele.
Você pode mudar a ordem que as coisas acontecem pra ter resultados diferentes. Por exemplo criar o objeto de dano ao atacar e caso ele acerte alguém você marca esse alguém como alvo(e ai você tira vida ou alguma outra coisa).
Algo que eu queria deixar comentado aqui é esse trecho do oManager:
Código: Selecionar todos
// Checar se existe algum inimigo
if(instance_exists(oRed)) {
// Cria array com todos inimigos
i = 0; repeat(instance_number(oRed)) {
Enemy[i] = instance_find(oRed, i);
i++
}
// Pega cada inimigo no mapa pra poder manipular
i = 0; repeat(array_length_1d(Enemy)) {
with(Enemy[i]) {
// Checa se ele é alvo e está vivo
if(Target && isAlive) {
// Cria objeto de dano em cima dele
instance_create(x, y, oDamage);
}
}
i++
}
}
Essa é a parte importante pra você poder separar quem esta sendo alvo e quem não está.
Na verdade essa é a parte mais importante pra você lidar com os inimigos, hehe...
Enfim, espero que o código te ajude o/
See ya.