public PrimevalIsle() { super("ai/group"); for (L2Spawn npc : SpawnTable.getInstance().getSpawnTable()) if (Util.contains(MOBIDS, npc.getNpcId()) && npc.getLastSpawn() != null && npc.getLastSpawn() instanceof L2Attackable) ((L2Attackable) npc.getLastSpawn()).seeThroughSilentMove(true); registerMobs(SPRIGANTS, EventType.ON_AGGRO, EventType.ON_KILL); addAttackId(ANCIENT_EGG); addSpawnId(MOBIDS); }
public void deleteSpawn(L2Spawn spawnDat, boolean updateDb) { if (spawnDat == null) return; final int bossId = spawnDat.getNpcId(); if (!_spawns.containsKey(bossId)) return; SpawnTable.getInstance().deleteSpawn(spawnDat, false); _spawns.remove(bossId); if (_bosses.containsKey(bossId)) _bosses.remove(bossId); if (_schedules.containsKey(bossId)) { final ScheduledFuture<?> f = _schedules.remove(bossId); f.cancel(true); } if (_storedInfo.containsKey(bossId)) _storedInfo.remove(bossId); if (updateDb) { try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement("DELETE FROM raidboss_spawnlist WHERE boss_id=?"); statement.setInt(1, bossId); statement.execute(); statement.close(); } catch (Exception e) { // problem with deleting spawn _log.log( Level.WARNING, "RaidBossSpawnManager: Could not remove raidboss #" + bossId + " from DB: " + e.getMessage(), e); } } }
public void addNewSpawn( L2Spawn spawnDat, long respawnTime, double currentHP, double currentMP, boolean storeInDb) { if (spawnDat == null) return; final int bossId = spawnDat.getNpcId(); if (_spawns.containsKey(bossId)) return; final long time = Calendar.getInstance().getTimeInMillis(); SpawnTable.getInstance().addNewSpawn(spawnDat, false); if (respawnTime == 0L || (time > respawnTime)) { L2RaidBossInstance raidboss = null; if (bossId == 25328) raidboss = DayNightSpawnManager.getInstance().handleBoss(spawnDat); else raidboss = (L2RaidBossInstance) spawnDat.doSpawn(); if (raidboss != null) { currentHP = (currentHP == 0) ? raidboss.getMaxHp() : currentHP; currentMP = (currentMP == 0) ? raidboss.getMaxMp() : currentMP; raidboss.setCurrentHp(currentHP); raidboss.setCurrentMp(currentMP); raidboss.setRaidStatus(StatusEnum.ALIVE); _bosses.put(bossId, raidboss); final StatsSet info = new StatsSet(); info.set("currentHP", currentHP); info.set("currentMP", currentMP); info.set("respawnTime", 0L); _storedInfo.put(bossId, info); } } else { long spawnTime = respawnTime - Calendar.getInstance().getTimeInMillis(); _schedules.put( bossId, ThreadPoolManager.getInstance().scheduleGeneral(new spawnSchedule(bossId), spawnTime)); } _spawns.put(bossId, spawnDat); if (storeInDb) { try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement( "INSERT INTO raidboss_spawnlist (boss_id,loc_x,loc_y,loc_z,heading,respawn_time,currentHp,currentMp) values(?,?,?,?,?,?,?,?)"); statement.setInt(1, spawnDat.getNpcId()); statement.setInt(2, spawnDat.getLocx()); statement.setInt(3, spawnDat.getLocy()); statement.setInt(4, spawnDat.getLocz()); statement.setInt(5, spawnDat.getHeading()); statement.setLong(6, respawnTime); statement.setDouble(7, currentHP); statement.setDouble(8, currentMP); statement.execute(); statement.close(); } catch (Exception e) { // problem with storing spawn _log.log( Level.WARNING, "RaidBossSpawnManager: Could not store raidboss #" + bossId + " in the DB:" + e.getMessage(), e); } } }