Addition of boss announcements configuration.

This commit is contained in:
MobiusDevelopment
2022-03-18 23:56:59 +00:00
parent 0b7138a36e
commit 49d468dcd4
95 changed files with 2341 additions and 151 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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))
{

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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);

View File

@@ -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();

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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 <T> ZoneType.