SHOW:
|
|
- or go back to the newest paste.
| 1 | ### Eclipse Workspace Patch 1.0 | |
| 2 | #P aCis_gameserver | |
| 3 | Index: java/net/sf/l2j/gameserver/instancemanager/GrandBossManager.java | |
| 4 | =================================================================== | |
| 5 | --- java/net/sf/l2j/gameserver/instancemanager/GrandBossManager.java (revision 4) | |
| 6 | +++ java/net/sf/l2j/gameserver/instancemanager/GrandBossManager.java (working copy) | |
| 7 | @@ -9,12 +9,10 @@ | |
| 8 | import java.util.logging.Level; | |
| 9 | import java.util.logging.Logger; | |
| 10 | ||
| 11 | +import net.sf.l2j.Config; | |
| 12 | import net.sf.l2j.L2DatabaseFactory; | |
| 13 | import net.sf.l2j.gameserver.data.NpcTable; | |
| 14 | import net.sf.l2j.gameserver.model.actor.instance.GrandBoss; | |
| 15 | import net.sf.l2j.gameserver.templates.StatsSet; | |
| 16 | +import net.sf.l2j.gameserver.util.Broadcast; | |
| 17 | ||
| 18 | /** | |
| 19 | * This class handles the status of all Grand Bosses, and manages L2BossZone zones. | |
| 20 | @@ -82,38 +80,6 @@ | |
| 21 | _bossStatus.put(bossId, status); | |
| 22 | _log.info("GrandBossManager: Updated " + NpcTable.getInstance().getTemplate(bossId).getName() + " (id: " + bossId + ") status to " + status);
| |
| 23 | updateDb(bossId, true); | |
| 24 | + if (Config.GRAND_BOSS_ANNOUNCE) | |
| 25 | + {
| |
| 26 | + switch (bossId) | |
| 27 | + {
| |
| 28 | + case 29001: | |
| 29 | + case 29006: | |
| 30 | + case 29014: | |
| 31 | + if (status == 0) | |
| 32 | + Broadcast.announceToOnlinePlayers("Grandboss " + NpcTable.getInstance().getTemplate(bossId).getName() + " is spawned in the world!", true);
| |
| 33 | + else if (status == 1) | |
| 34 | + Broadcast.announceToOnlinePlayers("Grandboss " + NpcTable.getInstance().getTemplate(bossId).getName() + " has been killed. Type .epic for details!", true);
| |
| 35 | + break; | |
| 36 | + case 29020: | |
| 37 | + if (status == 0) | |
| 38 | + Broadcast.announceToOnlinePlayers("Grandboss " + NpcTable.getInstance().getTemplate(bossId).getName() + " is spawned in the world!", true);
| |
| 39 | + else if (status == 1) | |
| 40 | + Broadcast.announceToOnlinePlayers("Grandboss " + NpcTable.getInstance().getTemplate(bossId).getName() + " is awake and fighting.", true);
| |
| 41 | + else if (status == 2) | |
| 42 | + Broadcast.announceToOnlinePlayers("Grandboss " + NpcTable.getInstance().getTemplate(bossId).getName() + " has been killed. Type .epic for details!", true);
| |
| 43 | + break; | |
| 44 | + case 29028: | |
| 45 | + case 29019: | |
| 46 | + case 29047: | |
| 47 | + if (status == 0) | |
| 48 | + Broadcast.announceToOnlinePlayers("Grandboss " + NpcTable.getInstance().getTemplate(bossId).getName() + " is spawned in the world!", true);
| |
| 49 | + if (status == 2) | |
| 50 | + Broadcast.announceToOnlinePlayers("Grandboss " + NpcTable.getInstance().getTemplate(bossId).getName() + " is engaged in battle!", true);
| |
| 51 | + else if (status == 3) | |
| 52 | + Broadcast.announceToOnlinePlayers("Grandboss " + NpcTable.getInstance().getTemplate(bossId).getName() + " has been killed. Type .epic for details!", true);
| |
| 53 | + break; | |
| 54 | + } | |
| 55 | + } | |
| 56 | } | |
| 57 | ||
| 58 | /** | |
| 59 | Index: config/npcs.properties | |
| 60 | =================================================================== | |
| 61 | --- config/npcs.properties (revision 4) | |
| 62 | +++ config/npcs.properties (working copy) | |
| 63 | @@ -245,6 +245,16 @@ | |
| 64 | # Random interval. Value is hour. | |
| 65 | ZakenRandomSpawn = 20 | |
| 66 | ||
| 67 | +# Announce Grandboss status. | |
| 68 | +# Ex: If status for Antharas/Valakas/Frintezza change to 2 player get announce: | |
| 69 | +# Grandbossname is engaged in battle. | |
| 70 | +# If status changed to 3: Grandbossname has been killed. Type .epic for details! | |
| 71 | +# For Baium if status change to 1 - Baium is awake and fighting. | |
| 72 | +# All Grandboses respawned - Grandbossname is spawned in the world! | |
| 73 | +AnnounceGrandBossStatus = True | |
| 74 | +# Enlabe .epic command | |
| 75 | +EpicInfoCmd = True | |
| 76 | + | |
| 77 | #============================================================= | |
| 78 | # IA | |
| 79 | #============================================================= | |
| 80 | Index: java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java | |
| 81 | =================================================================== | |
| 82 | --- java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java (revision 4) | |
| 83 | +++ java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java (working copy) | |
| 84 | @@ -20,6 +20,7 @@ | |
| 85 | import net.sf.l2j.gameserver.handler.voicedcommandhandlers.AioMenu; | |
| 86 | import net.sf.l2j.gameserver.handler.voicedcommandhandlers.BankingCommand; | |
| 87 | import net.sf.l2j.gameserver.handler.voicedcommandhandlers.EventJoin; | |
| 88 | +import net.sf.l2j.gameserver.handler.voicedcommandhandlers.GrandBossInfo; | |
| 89 | import net.sf.l2j.gameserver.handler.voicedcommandhandlers.GrandBossStatus; | |
| 90 | import net.sf.l2j.gameserver.handler.voicedcommandhandlers.Menu; | |
| 91 | import net.sf.l2j.gameserver.handler.voicedcommandhandlers.OfflineShop; | |
| 92 | @@ -52,6 +53,7 @@ | |
| 93 | registerHandler(new Repair()); | |
| 94 | registerHandler(new AioMenu()); | |
| 95 | registerHandler(new OfflineShop()); | |
| 96 | + registerHandler(new GrandBossInfo()); | |
| 97 | } | |
| 98 | ||
| 99 | public void registerHandler(IVoicedCommandHandler handler) | |
| 100 | Index: java/net/sf/l2j/Config.java | |
| 101 | =================================================================== | |
| 102 | --- java/net/sf/l2j/Config.java (revision 4) | |
| 103 | +++ java/net/sf/l2j/Config.java (working copy) | |
| 104 | @@ -665,6 +665,9 @@ | |
| 105 | public static int SPAWN_INTERVAL_ZAKEN; | |
| 106 | public static int RANDOM_SPAWN_TIME_ZAKEN; | |
| 107 | ||
| 108 | + public static boolean GRANDBOSSES_ANNOUNCE; | |
| 109 | + public static boolean INFO_EPIC; | |
| 110 | + | |
| 111 | /** AI */ | |
| 112 | public static boolean GUARD_ATTACK_AGGRO_MOB; | |
| 113 | public static int MAX_DRIFT_RANGE; | |
| 114 | @@ -1988,6 +2011,9 @@ | |
| 115 | SPAWN_INTERVAL_ZAKEN = npcs.getProperty("ZakenSpawnInterval", 60);
| |
| 116 | RANDOM_SPAWN_TIME_ZAKEN = npcs.getProperty("ZakenRandomSpawn", 20);
| |
| 117 | ||
| 118 | + GRAND_BOSS_ANNOUNCE = npcs.getProperty("AnnounceGrandBossStatus", true);
| |
| 119 | + INFO_EPIC = npcs.getProperty("EpicInfoCmd", true);
| |
| 120 | + | |
| 121 | GUARD_ATTACK_AGGRO_MOB = npcs.getProperty("GuardAttackAggroMob", false);
| |
| 122 | MAX_DRIFT_RANGE = npcs.getProperty("MaxDriftRange", 300);
| |
| 123 | MIN_NPC_ANIMATION = npcs.getProperty("MinNPCAnimation", 20);
| |
| 124 | ||
| 125 | Index: java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/GrandBossInfo.java | |
| 126 | =================================================================== | |
| 127 | --- java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/GrandBossInfo.java (nonexistent) | |
| 128 | +++ java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/GrandBossInfo.java (working copy) | |
| 129 | @@ -0,0 +1,168 @@ | |
| 130 | +/* | |
| 131 | + * This program is free software: you can redistribute it and/or modify it under | |
| 132 | + * the terms of the GNU General Public License as published by the Free Software | |
| 133 | + * Foundation, either version 3 of the License, or (at your option) any later | |
| 134 | + * version. | |
| 135 | + * | |
| 136 | + * This program is distributed in the hope that it will be useful, but WITHOUT | |
| 137 | + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
| 138 | + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | |
| 139 | + * details. | |
| 140 | + * | |
| 141 | + * You should have received a copy of the GNU General Public License along with | |
| 142 | + * this program. If not, see <http://www.gnu.org/licenses/>. | |
| 143 | + */ | |
| 144 | +package net.sf.l2j.gameserver.handler.voicedcommandhandlers; | |
| 145 | + | |
| 146 | +import java.text.SimpleDateFormat; | |
| 147 | + | |
| 148 | +import net.sf.l2j.Config; | |
| 149 | +import net.sf.l2j.gameserver.data.NpcTable; | |
| 150 | +import net.sf.l2j.gameserver.handler.IVoicedCommandHandler; | |
| 151 | +import net.sf.l2j.gameserver.instancemanager.GrandBossManager; | |
| 152 | +import net.sf.l2j.gameserver.instancemanager.RaidBossSpawnManager; | |
| 153 | +import net.sf.l2j.gameserver.model.actor.instance.Player; | |
| 154 | +import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; | |
| 155 | +import net.sf.l2j.gameserver.templates.StatsSet; | |
| 156 | + | |
| 157 | +/** | |
| 158 | + * @author Baggos | |
| 159 | + */ | |
| 160 | +public class GrandBossInfo implements IVoicedCommandHandler | |
| 161 | +{
| |
| 162 | + | |
| 163 | + private static final String[] _voicedCommands = | |
| 164 | + {
| |
| 165 | + "epic" | |
| 166 | + }; | |
| 167 | + | |
| 168 | + private static final int[] raidbosses = new int[] | |
| 169 | + {
| |
| 170 | - | + 51006 // Zaken |
| 170 | + | + 29022 // Zaken |
| 171 | + }; | |
| 172 | + | |
| 173 | + private static final int[] GRAND = new int[] | |
| 174 | + {
| |
| 175 | + 29001, // Queen Ant | |
| 176 | + 29006, // Core | |
| 177 | + 29014 // Orfen | |
| 178 | + }; | |
| 179 | + | |
| 180 | + private static final int[] GRAND2 = new int[] | |
| 181 | + {
| |
| 182 | + 29019, // Antharas | |
| 183 | + 29028, // Valakas | |
| 184 | + 29047 // Halisha | |
| 185 | + }; | |
| 186 | + | |
| 187 | + private static final int BAIUM = 29020; | |
| 188 | + | |
| 189 | + @Override | |
| 190 | + public boolean useVoicedCommand(String command, Player activeChar, String params) | |
| 191 | + {
| |
| 192 | + if (command.equals("epic") && Config.EPIC_INFO)
| |
| 193 | + {
| |
| 194 | + final StringBuilder sb = new StringBuilder(); | |
| 195 | + NpcHtmlMessage html = new NpcHtmlMessage(0); | |
| 196 | + for (int raidboss : raidbosses) | |
| 197 | + {
| |
| 198 | + String name = NpcTable.getInstance().getTemplate(raidboss).getName(); | |
| 199 | + long delay = RaidBossSpawnManager.getInstance().getRespawntime(raidboss); | |
| 200 | + sb.append("<html><head><title>Epic Boss Manager</title></head><body>");
| |
| 201 | + sb.append("<center>");
| |
| 202 | + sb.append("<img src=\"L2UI.SquareGray\" width=300 height=1><br>");
| |
| 203 | + | |
| 204 | + if (delay <= System.currentTimeMillis()) | |
| 205 | + {
| |
| 206 | + sb.append("" + name + ": <font color=\"4d94ff\">Is Alive!</font><br1>");
| |
| 207 | + } | |
| 208 | + else | |
| 209 | + {
| |
| 210 | + sb.append("" + name + ": <br1>");
| |
| 211 | + sb.append(" <font color=\"FFFFFF\">" + " " + "Respawn at:</font>" + "" + "<font color=\"FF9900\"> " + new SimpleDateFormat("dd-MM-yyyy HH:mm").format(delay) + "</font><br>");
| |
| 212 | + } | |
| 213 | + } | |
| 214 | + | |
| 215 | + // Case of Queen/Core/Orfen | |
| 216 | + for (int grandboss : GRAND) | |
| 217 | + {
| |
| 218 | + StatsSet info = GrandBossManager.getInstance().getStatsSet(grandboss); | |
| 219 | + long temp = info.getLong("respawn_time");
| |
| 220 | + String Grand = NpcTable.getInstance().getTemplate(grandboss).getName(); | |
| 221 | + | |
| 222 | + sb.append("<center>");
| |
| 223 | + sb.append("<img src=\"L2UI.SquareGray\" width=300 height=1><br>");
| |
| 224 | + if (temp <= System.currentTimeMillis()) | |
| 225 | + {
| |
| 226 | + sb.append("" + Grand + ": <font color=\"4d94ff\">Is Alive!</font><br1>");
| |
| 227 | + } | |
| 228 | + else | |
| 229 | + {
| |
| 230 | + sb.append("" + Grand + ": <br1>");
| |
| 231 | + sb.append(" <font color=\"FFFFFF\">" + " " + "Respawn at:</font>" + "" + "<font color=\"FF9900\"> " + new SimpleDateFormat("dd-MM-yyyy HH:mm").format(temp) + "</font><br>");
| |
| 232 | + } | |
| 233 | + } | |
| 234 | + | |
| 235 | + // Case of Baium | |
| 236 | + StatsSet infobaium = GrandBossManager.getInstance().getStatsSet(BAIUM); | |
| 237 | + long tempbaium = infobaium.getLong("respawn_time");
| |
| 238 | + String Baium = NpcTable.getInstance().getTemplate(BAIUM).getName(); | |
| 239 | + int BaiumStatus = GrandBossManager.getInstance().getBossStatus(BAIUM); | |
| 240 | + | |
| 241 | + sb.append("<center>");
| |
| 242 | + sb.append("<img src=\"L2UI.SquareGray\" width=300 height=1><br>");
| |
| 243 | + if (tempbaium <= System.currentTimeMillis() && BaiumStatus == 0) | |
| 244 | + {
| |
| 245 | + sb.append("" + Baium + ": <font color=\"ff4d4d\">Is Asleep!</font><br1>");
| |
| 246 | + } | |
| 247 | + else if (BaiumStatus == 1) | |
| 248 | + {
| |
| 249 | + sb.append("" + Baium + ": <font color=\"ff4d4d\">Is Awake and fighting. Entry is locked.</font><br1>");
| |
| 250 | + } | |
| 251 | + else | |
| 252 | + {
| |
| 253 | + sb.append("" + Baium + ": <br1>");
| |
| 254 | + sb.append(" <font color=\"FFFFFF\">" + " " + "Respawn at:</font>" + "" + "<font color=\"FF9900\"> " + new SimpleDateFormat("dd-MM-yyyy HH:mm").format(tempbaium) + "</font><br>");
| |
| 255 | + } | |
| 256 | + | |
| 257 | + // Case of Antharas/Valakas/Halisha | |
| 258 | + for (int grandboss : GRAND2) | |
| 259 | + {
| |
| 260 | + StatsSet infogrand = GrandBossManager.getInstance().getStatsSet(grandboss); | |
| 261 | + long tempgrand = infogrand.getLong("respawn_time");
| |
| 262 | + String Grand = NpcTable.getInstance().getTemplate(grandboss).getName(); | |
| 263 | + int BossStatus = GrandBossManager.getInstance().getBossStatus(grandboss); | |
| 264 | + | |
| 265 | + sb.append("<center>");
| |
| 266 | + sb.append("<img src=\"L2UI.SquareGray\" width=300 height=1><br>");
| |
| 267 | + if (tempgrand <= System.currentTimeMillis() && BossStatus == 0) | |
| 268 | + {
| |
| 269 | + sb.append("" + Grand + ": <font color=\"4d94ff\">Is spawned. Entry is unlocked.</font><br1>");
| |
| 270 | + } | |
| 271 | + else if (BossStatus == 1) | |
| 272 | + {
| |
| 273 | + sb.append("" + Grand + ": <font color=\"ff4d4d\">Someone has entered. Hurry!</font><br1>");
| |
| 274 | + } | |
| 275 | + else if (BossStatus == 2) | |
| 276 | + {
| |
| 277 | + sb.append("" + Grand + ": <font color=\"ff4d4d\">Is engaged in battle. Entry is locked.</font><br1>");
| |
| 278 | + } | |
| 279 | + else | |
| 280 | + {
| |
| 281 | + sb.append("" + Grand + ": <br1>");
| |
| 282 | + sb.append(" <font color=\"FFFFFF\">" + " " + "Respawn at:</font>" + "" + "<font color=\"FF9900\"> " + new SimpleDateFormat("dd-MM-yyyy HH:mm").format(tempgrand) + "</font><br>");
| |
| 283 | + } | |
| 284 | + } | |
| 285 | + html.setHtml(sb.toString()); | |
| 286 | + html.replace("%bosslist%", sb.toString());
| |
| 287 | + activeChar.sendPacket(html); | |
| 288 | + } | |
| 289 | + return true; | |
| 290 | + } | |
| 291 | + | |
| 292 | + @Override | |
| 293 | + public String[] getVoicedCommandList() | |
| 294 | + {
| |
| 295 | + return _voicedCommands; | |
| 296 | + } | |
| 297 | +} |