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

View File

@ -254,7 +254,7 @@ public final class MonumentOfHeroes extends AbstractNpcAI
@Override
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)

View File

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

View File

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

View File

@ -860,7 +860,8 @@ public class AdminEditChar implements IAdminCommandHandler
if (player != null)
{
player.setNoble(!player.isNoble());
final int nobleLevel = player.getNobleLevel();
player.setNoble(nobleLevel == 2 ? 0 : nobleLevel + 1);
if (player.getObjectId() != activeChar.getObjectId())
{
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("%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("%noblesse%", player.isNoble() ? "Yes" : "No");
final int nobleLevel = player.getNobleLevel();
adminReply.replace("%noblesse%", nobleLevel == 0 ? "No" : nobleLevel == 1 ? "Noble" : "Exalted");
activeChar.sendPacket(adminReply);
}

View File

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

View File

@ -46,7 +46,7 @@ public class SiegeStatus implements IUserCommandHandler
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);
return false;

View File

@ -222,7 +222,7 @@ public class Q00551_OlympiadStarter extends Quest
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if ((player.getLevel() < 75) || !player.isNoble())
if ((player.getLevel() < 75) || (player.getNobleLevel() == 0))
{
htmltext = "31688-00.htm";
}
@ -235,7 +235,7 @@ public class Q00551_OlympiadStarter extends Quest
if (qs.isNowAvailable())
{
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
{

View File

@ -156,7 +156,7 @@ public class Q00553_OlympiadUndefeated extends Quest
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if ((player.getLevel() < 75) || !player.isNoble())
if ((player.getLevel() < 75) || (player.getNobleLevel() == 0))
{
htmltext = "31688-00.htm";
}
@ -169,7 +169,7 @@ public class Q00553_OlympiadUndefeated extends Quest
if (qs.isNowAvailable())
{
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
{

View File

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

View File

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

View File

@ -119,7 +119,7 @@ public final class Q10811_ExaltedOneWhoFacesTheLimit extends Quest
{
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;
}
case State.STARTED:

View File

@ -97,6 +97,12 @@ public final class Q10827_StepUpToLead extends Quest
}
giveItems(player, GUSTAV_CERTIFICATE, 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);
}
else

View File

@ -64,7 +64,7 @@ public final class SiegeManager
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);
}
@ -110,7 +110,7 @@ public final class SiegeManager
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);
}

View File

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

View File

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

View File

@ -406,7 +406,7 @@ public class L2Attackable extends L2Npc
p.increaseRaidbossPoints(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());
}
@ -417,7 +417,7 @@ public class L2Attackable extends L2Npc
final int points = Math.max(raidbossPoints, 1);
player.increaseRaidbossPoints(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());
}

View File

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

View File

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

View File

@ -80,7 +80,7 @@ public final class L2TeleporterInstance extends L2Npc
case "showNoblesSelect":
{
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());
player.sendPacket(msg);
break;
@ -88,7 +88,7 @@ public final class L2TeleporterInstance extends L2Npc
case "showTeleports":
{
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!");
break;
@ -148,7 +148,7 @@ public final class L2TeleporterInstance extends L2Npc
}
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!");
break;
@ -481,7 +481,7 @@ public final class L2TeleporterInstance extends L2Npc
player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD);
return;
}
else if (list.getIsForNoble() && !player.isNoble())
else if (list.getIsForNoble() && (player.getNobleLevel() == 0))
{
final String filename = "data/html/teleporter/nobleteleporter-no.htm";
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());

View File

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

View File

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

View File

@ -269,7 +269,7 @@ public class OlympiadManager
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);
sm.addString(noble.getName());

View File

@ -46,7 +46,7 @@ public class RequestGiveNickName implements IClientIncomingPacket
}
// 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);
client.sendPacket(SystemMessageId.YOUR_TITLE_HAS_BEEN_CHANGED);

View File

@ -48,7 +48,7 @@ public class RequestAbilityList implements IClientIncomingPacket
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);
return;

View File

@ -44,7 +44,7 @@ public class RequestAbilityWndClose implements IClientIncomingPacket
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);
return;

View File

@ -44,7 +44,7 @@ public class RequestAbilityWndOpen implements IClientIncomingPacket
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);
return;

View File

@ -90,7 +90,7 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket
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);
return;

View File

@ -54,7 +54,7 @@ public class RequestChangeAbilityPoint implements IClientIncomingPacket
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);
return;

View File

@ -58,7 +58,7 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket
{
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);
return;

View File

@ -201,7 +201,7 @@ public class CharInfo implements IClientOutgoingPacket
packet.writeC(_activeChar.getTeam().getId()); // Confirmed
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.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.writeC(_activeChar.isNoble() ? 0x01 : 0x00);
packet.writeC(_activeChar.getNobleLevel());
packet.writeC(_activeChar.isHero() ? 0x01 : 0x00);
packet.writeD(_activeChar.getAppearance().getNameColor());

View File

@ -303,7 +303,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
packet.writeH(22);
packet.writeC(_activeChar.getPvpFlag());
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.getPledgeClass());
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

View File

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

View File

@ -254,7 +254,7 @@ public final class MonumentOfHeroes extends AbstractNpcAI
@Override
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)

