diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/Clan.java index 8e9be2a1fa..7b80af578c 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -439,6 +441,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -483,10 +486,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -508,16 +513,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index ded2dc2d4f..4468d9cfa1 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -296,14 +297,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/Clan.java index df17e8df9c..5065bc6d14 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index fb9d4771b4..73fecb4326 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -301,14 +302,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/Clan.java index df17e8df9c..5065bc6d14 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index fb9d4771b4..73fecb4326 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -301,14 +302,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/Clan.java index df17e8df9c..5065bc6d14 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index bb737916b7..0497726e97 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -301,14 +302,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/Clan.java index 08093c6220..4c81bef118 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -447,6 +449,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -491,10 +494,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -519,16 +524,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 8afadb5194..7a024171a6 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -59,6 +59,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -300,14 +301,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/Clan.java index 08093c6220..4c81bef118 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -447,6 +449,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -491,10 +494,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -519,16 +524,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index d5f5ac5ce8..aed8356181 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -59,6 +59,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -300,14 +301,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/Clan.java index 08093c6220..4c81bef118 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -447,6 +449,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -491,10 +494,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -519,16 +524,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index d5f5ac5ce8..aed8356181 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -59,6 +59,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -300,14 +301,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java index e5dcb0358f..07f0d3f6c7 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; @@ -446,6 +448,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -490,10 +493,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -518,16 +523,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, 19009); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 224a4fe0fa..216936d275 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -59,6 +59,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -301,14 +302,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/Clan.java index e5dcb0358f..07f0d3f6c7 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; @@ -446,6 +448,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -490,10 +493,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -518,16 +523,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, 19009); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 6053c40d63..de698fde38 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -306,14 +307,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/Clan.java index e5dcb0358f..07f0d3f6c7 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; @@ -446,6 +448,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -490,10 +493,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -518,16 +523,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, 19009); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 63d20b519b..10b389d541 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -308,14 +309,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java index 8f11e9a2dc..3bd319a342 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; @@ -446,6 +448,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -490,10 +493,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -518,16 +523,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, 19009); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index b3c21fe9c4..013c0c16d6 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -309,14 +310,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java index 8f11e9a2dc..3bd319a342 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables; @@ -446,6 +448,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -490,10 +493,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -518,16 +523,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, 19009); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index b3c21fe9c4..013c0c16d6 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -309,14 +310,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index fde5d0cd87..d666c10630 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -103,6 +103,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index b165f18b65..3e44c9c103 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -80,6 +80,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/clan/Clan.java index eb9392aab4..b69975176f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -61,6 +61,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -423,6 +425,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -491,16 +494,23 @@ public class Clan implements IIdentifiable, INamable removeSkillEffects(player); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 4d4c30e56c..1f4e325c54 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -62,6 +62,7 @@ import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.residences.AuctionableHall; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -241,14 +242,15 @@ public class EnterWorld implements IClientIncomingPacket boolean showClanNotice = false; // Clan related checks are here - if (player.getClan() != null) + final Clan clan = player.getClan(); + if (clan != null) { - player.sendPacket(new PledgeSkillList(player.getClan())); + player.sendPacket(new PledgeSkillList(clan)); notifyClanMembers(player); notifySponsorOrApprentice(player); - final AuctionableHall clanHall = ClanHallTable.getInstance().getClanHallByOwner(player.getClan()); + final AuctionableHall clanHall = ClanHallTable.getInstance().getClanHallByOwner(clan); if (clanHall != null) { if (!clanHall.getPaid()) @@ -264,13 +266,13 @@ public class EnterWorld implements IClientIncomingPacket continue; } - if (siege.checkIsAttacker(player.getClan())) + if (siege.checkIsAttacker(clan)) { player.setSiegeState((byte) 1); player.setSiegeSide(siege.getCastle().getResidenceId()); } - else if (siege.checkIsDefender(player.getClan())) + else if (siege.checkIsDefender(clan)) { player.setSiegeState((byte) 2); player.setSiegeSide(siege.getCastle().getResidenceId()); @@ -284,13 +286,13 @@ public class EnterWorld implements IClientIncomingPacket continue; } - if (siege.checkIsAttacker(player.getClan())) + if (siege.checkIsAttacker(clan)) { player.setSiegeState((byte) 1); player.setSiegeSide(siege.getFort().getResidenceId()); } - else if (siege.checkIsDefender(player.getClan())) + else if (siege.checkIsDefender(clan)) { player.setSiegeState((byte) 2); player.setSiegeSide(siege.getFort().getResidenceId()); @@ -304,7 +306,7 @@ public class EnterWorld implements IClientIncomingPacket continue; } - if (hall.isRegistered(player.getClan())) + if (hall.isRegistered(clan)) { player.setSiegeState((byte) 1); player.setSiegeSide(hall.getId()); @@ -312,21 +314,29 @@ public class EnterWorld implements IClientIncomingPacket } } - player.sendPacket(new PledgeShowMemberListAll(player.getClan(), player)); - player.sendPacket(new PledgeStatusChanged(player.getClan())); + player.sendPacket(new PledgeShowMemberListAll(clan, player)); + player.sendPacket(new PledgeStatusChanged(clan)); // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } - showClanNotice = player.getClan().isNoticeEnabled(); + showClanNotice = clan.isNoticeEnabled(); } if (TerritoryWarManager.getInstance().getRegisteredTerritoryId(player) > 0) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index fde5d0cd87..d666c10630 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -103,6 +103,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index b165f18b65..3e44c9c103 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -80,6 +80,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/clan/Clan.java index eb9392aab4..b69975176f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -61,6 +61,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -423,6 +425,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -491,16 +494,23 @@ public class Clan implements IIdentifiable, INamable removeSkillEffects(player); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 21ad0f596b..f1b2ecd4b9 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -61,6 +61,7 @@ import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.residences.AuctionableHall; import org.l2jmobius.gameserver.model.sevensigns.SevenSigns; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -242,14 +243,15 @@ public class EnterWorld implements IClientIncomingPacket boolean showClanNotice = false; // Clan related checks are here - if (player.getClan() != null) + final Clan clan = player.getClan(); + if (clan != null) { - player.sendPacket(new PledgeSkillList(player.getClan())); + player.sendPacket(new PledgeSkillList(clan)); notifyClanMembers(player); notifySponsorOrApprentice(player); - final AuctionableHall clanHall = ClanHallTable.getInstance().getClanHallByOwner(player.getClan()); + final AuctionableHall clanHall = ClanHallTable.getInstance().getClanHallByOwner(clan); if (clanHall != null) { if (!clanHall.getPaid()) @@ -265,13 +267,13 @@ public class EnterWorld implements IClientIncomingPacket continue; } - if (siege.checkIsAttacker(player.getClan())) + if (siege.checkIsAttacker(clan)) { player.setSiegeState((byte) 1); player.setSiegeSide(siege.getCastle().getResidenceId()); } - else if (siege.checkIsDefender(player.getClan())) + else if (siege.checkIsDefender(clan)) { player.setSiegeState((byte) 2); player.setSiegeSide(siege.getCastle().getResidenceId()); @@ -285,13 +287,13 @@ public class EnterWorld implements IClientIncomingPacket continue; } - if (siege.checkIsAttacker(player.getClan())) + if (siege.checkIsAttacker(clan)) { player.setSiegeState((byte) 1); player.setSiegeSide(siege.getFort().getResidenceId()); } - else if (siege.checkIsDefender(player.getClan())) + else if (siege.checkIsDefender(clan)) { player.setSiegeState((byte) 2); player.setSiegeSide(siege.getFort().getResidenceId()); @@ -305,7 +307,7 @@ public class EnterWorld implements IClientIncomingPacket continue; } - if (hall.isRegistered(player.getClan())) + if (hall.isRegistered(clan)) { player.setSiegeState((byte) 1); player.setSiegeSide(hall.getId()); @@ -313,21 +315,29 @@ public class EnterWorld implements IClientIncomingPacket } } - player.sendPacket(new PledgeShowMemberListAll(player.getClan(), player)); - player.sendPacket(new PledgeStatusChanged(player.getClan())); + player.sendPacket(new PledgeShowMemberListAll(clan, player)); + player.sendPacket(new PledgeStatusChanged(clan)); // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } - showClanNotice = player.getClan().isNoticeEnabled(); + showClanNotice = clan.isNoticeEnabled(); } if (TerritoryWarManager.getInstance().getRegisteredTerritoryId(player) > 0) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/Clan.java index c72c24271b..1cb6626fdc 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index b3874c66c3..377a0763bf 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -299,14 +300,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/clan/Clan.java index c72c24271b..1cb6626fdc 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 23ec201cf1..6557986418 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -299,14 +300,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/clan/Clan.java index af04360049..39922725f5 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 0d966b9efc..a61c8be3fd 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -300,14 +301,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/clan/Clan.java index af04360049..39922725f5 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 0d966b9efc..a61c8be3fd 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -300,14 +301,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/Clan.java index af04360049..39922725f5 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 0d966b9efc..a61c8be3fd 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -300,14 +301,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/Clan.java index af04360049..39922725f5 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 72a2d44d73..47955ec894 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -58,6 +58,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -301,14 +302,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java index c72c24271b..1cb6626fdc 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 58c91d6f72..bec98de359 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -57,6 +57,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -297,14 +298,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/Clan.java index 265e7009ce..cd0b97041b 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -63,6 +63,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -440,6 +442,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -484,10 +487,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -509,16 +514,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index a00fafc666..42b2d36715 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -306,14 +307,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java index e3e1dfe4d4..0657c2c0ea 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -64,6 +64,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -459,6 +461,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -503,10 +506,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -528,16 +533,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 0a049553ef..e850a541cd 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -310,14 +311,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java index e3e1dfe4d4..0657c2c0ea 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -64,6 +64,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -459,6 +461,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -503,10 +506,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -528,16 +533,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index ded40cce87..585443e70b 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -310,14 +311,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled(); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java index d8f8812da0..5ea7267a98 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/CastleManager.java @@ -88,6 +88,10 @@ public class CastleManager public Castle getCastleByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Castle temp : _castles.values()) { if (temp.getOwnerId() == clan.getId()) diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/FortManager.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/FortManager.java index 35d040c9bb..5d5a545087 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/FortManager.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/instancemanager/FortManager.java @@ -74,6 +74,10 @@ public class FortManager public Fort getFortByOwner(Clan clan) { + if (clan == null) + { + return null; + } for (Fort f : _forts.values()) { if (f.getOwnerClan() == clan) diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java index 8f9fd7a119..7a92546cfb 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -64,6 +64,8 @@ import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.INamable; import org.l2jmobius.gameserver.model.itemcontainer.ClanWarehouse; import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer; +import org.l2jmobius.gameserver.model.siege.Castle; +import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.skill.CommonSkill; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.variables.ClanVariables; @@ -459,6 +461,7 @@ public class Clan implements IIdentifiable, INamable LOGGER.warning("Member Object ID: " + objectId + " not found in clan while trying to remove"); return; } + final int leadssubpledge = getLeaderSubPledge(objectId); if (leadssubpledge != 0) { @@ -503,10 +506,12 @@ public class Clan implements IIdentifiable, INamable } } exMember.saveApprenticeAndSponsor(0, 0); + if (Config.REMOVE_CASTLE_CIRCLETS) { CastleManager.getInstance().removeCirclet(exMember, getCastleId()); } + if (exMember.isOnline()) { final Player player = exMember.getPlayer(); @@ -528,16 +533,23 @@ public class Clan implements IIdentifiable, INamable player.getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.CLAN_ADVENT.getId()); // remove Residential skills - if (player.getClan().getCastleId() > 0) + if (getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(player.getClan()).removeResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(this); + if (castle != null) + { + castle.removeResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (getFortId() > 0) { - FortManager.getInstance().getFortByOwner(player.getClan()).removeResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(this); + if (fort != null) + { + fort.removeResidentialSkills(player); + } } player.sendSkillList(); - player.setClan(null); // players leaving from clan academy have no penalty diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index ded40cce87..585443e70b 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -60,6 +60,7 @@ import org.l2jmobius.gameserver.model.punishment.PunishmentAffect; import org.l2jmobius.gameserver.model.punishment.PunishmentType; import org.l2jmobius.gameserver.model.quest.Quest; import org.l2jmobius.gameserver.model.residences.ClanHall; +import org.l2jmobius.gameserver.model.siege.Castle; import org.l2jmobius.gameserver.model.siege.Fort; import org.l2jmobius.gameserver.model.siege.FortSiege; import org.l2jmobius.gameserver.model.siege.Siege; @@ -310,14 +311,22 @@ public class EnterWorld implements IClientIncomingPacket } // Residential skills support - if (player.getClan().getCastleId() > 0) + if (clan.getCastleId() > 0) { - CastleManager.getInstance().getCastleByOwner(clan).giveResidentialSkills(player); + final Castle castle = CastleManager.getInstance().getCastleByOwner(clan); + if (castle != null) + { + castle.giveResidentialSkills(player); + } } - if (player.getClan().getFortId() > 0) + if (clan.getFortId() > 0) { - FortManager.getInstance().getFortByOwner(clan).giveResidentialSkills(player); + final Fort fort = FortManager.getInstance().getFortByOwner(clan); + if (fort != null) + { + fort.giveResidentialSkills(player); + } } showClanNotice = clan.isNoticeEnabled();