diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_01.0_Ertheia/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_01.0_Ertheia/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java index f0f0160d80..631dd42006 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java @@ -114,6 +114,7 @@ public class Config 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"; @@ -1050,6 +1051,12 @@ public class Config 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; @@ -2556,6 +2563,15 @@ public class Config 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); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java index 92a7c04f0b..5b7121b838 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -1,5 +1,5 @@ /* - * This f finalile is part of the L2J Mobius project. + * This file is part of the L2J Mobius project. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_02.5_Underground/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_02.5_Underground/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_02.5_Underground/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java index 726cce0627..67e7af35ed 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1060,6 +1061,12 @@ public class Config 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; @@ -2579,6 +2586,15 @@ public class Config 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); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java index 92a7c04f0b..948941694e 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_03.0_Helios/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_03.0_Helios/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_03.0_Helios/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java index dfe17889e6..31d7aa521c 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1073,6 +1074,12 @@ public class Config 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; @@ -2601,6 +2608,15 @@ public class Config 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); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java index f063e56ca0..5b7121b838 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java index b98f26f905..008f373a32 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1060,6 +1061,12 @@ public class Config 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; @@ -2575,6 +2582,15 @@ public class Config 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); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java index f063e56ca0..5b7121b838 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_05.0_Salvation/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_05.0_Salvation/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java index 215f30e68b..a7f7dd2dc4 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1059,6 +1060,12 @@ public class Config 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; @@ -2584,6 +2591,15 @@ public class Config 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); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java index e247586795..4790e3c332 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_05.5_EtinasFate/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java index 9a8612380e..efea8d73b5 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1066,6 +1067,12 @@ public class Config 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; @@ -2596,6 +2603,15 @@ public class Config 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); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java index e247586795..4790e3c332 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_06.0_Fafurion/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_06.0_Fafurion/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java index 4ea2a41dac..75d796b46f 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1088,6 +1089,12 @@ public class Config 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; @@ -2639,6 +2646,15 @@ public class Config 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); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java index e247586795..4790e3c332 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java index 566643137c..909d4c00af 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1096,6 +1097,12 @@ public class Config 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; @@ -2655,6 +2662,15 @@ public class Config 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); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2fb2fca802..1e53a0a11e 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_08.2_Homunculus/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_08.2_Homunculus/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java index c6ffb97683..7b4ebefefc 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1087,6 +1088,12 @@ public class Config 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; @@ -2626,6 +2633,15 @@ public class Config 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); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2c9afe3d56..bf657e9644 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java index cf1edc06f2..bdd3baa72a 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1098,6 +1099,12 @@ public class Config 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; @@ -2662,6 +2669,15 @@ public class Config 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); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2c9afe3d56..bf657e9644 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_10.1_MasterClass/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_10.1_MasterClass/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java index 6a10096f59..10f29c1fee 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1098,6 +1099,12 @@ public class Config 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; @@ -2662,6 +2669,15 @@ public class Config 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); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2098460543..7544569c4d 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_10.2_MasterClass/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_10.2_MasterClass/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java index 6a10096f59..10f29c1fee 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1098,6 +1099,12 @@ public class Config 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; @@ -2662,6 +2669,15 @@ public class Config 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); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2098460543..7544569c4d 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/custom/BossAnnouncements.ini b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/custom/Other.ini b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/custom/Other.ini index 33b8480ce3..000b204f2d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/custom/Other.ini +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/config/custom/Other.ini @@ -15,9 +15,6 @@ OnlineOnLogin = False # File is located in data/html/welcome.htm WelcomeHtm = False -# Announce when a raidboss has spawned. -AnnounceToAllSpawnRb = False - # Announce when a player has ben banned. AnnounceTryBannedAccount = False diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Baium.java b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Baium.java index ec7defc852..79ed7a3e0a 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Baium.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Baium.java @@ -29,7 +29,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.SkillTable; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.Skill; @@ -120,10 +119,6 @@ public class Baium extends Quest { // The time has already expired while the server was offline. Delete the saved time and immediately spawn the stone-baium. Also the state need not be changed from ASLEEP. addSpawn(STONE_BAIUM, 116033, 17447, 10104, 40188, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss Baium Stone spawned in world."); - } GrandBossManager.getInstance().setBossStatus(LIVE_BAIUM, ASLEEP); } } @@ -136,10 +131,6 @@ public class Baium extends Quest final int hp = info.getInt("currentHP"); final int mp = info.getInt("currentMP"); final GrandBoss baium = (GrandBoss) addSpawn(LIVE_BAIUM, x, y, z, heading, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + baium.getName() + " spawned in world."); - } GrandBossManager.getInstance().addBoss(baium); ThreadPool.schedule(() -> { @@ -160,10 +151,6 @@ public class Baium extends Quest else { addSpawn(STONE_BAIUM, 116033, 17447, 10104, 40188, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss Baium Stone spawned in world."); - } } } @@ -174,10 +161,6 @@ public class Baium extends Quest { GrandBossManager.getInstance().setBossStatus(LIVE_BAIUM, ASLEEP); addSpawn(STONE_BAIUM, 116033, 17447, 10104, 40188, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss Baium Stone spawned in world."); - } } else if (event.equals("skill_range") && (npc != null)) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Core.java b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Core.java index e5c40db9a3..1e79df2164 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Core.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Core.java @@ -24,7 +24,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.Config; import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; @@ -114,10 +113,6 @@ public class Core extends Quest { // The time has already expired while the server was offline. Immediately spawn Core. final GrandBoss core = (GrandBoss) addSpawn(CORE, 17726, 108915, -6480, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + core.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(CORE, ALIVE); spawnBoss(core); } @@ -129,10 +124,6 @@ public class Core extends Quest _firstAttacked = true; } final GrandBoss core = (GrandBoss) addSpawn(CORE, 17726, 108915, -6480, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + core.getName() + " spawned in world."); - } spawnBoss(core); } } @@ -165,10 +156,6 @@ public class Core extends Quest if (event.equals("core_unlock")) { final GrandBoss core = (GrandBoss) addSpawn(CORE, 17726, 108915, -6480, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + core.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(CORE, ALIVE); spawnBoss(core); } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Orfen.java b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Orfen.java index 9f74b7a401..e243b43fee 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Orfen.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/Orfen.java @@ -20,7 +20,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.SkillTable; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; @@ -73,10 +72,6 @@ public class Orfen extends Quest else { _orfen = (GrandBoss) addSpawn(ORFEN, 55024, 17368, -5412, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + _orfen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(ORFEN, LIVE); GrandBossManager.getInstance().addBoss(_orfen); } @@ -87,10 +82,6 @@ public class Orfen extends Quest final int hp = info.getInt("currentHP"); final int mp = info.getInt("currentMP"); _orfen = (GrandBoss) addSpawn(ORFEN, 55024, 17368, -5412, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + _orfen.getName() + " spawned in world."); - } GrandBossManager.getInstance().addBoss(_orfen); _orfen.setCurrentHpMp(hp, mp); break; @@ -102,10 +93,6 @@ public class Orfen extends Quest final int loc_z = -5412; final int heading = 0; _orfen = (GrandBoss) addSpawn(ORFEN, loc_x, loc_y, loc_z, heading, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + _orfen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(ORFEN, LIVE); GrandBossManager.getInstance().addBoss(_orfen); break; @@ -127,10 +114,6 @@ public class Orfen extends Quest final int loc_z = -5412; final int heading = 0; _orfen = (GrandBoss) addSpawn(ORFEN, loc_x, loc_y, loc_z, heading, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + _orfen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(ORFEN, LIVE); GrandBossManager.getInstance().addBoss(_orfen); break; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/QueenAnt.java b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/QueenAnt.java index dfa3a34e80..5f6ebf54f2 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/QueenAnt.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/dist/game/data/scripts/ai/bosses/QueenAnt.java @@ -23,7 +23,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.SkillTable; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Attackable; @@ -101,10 +100,6 @@ public class QueenAnt extends Quest else { final GrandBoss queen = (GrandBoss) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + queen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(QUEEN, LIVE); GrandBossManager.getInstance().addBoss(queen); spawnBoss(queen); @@ -116,10 +111,6 @@ public class QueenAnt extends Quest final int hp = info.getInt("currentHP"); final int mp = info.getInt("currentMP"); final GrandBoss queen = (GrandBoss) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + queen.getName() + " spawned in world."); - } GrandBossManager.getInstance().addBoss(queen); queen.setCurrentHpMp(hp, mp); spawnBoss(queen); @@ -128,10 +119,6 @@ public class QueenAnt extends Quest default: { final GrandBoss queen = (GrandBoss) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + queen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(QUEEN, LIVE); GrandBossManager.getInstance().addBoss(queen); spawnBoss(queen); @@ -165,10 +152,6 @@ public class QueenAnt extends Quest case QUEEN_SPAWN: { final GrandBoss queen = (GrandBoss) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + queen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(QUEEN, LIVE); GrandBossManager.getInstance().addBoss(queen); spawnBoss(queen); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/Config.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/Config.java index 75093f509b..6ae1fb39fb 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/Config.java @@ -81,6 +81,7 @@ public class Config public static final String TELNET_CONFIG_FILE = "./config/Telnet.ini"; // custom private static final String BANK_CONFIG_FILE = "./config/custom/Bank.ini"; + private static final String BOSS_ANNOUNCEMENTS_CONFIG_FILE = "./config/custom/BossAnnouncements.ini"; private static final String CANCEL_SKILL_RESTORE_BUFFS_CONFIG_FILE = "./config/custom/CancelSkillRestoreBuffs.ini"; private static final String CHAMPION_CONFIG_FILE = "./config/custom/Champion.ini"; public static final String CLASS_DAMAGE_CONFIG_FILE = "./config/custom/ClassDamage.ini"; @@ -528,6 +529,13 @@ public class Config 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 int RESTORE_CANCELLED_BUFFS_SECONDS; public static int BUFFER_MAX_SCHEMES; @@ -550,7 +558,6 @@ public class Config public static boolean ONLINE_PLAYERS_ON_LOGIN; public static boolean SUBSTUCK_SKILLS; public static boolean ALT_SERVER_NAME_ENABLED; - public static boolean ANNOUNCE_TO_ALL_SPAWN_RB; public static boolean ANNOUNCE_TRY_BANNED_ACCOUNT; public static String ALT_Server_Name; public static boolean DONATOR_NAME_COLOR_ENABLED; @@ -1714,6 +1721,17 @@ public class Config BANKING_SYSTEM_ADENA = bankConfig.getInt("BankingAdenaCount", 500000000); } + public static void loadBossAnnouncementsConfig() + { + final PropertiesParser bossAnnouncementsConfig = new PropertiesParser(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); + } + public static void loadCancelSkillRestoreBuffsConfig() { final PropertiesParser cancelSkillRestoreBuffsConfig = new PropertiesParser(CANCEL_SKILL_RESTORE_BUFFS_CONFIG_FILE); @@ -1768,7 +1786,6 @@ public class Config DONATOR_SPOIL_RATE = customServerConfig.getFloat("DonatorSpoilRate", 1.5f); WELCOME_HTM = customServerConfig.getBoolean("WelcomeHtm", false); ALT_SERVER_NAME_ENABLED = customServerConfig.getBoolean("ServerNameEnabled", false); - ANNOUNCE_TO_ALL_SPAWN_RB = customServerConfig.getBoolean("AnnounceToAllSpawnRb", false); ANNOUNCE_TRY_BANNED_ACCOUNT = customServerConfig.getBoolean("AnnounceTryBannedAccount", false); ALT_Server_Name = customServerConfig.getString("ServerName", ""); DIFFERENT_Z_CHANGE_OBJECT = customServerConfig.getInt("DifferentZchangeObject", 650); @@ -2859,6 +2876,7 @@ public class Config loadWeddingConfig(); loadRebirthConfig(); loadBankingConfig(); + loadBossAnnouncementsConfig(); loadBufferConfig(); loadPCBPointConfig(); loadOfflineConfig(); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java index ce576bac95..c93a39c08b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java @@ -31,7 +31,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.data.sql.NpcTable; import org.l2jmobius.gameserver.data.sql.SpawnTable; import org.l2jmobius.gameserver.data.xml.AdminData; @@ -155,13 +154,9 @@ public class RaidBossSpawnManager info.set("currentMP", raidboss.getCurrentMp()); info.set("respawnTime", 0); _storedInfo.put(bossId, info); + _bosses.put(bossId, raidboss); AdminData.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName() + "."); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + raidboss.getName() + " spawned in world."); - } - _bosses.put(bossId, raidboss); } _schedules.remove(bossId); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java index ad8414fe05..a6df0a0c69 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -122,6 +122,7 @@ import org.l2jmobius.gameserver.network.serverpackets.TargetUnselected; import org.l2jmobius.gameserver.network.serverpackets.TeleportToLocation; import org.l2jmobius.gameserver.network.serverpackets.ValidateLocationInVehicle; import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager; +import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Util; /** @@ -311,6 +312,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder { super.onSpawn(); revalidateZone(); + + // Custom boss announcements configuration. + if (this instanceof GrandBoss) + { + if (Config.GRANDBOSS_SPAWN_ANNOUNCEMENTS && ((getInstanceId() == 0) || Config.GRANDBOSS_INSTANCE_ANNOUNCEMENTS)) + { + final String name = NpcTable.getInstance().getTemplate(((Npc) this).getNpcId()).getName(); + if (name != null) + { + Broadcast.toAllOnlinePlayers(name + " has spawned!"); + Broadcast.toAllOnlinePlayersOnScreen(name + " has spawned!"); + } + } + } + else if (isRaid() && Config.RAIDBOSS_SPAWN_ANNOUNCEMENTS && ((getInstanceId() == 0) || Config.RAIDBOSS_INSTANCE_ANNOUNCEMENTS)) + { + final String name = NpcTable.getInstance().getTemplate(((Npc) this).getNpcId()).getName(); + if (name != null) + { + Broadcast.toAllOnlinePlayers(name + " has spawned!"); + Broadcast.toAllOnlinePlayersOnScreen(name + " has spawned!"); + } + } } public void onTeleported() @@ -1812,6 +1836,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder // Update active skills in progress (In Use and Not In Use because stacked) icones on client updateEffectIcons(); + // Custom boss announcements configuration. + if (this instanceof GrandBoss) + { + if (Config.GRANDBOSS_DEFEAT_ANNOUNCEMENTS && ((getInstanceId() == 0) || Config.GRANDBOSS_INSTANCE_ANNOUNCEMENTS)) + { + final String name = NpcTable.getInstance().getTemplate(((Npc) this).getNpcId()).getName(); + if (name != null) + { + Broadcast.toAllOnlinePlayers(name + " has been defeated!"); + Broadcast.toAllOnlinePlayersOnScreen(name + " has been defeated!"); + } + } + } + else if (isRaid() && Config.RAIDBOSS_DEFEAT_ANNOUNCEMENTS && ((getInstanceId() == 0) || Config.RAIDBOSS_INSTANCE_ANNOUNCEMENTS)) + { + final String name = NpcTable.getInstance().getTemplate(((Npc) this).getNpcId()).getName(); + if (name != null) + { + Broadcast.toAllOnlinePlayers(name + " has been defeated!"); + Broadcast.toAllOnlinePlayersOnScreen(name + " has been defeated!"); + } + } + return true; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java index 33b029459e..7b0a74500d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.CharInfo; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.RelationChanged; @@ -206,6 +207,11 @@ public class Broadcast toAllOnlinePlayers(new CreatureSay(0, isCritical ? ChatType.CRITICAL_ANNOUNCE : ChatType.ANNOUNCEMENT, null, text)); } + public static void toAllOnlinePlayersOnScreen(String text) + { + toAllOnlinePlayers(new ExShowScreenMessage(text, 10000)); + } + /** * Send a packet to all players in a specific zone type. * @param ZoneType. diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/custom/BossAnnouncements.ini b/L2J_Mobius_C6_Interlude/dist/game/config/custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_C6_Interlude/dist/game/config/custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_C6_Interlude/dist/game/config/custom/Other.ini b/L2J_Mobius_C6_Interlude/dist/game/config/custom/Other.ini index 33b8480ce3..000b204f2d 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/config/custom/Other.ini +++ b/L2J_Mobius_C6_Interlude/dist/game/config/custom/Other.ini @@ -15,9 +15,6 @@ OnlineOnLogin = False # File is located in data/html/welcome.htm WelcomeHtm = False -# Announce when a raidboss has spawned. -AnnounceToAllSpawnRb = False - # Announce when a player has ben banned. AnnounceTryBannedAccount = False diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java index ec7defc852..79ed7a3e0a 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Baium.java @@ -29,7 +29,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.data.SkillTable; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.geoengine.GeoEngine; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.Skill; @@ -120,10 +119,6 @@ public class Baium extends Quest { // The time has already expired while the server was offline. Delete the saved time and immediately spawn the stone-baium. Also the state need not be changed from ASLEEP. addSpawn(STONE_BAIUM, 116033, 17447, 10104, 40188, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss Baium Stone spawned in world."); - } GrandBossManager.getInstance().setBossStatus(LIVE_BAIUM, ASLEEP); } } @@ -136,10 +131,6 @@ public class Baium extends Quest final int hp = info.getInt("currentHP"); final int mp = info.getInt("currentMP"); final GrandBoss baium = (GrandBoss) addSpawn(LIVE_BAIUM, x, y, z, heading, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + baium.getName() + " spawned in world."); - } GrandBossManager.getInstance().addBoss(baium); ThreadPool.schedule(() -> { @@ -160,10 +151,6 @@ public class Baium extends Quest else { addSpawn(STONE_BAIUM, 116033, 17447, 10104, 40188, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss Baium Stone spawned in world."); - } } } @@ -174,10 +161,6 @@ public class Baium extends Quest { GrandBossManager.getInstance().setBossStatus(LIVE_BAIUM, ASLEEP); addSpawn(STONE_BAIUM, 116033, 17447, 10104, 40188, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss Baium Stone spawned in world."); - } } else if (event.equals("skill_range") && (npc != null)) { diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Core.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Core.java index e5c40db9a3..1e79df2164 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Core.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Core.java @@ -24,7 +24,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.Config; import org.l2jmobius.commons.util.Chronos; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.enums.ChatType; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; @@ -114,10 +113,6 @@ public class Core extends Quest { // The time has already expired while the server was offline. Immediately spawn Core. final GrandBoss core = (GrandBoss) addSpawn(CORE, 17726, 108915, -6480, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + core.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(CORE, ALIVE); spawnBoss(core); } @@ -129,10 +124,6 @@ public class Core extends Quest _firstAttacked = true; } final GrandBoss core = (GrandBoss) addSpawn(CORE, 17726, 108915, -6480, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + core.getName() + " spawned in world."); - } spawnBoss(core); } } @@ -165,10 +156,6 @@ public class Core extends Quest if (event.equals("core_unlock")) { final GrandBoss core = (GrandBoss) addSpawn(CORE, 17726, 108915, -6480, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + core.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(CORE, ALIVE); spawnBoss(core); } diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Orfen.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Orfen.java index 9f74b7a401..e243b43fee 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Orfen.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/Orfen.java @@ -20,7 +20,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.SkillTable; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; @@ -73,10 +72,6 @@ public class Orfen extends Quest else { _orfen = (GrandBoss) addSpawn(ORFEN, 55024, 17368, -5412, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + _orfen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(ORFEN, LIVE); GrandBossManager.getInstance().addBoss(_orfen); } @@ -87,10 +82,6 @@ public class Orfen extends Quest final int hp = info.getInt("currentHP"); final int mp = info.getInt("currentMP"); _orfen = (GrandBoss) addSpawn(ORFEN, 55024, 17368, -5412, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + _orfen.getName() + " spawned in world."); - } GrandBossManager.getInstance().addBoss(_orfen); _orfen.setCurrentHpMp(hp, mp); break; @@ -102,10 +93,6 @@ public class Orfen extends Quest final int loc_z = -5412; final int heading = 0; _orfen = (GrandBoss) addSpawn(ORFEN, loc_x, loc_y, loc_z, heading, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + _orfen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(ORFEN, LIVE); GrandBossManager.getInstance().addBoss(_orfen); break; @@ -127,10 +114,6 @@ public class Orfen extends Quest final int loc_z = -5412; final int heading = 0; _orfen = (GrandBoss) addSpawn(ORFEN, loc_x, loc_y, loc_z, heading, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + _orfen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(ORFEN, LIVE); GrandBossManager.getInstance().addBoss(_orfen); break; diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/QueenAnt.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/QueenAnt.java index dfa3a34e80..5f6ebf54f2 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/QueenAnt.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/QueenAnt.java @@ -23,7 +23,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.data.SkillTable; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.instancemanager.GrandBossManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Attackable; @@ -101,10 +100,6 @@ public class QueenAnt extends Quest else { final GrandBoss queen = (GrandBoss) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + queen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(QUEEN, LIVE); GrandBossManager.getInstance().addBoss(queen); spawnBoss(queen); @@ -116,10 +111,6 @@ public class QueenAnt extends Quest final int hp = info.getInt("currentHP"); final int mp = info.getInt("currentMP"); final GrandBoss queen = (GrandBoss) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + queen.getName() + " spawned in world."); - } GrandBossManager.getInstance().addBoss(queen); queen.setCurrentHpMp(hp, mp); spawnBoss(queen); @@ -128,10 +119,6 @@ public class QueenAnt extends Quest default: { final GrandBoss queen = (GrandBoss) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + queen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(QUEEN, LIVE); GrandBossManager.getInstance().addBoss(queen); spawnBoss(queen); @@ -165,10 +152,6 @@ public class QueenAnt extends Quest case QUEEN_SPAWN: { final GrandBoss queen = (GrandBoss) addSpawn(QUEEN, -21610, 181594, -5734, 0, false, 0); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + queen.getName() + " spawned in world."); - } GrandBossManager.getInstance().setBossStatus(QUEEN, LIVE); GrandBossManager.getInstance().addBoss(queen); spawnBoss(queen); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java index 7d07f62170..1f15e1960a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/Config.java @@ -96,6 +96,7 @@ public class Config public static final String TELNET_CONFIG_FILE = "./config/Telnet.ini"; // custom private static final String BANK_CONFIG_FILE = "./config/custom/Bank.ini"; + private static final String BOSS_ANNOUNCEMENTS_CONFIG_FILE = "./config/custom/BossAnnouncements.ini"; private static final String CANCEL_SKILL_RESTORE_BUFFS_CONFIG_FILE = "./config/custom/CancelSkillRestoreBuffs.ini"; private static final String CHAMPION_CONFIG_FILE = "./config/custom/Champion.ini"; public static final String CLASS_DAMAGE_CONFIG_FILE = "./config/custom/ClassDamage.ini"; @@ -556,6 +557,13 @@ public class Config 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 int RESTORE_CANCELLED_BUFFS_SECONDS; public static int BUFFER_MAX_SCHEMES; @@ -578,7 +586,6 @@ public class Config public static boolean ONLINE_PLAYERS_ON_LOGIN; public static boolean SUBSTUCK_SKILLS; public static boolean ALT_SERVER_NAME_ENABLED; - public static boolean ANNOUNCE_TO_ALL_SPAWN_RB; public static boolean ANNOUNCE_TRY_BANNED_ACCOUNT; public static String ALT_Server_Name; public static boolean DONATOR_NAME_COLOR_ENABLED; @@ -1767,6 +1774,17 @@ public class Config BANKING_SYSTEM_ADENA = bankConfig.getInt("BankingAdenaCount", 500000000); } + public static void loadBossAnnouncementsConfig() + { + final PropertiesParser bossAnnouncementsConfig = new PropertiesParser(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); + } + public static void loadCancelSkillRestoreBuffsConfig() { final PropertiesParser cancelSkillRestoreBuffsConfig = new PropertiesParser(CANCEL_SKILL_RESTORE_BUFFS_CONFIG_FILE); @@ -1821,7 +1839,6 @@ public class Config DONATOR_SPOIL_RATE = customServerConfig.getFloat("DonatorSpoilRate", 1.5f); WELCOME_HTM = customServerConfig.getBoolean("WelcomeHtm", false); ALT_SERVER_NAME_ENABLED = customServerConfig.getBoolean("ServerNameEnabled", false); - ANNOUNCE_TO_ALL_SPAWN_RB = customServerConfig.getBoolean("AnnounceToAllSpawnRb", false); ANNOUNCE_TRY_BANNED_ACCOUNT = customServerConfig.getBoolean("AnnounceTryBannedAccount", false); ALT_Server_Name = customServerConfig.getString("ServerName", ""); DIFFERENT_Z_CHANGE_OBJECT = customServerConfig.getInt("DifferentZchangeObject", 650); @@ -2929,6 +2946,7 @@ public class Config loadWeddingConfig(); loadRebirthConfig(); loadBankingConfig(); + loadBossAnnouncementsConfig(); loadBufferConfig(); loadPCBPointConfig(); loadOfflineConfig(); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java index ce576bac95..c93a39c08b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/instancemanager/RaidBossSpawnManager.java @@ -31,7 +31,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.util.Rnd; -import org.l2jmobius.gameserver.data.sql.AnnouncementsTable; import org.l2jmobius.gameserver.data.sql.NpcTable; import org.l2jmobius.gameserver.data.sql.SpawnTable; import org.l2jmobius.gameserver.data.xml.AdminData; @@ -155,13 +154,9 @@ public class RaidBossSpawnManager info.set("currentMP", raidboss.getCurrentMp()); info.set("respawnTime", 0); _storedInfo.put(bossId, info); + _bosses.put(bossId, raidboss); AdminData.broadcastMessageToGMs("Spawning Raid Boss " + raidboss.getName() + "."); - if (Config.ANNOUNCE_TO_ALL_SPAWN_RB) - { - AnnouncementsTable.getInstance().announceToAll("Raid boss " + raidboss.getName() + " spawned in world."); - } - _bosses.put(bossId, raidboss); } _schedules.remove(bossId); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 93c5c14325..15efed01fe 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -124,6 +124,7 @@ import org.l2jmobius.gameserver.network.serverpackets.TargetUnselected; import org.l2jmobius.gameserver.network.serverpackets.TeleportToLocation; import org.l2jmobius.gameserver.network.serverpackets.ValidateLocationInVehicle; import org.l2jmobius.gameserver.taskmanager.GameTimeTaskManager; +import org.l2jmobius.gameserver.util.Broadcast; import org.l2jmobius.gameserver.util.Util; /** @@ -313,6 +314,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder { super.onSpawn(); revalidateZone(); + + // Custom boss announcements configuration. + if (this instanceof GrandBoss) + { + if (Config.GRANDBOSS_SPAWN_ANNOUNCEMENTS && ((getInstanceId() == 0) || Config.GRANDBOSS_INSTANCE_ANNOUNCEMENTS)) + { + final String name = NpcTable.getInstance().getTemplate(((Npc) this).getNpcId()).getName(); + if (name != null) + { + Broadcast.toAllOnlinePlayers(name + " has spawned!"); + Broadcast.toAllOnlinePlayersOnScreen(name + " has spawned!"); + } + } + } + else if (isRaid() && Config.RAIDBOSS_SPAWN_ANNOUNCEMENTS && ((getInstanceId() == 0) || Config.RAIDBOSS_INSTANCE_ANNOUNCEMENTS)) + { + final String name = NpcTable.getInstance().getTemplate(((Npc) this).getNpcId()).getName(); + if (name != null) + { + Broadcast.toAllOnlinePlayers(name + " has spawned!"); + Broadcast.toAllOnlinePlayersOnScreen(name + " has spawned!"); + } + } } public void onTeleported() @@ -1855,6 +1879,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder // Update active skills in progress (In Use and Not In Use because stacked) icones on client updateEffectIcons(); + // Custom boss announcements configuration. + if (this instanceof GrandBoss) + { + if (Config.GRANDBOSS_DEFEAT_ANNOUNCEMENTS && ((getInstanceId() == 0) || Config.GRANDBOSS_INSTANCE_ANNOUNCEMENTS)) + { + final String name = NpcTable.getInstance().getTemplate(((Npc) this).getNpcId()).getName(); + if (name != null) + { + Broadcast.toAllOnlinePlayers(name + " has been defeated!"); + Broadcast.toAllOnlinePlayersOnScreen(name + " has been defeated!"); + } + } + } + else if (isRaid() && Config.RAIDBOSS_DEFEAT_ANNOUNCEMENTS && ((getInstanceId() == 0) || Config.RAIDBOSS_INSTANCE_ANNOUNCEMENTS)) + { + final String name = NpcTable.getInstance().getTemplate(((Npc) this).getNpcId()).getName(); + if (name != null) + { + Broadcast.toAllOnlinePlayers(name + " has been defeated!"); + Broadcast.toAllOnlinePlayersOnScreen(name + " has been defeated!"); + } + } + return true; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java index 33b029459e..7b0a74500d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java @@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.network.serverpackets.CharInfo; import org.l2jmobius.gameserver.network.serverpackets.CreatureSay; +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.RelationChanged; @@ -206,6 +207,11 @@ public class Broadcast toAllOnlinePlayers(new CreatureSay(0, isCritical ? ChatType.CRITICAL_ANNOUNCE : ChatType.ANNOUNCEMENT, null, text)); } + public static void toAllOnlinePlayersOnScreen(String text) + { + toAllOnlinePlayers(new ExShowScreenMessage(text, 10000)); + } + /** * Send a packet to all players in a specific zone type. * @param ZoneType. diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_CT_2.4_Epilogue/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/Config.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/Config.java index d3b52b70c7..48a23825e8 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/Config.java @@ -113,6 +113,7 @@ public class Config 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_COMMUNITY_BOARD_CONFIG_FILE = "./config/Custom/CommunityBoard.ini"; @@ -1119,6 +1120,12 @@ public class Config 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_WAREHOUSESORTING_CLAN; public static boolean ENABLE_WAREHOUSESORTING_PRIVATE; public static boolean ENABLE_NPC_STAT_MULTIPLIERS; @@ -2647,6 +2654,15 @@ public class Config 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); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java index c7c9aab217..4898569c8f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -49,6 +49,7 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.cache.RelationCache; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.xml.CategoryData; +import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.FlyType; import org.l2jmobius.gameserver.enums.InstanceType; @@ -74,6 +75,7 @@ import org.l2jmobius.gameserver.model.TimeStamp; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldRegion; +import org.l2jmobius.gameserver.model.actor.instance.GrandBoss; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.actor.instance.QuestGuard; @@ -160,6 +162,7 @@ import org.l2jmobius.gameserver.network.serverpackets.TeleportToLocation; 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; /** @@ -523,6 +526,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { super.onSpawn(); revalidateZone(true); + + // Custom boss announcements configuration. + if (this instanceof GrandBoss) + { + if (Config.GRANDBOSS_SPAWN_ANNOUNCEMENTS && ((getInstanceId() == 0) || 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 && ((getInstanceId() == 0) || 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() @@ -2477,6 +2503,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe getSkillChannelized().abortChannelization(); } + // Custom boss announcements configuration. + if (this instanceof GrandBoss) + { + if (Config.GRANDBOSS_DEFEAT_ANNOUNCEMENTS && ((getInstanceId() == 0) || 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 && ((getInstanceId() == 0) || 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; } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/Config.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/Config.java index 50fa3a822d..a8efba5ab0 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/Config.java @@ -113,6 +113,7 @@ public class Config 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_COMMUNITY_BOARD_CONFIG_FILE = "./config/Custom/CommunityBoard.ini"; @@ -1119,6 +1120,12 @@ public class Config 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_WAREHOUSESORTING_CLAN; public static boolean ENABLE_WAREHOUSESORTING_PRIVATE; public static boolean ENABLE_NPC_STAT_MULTIPLIERS; @@ -2654,6 +2661,15 @@ public class Config 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); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java index 82ead40d6c..0582bb6355 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -49,6 +49,7 @@ import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.cache.RelationCache; import org.l2jmobius.gameserver.data.ItemTable; import org.l2jmobius.gameserver.data.xml.CategoryData; +import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.FlyType; import org.l2jmobius.gameserver.enums.InstanceType; @@ -74,6 +75,7 @@ import org.l2jmobius.gameserver.model.TimeStamp; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldRegion; +import org.l2jmobius.gameserver.model.actor.instance.GrandBoss; import org.l2jmobius.gameserver.model.actor.instance.Monster; import org.l2jmobius.gameserver.model.actor.instance.Pet; import org.l2jmobius.gameserver.model.actor.instance.QuestGuard; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.TeleportToLocation; 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; /** @@ -524,6 +527,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { super.onSpawn(); revalidateZone(true); + + // Custom boss announcements configuration. + if (this instanceof GrandBoss) + { + if (Config.GRANDBOSS_SPAWN_ANNOUNCEMENTS && ((getInstanceId() == 0) || 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 && ((getInstanceId() == 0) || 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() @@ -2479,6 +2505,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe getSkillChannelized().abortChannelization(); } + // Custom boss announcements configuration. + if (this instanceof GrandBoss) + { + if (Config.GRANDBOSS_DEFEAT_ANNOUNCEMENTS && ((getInstanceId() == 0) || 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 && ((getInstanceId() == 0) || 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; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java index 680ed0b7ac..ede8ff3b1f 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1009,6 +1010,12 @@ public class Config 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; @@ -2485,6 +2492,15 @@ public class Config 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); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java index 89ba9ecc97..130c0ff4e9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java index 92659cf6e9..e67719817c 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1013,6 +1014,12 @@ public class Config 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; @@ -2491,6 +2498,15 @@ public class Config 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); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java index 89ba9ecc97..130c0ff4e9 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java index 92659cf6e9..e67719817c 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1013,6 +1014,12 @@ public class Config 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; @@ -2491,6 +2498,15 @@ public class Config 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); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2efa54a0ba..c8b6adf1a2 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java index 92659cf6e9..e67719817c 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1013,6 +1014,12 @@ public class Config 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; @@ -2491,6 +2498,15 @@ public class Config 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); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java index 005696e3e2..9ff0c2b054 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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.World; 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.network.serverpackets.UserInfo; 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1735,6 +1761,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java index c0d754cadc..16414d5a70 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java @@ -115,6 +115,7 @@ public class Config 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"; @@ -1018,6 +1019,12 @@ public class Config 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; @@ -2500,6 +2507,15 @@ public class Config 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); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java index 005696e3e2..9ff0c2b054 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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.World; 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.network.serverpackets.UserInfo; 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1735,6 +1761,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java index c4bce39129..7db3c96bbc 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1024,6 +1025,12 @@ public class Config 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; @@ -2545,6 +2552,15 @@ public class Config 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); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java index 991e259f3d..849d3a8562 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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.World; 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.network.serverpackets.UserInfo; 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1735,6 +1761,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Classic_Interlude/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Classic_Interlude/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java index 5dfae2d18c..4ff1c6d558 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java @@ -116,6 +116,7 @@ public class Config 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"; @@ -1025,6 +1026,12 @@ public class Config 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; @@ -2505,6 +2512,15 @@ public class Config 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); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 89ba9ecc97..130c0ff4e9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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; @@ -81,6 +82,7 @@ import org.l2jmobius.gameserver.model.World; 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; @@ -161,6 +163,7 @@ import org.l2jmobius.gameserver.network.serverpackets.UserInfo; 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; /** @@ -591,6 +594,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1734,6 +1760,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java index 3711307b21..35bdfa87ad 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java @@ -118,6 +118,7 @@ public class Config 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 class Config 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; @@ -2594,6 +2601,15 @@ public class Config 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); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java index 051852e92d..50e8b0b1e6 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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.World; 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.network.serverpackets.UserInfo; 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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() @@ -1738,6 +1764,29 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java index 6e7a913580..58439be94b 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java @@ -118,6 +118,7 @@ public class Config 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 class Config 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 @@ public class Config 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); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java index 6666394048..00682b5e70 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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.World; 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.network.serverpackets.UserInfo; 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java index 6e7a913580..58439be94b 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java @@ -118,6 +118,7 @@ public class Config 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 class Config 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 @@ public class Config 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); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java index a545d2e3f1..333005f4b3 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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.World; 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.network.serverpackets.UserInfo; 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/config/Custom/BossAnnouncements.ini b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/config/Custom/BossAnnouncements.ini new file mode 100644 index 0000000000..60faa671a2 --- /dev/null +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/config/Custom/BossAnnouncements.ini @@ -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 diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/Config.java index e7f293305b..c73d7be276 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/Config.java @@ -118,6 +118,7 @@ public class Config 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 class Config 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 @@ public class Config 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); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java index a545d2e3f1..333005f4b3 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.ai.CtrlEvent; 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.World; 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.network.serverpackets.UserInfo; 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe { 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 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe 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; }