View File

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

View File

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

View File

@ -860,7 +860,8 @@ public class AdminEditChar implements IAdminCommandHandler
if (player != null)
{
player.setNoble(!player.isNoble());
final int nobleLevel = player.getNobleLevel();
player.setNoble(nobleLevel == 2 ? 0 : nobleLevel + 1);
if (player.getObjectId() != activeChar.getObjectId())
{
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("%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("%noblesse%", player.isNoble() ? "Yes" : "No");
final int nobleLevel = player.getNobleLevel();
adminReply.replace("%noblesse%", nobleLevel == 0 ? "No" : nobleLevel == 1 ? "Noble" : "Exalted");
activeChar.sendPacket(adminReply);
}

View File

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

View File

@ -46,7 +46,7 @@ public class SiegeStatus implements IUserCommandHandler
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);
return false;

View File

@ -222,7 +222,7 @@ public class Q00551_OlympiadStarter extends Quest
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if ((player.getLevel() < 75) || !player.isNoble())
if ((player.getLevel() < 75) || (player.getNobleLevel() == 0))
{
htmltext = "31688-00.htm";
}
@ -235,7 +235,7 @@ public class Q00551_OlympiadStarter extends Quest
if (qs.isNowAvailable())
{
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
{

View File

@ -156,7 +156,7 @@ public class Q00553_OlympiadUndefeated extends Quest
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, true);
if ((player.getLevel() < 75) || !player.isNoble())
if ((player.getLevel() < 75) || (player.getNobleLevel() == 0))
{
htmltext = "31688-00.htm";
}
@ -169,7 +169,7 @@ public class Q00553_OlympiadUndefeated extends Quest
if (qs.isNowAvailable())
{
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
{

View File

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

View File

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

View File

@ -119,7 +119,7 @@ public final class Q10811_ExaltedOneWhoFacesTheLimit extends Quest
{
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;
}
case State.STARTED:

View File

@ -97,6 +97,12 @@ public final class Q10827_StepUpToLead extends Quest
}
giveItems(player, GUSTAV_CERTIFICATE, 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);
}
else

View File

@ -64,7 +64,7 @@ public final class SiegeManager
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);
}
@ -110,7 +110,7 @@ public final class SiegeManager
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);
}

View File

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

View File

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

View File

@ -406,7 +406,7 @@ public class L2Attackable extends L2Npc
p.increaseRaidbossPoints(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());
}
@ -417,7 +417,7 @@ public class L2Attackable extends L2Npc
final int points = Math.max(raidbossPoints, 1);
player.increaseRaidbossPoints(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());
}

View File

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

View File

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

View File

@ -80,7 +80,7 @@ public final class L2TeleporterInstance extends L2Npc
case "showNoblesSelect":
{
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());
player.sendPacket(msg);
break;
@ -88,7 +88,7 @@ public final class L2TeleporterInstance extends L2Npc
case "showTeleports":
{
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!");
break;
@ -148,7 +148,7 @@ public final class L2TeleporterInstance extends L2Npc
}
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!");
break;
@ -481,7 +481,7 @@ public final class L2TeleporterInstance extends L2Npc
player.sendPacket(SystemMessageId.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD);
return;
}
else if (list.getIsForNoble() && !player.isNoble())
else if (list.getIsForNoble() && (player.getNobleLevel() == 0))
{
final String filename = "data/html/teleporter/nobleteleporter-no.htm";
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());

View File

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

View File

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

View File

@ -269,7 +269,7 @@ public class OlympiadManager
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);
sm.addString(noble.getName());

View File

@ -46,7 +46,7 @@ public class RequestGiveNickName implements IClientIncomingPacket
}
// 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);
client.sendPacket(SystemMessageId.YOUR_TITLE_HAS_BEEN_CHANGED);

View File

@ -48,7 +48,7 @@ public class RequestAbilityList implements IClientIncomingPacket
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);
return;

View File

@ -44,7 +44,7 @@ public class RequestAbilityWndClose implements IClientIncomingPacket
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);
return;

View File

@ -44,7 +44,7 @@ public class RequestAbilityWndOpen implements IClientIncomingPacket
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);
return;

View File

@ -90,7 +90,7 @@ public class RequestAcquireAbilityList implements IClientIncomingPacket
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);
return;

View File

@ -54,7 +54,7 @@ public class RequestChangeAbilityPoint implements IClientIncomingPacket
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);
return;

View File

@ -58,7 +58,7 @@ public class RequestResetAbilityPoint implements IClientIncomingPacket
{
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);
return;

View File

@ -201,7 +201,7 @@ public class CharInfo implements IClientOutgoingPacket
packet.writeC(_activeChar.getTeam().getId()); // Confirmed
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.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.writeC(_activeChar.isNoble() ? 0x01 : 0x00);
packet.writeC(_activeChar.getNobleLevel());
packet.writeC(_activeChar.isHero() ? 0x01 : 0x00);
packet.writeD(_activeChar.getAppearance().getNameColor());

View File

@ -303,7 +303,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
packet.writeH(22);
packet.writeC(_activeChar.getPvpFlag());
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.getPledgeClass());
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