Addition of exalted noble status.

This commit is contained in:
MobiusDev 2017-10-15 01:35:17 +00:00
parent 77411e1e89
commit f67b7dbd1a
70 changed files with 138 additions and 120 deletions

View File

@ -256,7 +256,7 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
} }
case "setnoble": case "setnoble":
{ {
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
htmltext = "test_server_helper025b.html"; htmltext = "test_server_helper025b.html";
} }
@ -266,7 +266,7 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
} }
else else
{ {
player.setNoble(true); player.setNoble(1);
player.broadcastUserInfo(); player.broadcastUserInfo();
// TODO: SetOneTimeQuestFlag(talker, 10385, 1); // TODO: SetOneTimeQuestFlag(talker, 10385, 1);
htmltext = "test_server_helper025.html"; htmltext = "test_server_helper025.html";

View File

@ -254,7 +254,7 @@ public final class MonumentOfHeroes extends AbstractNpcAI
@Override @Override
public String onFirstTalk(L2Npc npc, L2PcInstance player) public String onFirstTalk(L2Npc npc, L2PcInstance player)
{ {
return player.isNoble() ? "MonumentOfHeroes-noblesse.html" : "MonumentOfHeroes-noNoblesse.html"; return player.getNobleLevel() > 0 ? "MonumentOfHeroes-noblesse.html" : "MonumentOfHeroes-noNoblesse.html";
} }
private int getOlympiadRank(L2PcInstance player) private int getOlympiadRank(L2PcInstance player)

View File

@ -311,7 +311,7 @@ public final class OlyManager extends AbstractNpcAI implements IBypassHandler
if (!player.isCursedWeaponEquipped()) if (!player.isCursedWeaponEquipped())
{ {
htmltext = player.isNoble() ? "OlyManager-noble.html" : "OlyManager-noNoble.html"; htmltext = player.getNobleLevel() > 0 ? "OlyManager-noble.html" : "OlyManager-noNoble.html";
} }
else else
{ {

View File

@ -76,7 +76,7 @@ public final class FactionSystem extends AbstractNpcAI
} }
if (Config.FACTION_AUTO_NOBLESS) if (Config.FACTION_AUTO_NOBLESS)
{ {
player.setNoble(true); player.setNoble(1);
} }
player.setGood(); player.setGood();
player.getAppearance().setNameColor(Config.FACTION_GOOD_NAME_COLOR); player.getAppearance().setNameColor(Config.FACTION_GOOD_NAME_COLOR);
@ -103,7 +103,7 @@ public final class FactionSystem extends AbstractNpcAI
} }
if (Config.FACTION_AUTO_NOBLESS) if (Config.FACTION_AUTO_NOBLESS)
{ {
player.setNoble(true); player.setNoble(1);
} }
player.setEvil(); player.setEvil();
player.getAppearance().setNameColor(Config.FACTION_EVIL_NAME_COLOR); player.getAppearance().setNameColor(Config.FACTION_EVIL_NAME_COLOR);

View File

@ -860,7 +860,8 @@ public class AdminEditChar implements IAdminCommandHandler
if (player != null) if (player != null)
{ {
player.setNoble(!player.isNoble()); final int nobleLevel = player.getNobleLevel();
player.setNoble(nobleLevel == 2 ? 0 : nobleLevel + 1);
if (player.getObjectId() != activeChar.getObjectId()) if (player.getObjectId() != activeChar.getObjectId())
{ {
activeChar.sendMessage("You've changed nobless status of: " + player.getName()); activeChar.sendMessage("You've changed nobless status of: " + player.getName());
@ -1169,7 +1170,8 @@ public class AdminEditChar implements IAdminCommandHandler
adminReply.replace("%hwid%", (player.getClient() != null) && (player.getClient().getHardwareInfo() != null) ? player.getClient().getHardwareInfo().getMacAddress() : "Unknown"); adminReply.replace("%hwid%", (player.getClient() != null) && (player.getClient().getHardwareInfo() != null) ? player.getClient().getHardwareInfo().getMacAddress() : "Unknown");
adminReply.replace("%ai%", player.getAI().getIntention().name()); adminReply.replace("%ai%", player.getAI().getIntention().name());
adminReply.replace("%inst%", player.isInInstance() ? "<tr><td>InstanceId:</td><td><a action=\"bypass -h admin_instance_spawns " + player.getInstanceId() + "\">" + player.getInstanceId() + "</a></td></tr>" : ""); adminReply.replace("%inst%", player.isInInstance() ? "<tr><td>InstanceId:</td><td><a action=\"bypass -h admin_instance_spawns " + player.getInstanceId() + "\">" + player.getInstanceId() + "</a></td></tr>" : "");
adminReply.replace("%noblesse%", player.isNoble() ? "Yes" : "No"); final int nobleLevel = player.getNobleLevel();
adminReply.replace("%noblesse%", nobleLevel == 0 ? "No" : nobleLevel == 1 ? "Noble" : "Exalted");
activeChar.sendPacket(adminReply); activeChar.sendPacket(adminReply);
} }

View File

@ -111,7 +111,7 @@ public class AdminOlympiad implements IAdminCommandHandler
return false; return false;
} }
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
final StatsSet statDat = getPlayerSet(player); final StatsSet statDat = getPlayerSet(player);
final int oldpoints = Olympiad.getInstance().getNoblePoints(player); final int oldpoints = Olympiad.getInstance().getNoblePoints(player);
@ -152,7 +152,7 @@ public class AdminOlympiad implements IAdminCommandHandler
return false; return false;
} }
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
final StatsSet playerStat = Olympiad.getNobleStats(player.getObjectId()); final StatsSet playerStat = Olympiad.getNobleStats(player.getObjectId());
if (playerStat == null) if (playerStat == null)
@ -194,7 +194,7 @@ public class AdminOlympiad implements IAdminCommandHandler
return false; return false;
} }
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
final StatsSet statDat = getPlayerSet(player); final StatsSet statDat = getPlayerSet(player);
final int oldpoints = Olympiad.getInstance().getNoblePoints(player); final int oldpoints = Olympiad.getInstance().getNoblePoints(player);

View File

