L2JMobius

Homunculus Normal Raid / Grand Boss Respawn Announce

LLiuKe · 5 · 3942

Offline LLiuKe

  • Heir
  • **
    • Posts: 16
I hope will help someone  :D

/java/org/l2jmobius/Config.java
Code: [Select]
public static int L2JBRASIL_DUALBOXES_ALLOWED;
public static boolean ALLOW_L2JBRASIL_GAME_SERVER_REPORT;
+public static boolean ANNOUNCE_NORMAL_RAID;
+public static boolean ANNOUNCE_GRAND_RAID;

public static boolean ENABLE_GUI;


----------------------------------------------------

L2WALKER_PROTECTION = WalkerBotProtection.getBoolean("L2WalkerProtection", false);

+// Announce Raid / GrandBoss Respawn
+final PropertiesParser AnnounceRespawn = new PropertiesParser(CUSTOM_ANNOUNCE_RESPAWN_CONFIG_FILE);
+ANNOUNCE_NORMAL_RAID = AnnounceRespawn.getBoolean("AnnounceNormalRaidRespawn", false);
+ANNOUNCE_GRAND_RAID = AnnounceRespawn.getBoolean("AnnounceGrandRaidRespawn", false);
}
else if (SERVER_MODE == ServerMode.LOGIN)

----------------------------------------------------

private static final String CUSTOM_VOTE_REWARD_CONFIG_FILE = "./config/Custom/VoteReward.ini";
private static final String CUSTOM_WALKER_BOT_PROTECTION_CONFIG_FILE = "./config/Custom/WalkerBotProtection.ini";
+private static final String CUSTOM_ANNOUNCE_RESPAWN_CONFIG_FILE = "./config/Custom/AnnounceRespawn.ini";

// --------------------------------------------------


java/org/l2jmobius/gameserver/instancemanager/DBSpawnManager.java
Code: [Select]
_npcs.put(npcId, npc);
LOGGER.info(getClass().getSimpleName() + ": Spawning NPC " + npc.getName());
+if (Config.ANNOUNCE_NORMAL_RAID)
+{
+ Broadcast.toAllOnlinePlayers("RaidBoss Manager: " + npc.getName() + " has spawned!", true);
+ Broadcast.toAllOnlinePlayers(new ExShowScreenMessage("RaidBoss Manager: " + npc.getName() + " has spawned!", 10000));
+}
}



java/org/l2jmobius/gameserver/instancemanager/GrandBossManager.java
Code: [Select]
LOGGER.info(getClass().getSimpleName() + ": Updated " + NpcData.getInstance().getTemplate(bossId).getName() + "(" + bossId + ") status to " + status + ".");
updateDb(bossId, true);
+if ((status == 0) && Config.ANNOUNCE_GRAND_RAID)
+{
+ Broadcast.toAllOnlinePlayers("Grand Boss Manager: " + NpcData.getInstance().getTemplate(bossId).getName() + " has spawned!", true);
+ Broadcast.toAllOnlinePlayers(new ExShowScreenMessage("Grand Boss Manager: " + NpcData.getInstance().getTemplate(bossId).getName() + " has spawned!", 10000));
+}
}


dist/game/config/custom/AnnounceRespawn.ini
Code: [Select]
+#-------------------------------------------------------------
+# Announce Raid / Grand Boss Respawn on world Chat
+# Created by LLiuKe
+#-------------------------------------------------------------
+
+
+# Announce Normal Raid Respawn
+AnnounceNormalRaidRespawn = True
+
+# Announce Grand Raid Boss Respawn
+AnnounceGrandRaidRespawn = True


Online Enryu

  • Distinguished King
  • *****
    • Posts: 851
Very useful, I have implemented it and it works perfect in RQA



Offline Mechagon3k

  • Knight
  • ***
    • Posts: 67
First... I'll say good job for your work.
Second... This kind of scripts with RB announces will make your players to be LESS active in your servers. Also there is already a RB status on your in-game MAP. :)


Online Mobius

  • Distinguished King
  • *****
    • Posts: 16041
This is my version for the same thing.
-Also broadcasts defeated bosses.
-Separate config for bosses in instances.

