|
@@ -16,6 +16,7 @@ package com.l2jserver.gameserver.model;
|
|
|
|
|
|
import java.sql.Connection;
|
|
|
import java.sql.PreparedStatement;
|
|
|
+import java.sql.ResultSet;
|
|
|
import java.sql.SQLException;
|
|
|
import java.util.logging.Level;
|
|
|
import java.util.logging.Logger;
|
|
@@ -25,13 +26,13 @@ import com.l2jserver.gameserver.instancemanager.SiegeManager;
|
|
|
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
|
|
|
|
|
/**
|
|
|
- * Clan member class.
|
|
|
+ * This class holds the clan members data.
|
|
|
*/
|
|
|
public class L2ClanMember
|
|
|
{
|
|
|
private static final Logger _log = Logger.getLogger(L2ClanMember.class.getName());
|
|
|
|
|
|
- private L2Clan _clan;
|
|
|
+ private final L2Clan _clan;
|
|
|
private int _objectId;
|
|
|
private String _name;
|
|
|
private String _title;
|
|
@@ -45,28 +46,43 @@ public class L2ClanMember
|
|
|
private int _apprentice;
|
|
|
private int _sponsor;
|
|
|
|
|
|
-
|
|
|
- public L2ClanMember(L2Clan clan, String name, int level, int classId, int objectId, int pledgeType, int powerGrade, String title, boolean sex, int raceOrdinal)
|
|
|
+ /**
|
|
|
+ * Used to restore a clan member from the database.
|
|
|
+ * @param clan the clan where the clan member belongs.
|
|
|
+ * @param clanMember the clan member result set
|
|
|
+ * @throws SQLException if the columnLabel is not valid or a database error occurs
|
|
|
+ */
|
|
|
+ public L2ClanMember(L2Clan clan, ResultSet clanMember) throws SQLException
|
|
|
{
|
|
|
- if(clan == null)
|
|
|
- throw new IllegalArgumentException("Can not create a ClanMember with a null clan.");
|
|
|
+ if (clan == null)
|
|
|
+ {
|
|
|
+ throw new IllegalArgumentException("Cannot create a Clan Member with a null clan.");
|
|
|
+ }
|
|
|
_clan = clan;
|
|
|
- _name = name;
|
|
|
- _level = level;
|
|
|
- _classId = classId;
|
|
|
- _objectId = objectId;
|
|
|
- _powerGrade = powerGrade;
|
|
|
- _title = title;
|
|
|
- _pledgeType = pledgeType;
|
|
|
- _apprentice = 0;
|
|
|
- _sponsor = 0;
|
|
|
- _sex = sex;
|
|
|
- _raceOrdinal = raceOrdinal;
|
|
|
-
|
|
|
+ _name = clanMember.getString("char_name");
|
|
|
+ _level = clanMember.getInt("level");
|
|
|
+ _classId = clanMember.getInt("classid");
|
|
|
+ _objectId = clanMember.getInt("charId");
|
|
|
+ _pledgeType = clanMember.getInt("subpledge");
|
|
|
+ _title = clanMember.getString("title");
|
|
|
+ _powerGrade = clanMember.getInt("power_grade");
|
|
|
+ _apprentice = clanMember.getInt("apprentice");
|
|
|
+ _sponsor = clanMember.getInt("sponsor");
|
|
|
+ _sex = clanMember.getInt("sex") != 0;
|
|
|
+ _raceOrdinal = clanMember.getInt("race");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Creates a clan member from a player instance.
|
|
|
+ * @param clan the clan where the player belongs
|
|
|
+ * @param player the player from which the clan member will be created
|
|
|
+ */
|
|
|
public L2ClanMember(L2Clan clan, L2PcInstance player)
|
|
|
{
|
|
|
+ if (player.getClan() == null)
|
|
|
+ {
|
|
|
+ throw new IllegalArgumentException("Cannot create a Clan Member if player has a null clan.");
|
|
|
+ }
|
|
|
_clan = clan;
|
|
|
_name = player.getName();
|
|
|
_level = player.getLevel();
|
|
@@ -75,35 +91,19 @@ public class L2ClanMember
|
|
|
_pledgeType = player.getPledgeType();
|
|
|
_powerGrade = player.getPowerGrade();
|
|
|
_title = player.getTitle();
|
|
|
- _sponsor = 0;
|
|
|
+ _sponsor = 0;
|
|
|
_apprentice = 0;
|
|
|
_sex = player.getAppearance().getSex();
|
|
|
_raceOrdinal = player.getRace().ordinal();
|
|
|
}
|
|
|
|
|
|
- public L2ClanMember(L2PcInstance player)
|
|
|
- {
|
|
|
- if(player.getClan() == null)
|
|
|
- throw new IllegalArgumentException("Can not create a ClanMember if player has a null clan.");
|
|
|
- _clan = player.getClan();
|
|
|
- _player = player;
|
|
|
- _name = _player.getName();
|
|
|
- _level = _player.getLevel();
|
|
|
- _classId = _player.getClassId().getId();
|
|
|
- _objectId = _player.getObjectId();
|
|
|
- _powerGrade = _player.getPowerGrade();
|
|
|
- _pledgeType = _player.getPledgeType();
|
|
|
- _title = _player.getTitle();
|
|
|
- _apprentice = 0;
|
|
|
- _sponsor = 0;
|
|
|
- _sex = _player.getAppearance().getSex();
|
|
|
- _raceOrdinal = _player.getRace().ordinal();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ /**
|
|
|
+ * Sets the player instance.
|
|
|
+ * @param player the new player instance
|
|
|
+ */
|
|
|
public void setPlayerInstance(L2PcInstance player)
|
|
|
{
|
|
|
- if (player == null && _player != null)
|
|
|
+ if ((player == null) && (_player != null))
|
|
|
{
|
|
|
// this is here to keep the data when the player logs off
|
|
|
_name = _player.getName();
|
|
@@ -122,34 +122,51 @@ public class L2ClanMember
|
|
|
if (player != null)
|
|
|
{
|
|
|
_clan.addSkillEffects(player);
|
|
|
- if (_clan.getLevel() > 3 && player.isClanLeader())
|
|
|
+ if ((_clan.getLevel() > 3) && player.isClanLeader())
|
|
|
+ {
|
|
|
SiegeManager.getInstance().addSiegeSkills(player);
|
|
|
+ }
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
_clan.setLeader(this);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
_player = player;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the player instance.
|
|
|
+ * @return the player instance
|
|
|
+ */
|
|
|
public L2PcInstance getPlayerInstance()
|
|
|
{
|
|
|
return _player;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Checks if is online.
|
|
|
+ * @return true, if is online
|
|
|
+ */
|
|
|
public boolean isOnline()
|
|
|
{
|
|
|
- if (_player == null || !_player.isOnline())
|
|
|
+ if ((_player == null) || !_player.isOnline())
|
|
|
+ {
|
|
|
return false;
|
|
|
+ }
|
|
|
if (_player.getClient() == null)
|
|
|
+ {
|
|
|
return false;
|
|
|
+ }
|
|
|
if (_player.getClient().isDetached())
|
|
|
+ {
|
|
|
return false;
|
|
|
-
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @return Returns the classId.
|
|
|
+ * Gets the class id.
|
|
|
+ * @return the classId
|
|
|
*/
|
|
|
public int getClassId()
|
|
|
{
|
|
@@ -161,7 +178,8 @@ public class L2ClanMember
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @return Returns the level.
|
|
|
+ * Gets the level.
|
|
|
+ * @return the level
|
|
|
*/
|
|
|
public int getLevel()
|
|
|
{
|
|
@@ -173,7 +191,8 @@ public class L2ClanMember
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @return Returns the name.
|
|
|
+ * Gets the name.
|
|
|
+ * @return the name
|
|
|
*/
|
|
|
public String getName()
|
|
|
{
|
|
@@ -185,6 +204,7 @@ public class L2ClanMember
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Gets the object id.
|
|
|
* @return Returns the objectId.
|
|
|
*/
|
|
|
public int getObjectId()
|
|
@@ -196,13 +216,23 @@ public class L2ClanMember
|
|
|
return _objectId;
|
|
|
}
|
|
|
|
|
|
- public String getTitle() {
|
|
|
- if (_player != null) {
|
|
|
+ /**
|
|
|
+ * Gets the title.
|
|
|
+ * @return the title
|
|
|
+ */
|
|
|
+ public String getTitle()
|
|
|
+ {
|
|
|
+ if (_player != null)
|
|
|
+ {
|
|
|
return _player.getTitle();
|
|
|
}
|
|
|
return _title;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the pledge type.
|
|
|
+ * @return the pledge type
|
|
|
+ */
|
|
|
public int getPledgeType()
|
|
|
{
|
|
|
if (_player != null)
|
|
@@ -212,20 +242,27 @@ public class L2ClanMember
|
|
|
return _pledgeType;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Sets the pledge type.
|
|
|
+ * @param pledgeType the new pledge type
|
|
|
+ */
|
|
|
public void setPledgeType(int pledgeType)
|
|
|
{
|
|
|
_pledgeType = pledgeType;
|
|
|
- if(_player != null)
|
|
|
+ if (_player != null)
|
|
|
{
|
|
|
_player.setPledgeType(pledgeType);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //db save if char not logged in
|
|
|
+ // db save if char not logged in
|
|
|
updatePledgeType();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Update pledge type.
|
|
|
+ */
|
|
|
public void updatePledgeType()
|
|
|
{
|
|
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
|
|
@@ -242,20 +279,27 @@ public class L2ClanMember
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the power grade.
|
|
|
+ * @return the power grade
|
|
|
+ */
|
|
|
public int getPowerGrade()
|
|
|
{
|
|
|
- if(_player != null)
|
|
|
+ if (_player != null)
|
|
|
+ {
|
|
|
return _player.getPowerGrade();
|
|
|
+ }
|
|
|
return _powerGrade;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param powerGrade
|
|
|
+ * Sets the power grade.
|
|
|
+ * @param powerGrade the new power grade
|
|
|
*/
|
|
|
public void setPowerGrade(int powerGrade)
|
|
|
{
|
|
|
_powerGrade = powerGrade;
|
|
|
- if(_player != null)
|
|
|
+ if (_player != null)
|
|
|
{
|
|
|
_player.setPowerGrade(powerGrade);
|
|
|
}
|
|
@@ -267,7 +311,7 @@ public class L2ClanMember
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Update the characters table of the database with power grade.<BR><BR>
|
|
|
+ * Update the characters table of the database with power grade.
|
|
|
*/
|
|
|
public void updatePowerGrade()
|
|
|
{
|
|
@@ -285,76 +329,123 @@ public class L2ClanMember
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void initApprenticeAndSponsor(int apprenticeID, int sponsorID)
|
|
|
+ /**
|
|
|
+ * Sets the apprentice and sponsor.
|
|
|
+ * @param apprenticeID the apprentice id
|
|
|
+ * @param sponsorID the sponsor id
|
|
|
+ */
|
|
|
+ public void setApprenticeAndSponsor(int apprenticeID, int sponsorID)
|
|
|
{
|
|
|
_apprentice = apprenticeID;
|
|
|
_sponsor = sponsorID;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the player's race ordinal.
|
|
|
+ * @return the race ordinal
|
|
|
+ */
|
|
|
public int getRaceOrdinal()
|
|
|
{
|
|
|
if (_player != null)
|
|
|
+ {
|
|
|
return _player.getRace().ordinal();
|
|
|
+ }
|
|
|
return _raceOrdinal;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the player's sex.
|
|
|
+ * @return the sex
|
|
|
+ */
|
|
|
public boolean getSex()
|
|
|
{
|
|
|
if (_player != null)
|
|
|
+ {
|
|
|
return _player.getAppearance().getSex();
|
|
|
+ }
|
|
|
return _sex;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the sponsor.
|
|
|
+ * @return the sponsor
|
|
|
+ */
|
|
|
public int getSponsor()
|
|
|
{
|
|
|
if (_player != null)
|
|
|
+ {
|
|
|
return _player.getSponsor();
|
|
|
+ }
|
|
|
return _sponsor;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the apprentice.
|
|
|
+ * @return the apprentice
|
|
|
+ */
|
|
|
public int getApprentice()
|
|
|
{
|
|
|
if (_player != null)
|
|
|
+ {
|
|
|
return _player.getApprentice();
|
|
|
+ }
|
|
|
return _apprentice;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the apprentice or sponsor name.
|
|
|
+ * @return the apprentice or sponsor name
|
|
|
+ */
|
|
|
public String getApprenticeOrSponsorName()
|
|
|
{
|
|
|
- if(_player != null)
|
|
|
+ if (_player != null)
|
|
|
{
|
|
|
_apprentice = _player.getApprentice();
|
|
|
_sponsor = _player.getSponsor();
|
|
|
}
|
|
|
|
|
|
- if(_apprentice != 0)
|
|
|
+ if (_apprentice != 0)
|
|
|
{
|
|
|
L2ClanMember apprentice = _clan.getClanMember(_apprentice);
|
|
|
- if(apprentice != null)
|
|
|
+ if (apprentice != null)
|
|
|
+ {
|
|
|
return apprentice.getName();
|
|
|
+ }
|
|
|
return "Error";
|
|
|
}
|
|
|
- if(_sponsor != 0)
|
|
|
+ if (_sponsor != 0)
|
|
|
{
|
|
|
L2ClanMember sponsor = _clan.getClanMember(_sponsor);
|
|
|
- if(sponsor != null)
|
|
|
+ if (sponsor != null)
|
|
|
+ {
|
|
|
return sponsor.getName();
|
|
|
+ }
|
|
|
return "Error";
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Gets the clan.
|
|
|
+ * @return the clan
|
|
|
+ */
|
|
|
public L2Clan getClan()
|
|
|
{
|
|
|
return _clan;
|
|
|
}
|
|
|
|
|
|
- public int calculatePledgeClass(L2PcInstance player)
|
|
|
+ /**
|
|
|
+ * Calculate pledge class.
|
|
|
+ * @param player the player
|
|
|
+ * @return the int
|
|
|
+ */
|
|
|
+ public static int calculatePledgeClass(L2PcInstance player)
|
|
|
{
|
|
|
int pledgeClass = 0;
|
|
|
-
|
|
|
if (player == null)
|
|
|
+ {
|
|
|
return pledgeClass;
|
|
|
+ }
|
|
|
|
|
|
L2Clan clan = player.getClan();
|
|
|
if (clan != null)
|
|
@@ -363,13 +454,19 @@ public class L2ClanMember
|
|
|
{
|
|
|
case 4:
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
pledgeClass = 3;
|
|
|
+ }
|
|
|
break;
|
|
|
case 5:
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
pledgeClass = 4;
|
|
|
+ }
|
|
|
else
|
|
|
+ {
|
|
|
pledgeClass = 2;
|
|
|
+ }
|
|
|
break;
|
|
|
case 6:
|
|
|
switch (player.getPledgeType())
|
|
@@ -383,8 +480,11 @@ public class L2ClanMember
|
|
|
break;
|
|
|
case 0:
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
pledgeClass = 5;
|
|
|
+ }
|
|
|
else
|
|
|
+ {
|
|
|
switch (clan.getLeaderSubPledge(player.getObjectId()))
|
|
|
{
|
|
|
case 100:
|
|
@@ -396,6 +496,7 @@ public class L2ClanMember
|
|
|
pledgeClass = 3;
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
@@ -417,8 +518,11 @@ public class L2ClanMember
|
|
|
break;
|
|
|
case 0:
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
pledgeClass = 7;
|
|
|
+ }
|
|
|
else
|
|
|
+ {
|
|
|
switch (clan.getLeaderSubPledge(player.getObjectId()))
|
|
|
{
|
|
|
case 100:
|
|
@@ -436,6 +540,7 @@ public class L2ClanMember
|
|
|
pledgeClass = 4;
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
@@ -457,8 +562,11 @@ public class L2ClanMember
|
|
|
break;
|
|
|
case 0:
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
pledgeClass = 8;
|
|
|
+ }
|
|
|
else
|
|
|
+ {
|
|
|
switch (clan.getLeaderSubPledge(player.getObjectId()))
|
|
|
{
|
|
|
case 100:
|
|
@@ -476,6 +584,7 @@ public class L2ClanMember
|
|
|
pledgeClass = 5;
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
@@ -497,8 +606,11 @@ public class L2ClanMember
|
|
|
break;
|
|
|
case 0:
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
pledgeClass = 9;
|
|
|
+ }
|
|
|
else
|
|
|
+ {
|
|
|
switch (clan.getLeaderSubPledge(player.getObjectId()))
|
|
|
{
|
|
|
case 100:
|
|
@@ -516,6 +628,7 @@ public class L2ClanMember
|
|
|
pledgeClass = 6;
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
@@ -537,8 +650,11 @@ public class L2ClanMember
|
|
|
break;
|
|
|
case 0:
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
pledgeClass = 10;
|
|
|
+ }
|
|
|
else
|
|
|
+ {
|
|
|
switch (clan.getLeaderSubPledge(player.getObjectId()))
|
|
|
{
|
|
|
case 100:
|
|
@@ -556,6 +672,7 @@ public class L2ClanMember
|
|
|
pledgeClass = 7;
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
@@ -577,8 +694,11 @@ public class L2ClanMember
|
|
|
break;
|
|
|
case 0:
|
|
|
if (player.isClanLeader())
|
|
|
+ {
|
|
|
pledgeClass = 11;
|
|
|
+ }
|
|
|
else
|
|
|
+ {
|
|
|
switch (clan.getLeaderSubPledge(player.getObjectId()))
|
|
|
{
|
|
|
case 100:
|
|
@@ -596,6 +716,7 @@ public class L2ClanMember
|
|
|
pledgeClass = 8;
|
|
|
break;
|
|
|
}
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
break;
|
|
@@ -604,9 +725,24 @@ public class L2ClanMember
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (player.isNoble() && (pledgeClass < 5))
|
|
|
+ {
|
|
|
+ pledgeClass = 5;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (player.isHero() && (pledgeClass < 8))
|
|
|
+ {
|
|
|
+ pledgeClass = 8;
|
|
|
+ }
|
|
|
return pledgeClass;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Save apprentice and sponsor.
|
|
|
+ * @param apprentice the apprentice
|
|
|
+ * @param sponsor the sponsor
|
|
|
+ */
|
|
|
public void saveApprenticeAndSponsor(int apprentice, int sponsor)
|
|
|
{
|
|
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
|