@ -44,7 +44,7 @@ public class OlympiadStat implements IUserCommandHandler
final int nobleObjId = activeChar.getObjectId(); final int nobleObjId = activeChar.getObjectId();
final L2Object target = activeChar.getTarget(); final L2Object target = activeChar.getTarget();
if ((target == null) || !target.isPlayer() || !target.getActingPlayer().isNoble()) if ((target == null) || !target.isPlayer() || (target.getActingPlayer().getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.THIS_COMMAND_CAN_ONLY_BE_USED_WHEN_THE_TARGET_IS_AN_AWAKENED_NOBLESSE_EXALTED); activeChar.sendPacket(SystemMessageId.THIS_COMMAND_CAN_ONLY_BE_USED_WHEN_THE_TARGET_IS_AN_AWAKENED_NOBLESSE_EXALTED);
return false; return false;

View File

@ -46,7 +46,7 @@ public class SiegeStatus implements IUserCommandHandler
return false; return false;
} }
if (!activeChar.isNoble() || !activeChar.isClanLeader()) if ((activeChar.getNobleLevel() == 0) || !activeChar.isClanLeader())
{ {
activeChar.sendPacket(SystemMessageId.ONLY_A_CLAN_LEADER_THAT_IS_A_NOBLESSE_EXALTED_CAN_VIEW_THE_SIEGE_WAR_STATUS_WINDOW_DURING_A_SIEGE_WAR); activeChar.sendPacket(SystemMessageId.ONLY_A_CLAN_LEADER_THAT_IS_A_NOBLESSE_EXALTED_CAN_VIEW_THE_SIEGE_WAR_STATUS_WINDOW_DURING_A_SIEGE_WAR);
return false; return false;

View File

@ -222,7 +222,7 @@ public class Q00551_OlympiadStarter extends Quest
final QuestState qs = getQuestState(player, true); final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player); String htmltext = getNoQuestMsg(player);
if ((player.getLevel() < 75) || !player.isNoble()) if ((player.getLevel() < 75) || (player.getNobleLevel() == 0))
{ {
htmltext = "31688-00.htm"; htmltext = "31688-00.htm";
} }
@ -235,7 +235,7 @@ public class Q00551_OlympiadStarter extends Quest
if (qs.isNowAvailable()) if (qs.isNowAvailable())
{ {
qs.setState(State.CREATED); qs.setState(State.CREATED);
htmltext = (player.getLevel() < 75) || !player.isNoble() ? "31688-00.htm" : "31688-01.htm"; htmltext = (player.getLevel() < 75) || (player.getNobleLevel() == 0) ? "31688-00.htm" : "31688-01.htm";
} }
else else
{ {

View File

@ -156,7 +156,7 @@ public class Q00553_OlympiadUndefeated extends Quest
String htmltext = getNoQuestMsg(player); String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true); final QuestState qs = getQuestState(player, true);
if ((player.getLevel() < 75) || !player.isNoble()) if ((player.getLevel() < 75) || (player.getNobleLevel() == 0))
{ {
htmltext = "31688-00.htm"; htmltext = "31688-00.htm";
} }
@ -169,7 +169,7 @@ public class Q00553_OlympiadUndefeated extends Quest
if (qs.isNowAvailable()) if (qs.isNowAvailable())
{ {
qs.setState(State.CREATED); qs.setState(State.CREATED);
htmltext = (player.getLevel() < 75) || !player.isNoble() ? "31688-00.htm" : "31688-01.htm"; htmltext = (player.getLevel() < 75) || (player.getNobleLevel() == 0) ? "31688-00.htm" : "31688-01.htm";
} }
else else
{ {

View File

@ -361,7 +361,7 @@ public final class Q10369_NoblesseSoulTesting extends Quest
{ {
player.doCast(NOBLESSE_PRESENTATION.getSkill()); player.doCast(NOBLESSE_PRESENTATION.getSkill());
showOnScreenMsg(player, NpcStringId.CONGRATULATIONS_YOU_ARE_NOW_A_NOBLESSE, ExShowScreenMessage.TOP_CENTER, 5000); showOnScreenMsg(player, NpcStringId.CONGRATULATIONS_YOU_ARE_NOW_A_NOBLESSE, ExShowScreenMessage.TOP_CENTER, 5000);
player.setNoble(true); player.setNoble(1);
player.broadcastUserInfo(); player.broadcastUserInfo();
giveItems(player, DIMENSIONAL_DIAMOND, 10); giveItems(player, DIMENSIONAL_DIAMOND, 10);
giveItems(player, NOBLESSE_TIARA, 1); giveItems(player, NOBLESSE_TIARA, 1);

View File

@ -98,7 +98,7 @@ public final class Q10461_TappingThePowerWithin extends Quest
{ {
case State.CREATED: case State.CREATED:
{ {
if (((player.getLevel() >= MIN_LEVEL) && player.isNoble())) if (((player.getLevel() >= MIN_LEVEL) && (player.getNobleLevel() > 0)))
{ {
htmltext = "33907-01.htm"; htmltext = "33907-01.htm";
break; break;

View File

@ -119,7 +119,7 @@ public final class Q10811_ExaltedOneWhoFacesTheLimit extends Quest
{ {
case State.CREATED: case State.CREATED:
{ {
htmltext = (player.getLevel() >= MIN_LEVEL) && player.isNoble() ? "33383-01.htm" : "33383-07.htm"; htmltext = (player.getLevel() >= MIN_LEVEL) && (player.getNobleLevel() > 0) ? "33383-01.htm" : "33383-07.htm";
break; break;
} }
case State.STARTED: case State.STARTED:

View File

@ -97,6 +97,12 @@ public final class Q10827_StepUpToLead extends Quest
} }
giveItems(player, GUSTAV_CERTIFICATE, 1); giveItems(player, GUSTAV_CERTIFICATE, 1);
giveItems(player, SPELLBOOK_FAVOR_OF_THE_EXALTED, 1); giveItems(player, SPELLBOOK_FAVOR_OF_THE_EXALTED, 1);
// Give Exalted status here?
// https://l2wiki.com/Noblesse
player.setNoble(2);
player.broadcastUserInfo();
qs.exitQuest(false, true); qs.exitQuest(false, true);
} }
else else

View File

@ -64,7 +64,7 @@ public final class SiegeManager
public final void addSiegeSkills(L2PcInstance character) public final void addSiegeSkills(L2PcInstance character)
{ {
for (Skill sk : SkillData.getInstance().getSiegeSkills(character.isNoble(), character.getClan().getCastleId() > 0)) for (Skill sk : SkillData.getInstance().getSiegeSkills(character.getNobleLevel() > 0, character.getClan().getCastleId() > 0))
{ {
character.addSkill(sk, false); character.addSkill(sk, false);
} }
@ -110,7 +110,7 @@ public final class SiegeManager
public final void removeSiegeSkills(L2PcInstance character) public final void removeSiegeSkills(L2PcInstance character)
{ {
for (Skill sk : SkillData.getInstance().getSiegeSkills(character.isNoble(), character.getClan().getCastleId() > 0)) for (Skill sk : SkillData.getInstance().getSiegeSkills(character.getNobleLevel() > 0, character.getClan().getCastleId() > 0))
{ {
character.removeSkill(sk); character.removeSkill(sk);
} }

View File

@ -486,7 +486,7 @@ public class L2Clan implements IIdentifiable, INamable
if (exMember.isOnline()) if (exMember.isOnline())
{ {
final L2PcInstance player = exMember.getPlayerInstance(); final L2PcInstance player = exMember.getPlayerInstance();
if (!player.isNoble()) if (player.getNobleLevel() == 0)
{ {
player.setTitle(""); player.setTitle("");
} }

View File

@ -801,7 +801,7 @@ public class L2ClanMember
} }
} }
if (player.isNoble() && (pledgeClass < 5)) if ((player.getNobleLevel() > 0) && (pledgeClass < 5))
{ {
pledgeClass = 5; pledgeClass = 5;
} }

View File

@ -406,7 +406,7 @@ public class L2Attackable extends L2Npc
p.increaseRaidbossPoints(points); p.increaseRaidbossPoints(points);
p.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_RAID_POINT_S).addInt(points)); p.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_RAID_POINT_S).addInt(points));
if (p.isNoble()) if (p.getNobleLevel() > 0)
{ {
Hero.getInstance().setRBkilled(p.getObjectId(), getId()); Hero.getInstance().setRBkilled(p.getObjectId(), getId());
} }
@ -417,7 +417,7 @@ public class L2Attackable extends L2Npc
final int points = Math.max(raidbossPoints, 1); final int points = Math.max(raidbossPoints, 1);
player.increaseRaidbossPoints(points); player.increaseRaidbossPoints(points);
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_RAID_POINT_S).addInt(points)); player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_RAID_POINT_S).addInt(points));
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
Hero.getInstance().setRBkilled(player.getObjectId(), getId()); Hero.getInstance().setRBkilled(player.getObjectId(), getId());
} }

View File

@ -750,7 +750,7 @@ public class L2Npc extends L2Character
{ {
case 31688: case 31688:
{ {
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
filename = Olympiad.OLYMPIAD_HTML_PATH + "noble_main.htm"; filename = Olympiad.OLYMPIAD_HTML_PATH + "noble_main.htm";
} }
@ -766,7 +766,7 @@ public class L2Npc extends L2Character
case 31771: case 31771:
case 31772: case 31772:
{ {
if (player.isHero() || player.isNoble()) if (player.isHero() || (player.getNobleLevel() > 0))
{ {
filename = Olympiad.OLYMPIAD_HTML_PATH + "hero_main.htm"; filename = Olympiad.OLYMPIAD_HTML_PATH + "hero_main.htm";
} }

View File

@ -562,7 +562,7 @@ public final class L2PcInstance extends L2Playable
// Multisell // Multisell
private PreparedListContainer _currentMultiSell = null; private PreparedListContainer _currentMultiSell = null;
private boolean _noble = false; private int _nobleLevel = 0;
private boolean _hero = false; private boolean _hero = false;
private boolean _trueHero = false; private boolean _trueHero = false;
@ -2555,9 +2555,9 @@ public final class L2PcInstance extends L2Playable
// Do not call this on enterworld or char load // Do not call this on enterworld or char load
// Add noble skills if noble // Add noble skills if noble
if (isNoble()) if (_nobleLevel > 0)
{ {
setNoble(true); setNoble(_nobleLevel);
} }
// Add Hero skills if hero // Add Hero skills if hero
@ -6514,7 +6514,7 @@ public final class L2PcInstance extends L2Playable
statement.setInt(30, getClanPrivileges().getBitmask()); statement.setInt(30, getClanPrivileges().getBitmask());
statement.setInt(31, getWantsPeace()); statement.setInt(31, getWantsPeace());
statement.setInt(32, getBaseClass()); statement.setInt(32, getBaseClass());
statement.setInt(33, isNoble() ? 1 : 0); statement.setInt(33, _nobleLevel);
statement.setLong(34, 0); statement.setLong(34, 0);
statement.setInt(35, PcStat.MIN_VITALITY_POINTS); statement.setInt(35, PcStat.MIN_VITALITY_POINTS);
statement.setDate(36, new Date(getCreateDate().getTimeInMillis())); statement.setDate(36, new Date(getCreateDate().getTimeInMillis()));
@ -6576,7 +6576,8 @@ public final class L2PcInstance extends L2Playable
player.setPvpKills(rset.getInt("pvpkills")); player.setPvpKills(rset.getInt("pvpkills"));
player.setPkKills(rset.getInt("pkkills")); player.setPkKills(rset.getInt("pkkills"));
player.setOnlineTime(rset.getLong("onlinetime")); player.setOnlineTime(rset.getLong("onlinetime"));
player.setNoble(rset.getInt("nobless") == 1); final int nobleLevel = rset.getInt("nobless");
player.setNoble(nobleLevel);
final int factionId = rset.getInt("faction"); final int factionId = rset.getInt("faction");
if (factionId == 1) if (factionId == 1)
@ -6634,7 +6635,7 @@ public final class L2PcInstance extends L2Playable
} }
else else
{ {
if (player.isNoble()) if (nobleLevel > 0)
{ {
player.setPledgeClass(5); player.setPledgeClass(5);
} }
@ -7162,7 +7163,7 @@ public final class L2PcInstance extends L2Playable
} }
statement.setLong(34, totalOnlineTime); statement.setLong(34, totalOnlineTime);
statement.setInt(35, isNoble() ? 1 : 0); statement.setInt(35, _nobleLevel);
statement.setInt(36, getPowerGrade()); statement.setInt(36, getPowerGrade());
statement.setInt(37, getPledgeType()); statement.setInt(37, getPledgeType());
statement.setInt(38, getLvlJoinedAcademy()); statement.setInt(38, getLvlJoinedAcademy());
@ -8454,7 +8455,7 @@ public final class L2PcInstance extends L2Playable
} }
case STRIDER: // Strider case STRIDER: // Strider
{ {
if (isNoble()) if (_nobleLevel > 0)
{ {
addSkill(CommonSkill.STRIDER_SIEGE_ASSAULT.getSkill(), false); addSkill(CommonSkill.STRIDER_SIEGE_ASSAULT.getSkill(), false);
} }
@ -9318,15 +9319,15 @@ public final class L2PcInstance extends L2Playable
return true; return true;
} }
public boolean isNoble() public int getNobleLevel()
{ {
return _noble; return _nobleLevel;
} }
public void setNoble(boolean val) public void setNoble(int level)
{ {
final Collection<Skill> nobleSkillTree = SkillTreesData.getInstance().getNobleSkillTree().values(); final Collection<Skill> nobleSkillTree = SkillTreesData.getInstance().getNobleSkillTree().values();
if (val) if (level != 0)
{ {
for (Skill skill : nobleSkillTree) for (Skill skill : nobleSkillTree)
{ {
@ -9341,10 +9342,10 @@ public final class L2PcInstance extends L2Playable
} }
} }
_noble = val; _nobleLevel = level;
sendSkillList(); sendSkillList();
if (val && (getLevel() >= 99)) if ((level != 0) && (getLevel() >= 99))
{ {
sendPacket(new ExAcquireAPSkillList(this)); sendPacket(new ExAcquireAPSkillList(this));
} }

View File

@ -80,7 +80,7 @@ public final class L2TeleporterInstance extends L2Npc
case "showNoblesSelect": case "showNoblesSelect":
{ {
final NpcHtmlMessage msg = new NpcHtmlMessage(getObjectId()); final NpcHtmlMessage msg = new NpcHtmlMessage(getObjectId());
msg.setFile(player.getHtmlPrefix(), "data/html/teleporter/" + (player.isNoble() ? "nobles_select" : "not_nobles") + ".htm"); msg.setFile(player.getHtmlPrefix(), "data/html/teleporter/" + (player.getNobleLevel() > 0 ? "nobles_select" : "not_nobles") + ".htm");
msg.replace("%objectId%", getObjectId()); msg.replace("%objectId%", getObjectId());
player.sendPacket(msg); player.sendPacket(msg);
break; break;
@ -88,7 +88,7 @@ public final class L2TeleporterInstance extends L2Npc
case "showTeleports": case "showTeleports":
{ {
final TeleportType type = parseTeleportType(st); final TeleportType type = parseTeleportType(st);
if (((type == TeleportType.NOBLES_TOKEN) || (type == TeleportType.NOBLES_ADENA)) && !player.isNoble()) if (((type == TeleportType.NOBLES_TOKEN) || (type == TeleportType.NOBLES_ADENA)) && (player.getNobleLevel() == 0))
{ {
_log.warning(player + " attempted to use nobles teleport without being nobles!"); _log.warning(player + " attempted to use nobles teleport without being nobles!");
break; break;
@ -148,7 +148,7 @@ public final class L2TeleporterInstance extends L2Npc
} }
final TeleportType type = TeleportType.values()[typeId]; final TeleportType type = TeleportType.values()[typeId];
if (((type == TeleportType.NOBLES_TOKEN) || (type == TeleportType.NOBLES_ADENA)) && !player.isNoble()) if (((type == TeleportType.NOBLES_TOKEN) || (type == TeleportType.NOBLES_ADENA)) && (player.getNobleLevel() == 0))
{ {
_log.warning(player + " attempted to use nobles teleport without being nobles!"); _log.warning(player + " attempted to use nobles teleport without being nobles!");
break; break;
@ -481,7 +481,7 @@ public final class L2TeleporterInstance extends L2Npc
player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD); player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD);
return; return;
} }
else if (list.getIsForNoble() && !player.isNoble()) else if (list.getIsForNoble() && (player.getNobleLevel() == 0))
{ {
final String filename = "data/html/teleporter/nobleteleporter-no.htm"; final String filename = "data/html/teleporter/nobleteleporter-no.htm";
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());

View File

@ -294,7 +294,7 @@ public class PcStat extends PlayableStat
// Send acquirable skill list // Send acquirable skill list
getActiveChar().sendPacket(new AcquireSkillList(getActiveChar())); getActiveChar().sendPacket(new AcquireSkillList(getActiveChar()));
getActiveChar().sendPacket(new ExVoteSystemInfo(getActiveChar())); getActiveChar().sendPacket(new ExVoteSystemInfo(getActiveChar()));
if ((getLevel() >= 99) && getActiveChar().isNoble()) if ((getLevel() >= 99) && (getActiveChar().getNobleLevel() > 0))
{ {
getActiveChar().sendPacket(new ExAcquireAPSkillList(getActiveChar())); getActiveChar().sendPacket(new ExAcquireAPSkillList(getActiveChar()));
} }

View File

@ -271,7 +271,7 @@ public class Siege implements Siegable
if (member != null) if (member != null)
{ {
final L2PcInstance player = member.getPlayerInstance(); final L2PcInstance player = member.getPlayerInstance();
if ((player != null) && player.isNoble()) if ((player != null) && (player.getNobleLevel() > 0))
{ {
Hero.getInstance().setCastleTaken(player.getObjectId(), getCastle().getResidenceId()); Hero.getInstance().setCastleTaken(player.getObjectId(), getCastle().getResidenceId());
} }

View File

@ -269,7 +269,7 @@ public class OlympiadManager
return false; return false;
} }
if (!noble.isNoble()) if (noble.getNobleLevel() == 0)
{ {
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_DOES_NOT_MEET_THE_PARTICIPATION_REQUIREMENTS_ONLY_NOBLESSE_EXALTED_CHARACTERS_CAN_PARTICIPATE_IN_THE_OLYMPIAD); final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_DOES_NOT_MEET_THE_PARTICIPATION_REQUIREMENTS_ONLY_NOBLESSE_EXALTED_CHARACTERS_CAN_PARTICIPATE_IN_THE_OLYMPIAD);
sm.addString(noble.getName()); sm.addString(noble.getName());

View File

@ -46,7 +46,7 @@ public class RequestGiveNickName implements IClientIncomingPacket
} }
// Noblesse can bestow a title to themselves // Noblesse can bestow a title to themselves
if (activeChar.isNoble() && _target.equalsIgnoreCase(activeChar.getName())) if ((activeChar.getNobleLevel() > 0) && _target.equalsIgnoreCase(activeChar.getName()))
{ {
activeChar.setTitle(_title); activeChar.setTitle(_title);
client.sendPacket(SystemMessageId.YOUR_TITLE_HAS_BEEN_CHANGED); client.sendPacket(SystemMessageId.YOUR_TITLE_HAS_BEEN_CHANGED);

View File

@ -48,7 +48,7 @@ public class RequestAbilityList implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -44,7 +44,7 @@ public class RequestAbilityWndClose implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -44,7 +44,7 @@ public class RequestAbilityWndOpen implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -90,7 +90,7 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -54,7 +54,7 @@ public class RequestChangeAbilityPoint implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -58,7 +58,7 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket
{ {
return; return;
} }
else if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) else if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
client.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); client.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -201,7 +201,7 @@ public class CharInfo implements IClientOutgoingPacket
packet.writeC(_activeChar.getTeam().getId()); // Confirmed packet.writeC(_activeChar.getTeam().getId()); // Confirmed
packet.writeD(_activeChar.getClanCrestLargeId()); packet.writeD(_activeChar.getClanCrestLargeId());
packet.writeC(_activeChar.isNoble() ? 1 : 0); // Confirmed packet.writeC(_activeChar.getNobleLevel()); // Confirmed
packet.writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Confirmed packet.writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Confirmed
packet.writeC(_activeChar.isFishing() ? 1 : 0); // Confirmed packet.writeC(_activeChar.isFishing() ? 1 : 0); // Confirmed

View File

@ -154,7 +154,7 @@ public class GMViewCharacterInfo implements IClientOutgoingPacket
packet.writeD(_activeChar.getPledgeClass()); // changes the text above CP on Status Window packet.writeD(_activeChar.getPledgeClass()); // changes the text above CP on Status Window
packet.writeC(_activeChar.isNoble() ? 0x01 : 0x00); packet.writeC(_activeChar.getNobleLevel());
packet.writeC(_activeChar.isHero() ? 0x01 : 0x00); packet.writeC(_activeChar.isHero() ? 0x01 : 0x00);
packet.writeD(_activeChar.getAppearance().getNameColor()); packet.writeD(_activeChar.getAppearance().getNameColor());

View File

@ -303,7 +303,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
packet.writeH(22); packet.writeH(22);
packet.writeC(_activeChar.getPvpFlag()); packet.writeC(_activeChar.getPvpFlag());
packet.writeD(_activeChar.getReputation()); // Reputation packet.writeD(_activeChar.getReputation()); // Reputation
packet.writeC(_activeChar.isNoble() ? 0x01 : 0x00); packet.writeC(_activeChar.getNobleLevel());
packet.writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); packet.writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0);
packet.writeC(_activeChar.getPledgeClass()); packet.writeC(_activeChar.getPledgeClass());
packet.writeD(_activeChar.getPkKills()); packet.writeD(_activeChar.getPkKills());

View File

@ -55,7 +55,7 @@ public class ExAcquireAPSkillList implements IClientOutgoingPacket
} }
} }
} }
_enable = (!activeChar.isSubClassActive() || activeChar.isDualClassActive()) && (activeChar.getLevel() >= 99) && activeChar.isNoble(); _enable = (!activeChar.isSubClassActive() || activeChar.isDualClassActive()) && (activeChar.getLevel() >= 99) && (activeChar.getNobleLevel() > 0);
} }
@Override @Override