Code: [Select]
Index: dist/game/config/Custom/BossAnnouncements.ini
===================================================================
--- dist/game/config/Custom/BossAnnouncements.ini (nonexistent)
+++ dist/game/config/Custom/BossAnnouncements.ini (working copy)
@@ -0,0 +1,21 @@
+# ---------------------------------------------------------------------------
+# Boss Announcement Settings
+# ---------------------------------------------------------------------------
+
+# Enable RaidBoss spawn announcements.
+RaidBossSpawnAnnouncements = false
+
+# Enable RaidBoss spawn announcements.
+RaidBossDefeatAnnouncements = false
+
+# Enable RaidBoss announcements in instances.
+RaidBossInstanceAnnouncements = false
+
+# Enable GrandBoss spawn announcements.
+GrandBossSpawnAnnouncements = false
+
+# Enable GrandBoss spawn announcements.
+GrandBossDefeatAnnouncements = false
+
+# Enable GrandBoss announcements in instances.
+RaidBossInstanceAnnouncements = false
Index: java/org/l2jmobius/Config.java
===================================================================
--- java/org/l2jmobius/Config.java (revision 9933)
+++ java/org/l2jmobius/Config.java (working copy)
@@ -118,6 +118,7 @@
  private static final String CUSTOM_ALLOWED_PLAYER_RACES_CONFIG_FILE = "./config/Custom/AllowedPlayerRaces.ini";
  private static final String CUSTOM_AUTO_POTIONS_CONFIG_FILE = "./config/Custom/AutoPotions.ini";
  private static final String CUSTOM_BANKING_CONFIG_FILE = "./config/Custom/Banking.ini";
+ private static final String CUSTOM_BOSS_ANNOUNCEMENTS_CONFIG_FILE = "./config/Custom/BossAnnouncements.ini";
  private static final String CUSTOM_CHAMPION_MONSTERS_CONFIG_FILE = "./config/Custom/ChampionMonsters.ini";
  private static final String CUSTOM_CHAT_MODERATION_CONFIG_FILE = "./config/Custom/ChatModeration.ini";
  private static final String CUSTOM_CLASS_BALANCE_CONFIG_FILE = "./config/Custom/ClassBalance.ini";
@@ -1048,6 +1049,12 @@
  public static boolean BANKING_SYSTEM_ENABLED;
  public static int BANKING_SYSTEM_GOLDBARS;
  public static int BANKING_SYSTEM_ADENA;
+ public static boolean RAIDBOSS_SPAWN_ANNOUNCEMENTS;
+ public static boolean RAIDBOSS_DEFEAT_ANNOUNCEMENTS;
+ public static boolean RAIDBOSS_INSTANCE_ANNOUNCEMENTS;
+ public static boolean GRANDBOSS_SPAWN_ANNOUNCEMENTS;
+ public static boolean GRANDBOSS_DEFEAT_ANNOUNCEMENTS;
+ public static boolean GRANDBOSS_INSTANCE_ANNOUNCEMENTS;
  public static boolean ENABLE_NPC_STAT_MULTIPLIERS;
  public static double MONSTER_HP_MULTIPLIER;
  public static double MONSTER_MP_MULTIPLIER;
@@ -2600,6 +2607,15 @@
  BANKING_SYSTEM_GOLDBARS = bankingConfig.getInt("BankingGoldbarCount", 1);
  BANKING_SYSTEM_ADENA = bankingConfig.getInt("BankingAdenaCount", 500000000);
 
+ // Load Boss Announcements config file (if exists)
+ final PropertiesParser bossAnnouncementsConfig = new PropertiesParser(CUSTOM_BOSS_ANNOUNCEMENTS_CONFIG_FILE);
+ RAIDBOSS_SPAWN_ANNOUNCEMENTS = bossAnnouncementsConfig.getBoolean("RaidBossSpawnAnnouncements", false);
+ RAIDBOSS_DEFEAT_ANNOUNCEMENTS = bossAnnouncementsConfig.getBoolean("RaidBossDefeatAnnouncements", false);
+ RAIDBOSS_INSTANCE_ANNOUNCEMENTS = bossAnnouncementsConfig.getBoolean("RaidBossInstanceAnnouncements", false);
+ GRANDBOSS_SPAWN_ANNOUNCEMENTS = bossAnnouncementsConfig.getBoolean("GrandBossSpawnAnnouncements", false);
+ GRANDBOSS_DEFEAT_ANNOUNCEMENTS = bossAnnouncementsConfig.getBoolean("GrandBossDefeatAnnouncements", false);
+ GRANDBOSS_INSTANCE_ANNOUNCEMENTS = bossAnnouncementsConfig.getBoolean("RaidBossInstanceAnnouncements", false);
+
  // Load BoostNpcStats config file (if exists)
  final PropertiesParser boostNpcStatConfig = new PropertiesParser(CUSTOM_NPC_STAT_MULTIPLIERS_CONFIG_FILE);
  ENABLE_NPC_STAT_MULTIPLIERS = boostNpcStatConfig.getBoolean("EnableNpcStatMultipliers", false);
