Neo-Craft

FightDieTask

Dec 6th, 2012
380
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.06 KB | None | 0 0
  1.  public void onFighterDie(final Fighter target, final Fighter caster) {
  2.         World.backgroundProcess.schedule(new FighterDieTask(Fight.this,target,caster), 500 , TimeUnit.MILLISECONDS);
  3.     }
  4.  
  5. public void onFighterDie_CallBack(Fighter target, Fighter caster) {
  6.         target.setIsDead(true);
  7.         if (!target.hasLeft()) {
  8.             deadList.put(target.getGUID(), target);//on ajoute le joueur à la liste des cadavres ;)
  9.         }
  10.         PacketsManager.GAME_SEND_FIGHT_PLAYER_DIE_TO_FIGHT(this, 7, target.getGUID());
  11.         target.get_fightCell().getFighters().clear();
  12.         if (target.isState(Constants.ETAT_PORTEUR)) {
  13.             Fighter f = target.get_isHolding();
  14.             f.set_fightCell(f.get_fightCell());
  15.             f.get_fightCell().addFighter(f);//Le bug venait par manque de ceci, il ni avait plus de firstFighter
  16.             f.setState(Constants.ETAT_PORTE, 0);//J'ajoute ceci quand m�me pour signaler qu'ils ne sont plus en �tat port�/porteur
  17.             target.setState(Constants.ETAT_PORTEUR, 0);
  18.             f.set_holdedBy(null);
  19.             target.set_isHolding(null);
  20.             PacketsManager.GAME_SEND_GA_PACKET_TO_FIGHT(this, 7, 950, f.getGUID() + "", f.getGUID() + "," + Constants.ETAT_PORTE + ",0");
  21.             PacketsManager.GAME_SEND_GA_PACKET_TO_FIGHT(this, 7, 950, target.getGUID() + "", target.getGUID() + "," + Constants.ETAT_PORTEUR + ",0");
  22.         }
  23.         if (target.getTeam() == 0) {
  24.             HashMap<Integer, Fighter> team = new HashMap<Integer, Fighter>();
  25.             team.putAll(_team0);
  26.             for (Entry<Integer, Fighter> entry : team.entrySet()) {
  27.                 if (entry.getValue().getInvocator() == null) {
  28.                     continue;
  29.                 }
  30.                 if (entry.getValue().getPDV() == 0) {
  31.                     continue;
  32.                 }
  33.                 if (entry.getValue().isDead()) {
  34.                     continue;
  35.                 }
  36.                 if (entry.getValue().getInvocator().getGUID() == target.getGUID())//si il a été invoqué par le joueur mort
  37.                 {
  38.                     onFighterDie(entry.getValue(), caster);
  39.  
  40.                     int index = _ordreJeu.indexOf(entry.getValue());
  41.                     if (index != -1) {
  42.                         _ordreJeu.remove(index);
  43.                     }
  44.  
  45.                     if (_team0.containsKey(entry.getValue().getGUID())) {
  46.                         _team0.remove(entry.getValue().getGUID());
  47.                     } else if (_team1.containsKey(entry.getValue().getGUID())) {
  48.                         _team1.remove(entry.getValue().getGUID());
  49.                     }
  50.                     PacketsManager.GAME_SEND_GA_PACKET_TO_FIGHT(this, 7, 999, target.getGUID() + "", getGTL());
  51.                 }
  52.             }
  53.         } else if (target.getTeam() == 1) {
  54.             HashMap<Integer, Fighter> team = new HashMap<Integer, Fighter>();
  55.             team.putAll(_team1);
  56.             for (Entry<Integer, Fighter> entry : team.entrySet()) {
  57.                 if (entry.getValue().getInvocator() == null) {
  58.                     continue;
  59.                 }
  60.                 if (entry.getValue().getPDV() == 0) {
  61.                     continue;
  62.                 }
  63.                 if (entry.getValue().isDead()) {
  64.                     continue;
  65.                 }
  66.                 if (entry.getValue().getInvocator().getGUID() == target.getGUID())//si il a été invoqué par le joueur mort
  67.                 {
  68.                     onFighterDie(entry.getValue(), caster);
  69.  
  70.                     int index = _ordreJeu.indexOf(entry.getValue());
  71.                     if (index != -1) {
  72.                         _ordreJeu.remove(index);
  73.                     }
  74.  
  75.                     if (_team0.containsKey(entry.getValue().getGUID())) {
  76.                         _team0.remove(entry.getValue().getGUID());
  77.                     } else if (_team1.containsKey(entry.getValue().getGUID())) {
  78.                         _team1.remove(entry.getValue().getGUID());
  79.                     }
  80.                     PacketsManager.GAME_SEND_GA_PACKET_TO_FIGHT(this, 7, 999, target.getGUID() + "", getGTL());
  81.                 }
  82.             }
  83.         }
  84.         if (target.getMob() != null) {
  85.             //Si c'est une invocation, on la retire de la liste
  86.             try {
  87.                 boolean isStatic = false;
  88.                 for (int id : Constants.STATIC_INVOCATIONS) {
  89.                     if (id == target.getMob().getTemplate().getID()) {
  90.                         isStatic = true;
  91.                     }
  92.                 }
  93.                 if (target.isInvocation() && !isStatic) {
  94.                     //Il ne peut plus jouer, et est mort on revient au joueur précedent pour que le startTurn passe au suivant
  95.                     if (!target.canPlay() && _ordreJeu.get(_curPlayer).getGUID() == target.getGUID()) {
  96.                         _curPlayer--;
  97.                     }
  98.                     //Il peut jouer, et est mort alors on passe son tour pour que l'autre joue, puis on le supprime de l'index sans problèmes
  99.                     if (target.canPlay() && _ordreJeu.get(_curPlayer).getGUID() == target.getGUID()) {
  100.                         endTurn();
  101.                     }
  102.  
  103.                     //On ne peut pas supprimer l'index tant que le tour du prochain joueur n'est pas lancé
  104.                     int index = _ordreJeu.indexOf(target);
  105.  
  106.                     //Si le joueur courant a un index plus élevé, on le diminue pour éviter le outOfBound
  107.                     if (_curPlayer > index) {
  108.                         _curPlayer--;
  109.                     }
  110.  
  111.                     if (index != -1) {
  112.                         _ordreJeu.remove(index);
  113.                     }
  114.  
  115.  
  116.                     if (_team0.containsKey(target.getGUID())) {
  117.                         _team0.remove(target.getGUID());
  118.                     } else if (_team1.containsKey(target.getGUID())) {
  119.                         _team1.remove(target.getGUID());
  120.                     }
  121.                     PacketsManager.GAME_SEND_GA_PACKET_TO_FIGHT(this, 7, 999, target.getGUID() + "", getGTL());
  122.                 }
  123.             } catch (Exception e) {
  124.                 e.printStackTrace();
  125.             };
  126.         }
  127.         //on supprime les glyphes du joueur
  128.         ArrayList<Glyph> glyphs = new ArrayList<Glyph>();//Copie du tableau
  129.         glyphs.addAll(_glyphs);
  130.         for (Glyph g : glyphs) {
  131.             //Si c'est ce joueur qui l'a lancé
  132.             if (g.get_caster().getGUID() == target.getGUID()) {
  133.                 PacketsManager.GAME_SEND_GDZ_PACKET_TO_FIGHT(this, 7, "-", g.get_cell().getID(), g.get_size(), 4);
  134.                 PacketsManager.GAME_SEND_GDC_PACKET_TO_FIGHT(this, 7, g.get_cell().getID());
  135.                 _glyphs.remove(g);
  136.             }
  137.         }
  138.  
  139.         //on supprime les Traps du joueur
  140.         ArrayList<Trap> Ps = new ArrayList<Trap>();
  141.         Ps.addAll(_traps);
  142.         for (Trap p : Ps) {
  143.             if (p.get_caster().getGUID() == target.getGUID()) {
  144.                 p.desappear();
  145.                 _traps.remove(p);
  146.             }
  147.         }
  148.        
  149.     }
Add Comment
Please, Sign In to add comment