View File

@ -256,7 +256,7 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
} }
case "setnoble": case "setnoble":
{ {
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
htmltext = "test_server_helper025b.html"; htmltext = "test_server_helper025b.html";
} }
@ -266,7 +266,7 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
} }
else else
{ {
player.setNoble(true); player.setNoble(1);
player.broadcastUserInfo(); player.broadcastUserInfo();
// TODO: SetOneTimeQuestFlag(talker, 10385, 1); // TODO: SetOneTimeQuestFlag(talker, 10385, 1);
htmltext = "test_server_helper025.html"; htmltext = "test_server_helper025.html";

View File

@ -254,7 +254,7 @@ public final class MonumentOfHeroes extends AbstractNpcAI
@Override @Override
public String onFirstTalk(L2Npc npc, L2PcInstance player) public String onFirstTalk(L2Npc npc, L2PcInstance player)
{ {
return player.isNoble() ? "MonumentOfHeroes-noblesse.html" : "MonumentOfHeroes-noNoblesse.html"; return player.getNobleLevel() > 0 ? "MonumentOfHeroes-noblesse.html" : "MonumentOfHeroes-noNoblesse.html";
} }
private int getOlympiadRank(L2PcInstance player) private int getOlympiadRank(L2PcInstance player)

View File

@ -311,7 +311,7 @@ public final class OlyManager extends AbstractNpcAI implements IBypassHandler
if (!player.isCursedWeaponEquipped()) if (!player.isCursedWeaponEquipped())
{ {
htmltext = player.isNoble() ? "OlyManager-noble.html" : "OlyManager-noNoble.html"; htmltext = player.getNobleLevel() > 0 ? "OlyManager-noble.html" : "OlyManager-noNoble.html";
} }
else else
{ {

View File

@ -76,7 +76,7 @@ public final class FactionSystem extends AbstractNpcAI
} }
if (Config.FACTION_AUTO_NOBLESS) if (Config.FACTION_AUTO_NOBLESS)
{ {
player.setNoble(true); player.setNoble(1);
} }
player.setGood(); player.setGood();
player.getAppearance().setNameColor(Config.FACTION_GOOD_NAME_COLOR); player.getAppearance().setNameColor(Config.FACTION_GOOD_NAME_COLOR);
@ -103,7 +103,7 @@ public final class FactionSystem extends AbstractNpcAI
} }
if (Config.FACTION_AUTO_NOBLESS) if (Config.FACTION_AUTO_NOBLESS)
{ {
player.setNoble(true); player.setNoble(1);
} }
player.setEvil(); player.setEvil();
player.getAppearance().setNameColor(Config.FACTION_EVIL_NAME_COLOR); player.getAppearance().setNameColor(Config.FACTION_EVIL_NAME_COLOR);

