@Override public void interagit() { try { Personnage pAttaquant = attaquant.getElement(); // init int forceAttaquant = pAttaquant.getCaract(Caracteristique.FORCE); Personnage pDefenseur = defenseur.getElement(); int defenseDefenseur = pDefenseur.getCaract(Caracteristique.DEFENSE); // on prend en compte la Defense int perteVie = forceAttaquant * (100 - defenseDefenseur) / 100; Point positionEjection = positionEjection(defenseur.getPosition(), attaquant.getPosition(), forceAttaquant); // ejection du defenseur defenseur.setPosition(positionEjection); // degats if (perteVie > 0) { arene.incrementeCaractElement(defenseur, Caracteristique.VIE, -perteVie); logs( Level.INFO, Constantes.nomRaccourciClient(attaquant) + " colle une beigne paralysante (" + perteVie + " points de degats) a " + Constantes.nomRaccourciClient(defenseur)); } // paralysie paralysie(defenseur); // initiative incrementeInitiative(defenseur); decrementeInitiative(attaquant); } catch (RemoteException e) { logs(Level.INFO, "\nErreur lors d'une attaque : " + e.toString()); } }
/** * Retourne le nom raccourci du client correspondant a la reference RMI donnee. * * @param refRMI reference RMI * @return nom raccourci du client */ public String nomRaccourciClient(int refRMI) throws RemoteException { return Constantes.nomRaccourciClient(vueFromRef(refRMI)); }
// TODO : modification de l'interaction avec les differents type de potions @Override public void interagit() { try { logs( Level.INFO, Constantes.nomRaccourciClient(attaquant) + " essaye de rammasser " + Constantes.nomRaccourciClient(defenseur)); // si le personnage est vivant if (attaquant.getElement().estVivant()) { // caracteristiques de la potion HashMap<Caracteristique, Integer> valeursPotion = defenseur.getElement().getCaracts(); int typePotion = valeursPotion.get(Caracteristique.TYPE); if (typePotion == 1) { for (Caracteristique c : valeursPotion.keySet()) { if (c != Caracteristique.TYPE) { arene.incrementeCaractElement( attaquant, c, (int) ((valeursPotion.get(c) / (float) 100) * attaquant.getElement().getCaracts().get(c))); System.out.println(attaquant.getElement().getCaracts().get(c)); System.out.println(valeursPotion.get(c)); } } } else { for (Caracteristique c : valeursPotion.keySet()) { if (c != Caracteristique.TYPE) { arene.incrementeCaractElement(attaquant, c, valeursPotion.get(c)); } } } logs(Level.INFO, "Potion bue !"); // test si mort if (!attaquant.getElement().estVivant()) { arene.setPhrase(attaquant.getRefRMI(), "Je me suis empoisonne, je meurs "); logs( Level.INFO, Constantes.nomRaccourciClient(attaquant) + " vient de boire un poison... Mort >_<"); } // suppression de la potion arene.ejectePotion(defenseur.getRefRMI()); } else { logs( Level.INFO, Constantes.nomRaccourciClient(attaquant) + " ou " + Constantes.nomRaccourciClient(defenseur) + " est deja mort... Rien ne se passe"); } } catch (RemoteException e) { logs(Level.INFO, "\nErreur lors d'un ramassage : " + e.toString()); } }
@Override public void interagit() { Potion Potion = defenseur.getElement(); try { logs( Level.INFO, Constantes.nomRaccourciClient(attaquant) + " essaye de rammasser " + Constantes.nomRaccourciClient(defenseur)); // si le personnage est vivant if (attaquant.getElement().estVivant()) { // caracteristiques de la potion HashMap<Caracteristique, Integer> valeursPotion = defenseur.getElement().getCaracts(); if (Potion.getNom().equals("teleportation")) { arene.setPhrase(attaquant.getRefRMI(), "Je me teleporte"); Point p; p = attaquant.getPosition(); p.x = (int) (Math.random() * (Constantes.XMAX_ARENE - Constantes.XMIN_ARENE)) + Constantes.XMIN_ARENE; p.y = (int) (Math.random() * (Constantes.YMAX_ARENE - Constantes.YMIN_ARENE)) + Constantes.YMIN_ARENE; arene.deplace(attaquant.getRefRMI(), p); } else if (Potion.getNom().equals("immobilite")) { arene.setPhrase(attaquant.getRefRMI(), "Je deviens immobile pour 5 tours"); this.attaquant.getElement().nbToursImm = 5; System.err.println("nb tour: " + this.attaquant.getElement().nbToursImm); } else { for (Caracteristique c : valeursPotion.keySet()) { arene.incrementeCaractElement(attaquant, c, valeursPotion.get(c)); } logs(Level.INFO, "Potion bue !"); // test si mort if (!attaquant.getElement().estVivant()) { arene.setPhrase(attaquant.getRefRMI(), "Je me suis empoisonne, je meurs "); logs( Level.INFO, Constantes.nomRaccourciClient(attaquant) + " vient de boire un poison... Mort >_<"); } } if (!Potion.getNom().equals("nitro")) { attaquant.getElement().getCaracts().put(Caracteristique.VITESSE, 1); } // suppression de la potion arene.ejectePotion(defenseur.getRefRMI()); } else { logs( Level.INFO, Constantes.nomRaccourciClient(attaquant) + " ou " + Constantes.nomRaccourciClient(defenseur) + " est deja mort... Rien ne se passe"); } } catch (RemoteException e) { logs(Level.INFO, "\nErreur lors d'un ramassage : " + e.toString()); } }