/**
   * People killed another one.
   *
   * <p>
   *
   * <ul>
   *   <li>display message
   *   <li>update scores
   *   <li>drop Zildo's current weapon
   *   <li>respawn him
   * </ul>
   *
   * @param p_zildo
   * @param p_shooter
   */
  public void kill(PersoZildo p_zildo, Perso p_shooter) {
    ClientState clKilled = Server.getClientFromZildo(p_zildo);
    ClientState clShooter = null;
    if (p_shooter != null && p_shooter.isZildo()) {
      clShooter = Server.getClientFromZildo((PersoZildo) p_shooter);
    }
    displayDeathMessage(clKilled, clShooter);
    // Update scores
    clKilled.nDied++;
    if (clShooter != null) {
      clShooter.nKill++;
    }

    // Drop Zildo's weapon at his death point
    Item weapon = p_zildo.getWeapon();
    ItemKind k = weapon == null ? null : weapon.kind;
    if (k != null && k != ItemKind.SWORD) {
      EngineZildo.spriteManagement.spawnSprite(
          k.representation,
          (int) p_zildo.getX(),
          (int) p_zildo.getY(),
          false,
          Reverse.NOTHING,
          true);
    }

    // Steal money from the dead Zildo
    if (p_shooter != null && p_shooter.isZildo()) {
      int money = p_zildo.getMoney() / 2;
      p_zildo.setMoney(money);
      p_shooter.setMoney(p_shooter.getMoney() + money);
    }

    // Respawn Zildo
    EngineZildo.respawnClient(p_zildo);

    needToBroadcast = true;
  }