View File

@ -860,7 +860,8 @@ public class AdminEditChar implements IAdminCommandHandler
if (player != null) if (player != null)
{ {
player.setNoble(!player.isNoble()); final int nobleLevel = player.getNobleLevel();
player.setNoble(nobleLevel == 2 ? 0 : nobleLevel + 1);
if (player.getObjectId() != activeChar.getObjectId()) if (player.getObjectId() != activeChar.getObjectId())
{ {
activeChar.sendMessage("You've changed nobless status of: " + player.getName()); activeChar.sendMessage("You've changed nobless status of: " + player.getName());
@ -1169,7 +1170,8 @@ public class AdminEditChar implements IAdminCommandHandler
adminReply.replace("%hwid%", (player.getClient() != null) && (player.getClient().getHardwareInfo() != null) ? player.getClient().getHardwareInfo().getMacAddress() : "Unknown"); adminReply.replace("%hwid%", (player.getClient() != null) && (player.getClient().getHardwareInfo() != null) ? player.getClient().getHardwareInfo().getMacAddress() : "Unknown");
adminReply.replace("%ai%", player.getAI().getIntention().name()); adminReply.replace("%ai%", player.getAI().getIntention().name());
adminReply.replace("%inst%", player.isInInstance() ? "<tr><td>InstanceId:</td><td><a action=\"bypass -h admin_instance_spawns " + player.getInstanceId() + "\">" + player.getInstanceId() + "</a></td></tr>" : ""); adminReply.replace("%inst%", player.isInInstance() ? "<tr><td>InstanceId:</td><td><a action=\"bypass -h admin_instance_spawns " + player.getInstanceId() + "\">" + player.getInstanceId() + "</a></td></tr>" : "");
adminReply.replace("%noblesse%", player.isNoble() ? "Yes" : "No"); final int nobleLevel = player.getNobleLevel();
adminReply.replace("%noblesse%", nobleLevel == 0 ? "No" : nobleLevel == 1 ? "Noble" : "Exalted");
activeChar.sendPacket(adminReply); activeChar.sendPacket(adminReply);
} }

View File

@ -111,7 +111,7 @@ public class AdminOlympiad implements IAdminCommandHandler
return false; return false;
} }
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
final StatsSet statDat = getPlayerSet(player); final StatsSet statDat = getPlayerSet(player);
final int oldpoints = Olympiad.getInstance().getNoblePoints(player); final int oldpoints = Olympiad.getInstance().getNoblePoints(player);
@ -152,7 +152,7 @@ public class AdminOlympiad implements IAdminCommandHandler
return false; return false;
} }
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
final StatsSet playerStat = Olympiad.getNobleStats(player.getObjectId()); final StatsSet playerStat = Olympiad.getNobleStats(player.getObjectId());
if (playerStat == null) if (playerStat == null)
@ -194,7 +194,7 @@ public class AdminOlympiad implements IAdminCommandHandler
return false; return false;
} }
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
final StatsSet statDat = getPlayerSet(player); final StatsSet statDat = getPlayerSet(player);
final int oldpoints = Olympiad.getInstance().getNoblePoints(player); final int oldpoints = Olympiad.getInstance().getNoblePoints(player);

