Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeFlagInstance.java =================================================================== --- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeFlagInstance.java (revision 1508) +++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2SiegeFlagInstance.java (working copy) @@ -59,13 +59,7 @@ L2SiegeClan sc = _Siege.getAttackerClan(_Player.getClan()); if (sc != null) { - Integer size = new Integer(sc.getFlag().size()); - String string = size.toString(); - if (sc.removeFlag(this)) - { - size = new Integer(sc.getFlag().size()); - string = size.toString(); - } + sc.removeFlag(getObjectId()); } super.doDie(killer); } Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/L2SiegeClan.java =================================================================== --- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/L2SiegeClan.java (revision 1508) +++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/L2SiegeClan.java (working copy) @@ -31,7 +31,7 @@ // =============================================================== // Data Field private int _ClanId = 0; - private List _Flag = new FastList(); + private List _FlagList = new FastList(); private int _TypeId = 0; // -1 = owner, 0 = defender, 1 = attacker, 2 = defender pending private int _numFlagsAdded = 0; // ========================================================= @@ -52,55 +52,30 @@ public void addFlag(L2NpcInstance flag) { _numFlagsAdded++; - getFlag().add(flag); + getFlagList().add(flag.getObjectId()); } - public boolean removeFlag(L2NpcInstance flag) + public void removeFlag(Integer flagId) { - if (flag == null) return false; - boolean ret = getFlag().remove(flag); - //flag.deleteMe(); - //check if null objects or dups remain in the list. - //for some reason, this might be happenning sometimes... - // delete false dupplicates: if this flag got deleted, delete its copies too. - if (ret) - while (getFlag().remove(flag)) ; - - // now delete nulls - int n; - boolean more = true; - while (more) - { - more = false; - n = getFlag().size(); - if (n>0) - for(int i=0; i getFlag() + public final List getFlagList() { - if (_Flag == null) _Flag = new FastList(); - return _Flag; + return _FlagList; } public final int getTypeId() { return _TypeId; } Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/entity/Siege.java =================================================================== --- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/entity/Siege.java (revision 1508) +++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/entity/Siege.java (working copy) @@ -547,7 +547,7 @@ if (flag == null) return; for (int i = 0; i < getAttackerClans().size(); i++) { - if (getAttackerClan(i).removeFlag(flag)) return; + getAttackerClan(i).removeFlag(flag.getObjectId()); } } @@ -1155,12 +1155,12 @@ public final Calendar getSiegeDate() { return _SiegeDate; } - public List getFlag(L2Clan clan) + public List getFlag(L2Clan clan) { if (clan != null) { L2SiegeClan sc = getAttackerClan(clan); - if (sc != null) return sc.getFlag(); + if (sc != null) return sc.getFlagList(); } return null; } Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/skills/Formulas.java =================================================================== --- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/skills/Formulas.java (revision 1508) +++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/skills/Formulas.java (working copy) @@ -21,22 +21,23 @@ import java.util.logging.Logger; import net.sf.l2j.Config; -import net.sf.l2j.gameserver.instancemanager.SiegeManager; import net.sf.l2j.gameserver.SevenSigns; import net.sf.l2j.gameserver.SevenSignsFestival; import net.sf.l2j.gameserver.SkillTable; +import net.sf.l2j.gameserver.instancemanager.SiegeManager; import net.sf.l2j.gameserver.lib.Rnd; -import net.sf.l2j.gameserver.model.entity.Siege; import net.sf.l2j.gameserver.model.L2Character; +import net.sf.l2j.gameserver.model.L2SiegeClan; +import net.sf.l2j.gameserver.model.L2Skill; +import net.sf.l2j.gameserver.model.L2Summon; +import net.sf.l2j.gameserver.model.L2World; +import net.sf.l2j.gameserver.model.L2Skill.SkillType; import net.sf.l2j.gameserver.model.actor.instance.L2DoorInstance; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2RaidBossInstance; import net.sf.l2j.gameserver.model.actor.instance.L2SiegeGuardInstance; -import net.sf.l2j.gameserver.model.L2SiegeClan; -import net.sf.l2j.gameserver.model.L2Skill; -import net.sf.l2j.gameserver.model.L2Summon; -import net.sf.l2j.gameserver.model.L2Skill.SkillType; +import net.sf.l2j.gameserver.model.entity.Siege; import net.sf.l2j.gameserver.skills.ConditionPlayerState.CheckPlayerState; import net.sf.l2j.gameserver.templates.L2PcTemplate; import net.sf.l2j.gameserver.templates.L2Weapon; @@ -840,7 +841,9 @@ if (siege == null || !siege.getIsInProgress()) return 0; L2SiegeClan siegeClan = siege.getAttackerClan(activeChar.getClan().getClanId()); - if (siegeClan == null || siegeClan.getFlag().size() == 0 || !Util.checkIfInRange(200, activeChar, siegeClan.getFlag().get(0), true)) return 0; + + if (siegeClan == null || siegeClan.getFlagList().size() == 0 + || !Util.checkIfInRange(200, activeChar, L2World.getInstance().findObject(siegeClan.getFlagList().get(0)), true)) return 0; return 1.5; // If all is true, then modifer will be 50% more } Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/skillhandlers/SiegeFlag.java =================================================================== --- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/skillhandlers/SiegeFlag.java (revision 1508) +++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/skillhandlers/SiegeFlag.java (working copy) @@ -70,7 +70,7 @@ flag.setCurrentHpMp(flag.getMaxHp(), flag.getMaxMp()); flag.setHeading(player.getHeading()); flag.spawnMe(player.getX(), player.getY(), player.getZ() + 50); - castle.getSiege().getFlag(player.getClan()).add(flag); + castle.getSiege().getFlag(player.getClan()).add(flag.getObjectId()); } catch (Exception e) { Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/serverpackets/Die.java =================================================================== --- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/serverpackets/Die.java (revision 1508) +++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/serverpackets/Die.java (working copy) @@ -99,7 +99,7 @@ writeD(_clan.getHasHideout() > 0 ? 0x01 : 0x00); // 6d 01 00 00 00 - to hide away writeD(_clan.getHasCastle() > 0 ? 0x01 : 0x00); // 6d 02 00 00 00 - to castle writeD(siegeClan != null && - siegeClan.getFlag().size() > 0 ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ + siegeClan.getFlagList().size() > 0 ? 0x01 : 0x00); // 6d 03 00 00 00 - to siege HQ } else { Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/MapRegionTable.java =================================================================== --- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/MapRegionTable.java (revision 1508) +++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/MapRegionTable.java (working copy) @@ -31,6 +31,7 @@ import net.sf.l2j.gameserver.instancemanager.TownManager; import net.sf.l2j.gameserver.instancemanager.ZoneManager; import net.sf.l2j.gameserver.model.L2Character; +import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.model.Location; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; @@ -246,11 +247,11 @@ if (teleportWhere == TeleportWhereType.SiegeFlag && castle.getSiege().getIsInProgress()) { // Check if player's clan is attacker - List flags = castle.getSiege().getFlag(player.getClan()); + List flags = castle.getSiege().getFlag(player.getClan()); if (flags != null && flags.size() > 0) { // Spawn to flag - Need more work to get player to the nearest flag - L2NpcInstance flag = flags.get(0); + L2Character flag = (L2Character)L2World.getInstance().findObject(flags.get(0)); return new Location(flag.getX(), flag.getY(), flag.getZ()); } }