rendered paste bodyIndex: 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<L2NpcInstance> _Flag = new FastList<L2NpcInstance>();+ private List<Integer> _FlagList = new FastList<Integer>(); 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<n;i++)- if(getFlag().get(i)==null)- {- getFlag().remove(i);- more = true;- break;- }- }- - flag.deleteMe();- return ret;+ getFlagList().remove(flagId);+ L2World.getInstance().findObject(flagId).decayMe(); } public void removeFlags() {- for (L2NpcInstance flag: getFlag())- removeFlag(flag);+ for (Integer flagId: getFlagList())+ {+ removeFlag(flagId);+ } } // ========================================================= // Proeprty public final int getClanId() { return _ClanId; } - public final List<L2NpcInstance> getFlag()+ public final List<Integer> getFlagList() {- if (_Flag == null) _Flag = new FastList<L2NpcInstance>();- 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<L2NpcInstance> getFlag(L2Clan clan)+ public List<Integer> 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<L2NpcInstance> flags = castle.getSiege().getFlag(player.getClan());+ List<Integer> 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()); } }