View File

@ -44,7 +44,7 @@ public class OlympiadStat implements IUserCommandHandler
final int nobleObjId = activeChar.getObjectId(); final int nobleObjId = activeChar.getObjectId();
final L2Object target = activeChar.getTarget(); final L2Object target = activeChar.getTarget();
if ((target == null) || !target.isPlayer() || !target.getActingPlayer().isNoble()) if ((target == null) || !target.isPlayer() || (target.getActingPlayer().getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.THIS_COMMAND_CAN_ONLY_BE_USED_WHEN_THE_TARGET_IS_AN_AWAKENED_NOBLESSE_EXALTED); activeChar.sendPacket(SystemMessageId.THIS_COMMAND_CAN_ONLY_BE_USED_WHEN_THE_TARGET_IS_AN_AWAKENED_NOBLESSE_EXALTED);
return false; return false;

View File

@ -46,7 +46,7 @@ public class SiegeStatus implements IUserCommandHandler
return false; return false;
} }
if (!activeChar.isNoble() || !activeChar.isClanLeader()) if ((activeChar.getNobleLevel() == 0) || !activeChar.isClanLeader())
{ {
activeChar.sendPacket(SystemMessageId.ONLY_A_CLAN_LEADER_THAT_IS_A_NOBLESSE_EXALTED_CAN_VIEW_THE_SIEGE_WAR_STATUS_WINDOW_DURING_A_SIEGE_WAR); activeChar.sendPacket(SystemMessageId.ONLY_A_CLAN_LEADER_THAT_IS_A_NOBLESSE_EXALTED_CAN_VIEW_THE_SIEGE_WAR_STATUS_WINDOW_DURING_A_SIEGE_WAR);
return false; return false;

View File

@ -222,7 +222,7 @@ public class Q00551_OlympiadStarter extends Quest
final QuestState qs = getQuestState(player, true); final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player); String htmltext = getNoQuestMsg(player);
if ((player.getLevel() < 75) || !player.isNoble()) if ((player.getLevel() < 75) || (player.getNobleLevel() == 0))
{ {
htmltext = "31688-00.htm"; htmltext = "31688-00.htm";
} }
@ -235,7 +235,7 @@ public class Q00551_OlympiadStarter extends Quest
if (qs.isNowAvailable()) if (qs.isNowAvailable())
{ {
qs.setState(State.CREATED); qs.setState(State.CREATED);
htmltext = (player.getLevel() < 75) || !player.isNoble() ? "31688-00.htm" : "31688-01.htm"; htmltext = (player.getLevel() < 75) || (player.getNobleLevel() == 0) ? "31688-00.htm" : "31688-01.htm";
} }
else else
{ {

View File

@ -156,7 +156,7 @@ public class Q00553_OlympiadUndefeated extends Quest
String htmltext = getNoQuestMsg(player); String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true); final QuestState qs = getQuestState(player, true);
if ((player.getLevel() < 75) || !player.isNoble()) if ((player.getLevel() < 75) || (player.getNobleLevel() == 0))
{ {
htmltext = "31688-00.htm"; htmltext = "31688-00.htm";
} }
@ -169,7 +169,7 @@ public class Q00553_OlympiadUndefeated extends Quest
if (qs.isNowAvailable()) if (qs.isNowAvailable())
{ {
qs.setState(State.CREATED); qs.setState(State.CREATED);
htmltext = (player.getLevel() < 75) || !player.isNoble() ? "31688-00.htm" : "31688-01.htm"; htmltext = (player.getLevel() < 75) || (player.getNobleLevel() == 0) ? "31688-00.htm" : "31688-01.htm";
} }
else else
{ {

View File

@ -361,7 +361,7 @@ public final class Q10369_NoblesseSoulTesting extends Quest
{ {
player.doCast(NOBLESSE_PRESENTATION.getSkill()); player.doCast(NOBLESSE_PRESENTATION.getSkill());
showOnScreenMsg(player, NpcStringId.CONGRATULATIONS_YOU_ARE_NOW_A_NOBLESSE, ExShowScreenMessage.TOP_CENTER, 5000); showOnScreenMsg(player, NpcStringId.CONGRATULATIONS_YOU_ARE_NOW_A_NOBLESSE, ExShowScreenMessage.TOP_CENTER, 5000);
player.setNoble(true); player.setNoble(1);
player.broadcastUserInfo(); player.broadcastUserInfo();
giveItems(player, DIMENSIONAL_DIAMOND, 10); giveItems(player, DIMENSIONAL_DIAMOND, 10);
giveItems(player, NOBLESSE_TIARA, 1); giveItems(player, NOBLESSE_TIARA, 1);

View File

@ -98,7 +98,7 @@ public final class Q10461_TappingThePowerWithin extends Quest
{ {
case State.CREATED: case State.CREATED:
{ {
if (((player.getLevel() >= MIN_LEVEL) && player.isNoble())) if (((player.getLevel() >= MIN_LEVEL) && (player.getNobleLevel() > 0)))
{ {
htmltext = "33907-01.htm"; htmltext = "33907-01.htm";
break; break;

View File

@ -119,7 +119,7 @@ public final class Q10811_ExaltedOneWhoFacesTheLimit extends Quest
{ {
case State.CREATED: case State.CREATED:
{ {
htmltext = (player.getLevel() >= MIN_LEVEL) && player.isNoble() ? "33383-01.htm" : "33383-07.htm"; htmltext = (player.getLevel() >= MIN_LEVEL) && (player.getNobleLevel() > 0) ? "33383-01.htm" : "33383-07.htm";
break; break;
} }
case State.STARTED: case State.STARTED:

View File

@ -97,6 +97,12 @@ public final class Q10827_StepUpToLead extends Quest
} }
giveItems(player, GUSTAV_CERTIFICATE, 1); giveItems(player, GUSTAV_CERTIFICATE, 1);
giveItems(player, SPELLBOOK_FAVOR_OF_THE_EXALTED, 1); giveItems(player, SPELLBOOK_FAVOR_OF_THE_EXALTED, 1);
// Give Exalted status here?
// https://l2wiki.com/Noblesse
player.setNoble(2);
player.broadcastUserInfo();
qs.exitQuest(false, true); qs.exitQuest(false, true);
} }
else else

View File

@ -64,7 +64,7 @@ public final class SiegeManager
public final void addSiegeSkills(L2PcInstance character) public final void addSiegeSkills(L2PcInstance character)
{ {
for (Skill sk : SkillData.getInstance().getSiegeSkills(character.isNoble(), character.getClan().getCastleId() > 0)) for (Skill sk : SkillData.getInstance().getSiegeSkills(character.getNobleLevel() > 0, character.getClan().getCastleId() > 0))
{ {
character.addSkill(sk, false); character.addSkill(sk, false);
} }
@ -110,7 +110,7 @@ public final class SiegeManager
public final void removeSiegeSkills(L2PcInstance character) public final void removeSiegeSkills(L2PcInstance character)
{ {
for (Skill sk : SkillData.getInstance().getSiegeSkills(character.isNoble(), character.getClan().getCastleId() > 0)) for (Skill sk : SkillData.getInstance().getSiegeSkills(character.getNobleLevel() > 0, character.getClan().getCastleId() > 0))
{ {
character.removeSkill(sk); character.removeSkill(sk);
} }

View File

@ -486,7 +486,7 @@ public class L2Clan implements IIdentifiable, INamable
if (exMember.isOnline()) if (exMember.isOnline())
{ {
final L2PcInstance player = exMember.getPlayerInstance(); final L2PcInstance player = exMember.getPlayerInstance();
if (!player.isNoble()) if (player.getNobleLevel() == 0)
{ {
player.setTitle(""); player.setTitle("");
} }

View File

@ -801,7 +801,7 @@ public class L2ClanMember
} }
} }
if (player.isNoble() && (pledgeClass < 5)) if ((player.getNobleLevel() > 0) && (pledgeClass < 5))
{ {
pledgeClass = 5; pledgeClass = 5;
} }

View File

@ -406,7 +406,7 @@ public class L2Attackable extends L2Npc
p.increaseRaidbossPoints(points); p.increaseRaidbossPoints(points);
p.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_RAID_POINT_S).addInt(points)); p.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_RAID_POINT_S).addInt(points));
if (p.isNoble()) if (p.getNobleLevel() > 0)
{ {
Hero.getInstance().setRBkilled(p.getObjectId(), getId()); Hero.getInstance().setRBkilled(p.getObjectId(), getId());
} }
@ -417,7 +417,7 @@ public class L2Attackable extends L2Npc
final int points = Math.max(raidbossPoints, 1); final int points = Math.max(raidbossPoints, 1);
player.increaseRaidbossPoints(points); player.increaseRaidbossPoints(points);
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_RAID_POINT_S).addInt(points)); player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_EARNED_S1_RAID_POINT_S).addInt(points));
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
Hero.getInstance().setRBkilled(player.getObjectId(), getId()); Hero.getInstance().setRBkilled(player.getObjectId(), getId());
} }

View File

@ -750,7 +750,7 @@ public class L2Npc extends L2Character
{ {
case 31688: case 31688:
{ {
if (player.isNoble()) if (player.getNobleLevel() > 0)
{ {
filename = Olympiad.OLYMPIAD_HTML_PATH + "noble_main.htm"; filename = Olympiad.OLYMPIAD_HTML_PATH + "noble_main.htm";
} }
@ -766,7 +766,7 @@ public class L2Npc extends L2Character
case 31771: case 31771:
case 31772: case 31772:
{ {
if (player.isHero() || player.isNoble()) if (player.isHero() || (player.getNobleLevel() > 0))
{ {
filename = Olympiad.OLYMPIAD_HTML_PATH + "hero_main.htm"; filename = Olympiad.OLYMPIAD_HTML_PATH + "hero_main.htm";
} }

View File

@ -564,7 +564,7 @@ public final class L2PcInstance extends L2Playable
// Multisell // Multisell
private PreparedListContainer _currentMultiSell = null; private PreparedListContainer _currentMultiSell = null;
private boolean _noble = false; private int _nobleLevel = 0;
private boolean _hero = false; private boolean _hero = false;
private boolean _trueHero = false; private boolean _trueHero = false;
@ -2557,9 +2557,9 @@ public final class L2PcInstance extends L2Playable
// Do not call this on enterworld or char load // Do not call this on enterworld or char load
// Add noble skills if noble // Add noble skills if noble
if (isNoble()) if (_nobleLevel > 0)
{ {
setNoble(true); setNoble(_nobleLevel);
} }
// Add Hero skills if hero // Add Hero skills if hero
@ -6516,7 +6516,7 @@ public final class L2PcInstance extends L2Playable
statement.setInt(30, getClanPrivileges().getBitmask()); statement.setInt(30, getClanPrivileges().getBitmask());
statement.setInt(31, getWantsPeace()); statement.setInt(31, getWantsPeace());
statement.setInt(32, getBaseClass()); statement.setInt(32, getBaseClass());
statement.setInt(33, isNoble() ? 1 : 0); statement.setInt(33, _nobleLevel);
statement.setLong(34, 0); statement.setLong(34, 0);
statement.setInt(35, PcStat.MIN_VITALITY_POINTS); statement.setInt(35, PcStat.MIN_VITALITY_POINTS);
statement.setDate(36, new Date(getCreateDate().getTimeInMillis())); statement.setDate(36, new Date(getCreateDate().getTimeInMillis()));
@ -6578,7 +6578,8 @@ public final class L2PcInstance extends L2Playable
player.setPvpKills(rset.getInt("pvpkills")); player.setPvpKills(rset.getInt("pvpkills"));
player.setPkKills(rset.getInt("pkkills")); player.setPkKills(rset.getInt("pkkills"));
player.setOnlineTime(rset.getLong("onlinetime")); player.setOnlineTime(rset.getLong("onlinetime"));
player.setNoble(rset.getInt("nobless") == 1); final int nobleLevel = rset.getInt("nobless");
player.setNoble(nobleLevel);
final int factionId = rset.getInt("faction"); final int factionId = rset.getInt("faction");
if (factionId == 1) if (factionId == 1)
@ -6636,7 +6637,7 @@ public final class L2PcInstance extends L2Playable
} }
else else
{ {
if (player.isNoble()) if (nobleLevel > 0)
{ {
player.setPledgeClass(5); player.setPledgeClass(5);
} }
@ -7164,7 +7165,7 @@ public final class L2PcInstance extends L2Playable
} }
statement.setLong(34, totalOnlineTime); statement.setLong(34, totalOnlineTime);
statement.setInt(35, isNoble() ? 1 : 0); statement.setInt(35, _nobleLevel);
statement.setInt(36, getPowerGrade()); statement.setInt(36, getPowerGrade());
statement.setInt(37, getPledgeType()); statement.setInt(37, getPledgeType());
statement.setInt(38, getLvlJoinedAcademy()); statement.setInt(38, getLvlJoinedAcademy());
@ -8456,7 +8457,7 @@ public final class L2PcInstance extends L2Playable
} }
case STRIDER: // Strider case STRIDER: // Strider
{ {
if (isNoble()) if (_nobleLevel > 0)
{ {
addSkill(CommonSkill.STRIDER_SIEGE_ASSAULT.getSkill(), false); addSkill(CommonSkill.STRIDER_SIEGE_ASSAULT.getSkill(), false);
} }
@ -9328,15 +9329,15 @@ public final class L2PcInstance extends L2Playable
return true; return true;
} }
public boolean isNoble() public int getNobleLevel()
{ {
return _noble; return _nobleLevel;
} }
public void setNoble(boolean val) public void setNoble(int level)
{ {
final Collection<Skill> nobleSkillTree = SkillTreesData.getInstance().getNobleSkillTree().values(); final Collection<Skill> nobleSkillTree = SkillTreesData.getInstance().getNobleSkillTree().values();
if (val) if (level != 0)
{ {
for (Skill skill : nobleSkillTree) for (Skill skill : nobleSkillTree)
{ {
@ -9351,10 +9352,10 @@ public final class L2PcInstance extends L2Playable
} }
} }
_noble = val; _nobleLevel = level;
sendSkillList(); sendSkillList();
if (val && (getLevel() >= 99)) if ((level != 0) && (getLevel() >= 99))
{ {
sendPacket(new ExAcquireAPSkillList(this)); sendPacket(new ExAcquireAPSkillList(this));
} }

View File

@ -80,7 +80,7 @@ public final class L2TeleporterInstance extends L2Npc
case "showNoblesSelect": case "showNoblesSelect":
{ {
final NpcHtmlMessage msg = new NpcHtmlMessage(getObjectId()); final NpcHtmlMessage msg = new NpcHtmlMessage(getObjectId());
msg.setFile(player.getHtmlPrefix(), "data/html/teleporter/" + (player.isNoble() ? "nobles_select" : "not_nobles") + ".htm"); msg.setFile(player.getHtmlPrefix(), "data/html/teleporter/" + (player.getNobleLevel() > 0 ? "nobles_select" : "not_nobles") + ".htm");
msg.replace("%objectId%", getObjectId()); msg.replace("%objectId%", getObjectId());
player.sendPacket(msg); player.sendPacket(msg);
break; break;
@ -88,7 +88,7 @@ public final class L2TeleporterInstance extends L2Npc
case "showTeleports": case "showTeleports":
{ {
final TeleportType type = parseTeleportType(st); final TeleportType type = parseTeleportType(st);
if (((type == TeleportType.NOBLES_TOKEN) || (type == TeleportType.NOBLES_ADENA)) && !player.isNoble()) if (((type == TeleportType.NOBLES_TOKEN) || (type == TeleportType.NOBLES_ADENA)) && (player.getNobleLevel() == 0))
{ {
_log.warning(player + " attempted to use nobles teleport without being nobles!"); _log.warning(player + " attempted to use nobles teleport without being nobles!");
break; break;
@ -148,7 +148,7 @@ public final class L2TeleporterInstance extends L2Npc
} }
final TeleportType type = TeleportType.values()[typeId]; final TeleportType type = TeleportType.values()[typeId];
if (((type == TeleportType.NOBLES_TOKEN) || (type == TeleportType.NOBLES_ADENA)) && !player.isNoble()) if (((type == TeleportType.NOBLES_TOKEN) || (type == TeleportType.NOBLES_ADENA)) && (player.getNobleLevel() == 0))
{ {
_log.warning(player + " attempted to use nobles teleport without being nobles!"); _log.warning(player + " attempted to use nobles teleport without being nobles!");
break; break;
@ -481,7 +481,7 @@ public final class L2TeleporterInstance extends L2Npc
player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD); player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD);
return; return;
} }
else if (list.getIsForNoble() && !player.isNoble()) else if (list.getIsForNoble() && (player.getNobleLevel() == 0))
{ {
final String filename = "data/html/teleporter/nobleteleporter-no.htm"; final String filename = "data/html/teleporter/nobleteleporter-no.htm";
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());

View File

@ -294,7 +294,7 @@ public class PcStat extends PlayableStat
// Send acquirable skill list // Send acquirable skill list
getActiveChar().sendPacket(new AcquireSkillList(getActiveChar())); getActiveChar().sendPacket(new AcquireSkillList(getActiveChar()));
getActiveChar().sendPacket(new ExVoteSystemInfo(getActiveChar())); getActiveChar().sendPacket(new ExVoteSystemInfo(getActiveChar()));
if ((getLevel() >= 99) && getActiveChar().isNoble()) if ((getLevel() >= 99) && (getActiveChar().getNobleLevel() > 0))
{ {
getActiveChar().sendPacket(new ExAcquireAPSkillList(getActiveChar())); getActiveChar().sendPacket(new ExAcquireAPSkillList(getActiveChar()));
} }

View File

@ -271,7 +271,7 @@ public class Siege implements Siegable
if (member != null) if (member != null)
{ {
final L2PcInstance player = member.getPlayerInstance(); final L2PcInstance player = member.getPlayerInstance();
if ((player != null) && player.isNoble()) if ((player != null) && (player.getNobleLevel() > 0))
{ {
Hero.getInstance().setCastleTaken(player.getObjectId(), getCastle().getResidenceId()); Hero.getInstance().setCastleTaken(player.getObjectId(), getCastle().getResidenceId());
} }

View File

@ -269,7 +269,7 @@ public class OlympiadManager
return false; return false;
} }
if (!noble.isNoble()) if (noble.getNobleLevel() == 0)
{ {
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_DOES_NOT_MEET_THE_PARTICIPATION_REQUIREMENTS_ONLY_NOBLESSE_EXALTED_CHARACTERS_CAN_PARTICIPATE_IN_THE_OLYMPIAD); final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_DOES_NOT_MEET_THE_PARTICIPATION_REQUIREMENTS_ONLY_NOBLESSE_EXALTED_CHARACTERS_CAN_PARTICIPATE_IN_THE_OLYMPIAD);
sm.addString(noble.getName()); sm.addString(noble.getName());

View File

@ -46,7 +46,7 @@ public class RequestGiveNickName implements IClientIncomingPacket
} }
// Noblesse can bestow a title to themselves // Noblesse can bestow a title to themselves
if (activeChar.isNoble() && _target.equalsIgnoreCase(activeChar.getName())) if ((activeChar.getNobleLevel() > 0) && _target.equalsIgnoreCase(activeChar.getName()))
{ {
activeChar.setTitle(_title); activeChar.setTitle(_title);
client.sendPacket(SystemMessageId.YOUR_TITLE_HAS_BEEN_CHANGED); client.sendPacket(SystemMessageId.YOUR_TITLE_HAS_BEEN_CHANGED);

View File

@ -48,7 +48,7 @@ public class RequestAbilityList implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -44,7 +44,7 @@ public class RequestAbilityWndClose implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -44,7 +44,7 @@ public class RequestAbilityWndOpen implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -90,7 +90,7 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -54,7 +54,7 @@ public class RequestChangeAbilityPoint implements IClientIncomingPacket
return; return;
} }
if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); activeChar.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -58,7 +58,7 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket
{ {
return; return;
} }
else if ((activeChar.getLevel() < 99) || !activeChar.isNoble()) else if ((activeChar.getLevel() < 99) || (activeChar.getNobleLevel() == 0))
{ {
client.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE); client.sendPacket(SystemMessageId.ABILITIES_CAN_BE_USED_BY_NOBLESSE_EXALTED_LV_99_OR_ABOVE);
return; return;

View File

@ -201,7 +201,7 @@ public class CharInfo implements IClientOutgoingPacket
packet.writeC(_activeChar.getTeam().getId()); // Confirmed packet.writeC(_activeChar.getTeam().getId()); // Confirmed
packet.writeD(_activeChar.getClanCrestLargeId()); packet.writeD(_activeChar.getClanCrestLargeId());
packet.writeC(_activeChar.isNoble() ? 1 : 0); // Confirmed packet.writeC(_activeChar.getNobleLevel()); // Confirmed
packet.writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Confirmed packet.writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Confirmed
packet.writeC(_activeChar.isFishing() ? 1 : 0); // Confirmed packet.writeC(_activeChar.isFishing() ? 1 : 0); // Confirmed

View File

@ -154,7 +154,7 @@ public class GMViewCharacterInfo implements IClientOutgoingPacket
packet.writeD(_activeChar.getPledgeClass()); // changes the text above CP on Status Window packet.writeD(_activeChar.getPledgeClass()); // changes the text above CP on Status Window
packet.writeC(_activeChar.isNoble() ? 0x01 : 0x00); packet.writeC(_activeChar.getNobleLevel());
packet.writeC(_activeChar.isHero() ? 0x01 : 0x00); packet.writeC(_activeChar.isHero() ? 0x01 : 0x00);
packet.writeD(_activeChar.getAppearance().getNameColor()); packet.writeD(_activeChar.getAppearance().getNameColor());

View File

@ -303,7 +303,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
packet.writeH(22); packet.writeH(22);
packet.writeC(_activeChar.getPvpFlag()); packet.writeC(_activeChar.getPvpFlag());
packet.writeD(_activeChar.getReputation()); // Reputation packet.writeD(_activeChar.getReputation()); // Reputation
packet.writeC(_activeChar.isNoble() ? 0x01 : 0x00); packet.writeC(_activeChar.getNobleLevel());
packet.writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); packet.writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0);
packet.writeC(_activeChar.getPledgeClass()); packet.writeC(_activeChar.getPledgeClass());
packet.writeD(_activeChar.getPkKills()); packet.writeD(_activeChar.getPkKills());

View File

@ -55,7 +55,7 @@ public class ExAcquireAPSkillList implements IClientOutgoingPacket
} }
} }
} }
_enable = (!activeChar.isSubClassActive() || activeChar.isDualClassActive()) && (activeChar.getLevel() >= 99) && activeChar.isNoble(); _enable = (!activeChar.isSubClassActive() || activeChar.isDualClassActive()) && (activeChar.getLevel() >= 99) && (activeChar.getNobleLevel() > 0);
} }
@Override @Override