// Script assets have changed for v2.3.0 see
// https://help.yoyogames.com/hc/en-us/articles/360005277377 for more information

/*
@description Repousse objRepousse d'après la position de obj de 10px
@param {obj} Objet définissant vers où sera repoussé l'objRepousse
@param {objRepousse} objet qui sera repoussé
*/
function knockBack(obj, objRepousse) {
	knockback = 20;
	oY = objRepousse.y;
	oX = objRepousse.x;
	if (obj.x > oX && !place_meeting(oX-knockback-1, oY, oWall)) {
		objRepousse.x -= knockback;
	} else if (obj.x < oX && !place_meeting(oX+knockback+1, oY, oWall)) {
		objRepousse.x += knockback;
	} else if (obj.y > oY && !place_meeting(oX, oY-knockback-1, oWall)) {
		objRepousse.y -= knockback;
	} else if (obj.y < oY && !place_meeting(oX, oY+knockback+1, oWall)) {
		objRepousse.y += knockback;
	}
}

/*
@description Inflige des dégâts à objAttaque. Exécute le knockback lors de son appel.
@param {objAttaquant} Objet qui inflige les dégâts
@param {objAttaque} objet qui perd des pv
@param {degats} dégâts infligés (permet de gérer les attaques cac ou distance pour le joueur
*/
function hit(objAttaquant, objAttaque) {
	objAttaque.pv -= objAttaquant.attack;
	if (objAttaque.pv <= 0) { 
		if (objAttaque.object_index = oPlayer) global.perdu = true;
		else instance_destroy(objAttaque);
	}	
}

/*
@description Récupère tous les instances d'obj se trouvant dans un rectangle
@param {x1} coordonnée x gauche du rectangle
@param {y1} coordonnée y haut du rectangle
@param {x2} coordonnée x droit du rectangle
@param {y2} coordonnée y bas du rectangle
@param {obj} le type des instances à chercher 
@return la liste des id des instances se trouvant dans le restangle
*/
function getCollisionArea(x1, y1, x2, y2, obj){
	list = ds_list_create();
	
	with(obj) { 
		if ( x >= x1 && x <= x2 && y >= y1 && y <= y2) {
			ds_list_add(list, obj.id);
		}
	}
	
	return list;
}