@Override
  public boolean doDie(L2Character killer) {
    if (!super.doDie(killer)) {
      return false;
    }

    final L2PcInstance player = killer.getActingPlayer();
    if (player != null) {
      broadcastPacket(
          SystemMessage.getSystemMessage(SystemMessageId.CONGRATULATIONS_YOUR_RAID_WAS_SUCCESSFUL));
      if (player.getParty() != null) {
        for (L2PcInstance member : player.getParty().getMembers()) {
          member.setRaidPoints(member.getRaidPoints() + ((getLevel() / 2) + Rnd.get(-5, 5)));
          if (member.isNoble()) {
            Hero.getInstance().setRBkilled(member.getObjectId(), getId());
          }
        }
      } else {
        player.setRaidPoints(player.getRaidPoints() + ((getLevel() / 2) + Rnd.get(-5, 5)));
        if (player.isNoble()) {
          Hero.getInstance().setRBkilled(player.getObjectId(), getId());
        }
      }
    }

    RaidBossSpawnManager.getInstance().updateStatus(this, true);
    return true;
  }
  @Override
  public boolean doDie(L2Character killer) {
    if (!super.doDie(killer)) return false;

    L2PcInstance player = null;

    if (killer.isPlayer) player = (L2PcInstance) killer;
    else if (killer.isSummon) player = ((L2Summon) killer).getOwner();

    if (player != null) {
      SystemMessage msg = new SystemMessage(SystemMessageId.RAID_WAS_SUCCESSFUL);
      broadcastPacket(msg);
      msg = null;
      if (player.getParty() != null) {
        for (L2PcInstance member : player.getParty().getPartyMembers()) {
          RaidBossPointsManager.addPoints(member, getNpcId(), (getLevel() / 2) + Rnd.get(-5, 5));
        }
      } else RaidBossPointsManager.addPoints(player, getNpcId(), (getLevel() / 2) + Rnd.get(-5, 5));
    }
    return true;
  }
  /**
   * Actions:
   *
   * <ul>
   *   <li>Check if the killing object is a player, and then find the party they belong to.
   *   <li>Add a blood offering item to the leader of the party.
   *   <li>Update the party leader's inventory to show the new item addition.
   * </ul>
   */
  @Override
  public void doItemDrop(L2Character lastAttacker) {
    L2PcInstance killingChar = null;

    if (!(lastAttacker instanceof L2PcInstance)) {
      return;
    }

    killingChar = (L2PcInstance) lastAttacker;
    L2Party associatedParty = killingChar.getParty();

    if (associatedParty == null) {
      return;
    }

    L2PcInstance partyLeader = associatedParty.getLeader();
    L2ItemInstance addedOfferings =
        partyLeader
            .getInventory()
            .addItem(
                "Sign",
                SevenSignsFestival.FESTIVAL_OFFERING_ID,
                _bonusMultiplier,
                partyLeader,
                this);

    InventoryUpdate iu = new InventoryUpdate();

    if (addedOfferings.getCount() != _bonusMultiplier) {
      iu.addModifiedItem(addedOfferings);
    } else {
      iu.addNewItem(addedOfferings);
    }

    partyLeader.sendPacket(iu);

    super.doItemDrop(lastAttacker); // Normal drop
  }