From 50f5ab07511e8ed69ef7e4f54e0c6a3996d56b70 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 9 May 2015 15:46:25 +0000 Subject: [PATCH] Fixed NPC level and champion titles. --- trunk/dist/game/config/Custom.properties | 3 +++ trunk/java/com/l2jserver/Config.java | 2 ++ .../gameserver/model/actor/L2Attackable.java | 5 +++++ .../gameserver/model/actor/L2Character.java | 13 +++++++++++++ .../gameserver/network/serverpackets/NpcInfo.java | 11 ++++++++--- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/trunk/dist/game/config/Custom.properties b/trunk/dist/game/config/Custom.properties index 5f0ab91c18..8275cef580 100644 --- a/trunk/dist/game/config/Custom.properties +++ b/trunk/dist/game/config/Custom.properties @@ -20,6 +20,9 @@ ChampionFrequency = 5 # Title of all Champion Mobs. ChampionTitle = Champion +# Red aura for Champion Mobs. +ChampionAura = True + # Min and max levels allowed for a mob to be a Champion mob. ChampionMinLevel = 20 ChampionMaxLevel = 70 diff --git a/trunk/java/com/l2jserver/Config.java b/trunk/java/com/l2jserver/Config.java index cb02492f04..138da56936 100644 --- a/trunk/java/com/l2jserver/Config.java +++ b/trunk/java/com/l2jserver/Config.java @@ -697,6 +697,7 @@ public final class Config public static boolean L2JMOD_CHAMPION_PASSIVE; public static int L2JMOD_CHAMPION_FREQUENCY; public static String L2JMOD_CHAMP_TITLE; + public static boolean L2JMOD_SHOW_CHAMPION_AURA; public static int L2JMOD_CHAMP_MIN_LVL; public static int L2JMOD_CHAMP_MAX_LVL; public static int L2JMOD_CHAMPION_HP; @@ -2220,6 +2221,7 @@ public final class Config L2JMOD_CHAMPION_PASSIVE = CustomSettings.getBoolean("ChampionPassive", false); L2JMOD_CHAMPION_FREQUENCY = CustomSettings.getInt("ChampionFrequency", 0); L2JMOD_CHAMP_TITLE = CustomSettings.getString("ChampionTitle", "Champion"); + L2JMOD_SHOW_CHAMPION_AURA = CustomSettings.getBoolean("ChampionAura", true); L2JMOD_CHAMP_MIN_LVL = CustomSettings.getInt("ChampionMinLevel", 20); L2JMOD_CHAMP_MAX_LVL = CustomSettings.getInt("ChampionMaxLevel", 60); L2JMOD_CHAMPION_HP = CustomSettings.getInt("ChampionHp", 7); diff --git a/trunk/java/com/l2jserver/gameserver/model/actor/L2Attackable.java b/trunk/java/com/l2jserver/gameserver/model/actor/L2Attackable.java index 5cda5c74a2..19219bbc44 100644 --- a/trunk/java/com/l2jserver/gameserver/model/actor/L2Attackable.java +++ b/trunk/java/com/l2jserver/gameserver/model/actor/L2Attackable.java @@ -41,6 +41,7 @@ import com.l2jserver.gameserver.datatables.EventDroplist.DateDrop; import com.l2jserver.gameserver.datatables.ItemTable; import com.l2jserver.gameserver.enums.ChatType; import com.l2jserver.gameserver.enums.InstanceType; +import com.l2jserver.gameserver.enums.Team; import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager; import com.l2jserver.gameserver.instancemanager.PcCafePointsManager; import com.l2jserver.gameserver.instancemanager.WalkingManager; @@ -1707,6 +1708,10 @@ public class L2Attackable extends L2Npc public void setChampion(boolean champ) { _champion = champ; + if (champ) + { + setTeam(Team.RED); + } } @Override diff --git a/trunk/java/com/l2jserver/gameserver/model/actor/L2Character.java b/trunk/java/com/l2jserver/gameserver/model/actor/L2Character.java index 87b8d70ff4..c615a7c9cf 100644 --- a/trunk/java/com/l2jserver/gameserver/model/actor/L2Character.java +++ b/trunk/java/com/l2jserver/gameserver/model/actor/L2Character.java @@ -3140,6 +3140,19 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe */ public final String getTitle() { + if (isChampion()) + { + return Config.L2JMOD_CHAMP_TITLE; + } + if (Config.SHOW_NPC_LVL && isMonster()) + { + String t = "Lv " + getLevel(); + if (_title != null) + { + t += " " + _title; + } + return t; + } return _title != null ? _title : ""; } diff --git a/trunk/java/com/l2jserver/gameserver/network/serverpackets/NpcInfo.java b/trunk/java/com/l2jserver/gameserver/network/serverpackets/NpcInfo.java index 57478cdc14..c4d01c9be0 100644 --- a/trunk/java/com/l2jserver/gameserver/network/serverpackets/NpcInfo.java +++ b/trunk/java/com/l2jserver/gameserver/network/serverpackets/NpcInfo.java @@ -67,7 +67,7 @@ public class NpcInfo extends AbstractMaskPacket _masks[2] |= 0x10; } - addComponentType(NpcInfoType.ATTACKABLE, NpcInfoType.UNKNOWN1, NpcInfoType.TITLE, NpcInfoType.ID, NpcInfoType.POSITION, NpcInfoType.ALIVE, NpcInfoType.RUNNING); + addComponentType(NpcInfoType.ATTACKABLE, NpcInfoType.UNKNOWN1, NpcInfoType.ID, NpcInfoType.POSITION, NpcInfoType.ALIVE, NpcInfoType.RUNNING); if (npc.getHeading() > 0) { @@ -89,7 +89,7 @@ public class NpcInfo extends AbstractMaskPacket addComponentType(NpcInfoType.EQUIPPED); } - if (npc.getTeam() != Team.NONE) + if ((npc.getTeam() != Team.NONE) || (Config.L2JMOD_SHOW_CHAMPION_AURA && npc.isChampion())) { addComponentType(NpcInfoType.TEAM); } @@ -129,11 +129,16 @@ public class NpcInfo extends AbstractMaskPacket addComponentType(NpcInfoType.CURRENT_MP); } - if (npc.getTemplate().getDisplayId() != npc.getTemplate().getId()) + if (npc.getTemplate().isUsingServerSideName()) { addComponentType(NpcInfoType.NAME); } + if (npc.getTemplate().isUsingServerSideTitle() || (Config.SHOW_NPC_LVL && npc.isMonster()) || npc.isChampion()) + { + addComponentType(NpcInfoType.TITLE); + } + if (!_abnormalVisualEffects.isEmpty()) { addComponentType(NpcInfoType.ABNORMALS);