Index: java/org/l2jmobius/gameserver/model/actor/Creature.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/Creature.java (revision 9933)
+++ java/org/l2jmobius/gameserver/model/actor/Creature.java (working copy)
@@ -50,6 +50,7 @@
 import org.l2jmobius.gameserver.ai.CtrlIntention;
 import org.l2jmobius.gameserver.cache.RelationCache;
 import org.l2jmobius.gameserver.data.xml.CategoryData;
+import org.l2jmobius.gameserver.data.xml.NpcData;
 import org.l2jmobius.gameserver.data.xml.SkillData;
 import org.l2jmobius.gameserver.data.xml.TransformData;
 import org.l2jmobius.gameserver.enums.AttributeType;
@@ -82,6 +83,7 @@
 import org.l2jmobius.gameserver.model.WorldObject;
 import org.l2jmobius.gameserver.model.WorldRegion;
 import org.l2jmobius.gameserver.model.actor.instance.FriendlyNpc;
+import org.l2jmobius.gameserver.model.actor.instance.GrandBoss;
 import org.l2jmobius.gameserver.model.actor.instance.Monster;
 import org.l2jmobius.gameserver.model.actor.instance.Trap;
 import org.l2jmobius.gameserver.model.actor.stat.CreatureStat;
@@ -162,6 +164,7 @@
 import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
 import org.l2jmobius.gameserver.taskmanager.CreatureSeeTaskManager;
 import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager;
+import org.l2jmobius.gameserver.util.Broadcast;
 import org.l2jmobius.gameserver.util.Util;
 
 /**
@@ -592,6 +595,29 @@
  {
  super.onSpawn();
  revalidateZone(true);
+
+ // Custom boss announcements configuration.
+ if (this instanceof GrandBoss)
+ {
+ if (Config.GRANDBOSS_SPAWN_ANNOUNCEMENTS && (!isInInstance() || Config.GRANDBOSS_INSTANCE_ANNOUNCEMENTS))
+ {
+ final String name = NpcData.getInstance().getTemplate(getId()).getName();
+ if (name != null)
+ {
+ Broadcast.toAllOnlinePlayers(name + " has spawned!");
+ Broadcast.toAllOnlinePlayersOnScreen(name + " has spawned!");
+ }
+ }
+ }
+ else if (isRaid() && Config.RAIDBOSS_SPAWN_ANNOUNCEMENTS && (!isInInstance() || Config.RAIDBOSS_INSTANCE_ANNOUNCEMENTS))
+ {
+ final String name = NpcData.getInstance().getTemplate(getId()).getName();
+ if (name != null)
+ {
+ Broadcast.toAllOnlinePlayers(name + " has spawned!");
+ Broadcast.toAllOnlinePlayersOnScreen(name + " has spawned!");
+ }
+ }
  }
 
  public synchronized void onTeleported()
@@ -1745,6 +1771,29 @@
  getSkillChannelized().abortChannelization();
  }
 
+ // Custom boss announcements configuration.
+ if (this instanceof GrandBoss)
+ {
+ if (Config.GRANDBOSS_DEFEAT_ANNOUNCEMENTS && (!isInInstance() || Config.GRANDBOSS_INSTANCE_ANNOUNCEMENTS))
+ {
+ final String name = NpcData.getInstance().getTemplate(getId()).getName();
+ if (name != null)
+ {
+ Broadcast.toAllOnlinePlayers(name + " has been defeated!");
+ Broadcast.toAllOnlinePlayersOnScreen(name + " has been defeated!");
+ }
+ }
+ }
+ else if (isRaid() && Config.RAIDBOSS_DEFEAT_ANNOUNCEMENTS && (!isInInstance() || Config.RAIDBOSS_INSTANCE_ANNOUNCEMENTS))
+ {
+ final String name = NpcData.getInstance().getTemplate(getId()).getName();
+ if (name != null)
+ {
+ Broadcast.toAllOnlinePlayers(name + " has been defeated!");
+ Broadcast.toAllOnlinePlayersOnScreen(name + " has been defeated!");
+ }
+ }
+
  return true;
  }