Cache un objet dans un monstre

Tu veux qu’un de tes personnages détienne un de tes objets ? Rien de plus simple ! Il suffit d’ajouter quelques lignes dans ton programme.

Créer une fonction itemDrop()

Pour commencer, nous allons créer une fonction qui permettra aux personnages de faire apparaître un objet. Pour ça je t'ai préparé une fonction que tu peux coller dans le script enemy.js.

function itemDrop( thisEnemy ){ // fait apparaître un objet quand un personnage est vaincu let p = thisEnemy.pos[1] ; let personnage = thisEnemy.type ; let objet; // le personnage 0 cache l'objet 1 if ( personnage == 0 ) objet = 1 ; if (objet) append( items , new item ( p , objet ) ); }

Mofifer la fonction attack()

Maintenant, il faudrais que cette fonction soit appelée quand un personnage est vaincu. Pour ça, toujours dans le script enemy.js, trouve la fonction attack() et applique luis ces quelques modifications.

function attack(thisEnemy){

  // fait perdre un point de vie à l'adversaire

  let d = 1 ;
  let h = thisEnemy.health[1] ;
  
  if ( h == 3 ) fx[2].play();
  if ( h == 2 ) fx[3].play();

if ( h ==1 ) fx[0].play();
if ( h == 1 ) { fx[0].play(); itemDrop( thisEnemy ); }
thisEnemy.health[1] -= d; }

Dorénavant, si ton joueur bat le personnage 0 (le plus haut sur ta feuille), alors l’objet 1 sera déposé au sol.

Personaliser les conditions

Maintenant il te reste à choisir quel personnage déposera quel objet. Pour cela, retourne dans la fonction dropItem() que tu as créée tout à l'heure, et trouve cette ligne.

if ( personnage == 0 ) objet = 1 ;

Pour changer le personnage, remplace le 0 dans la condition au début de la ligne.

personnage == 0 // pour le premier personnage
personnage == 1 // pour le deuxième personnage

Pour changer d’objet, remplace le 1 à la fin de la ligne.

objet = 1 // pour le premier objet
objet = 2 // pour le deuxième objet
objet = 3 // pour le troisième objet
objet = 0 // pour le trésor !

Tu voulais peut-être cacher des objets dans plusieurs personnages ? Rajoute simplement une nouvelle fois cette ligne en dessous de la précédente puis modifie-la à son tour, comme dans cet exemple.

function itemDrop( thisEnemy ){

  // fait apparaître un objet quand un personnage est vaincu
    
  let p = thisEnemy.pos[1] ;
  let personnage = thisEnemy.type ;
  let objet;

  // le personnage 0 cache l'objet 1
  if ( personnage == 0 ) objet = 1 ;

  if ( personnage == 1 ) objet = 2 ;
  
  if (objet) append( items , new item ( p , objet ) );

}

Et voilà, tu as caché ton objet !