Skip to content

Instantly share code, notes, and snippets.

@St3eT
Last active August 29, 2015 14:13
Show Gist options
  • Save St3eT/a880ce3d1f36c7672671 to your computer and use it in GitHub Desktop.
Save St3eT/a880ce3d1f36c7672671 to your computer and use it in GitHub Desktop.
Castle rework
diff --git a/L2J_Server/dist/game/config/Feature.properties b/L2J_Server/dist/game/config/Feature.properties
index d8a6bf0..6289f46 100644
--- a/L2J_Server/dist/game/config/Feature.properties
+++ b/L2J_Server/dist/game/config/Feature.properties
@@ -13,6 +13,19 @@
# Default: 16,20
SiegeHourList = 16,20
+# Taxes for castles
+# Tax in percent when is castle owned by npc's.
+# Defualt: 15
+TaxForNeutralSide = 15
+
+# Tax in percent when is castle owned by player's and castle is on light side.
+# Defualt: 0
+TaxForLightSide = 0
+
+# Tax in percent when is castle owned by player's and castle is on dark side.
+# Defualt: 30
+TaxForDarkSide = 30
+
# Teleport Function price
# Price = 7 days
CastleTeleportFunctionFeeRatio = 604800000
diff --git a/L2J_Server/java/com/l2jserver/Config.java b/L2J_Server/java/com/l2jserver/Config.java
index 1fafd08..7dd943c 100644
--- a/L2J_Server/java/com/l2jserver/Config.java
+++ b/L2J_Server/java/com/l2jserver/Config.java
@@ -341,6 +341,9 @@
public static int CS_SUPPORT1_FEE;
public static int CS_SUPPORT2_FEE;
public static List<Integer> SIEGE_HOUR_LIST;
+ public static int CASTLE_TAX_NEUTRAL;
+ public static int CASTLE_TAX_LIGHT;
+ public static int CASTLE_TAX_DARK;
public static int OUTER_DOOR_UPGRADE_PRICE2;
public static int OUTER_DOOR_UPGRADE_PRICE3;
public static int OUTER_DOOR_UPGRADE_PRICE5;
@@ -1267,6 +1270,9 @@
SIEGE_HOUR_LIST.add(Integer.parseInt(hour));
}
}
+ CASTLE_TAX_NEUTRAL = Feature.getInt("TaxForNeutralSide", 15);
+ CASTLE_TAX_LIGHT = Feature.getInt("TaxForLightSide", 0);
+ CASTLE_TAX_DARK = Feature.getInt("TaxForDarkSide", 30);
CS_TELE_FEE_RATIO = Feature.getLong("CastleTeleportFunctionFeeRatio", 604800000);
CS_TELE1_FEE = Feature.getInt("CastleTeleportFunctionFeeLvl1", 1000);
CS_TELE2_FEE = Feature.getInt("CastleTeleportFunctionFeeLvl2", 10000);
diff --git a/L2J_Server/java/com/l2jserver/gameserver/datatables/CastleData.java b/L2J_Server/java/com/l2jserver/gameserver/datatables/CastleData.java
new file mode 100644
index 0000000..b419f67
--- /dev/null
+++ b/L2J_Server/java/com/l2jserver/gameserver/datatables/CastleData.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2004-2015 L2J Server
+ *
+ * This file is part of L2J Server.
+ *
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.datatables;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+import com.l2jserver.gameserver.engines.DocumentParser;
+import com.l2jserver.gameserver.enums.CastleSide;
+import com.l2jserver.gameserver.model.holders.CastleSpawnHolder;
+
+/**
+ * @author St3eT
+ */
+public final class CastleData implements DocumentParser
+{
+ private final Map<Integer, List<CastleSpawnHolder>> _castles = new HashMap<>();
+
+ protected CastleData()
+ {
+ load();
+ }
+
+ @Override
+ public void load()
+ {
+ _castles.clear();
+ parseDatapackDirectory("data/castles", true);
+ }
+
+ @Override
+ public void parseDocument(Document doc)
+ {
+ for (Node listNode = doc.getFirstChild(); listNode != null; listNode = listNode.getNextSibling())
+ {
+ if ("list".equals(listNode.getNodeName()))
+ {
+ for (Node castleNode = listNode.getFirstChild(); castleNode != null; castleNode = castleNode.getNextSibling())
+ {
+ if ("castle".equals(castleNode.getNodeName()))
+ {
+ final int castleId = parseInteger(castleNode.getAttributes(), "id");
+ final List<CastleSpawnHolder> spawns = new ArrayList<>();
+
+ for (Node tpNode = castleNode.getFirstChild(); tpNode != null; tpNode = tpNode.getNextSibling())
+ {
+ if ("spawn".equals(tpNode.getNodeName()))
+ {
+ final CastleSide side = parseEnum(tpNode.getAttributes(), CastleSide.class, "castleSide", CastleSide.NEUTRAL);
+ for (Node npcNode = tpNode.getFirstChild(); npcNode != null; npcNode = npcNode.getNextSibling())
+ {
+ if ("npc".equals(npcNode.getNodeName()))
+ {
+ final NamedNodeMap np = npcNode.getAttributes();
+ final int npcId = parseInteger(np, "id");
+ final int x = parseInteger(np, "x");
+ final int y = parseInteger(np, "y");
+ final int z = parseInteger(np, "z");
+ final int heading = parseInteger(np, "heading");
+
+ spawns.add(new CastleSpawnHolder(npcId, side, x, y, z, heading));
+ }
+ }
+ }
+ }
+ _castles.put(castleId, spawns);
+ }
+ }
+ }
+ }
+ }
+
+ public final List<CastleSpawnHolder> getSpawnsForSide(int castleId, CastleSide side)
+ {
+ return _castles.getOrDefault(castleId, Collections.emptyList()).stream().filter(s -> s.getSide() == side).collect(Collectors.toList());
+ }
+
+ /**
+ * Gets the single instance of TeleportersData.
+ * @return single instance of TeleportersData
+ */
+ public static CastleData getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final CastleData _instance = new CastleData();
+ }
+}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/datatables/SkillData.java b/L2J_Server/java/com/l2jserver/gameserver/datatables/SkillData.java
index 043b408..4d9d6f9 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/datatables/SkillData.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/datatables/SkillData.java
@@ -20,6 +20,8 @@
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
@@ -27,6 +29,7 @@
import com.l2jserver.Config;
import com.l2jserver.gameserver.engines.DocumentEngine;
+import com.l2jserver.gameserver.model.skills.CommonSkill;
import com.l2jserver.gameserver.model.skills.Skill;
/**
@@ -150,21 +153,23 @@
* @param hasCastle
* @return an array with siege skills. If addNoble == true, will add also Advanced headquarters.
*/
- public Skill[] getSiegeSkills(boolean addNoble, boolean hasCastle)
+ public List<Skill> getSiegeSkills(boolean addNoble, boolean hasCastle)
{
- Skill[] temp = new Skill[2 + (addNoble ? 1 : 0) + (hasCastle ? 2 : 0)];
- int i = 0;
- temp[i++] = _skills.get(SkillData.getSkillHashCode(246, 1));
- temp[i++] = _skills.get(SkillData.getSkillHashCode(247, 1));
+ final List<Skill> temp = new LinkedList<>();
+
+ temp.add(_skills.get(SkillData.getSkillHashCode(CommonSkill.IMPRIT_OF_LIGHT.getId(), 1)));
+ temp.add(_skills.get(SkillData.getSkillHashCode(CommonSkill.IMPRIT_OF_DARKNESS.getId(), 1)));
+
+ temp.add(_skills.get(SkillData.getSkillHashCode(247, 1))); // Build Headquarters
if (addNoble)
{
- temp[i++] = _skills.get(SkillData.getSkillHashCode(326, 1));
+ temp.add(_skills.get(SkillData.getSkillHashCode(326, 1))); // Build Advanced Headquarters
}
if (hasCastle)
{
- temp[i++] = _skills.get(SkillData.getSkillHashCode(844, 1));
- temp[i++] = _skills.get(SkillData.getSkillHashCode(845, 1));
+ temp.add(_skills.get(SkillData.getSkillHashCode(844, 1))); // Outpost Construction
+ temp.add(_skills.get(SkillData.getSkillHashCode(845, 1))); // Outpost Demolition
}
return temp;
}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/engines/DocumentBase.java b/L2J_Server/java/com/l2jserver/gameserver/engines/DocumentBase.java
index 31d2d92..389cf31 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/engines/DocumentBase.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/engines/DocumentBase.java
@@ -37,6 +37,7 @@
import org.w3c.dom.Node;
import com.l2jserver.gameserver.datatables.ItemTable;
+import com.l2jserver.gameserver.enums.CastleSide;
import com.l2jserver.gameserver.enums.CategoryType;
import com.l2jserver.gameserver.enums.InstanceType;
import com.l2jserver.gameserver.enums.Race;
@@ -87,6 +88,7 @@
import com.l2jserver.gameserver.model.conditions.ConditionPlayerIsClanLeader;
import com.l2jserver.gameserver.model.conditions.ConditionPlayerIsHero;
import com.l2jserver.gameserver.model.conditions.ConditionPlayerIsInCombat;
+import com.l2jserver.gameserver.model.conditions.ConditionPlayerIsOnSide;
import com.l2jserver.gameserver.model.conditions.ConditionPlayerLandingZone;
import com.l2jserver.gameserver.model.conditions.ConditionPlayerLevel;
import com.l2jserver.gameserver.model.conditions.ConditionPlayerLevelRange;
@@ -927,6 +929,11 @@
cond = joinAnd(cond, new ConditionPlayerIsInCombat(Boolean.parseBoolean(a.getNodeValue())));
break;
}
+ case "isonside":
+ {
+ cond = joinAnd(cond, new ConditionPlayerIsOnSide(Enum.valueOf(CastleSide.class, a.getNodeValue())));
+ break;
+ }
}
}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/enums/CastleSide.java b/L2J_Server/java/com/l2jserver/gameserver/enums/CastleSide.java
new file mode 100644
index 0000000..c2b9541
--- /dev/null
+++ b/L2J_Server/java/com/l2jserver/gameserver/enums/CastleSide.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2004-2015 L2J Server
+ *
+ * This file is part of L2J Server.
+ *
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.enums;
+
+/**
+ * @author St3eT
+ */
+public enum CastleSide
+{
+ NEUTRAL,
+ LIGHT,
+ DARK;
+}
\ No newline at end of file
diff --git a/L2J_Server/java/com/l2jserver/gameserver/enums/SiegeClanType.java b/L2J_Server/java/com/l2jserver/gameserver/enums/SiegeClanType.java
new file mode 100644
index 0000000..e5e1366
--- /dev/null
+++ b/L2J_Server/java/com/l2jserver/gameserver/enums/SiegeClanType.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2004-2015 L2J Server
+ *
+ * This file is part of L2J Server.
+ *
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.enums;
+
+/**
+ * @author St3eT
+ */
+public enum SiegeClanType
+{
+ OWNER,
+ DEFENDER_PENDING,
+ DEFENDER,
+ ATTACKER;
+}
\ No newline at end of file
diff --git a/L2J_Server/java/com/l2jserver/gameserver/idfactory/IdFactory.java b/L2J_Server/java/com/l2jserver/gameserver/idfactory/IdFactory.java
index b3f34ee..cd58a61 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/idfactory/IdFactory.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/idfactory/IdFactory.java
@@ -289,7 +289,7 @@
stmt.executeUpdate("UPDATE clan_data SET auction_bid_at = 0 WHERE auction_bid_at NOT IN (SELECT auctionId FROM auction_bid);");
stmt.executeUpdate("UPDATE clan_data SET new_leader_id = 0 WHERE new_leader_id <> 0 AND new_leader_id NOT IN (SELECT charId FROM characters);");
stmt.executeUpdate("UPDATE clan_subpledges SET leader_id=0 WHERE clan_subpledges.leader_id NOT IN (SELECT charId FROM characters) AND leader_id > 0;");
- stmt.executeUpdate("UPDATE castle SET taxpercent=0 WHERE castle.id NOT IN (SELECT hasCastle FROM clan_data);");
+ stmt.executeUpdate("UPDATE castle SET side='NEUTRAL' WHERE castle.id NOT IN (SELECT hasCastle FROM clan_data);");
stmt.executeUpdate("UPDATE characters SET clanid=0, clan_privs=0, wantspeace=0, subpledge=0, lvl_joined_academy=0, apprentice=0, sponsor=0, clan_join_expiry_time=0, clan_create_expiry_time=0 WHERE characters.clanid > 0 AND characters.clanid NOT IN (SELECT clan_id FROM clan_data);");
stmt.executeUpdate("UPDATE clanhall SET ownerId=0, paidUntil=0, paid=0 WHERE clanhall.ownerId NOT IN (SELECT clan_id FROM clan_data);");
stmt.executeUpdate("UPDATE fort SET owner=0 WHERE owner NOT IN (SELECT clan_id FROM clan_data);");
diff --git a/L2J_Server/java/com/l2jserver/gameserver/instancemanager/CastleManager.java b/L2J_Server/java/com/l2jserver/gameserver/instancemanager/CastleManager.java
index 2cf72fe..ad7fc3d 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/instancemanager/CastleManager.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/instancemanager/CastleManager.java
@@ -200,18 +200,6 @@
return hasOwnedCastle;
}
- public final void validateTaxes(int sealStrifeOwner)
- {
- final int maxTax = 15;
- for (Castle castle : _castles)
- {
- if (castle.getTaxPercent() > maxTax)
- {
- castle.setTaxPercent(maxTax);
- }
- }
- }
-
public int getCirclet()
{
return getCircletByCastleId(1);
@@ -343,4 +331,4 @@
{
protected static final CastleManager _instance = new CastleManager();
}
-}
+}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/L2SiegeClan.java b/L2J_Server/java/com/l2jserver/gameserver/model/L2SiegeClan.java
index 996ad23..a92be60 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/model/L2SiegeClan.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/L2SiegeClan.java
@@ -22,6 +22,7 @@
import javolution.util.FastList;
+import com.l2jserver.gameserver.enums.SiegeClanType;
import com.l2jserver.gameserver.model.actor.L2Npc;
public class L2SiegeClan
@@ -30,14 +31,6 @@
private List<L2Npc> _flag = new FastList<>();
private int _numFlagsAdded = 0;
private SiegeClanType _type;
-
- public enum SiegeClanType
- {
- OWNER,
- DEFENDER,
- ATTACKER,
- DEFENDER_PENDING
- }
public L2SiegeClan(int clanId, SiegeClanType type)
{
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java b/L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
index 0ff04ee..b4d4380 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
@@ -80,6 +80,7 @@
import com.l2jserver.gameserver.datatables.RecipeData;
import com.l2jserver.gameserver.datatables.SkillData;
import com.l2jserver.gameserver.datatables.SkillTreesData;
+import com.l2jserver.gameserver.enums.CastleSide;
import com.l2jserver.gameserver.enums.CategoryType;
import com.l2jserver.gameserver.enums.HtmlActionScope;
import com.l2jserver.gameserver.enums.IllegalActionPunishmentType;
@@ -5522,6 +5523,10 @@
{
increasePvpKills(target);
}
+ }
+ else if (targetPlayer.isOnDarkSide()) // Member's of Dark side can be killed without any penalty
+ {
+ increasePvpKills(target);
}
else if (targetPlayer.getPvpFlag() == 0) // Target player doesn't have karma
{
@@ -14414,4 +14419,32 @@
{
getVariables().set(WORLD_CHAT_VARIABLE_NAME, points);
}
+
+ /**
+ * @return Side of the player.
+ */
+ public CastleSide getPlayerSide()
+ {
+ if ((getClan() == null) || (getClan().getCastleId() == 0))
+ {
+ return CastleSide.NEUTRAL;
+ }
+ return CastleManager.getInstance().getCastleById(getClan().getCastleId()).getSide();
+ }
+
+ /**
+ * @return {@code true} if player is on Dark side, {@code false} otherwise.
+ */
+ public boolean isOnDarkSide()
+ {
+ return getPlayerSide() == CastleSide.DARK;
+ }
+
+ /**
+ * @return {@code true} if player is on Light side, {@code false} otherwise.
+ */
+ public boolean isOnLightSide()
+ {
+ return getPlayerSide() == CastleSide.LIGHT;
+ }
}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/conditions/ConditionPlayerIsOnSide.java b/L2J_Server/java/com/l2jserver/gameserver/model/conditions/ConditionPlayerIsOnSide.java
new file mode 100644
index 0000000..9aeb9d6
--- /dev/null
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/conditions/ConditionPlayerIsOnSide.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2004-2015 L2J Server
+ *
+ * This file is part of L2J Server.
+ *
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model.conditions;
+
+import com.l2jserver.gameserver.enums.CastleSide;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.items.L2Item;
+import com.l2jserver.gameserver.model.skills.Skill;
+
+/**
+ * The Class ConditionPlayerIsOnSide.
+ * @author St3eT
+ */
+public class ConditionPlayerIsOnSide extends Condition
+{
+ private final CastleSide _side;
+
+ /**
+ * Instantiates a new condition player race.
+ * @param side the allowed Castle side.
+ */
+ public ConditionPlayerIsOnSide(CastleSide side)
+ {
+ _side = side;
+ }
+
+ @Override
+ public boolean testImpl(L2Character effector, L2Character effected, Skill skill, L2Item item)
+ {
+ if ((effector == null) || !effector.isPlayer())
+ {
+ return false;
+ }
+ return effector.getActingPlayer().getPlayerSide() == _side;
+ }
+}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/entity/Castle.java b/L2J_Server/java/com/l2jserver/gameserver/model/entity/Castle.java
index b655d8f..d40b242 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/model/entity/Castle.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/entity/Castle.java
@@ -25,6 +25,7 @@
import java.util.Calendar;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -33,8 +34,11 @@
import com.l2jserver.Config;
import com.l2jserver.L2DatabaseFactory;
import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.datatables.CastleData;
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.datatables.DoorTable;
+import com.l2jserver.gameserver.datatables.NpcData;
+import com.l2jserver.gameserver.enums.CastleSide;
import com.l2jserver.gameserver.enums.MountType;
import com.l2jserver.gameserver.instancemanager.CastleManager;
import com.l2jserver.gameserver.instancemanager.CastleManorManager;
@@ -43,31 +47,40 @@
import com.l2jserver.gameserver.instancemanager.ZoneManager;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.L2Spawn;
import com.l2jserver.gameserver.model.TowerSpawn;
+import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2ArtefactInstance;
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
+import com.l2jserver.gameserver.model.holders.CastleSpawnHolder;
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
+import com.l2jserver.gameserver.model.skills.CommonSkill;
+import com.l2jserver.gameserver.model.skills.Skill;
import com.l2jserver.gameserver.model.zone.type.L2CastleZone;
import com.l2jserver.gameserver.model.zone.type.L2ResidenceTeleportZone;
import com.l2jserver.gameserver.model.zone.type.L2SiegeZone;
import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.ExCastleState;
import com.l2jserver.gameserver.network.serverpackets.PlaySound;
import com.l2jserver.gameserver.network.serverpackets.PledgeShowInfoUpdate;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+import com.l2jserver.gameserver.util.Broadcast;
public final class Castle extends AbstractResidence
{
protected static final Logger _log = Logger.getLogger(Castle.class.getName());
private final List<L2DoorInstance> _doors = new ArrayList<>();
+ private final List<L2Npc> _sideNpcs = new ArrayList<>();
private int _ownerId = 0;
private Siege _siege = null;
private Calendar _siegeDate;
private boolean _isTimeRegistrationOver = true; // true if Castle Lords set the time, or 24h is elapsed after the siege
private Calendar _siegeTimeRegistrationEndDate; // last siege end date + 1 day
- private int _taxPercent = 0;
- private double _taxRate = 0;
+ private CastleSide _castleSide = null;
+ private double _taxRate;
private long _treasury = 0;
private boolean _showNpcCrest = false;
private L2SiegeZone _zone = null;
@@ -231,11 +244,9 @@
{
super(castleId);
load();
- /*
- * if (getResidenceId() == 7 || castleId == 9) // Goddard and Schuttgart _nbArtifact = 2;
- */
_function = new FastMap<>();
initResidenceZone();
+ spawnSideNpcs();
if (getOwnerId() != 0)
{
loadFunctions();
@@ -257,15 +268,17 @@
return null;
}
- public synchronized void engrave(L2Clan clan, L2Object target)
+ public synchronized void engrave(L2Clan clan, L2Object target, CastleSide side)
{
if (!_artefacts.contains(target))
{
return;
}
+ setSide(side);
setOwner(clan);
final SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_HAS_SUCCEEDED_IN_S2);
msg.addString(clan.getName());
+ msg.addString(getName());
getSiege().announceToPlayer(msg, true);
}
@@ -282,34 +295,42 @@
return;
}
- if (getName().equalsIgnoreCase("Schuttgart") || getName().equalsIgnoreCase("Goddard"))
+ switch (getName().toLowerCase())
{
- Castle rune = CastleManager.getInstance().getCastle("rune");
- if (rune != null)
+ case "schuttgart":
+ case "goddard":
{
- long runeTax = (long) (amount * rune.getTaxRate());
- if (rune.getOwnerId() > 0)
+ final Castle rune = CastleManager.getInstance().getCastle("rune");
+ if (rune != null)
{
- rune.addToTreasury(runeTax);
+ final long runeTax = (long) (amount * rune.getTaxRate());
+ if (rune.getOwnerId() > 0)
+ {
+ rune.addToTreasury(runeTax);
+ }
+ amount -= runeTax;
}
- amount -= runeTax;
+ break;
+ }
+ case "dion":
+ case "giran":
+ case "gludio":
+ case "innadril":
+ case "oren":
+ {
+ final Castle aden = CastleManager.getInstance().getCastle("aden");
+ if (aden != null)
+ {
+ final long adenTax = (long) (amount * aden.getTaxRate()); // Find out what Aden gets from the current castle instance's income
+ if (aden.getOwnerId() > 0)
+ {
+ aden.addToTreasury(adenTax); // Only bother to really add the tax to the treasury if not npc owned
+ }
+ amount -= adenTax; // Subtract Aden's income from current castle instance's income
+ }
+ break;
}
}
- if (!getName().equalsIgnoreCase("aden") && !getName().equalsIgnoreCase("Rune") && !getName().equalsIgnoreCase("Schuttgart") && !getName().equalsIgnoreCase("Goddard")) // If current castle instance is not Aden, Rune, Goddard or Schuttgart.
- {
- Castle aden = CastleManager.getInstance().getCastle("aden");
- if (aden != null)
- {
- long adenTax = (long) (amount * aden.getTaxRate()); // Find out what Aden gets from the current castle instance's income
- if (aden.getOwnerId() > 0)
- {
- aden.addToTreasury(adenTax); // Only bother to really add the tax to the treasury if not npc owned
- }
-
- amount -= adenTax; // Subtract Aden's income from current castle instance's income
- }
- }
-
addToTreasuryNoTax(amount);
}
@@ -513,6 +534,7 @@
{
removeResidentialSkills(member);
member.sendSkillList();
+ member.broadcastUserInfo();
}
}
}
@@ -559,6 +581,7 @@
clan.broadcastToOnlineMembers(new PledgeShowInfoUpdate(clan));
}
+ setSide(CastleSide.NEUTRAL);
updateOwnerInDB(null);
if (getSiege().isInProgress())
{
@@ -570,24 +593,6 @@
removeFunction(fc);
}
_function.clear();
- }
-
- public void setTaxPercent(int taxPercent)
- {
- _taxPercent = taxPercent;
- _taxRate = _taxPercent / 100.0;
-
- try (Connection con = L2DatabaseFactory.getInstance().getConnection();
- PreparedStatement ps = con.prepareStatement("UPDATE castle SET taxPercent = ? WHERE id = ?"))
- {
- ps.setInt(1, taxPercent);
- ps.setInt(2, getResidenceId());
- ps.execute();
- }
- catch (Exception e)
- {
- _log.log(Level.WARNING, e.getMessage(), e);
- }
}
/**
@@ -642,7 +647,8 @@
_siegeTimeRegistrationEndDate.setTimeInMillis(rs.getLong("regTimeEnd"));
_isTimeRegistrationOver = rs.getBoolean("regTimeOver");
- _taxPercent = rs.getInt("taxPercent");
+ _castleSide = Enum.valueOf(CastleSide.class, rs.getString("side"));
+
_treasury = rs.getLong("treasury");
_showNpcCrest = rs.getBoolean("showNpcCrest");
@@ -650,8 +656,8 @@
_ticketBuyCount = rs.getInt("ticketBuyCount");
}
}
- _taxRate = _taxPercent / 100.0;
+ setTaxRate(getTaxPercent() / 100);
ps2.setInt(1, getResidenceId());
try (ResultSet rs = ps2.executeQuery())
{
@@ -945,7 +951,25 @@
public final int getTaxPercent()
{
- return _taxPercent;
+ final int taxPercent;
+ switch (getSide())
+ {
+ case LIGHT:
+ taxPercent = Config.CASTLE_TAX_LIGHT;
+ break;
+ case DARK:
+ taxPercent = Config.CASTLE_TAX_DARK;
+ break;
+ default:
+ taxPercent = Config.CASTLE_TAX_NEUTRAL;
+ break;
+ }
+ return taxPercent;
+ }
+
+ public void setTaxRate(double taxRate)
+ {
+ _taxRate = taxRate;
}
public final double getTaxRate()
@@ -1122,9 +1146,90 @@
}
}
- // TODO: Implement me
- public int getState()
+ @Override
+ public void giveResidentialSkills(L2PcInstance player)
{
- return 1;
+ super.giveResidentialSkills(player);
+ final Skill skill = getSide() == CastleSide.DARK ? CommonSkill.ABILITY_OF_DARKNESS.getSkill() : CommonSkill.ABILITY_OF_LIGHT.getSkill();
+ player.addSkill(skill);
+ }
+
+ @Override
+ public void removeResidentialSkills(L2PcInstance player)
+ {
+ super.removeResidentialSkills(player);
+ player.removeSkill(CommonSkill.ABILITY_OF_DARKNESS.getId());
+ player.removeSkill(CommonSkill.ABILITY_OF_LIGHT.getId());
+ }
+
+ public void spawnSideNpcs()
+ {
+ _sideNpcs.stream().filter(Objects::nonNull).forEach(L2Npc::deleteMe);
+ _sideNpcs.clear();
+
+ for (CastleSpawnHolder holder : getSideSpawns())
+ {
+ if (holder != null)
+ {
+ final L2NpcTemplate npcTemplate = NpcData.getInstance().getTemplate(holder.getNpcId());
+ if (npcTemplate == null)
+ {
+ _log.warning(Castle.class.getSimpleName() + ": Spawn of the nonexisting NPC ID: " + holder.getNpcId());
+ return;
+ }
+
+ L2Spawn spawn;
+ try
+ {
+ spawn = new L2Spawn(npcTemplate);
+ }
+ catch (Exception e)
+ {
+ _log.warning(Castle.class.getSimpleName() + ": " + e.getMessage());
+ return;
+ }
+ spawn.setX(holder.getX());
+ spawn.setY(holder.getY());
+ spawn.setZ(holder.getZ());
+ spawn.setHeading(holder.getHeading());
+ final L2Npc npc = spawn.doSpawn(false);
+ npc.broadcastInfo();
+ _sideNpcs.add(npc);
+ }
+ }
+ }
+
+ public List<CastleSpawnHolder> getSideSpawns()
+ {
+ return CastleData.getInstance().getSpawnsForSide(getResidenceId(), getSide());
+ }
+
+ public void setSide(CastleSide side)
+ {
+ if (_castleSide == side)
+ {
+ return;
+ }
+
+ try (Connection con = L2DatabaseFactory.getInstance().getConnection();
+ PreparedStatement ps = con.prepareStatement("UPDATE castle SET side = ? WHERE id = ?"))
+ {
+ ps.setString(1, side.toString());
+ ps.setInt(2, getResidenceId());
+ ps.execute();
+ }
+ catch (Exception e)
+ {
+ _log.log(Level.WARNING, e.getMessage(), e);
+ }
+ _castleSide = side;
+ setTaxRate(getTaxPercent() / 100);
+ Broadcast.toAllOnlinePlayers(new ExCastleState(this));
+ spawnSideNpcs();
+ }
+
+ public CastleSide getSide()
+ {
+ return _castleSide;
}
}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/entity/FortSiege.java b/L2J_Server/java/com/l2jserver/gameserver/model/entity/FortSiege.java
index 30ad72b..8be2503 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/model/entity/FortSiege.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/entity/FortSiege.java
@@ -35,6 +35,7 @@
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.datatables.NpcData;
import com.l2jserver.gameserver.enums.FortTeleportWhoType;
+import com.l2jserver.gameserver.enums.SiegeClanType;
import com.l2jserver.gameserver.instancemanager.FortManager;
import com.l2jserver.gameserver.instancemanager.FortSiegeGuardManager;
import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
@@ -43,7 +44,6 @@
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2Object;
import com.l2jserver.gameserver.model.L2SiegeClan;
-import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
import com.l2jserver.gameserver.model.L2Spawn;
import com.l2jserver.gameserver.model.PcCondOverride;
import com.l2jserver.gameserver.model.TeleportWhereType;
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/entity/Siege.java b/L2J_Server/java/com/l2jserver/gameserver/model/entity/Siege.java
index c4e8c96..658b8cd 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/model/entity/Siege.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/entity/Siege.java
@@ -38,6 +38,7 @@
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.datatables.NpcData;
import com.l2jserver.gameserver.datatables.SiegeScheduleData;
+import com.l2jserver.gameserver.enums.SiegeClanType;
import com.l2jserver.gameserver.enums.SiegeTeleportWhoType;
import com.l2jserver.gameserver.instancemanager.CastleManager;
import com.l2jserver.gameserver.instancemanager.MercTicketManager;
@@ -47,7 +48,6 @@
import com.l2jserver.gameserver.model.L2ClanMember;
import com.l2jserver.gameserver.model.L2Object;
import com.l2jserver.gameserver.model.L2SiegeClan;
-import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
import com.l2jserver.gameserver.model.L2Spawn;
import com.l2jserver.gameserver.model.PcCondOverride;
import com.l2jserver.gameserver.model.SiegeScheduleDate;
@@ -299,6 +299,11 @@
continue;
}
+ for (L2PcInstance member : clan.getOnlineMembers(0))
+ {
+ member.checkItemRestriction();
+ }
+
clan.clearSiegeKills();
clan.clearSiegeDeaths();
}
@@ -311,6 +316,11 @@
continue;
}
+ for (L2PcInstance member : clan.getOnlineMembers(0))
+ {
+ member.checkItemRestriction();
+ }
+
clan.clearSiegeKills();
clan.clearSiegeDeaths();
}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java b/L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java
index 68e46b8..8899ff8 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/ClanHallSiegeEngine.java
@@ -35,11 +35,11 @@
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.datatables.NpcData;
+import com.l2jserver.gameserver.enums.SiegeClanType;
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
import com.l2jserver.gameserver.instancemanager.MapRegionManager;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2SiegeClan;
-import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
import com.l2jserver.gameserver.model.L2Spawn;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.Location;
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/SiegableHall.java b/L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/SiegableHall.java
index b69d928..c5d8b92 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/SiegableHall.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/entity/clanhall/SiegableHall.java
@@ -24,9 +24,9 @@
import java.util.logging.Level;
import com.l2jserver.L2DatabaseFactory;
+import com.l2jserver.gameserver.enums.SiegeClanType;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2SiegeClan;
-import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
import com.l2jserver.gameserver.model.StatsSet;
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/holders/CastleSpawnHolder.java b/L2J_Server/java/com/l2jserver/gameserver/model/holders/CastleSpawnHolder.java
new file mode 100644
index 0000000..229b6f1
--- /dev/null
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/holders/CastleSpawnHolder.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2004-2015 L2J Server
+ *
+ * This file is part of L2J Server.
+ *
+ * L2J Server is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J Server is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.model.holders;
+
+import com.l2jserver.gameserver.enums.CastleSide;
+import com.l2jserver.gameserver.model.Location;
+
+/**
+ * @author St3eT
+ */
+public class CastleSpawnHolder extends Location
+{
+ private final int _npcId;
+ private final CastleSide _side;
+
+ public CastleSpawnHolder(int npcId, CastleSide side, int x, int y, int z, int heading)
+ {
+ super(x, y, z, heading);
+ _npcId = npcId;
+ _side = side;
+ }
+
+ public final int getNpcId()
+ {
+ return _npcId;
+ }
+
+ public final CastleSide getSide()
+ {
+ return _side;
+ }
+}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/model/skills/CommonSkill.java b/L2J_Server/java/com/l2jserver/gameserver/model/skills/CommonSkill.java
index 905237c..003a36e 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/model/skills/CommonSkill.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/model/skills/CommonSkill.java
@@ -51,7 +51,11 @@
DIVINE_INSPIRATION(1405, 1),
SERVITOR_SHARE(1557, 1),
CARAVANS_SECRET_MEDICINE(2341, 1),
- SHILENS_BREATH(14571, 1);
+ SHILENS_BREATH(14571, 1),
+ IMPRIT_OF_LIGHT(19034, 1),
+ IMPRIT_OF_DARKNESS(19035, 1),
+ ABILITY_OF_LIGHT(19032, 1),
+ ABILITY_OF_DARKNESS(19033, 1);
private final SkillHolder _holder;
@@ -74,4 +78,4 @@
{
return _holder.getSkill();
}
-}
+}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/network/serverpackets/ExCastleState.java b/L2J_Server/java/com/l2jserver/gameserver/network/serverpackets/ExCastleState.java
index 4ad4bcd..f94a84d 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/network/serverpackets/ExCastleState.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/network/serverpackets/ExCastleState.java
@@ -18,6 +18,7 @@
*/
package com.l2jserver.gameserver.network.serverpackets;
+import com.l2jserver.gameserver.enums.CastleSide;
import com.l2jserver.gameserver.model.entity.Castle;
/**
@@ -26,12 +27,12 @@
public class ExCastleState extends L2GameServerPacket
{
private final int _castleId;
- private final int _state;
+ private final CastleSide _castleSide;
public ExCastleState(Castle castle)
{
_castleId = castle.getResidenceId();
- _state = castle.getState();
+ _castleSide = castle.getSide();
}
@Override
@@ -40,6 +41,6 @@
writeC(0xFE);
writeH(0x12D);
writeD(_castleId);
- writeD(_state);
+ writeD(_castleSide.ordinal());
}
}
diff --git a/L2J_Server/java/com/l2jserver/gameserver/network/serverpackets/SiegeDefenderList.java b/L2J_Server/java/com/l2jserver/gameserver/network/serverpackets/SiegeDefenderList.java
index a5b810a..b9e7474 100644
--- a/L2J_Server/java/com/l2jserver/gameserver/network/serverpackets/SiegeDefenderList.java
+++ b/L2J_Server/java/com/l2jserver/gameserver/network/serverpackets/SiegeDefenderList.java
@@ -19,6 +19,7 @@
package com.l2jserver.gameserver.network.serverpackets;
import com.l2jserver.gameserver.datatables.ClanTable;
+import com.l2jserver.gameserver.enums.SiegeClanType;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2SiegeClan;
import com.l2jserver.gameserver.model.entity.Castle;
@@ -60,69 +61,71 @@
{
writeC(0xcb);
writeD(_castle.getResidenceId());
- writeD(0x00); // 0
- writeD(0x01); // 1
- writeD(0x00); // 0
- int size = _castle.getSiege().getDefenderClans().size() + _castle.getSiege().getDefenderWaitingClans().size();
- if (size > 0)
+ writeD(0x00); // Unknown
+ writeD(0x01); // Unknown
+ writeD(0x00); // Unknown
+
+ final int size = _castle.getSiege().getDefenderWaitingClans().size() + _castle.getSiege().getDefenderClans().size() + (_castle.getOwner() != null ? 1 : 0);
+
+ writeD(size);
+ writeD(size);
+
+ // Add owners
+ final L2Clan ownerClan = _castle.getOwner();
+ if (ownerClan != null)
{
- L2Clan clan;
-
- writeD(size);
- writeD(size);
- // Listing the Lord and the approved clans
- for (L2SiegeClan siegeclan : _castle.getSiege().getDefenderClans())
- {
- clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
- if (clan == null)
- {
- continue;
- }
-
- writeD(clan.getId());
- writeS(clan.getName());
- writeS(clan.getLeaderName());
- writeD(clan.getCrestId());
- writeD(0x00); // signed time (seconds) (not storated by L2J)
- switch (siegeclan.getType())
- {
- case OWNER:
- writeD(0x01); // owner
- break;
- case DEFENDER_PENDING:
- writeD(0x02); // approved
- break;
- case DEFENDER:
- writeD(0x03); // waiting approved
- break;
- default:
- writeD(0x00);
- break;
- }
- writeD(clan.getAllyId());
- writeS(clan.getAllyName());
- writeS(""); // AllyLeaderName
- writeD(clan.getAllyCrestId());
- }
- for (L2SiegeClan siegeclan : _castle.getSiege().getDefenderWaitingClans())
- {
- clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
- writeD(clan.getId());
- writeS(clan.getName());
- writeS(clan.getLeaderName());
- writeD(clan.getCrestId());
- writeD(0x00); // signed time (seconds) (not storated by L2J)
- writeD(0x02); // waiting approval
- writeD(clan.getAllyId());
- writeS(clan.getAllyName());
- writeS(""); // AllyLeaderName
- writeD(clan.getAllyCrestId());
- }
+ writeD(ownerClan.getId());
+ writeS(ownerClan.getName());
+ writeS(ownerClan.getLeaderName());
+ writeD(ownerClan.getCrestId());
+ writeD(0x00); // signed time (seconds) (not storated by L2J)
+ writeD(SiegeClanType.OWNER.ordinal());
+ writeD(ownerClan.getAllyId());
+ writeS(ownerClan.getAllyName());
+ writeS(""); // AllyLeaderName
+ writeD(ownerClan.getAllyCrestId());
}
- else
+
+ // List of confirmed defenders
+ for (L2SiegeClan siegeClan : _castle.getSiege().getDefenderClans())
{
- writeD(0x00);
- writeD(0x00);
+ final L2Clan defendingClan = ClanTable.getInstance().getClan(siegeClan.getClanId());
+ if ((defendingClan == null) || (defendingClan == _castle.getOwner()))
+ {
+ continue;
+ }
+
+ writeD(defendingClan.getId());
+ writeS(defendingClan.getName());
+ writeS(defendingClan.getLeaderName());
+ writeD(defendingClan.getCrestId());
+ writeD(0x00); // signed time (seconds) (not storated by L2J)
+ writeD(SiegeClanType.DEFENDER.ordinal());
+ writeD(defendingClan.getAllyId());
+ writeS(defendingClan.getAllyName());
+ writeS(""); // AllyLeaderName
+ writeD(defendingClan.getAllyCrestId());
+ }
+
+ // List of not confirmed defenders
+ for (L2SiegeClan siegeClan : _castle.getSiege().getDefenderWaitingClans())
+ {
+ final L2Clan defendingClan = ClanTable.getInstance().getClan(siegeClan.getClanId());
+ if (defendingClan == null)
+ {
+ continue;
+ }
+
+ writeD(defendingClan.getId());
+ writeS(defendingClan.getName());
+ writeS(defendingClan.getLeaderName());
+ writeD(defendingClan.getCrestId());
+ writeD(0x00); // signed time (seconds) (not storated by L2J)
+ writeD(SiegeClanType.DEFENDER_PENDING.ordinal());
+ writeD(defendingClan.getAllyId());
+ writeS(defendingClan.getAllyName());
+ writeS(""); // AllyLeaderName
+ writeD(defendingClan.getAllyCrestId());
}
}
}
diff --git a/L2J_DataPack/dist/game/config/adminCommands.xml b/L2J_DataPack/dist/game/config/adminCommands.xml
index a1b7b06..da1e8b5 100644
--- a/L2J_DataPack/dist/game/config/adminCommands.xml
+++ b/L2J_DataPack/dist/game/config/adminCommands.xml
@@ -463,26 +463,16 @@
<admin command="admin_server_restart" accessLevel="7" confirmDlg="true" />
<admin command="admin_server_abort" accessLevel="7" />
- <!-- ADMIN SIEGE -->
- <admin command="admin_siege" accessLevel="7" />
- <admin command="admin_add_attacker" accessLevel="7" />
- <admin command="admin_add_defender" accessLevel="7" />
- <admin command="admin_add_guard" accessLevel="7" />
- <admin command="admin_list_siege_clans" accessLevel="7" />
- <admin command="admin_clear_siege_list" accessLevel="7" />
- <admin command="admin_move_defenders" accessLevel="7" />
- <admin command="admin_spawn_doors" accessLevel="7" />
- <admin command="admin_endsiege" accessLevel="7" />
- <admin command="admin_startsiege" accessLevel="7" />
- <admin command="admin_setsiegetime" accessLevel="7" />
- <admin command="admin_setcastle" accessLevel="7" />
- <admin command="admin_removecastle" accessLevel="7" />
+ <!-- ADMIN CLAN HALL -->
<admin command="admin_clanhall" accessLevel="7" />
<admin command="admin_clanhallset" accessLevel="7" />
<admin command="admin_clanhalldel" accessLevel="7" />
<admin command="admin_clanhallopendoors" accessLevel="7" />
<admin command="admin_clanhallclosedoors" accessLevel="7" />
<admin command="admin_clanhallteleportself" accessLevel="7" />
+
+ <!-- ADMIN CASTLE -->
+ <admin command="admin_castlemanage" accessLevel="7" />
<!-- ADMIN SKILL -->
<admin command="admin_show_skills" accessLevel="7" />
diff --git a/L2J_DataPack/dist/game/data/buylists/0351001.xml b/L2J_DataPack/dist/game/data/buylists/0351001.xml
index 3dd1443..44f5d3c 100644
--- a/L2J_DataPack/dist/game/data/buylists/0351001.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0351001.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35100</npc> <!-- Sayres -->
+ <npc>35100</npc> <!-- Chamberlain of Light (Gludio) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0351421.xml b/L2J_DataPack/dist/game/data/buylists/0351421.xml
index ae3f92e..7a5a3b0 100644
--- a/L2J_DataPack/dist/game/data/buylists/0351421.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0351421.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35142</npc> <!-- Crosby -->
+ <npc>35142</npc> <!-- Chamberlain of Light (Dion) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16116" count="1" restock_delay="1440" /> <!-- Recipe - Chick Silver Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16128" count="10" restock_delay="60" /> <!-- Fabric of Chic Silver Horn Cap -->
+ <item id="36053" price="21000000" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0351841.xml b/L2J_DataPack/dist/game/data/buylists/0351841.xml
index 2337367..e2aa129 100644
--- a/L2J_DataPack/dist/game/data/buylists/0351841.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0351841.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35184</npc> <!-- Saul -->
+ <npc>35184</npc> <!-- Chamberlain of Light (Giran) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" price="21000000" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0352261.xml b/L2J_DataPack/dist/game/data/buylists/0352261.xml
index 68c5b77..232678c 100644
--- a/L2J_DataPack/dist/game/data/buylists/0352261.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0352261.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35226</npc> <!-- Brasseur -->
+ <npc>35226</npc> <!-- Chamberlain of Light (Oren) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16116" count="1" restock_delay="1440" /> <!-- Recipe - Chick Silver Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16128" count="10" restock_delay="60" /> <!-- Fabric of Chic Silver Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0352741.xml b/L2J_DataPack/dist/game/data/buylists/0352741.xml
index 61ecc72..d4227a4 100644
--- a/L2J_DataPack/dist/game/data/buylists/0352741.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0352741.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35274</npc> <!-- Logan -->
+ <npc>35274</npc> <!-- Chamberlain of Light (Aden) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0353161.xml b/L2J_DataPack/dist/game/data/buylists/0353161.xml
index 02d15c2..96ab1aa 100644
--- a/L2J_DataPack/dist/game/data/buylists/0353161.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0353161.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35316</npc> <!-- Neurath -->
+ <npc>35316</npc> <!-- Chamberlain of Light (Innadril) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16116" count="1" restock_delay="1440" /> <!-- Recipe - Chick Silver Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16128" count="10" restock_delay="60" /> <!-- Fabric of Chic Silver Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0353631.xml b/L2J_DataPack/dist/game/data/buylists/0353631.xml
index 6691cc6..036f800 100644
--- a/L2J_DataPack/dist/game/data/buylists/0353631.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0353631.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35363</npc> <!-- Alfred -->
+ <npc>35363</npc> <!-- Chamberlain of Light (Goddard) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0355091.xml b/L2J_DataPack/dist/game/data/buylists/0355091.xml
index cbf4da0..3283ee0 100644
--- a/L2J_DataPack/dist/game/data/buylists/0355091.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0355091.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35509</npc> <!-- Frederick -->
+ <npc>35509</npc> <!-- Chamberlain of Light (Rune) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16116" count="1" restock_delay="1440" /> <!-- Recipe - Chick Silver Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16128" count="10" restock_delay="60" /> <!-- Fabric of Chic Silver Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0355551.xml b/L2J_DataPack/dist/game/data/buylists/0355551.xml
index fbb46d4..199a7f6 100644
--- a/L2J_DataPack/dist/game/data/buylists/0355551.xml
+++ b/L2J_DataPack/dist/game/data/buylists/0355551.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
<npcs>
- <npc>35555</npc> <!-- August -->
+ <npc>35555</npc> <!-- Chamberlain of Light (Schuttgard) -->
</npcs>
<item id="6316" /> <!-- Food for Wyvern -->
<item id="7015" /> <!-- Shield of Castle Pledge -->
@@ -15,4 +15,5 @@
<item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
<item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
<item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366531.xml b/L2J_DataPack/dist/game/data/buylists/0366531.xml
new file mode 100644
index 0000000..4b63f65
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366531.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36653</npc> <!-- Chamberlain of Darkness (Gludio) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="6838" /> <!-- Circlet of Gludio -->
+ <item id="9607" /> <!-- Agathion Seal Bracelet - Gludio -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366541.xml b/L2J_DataPack/dist/game/data/buylists/0366541.xml
new file mode 100644
index 0000000..cac2152
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366541.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36654</npc> <!-- Chamberlain of Darkness (Dion) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="6835" /> <!-- Circlet of Dion -->
+ <item id="9608" /> <!-- Agathion Seal Bracelet - Dion -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16116" count="1" restock_delay="1440" /> <!-- Recipe - Chick Silver Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16128" count="10" restock_delay="60" /> <!-- Fabric of Chic Silver Horn Cap -->
+ <item id="36053" price="21000000" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366551.xml b/L2J_DataPack/dist/game/data/buylists/0366551.xml
new file mode 100644
index 0000000..a8b2938
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366551.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36655</npc> <!-- Chamberlain of Darkness (Giran) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="6839" /> <!-- Circlet of Giran -->
+ <item id="9609" /> <!-- Agathion Seal Bracelet - Giran -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" price="21000000" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366561.xml b/L2J_DataPack/dist/game/data/buylists/0366561.xml
new file mode 100644
index 0000000..775d22f
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366561.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36656</npc> <!-- Chamberlain of Darkness (Oren) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="6837" /> <!-- Circlet of Oren -->
+ <item id="9610" /> <!-- Agathion Seal Bracelet - Oren -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16116" count="1" restock_delay="1440" /> <!-- Recipe - Chick Silver Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16128" count="10" restock_delay="60" /> <!-- Fabric of Chic Silver Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366571.xml b/L2J_DataPack/dist/game/data/buylists/0366571.xml
new file mode 100644
index 0000000..1deced0
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366571.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36657</npc> <!-- Chamberlain of Darkness (Aden) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="6840" /> <!-- Circlet of Aden -->
+ <item id="9611" /> <!-- Agathion Seal Bracelet - Aden -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366581.xml b/L2J_DataPack/dist/game/data/buylists/0366581.xml
new file mode 100644
index 0000000..cb9d885
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366581.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36658</npc> <!-- Chamberlain of Light (Innadril) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="6834" /> <!-- Circlet of Innadril -->
+ <item id="9612" /> <!-- Agathion Seal Bracelet - Innadril -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16116" count="1" restock_delay="1440" /> <!-- Recipe - Chick Silver Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16128" count="10" restock_delay="60" /> <!-- Fabric of Chic Silver Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366591.xml b/L2J_DataPack/dist/game/data/buylists/0366591.xml
new file mode 100644
index 0000000..41a94aa
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366591.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36659</npc> <!-- Chamberlain of Darkness (Goddard) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="6836" /> <!-- Goddard Circlet -->
+ <item id="9613" /> <!-- Agathion Seal Bracelet - Goddard -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366601.xml b/L2J_DataPack/dist/game/data/buylists/0366601.xml
new file mode 100644
index 0000000..1a505f4
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366601.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36660</npc> <!-- Chamberlain of Darkness (Rune) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="8182" /> <!-- Circlet of Rune -->
+ <item id="9614" /> <!-- Agathion Seal Bracelet - Rune -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16116" count="1" restock_delay="1440" /> <!-- Recipe - Chick Silver Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16128" count="10" restock_delay="60" /> <!-- Fabric of Chic Silver Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/buylists/0366611.xml b/L2J_DataPack/dist/game/data/buylists/0366611.xml
new file mode 100644
index 0000000..99762cf
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/buylists/0366611.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/buylist.xsd">
+ <npcs>
+ <npc>36661</npc> <!-- Chamberlain of Darkness (Schuttgard) -->
+ </npcs>
+ <item id="6316" /> <!-- Food for Wyvern -->
+ <item id="7015" /> <!-- Shield of Castle Pledge -->
+ <item id="8183" /> <!-- Circlet of Schuttgart -->
+ <item id="9615" /> <!-- Agathion Seal Bracelet - Schuttgart -->
+ <item id="13686" /> <!-- Sealed Knight's Cloak -->
+ <item id="8751" count="1" restock_delay="120" /> <!-- High-Grade Life Stone - Level 70 -->
+ <item id="8752" count="1" restock_delay="240" /> <!-- High-Grade Life Stone - Level 76 -->
+ <item id="8761" count="1" restock_delay="360" /> <!-- Top-Grade Life Stone - Level 70 -->
+ <item id="9898" count="1" restock_delay="480" /> <!-- SP Scroll: Highest Grade -->
+ <item id="16115" count="1" restock_delay="1440" /> <!-- Recipe - Chick Gold Horn Cap (10%) -->
+ <item id="8762" count="1" restock_delay="720" /> <!-- Top-Grade Life Stone - Level 76 -->
+ <item id="16127" count="10" restock_delay="60" /> <!-- Fabric of Chic Gold Horn Cap -->
+ <item id="36053" /> <!-- Clan Cloak - Castle -->
+</list>
diff --git a/L2J_DataPack/dist/game/data/castles/Aden.xml b/L2J_DataPack/dist/game/data/castles/Aden.xml
new file mode 100644
index 0000000..60026b5
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Aden.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="5"> <!-- Aden Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35274" x="147412" y="3355" z="-46" heading="16389"/> <!-- Chamberlain of Light -->
+ <npc id="36613" x="146749" y="25894" z="-2013" heading="0"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36657" x="147412" y="3355" z="-46" heading="16389"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/castles/Dion.xml b/L2J_DataPack/dist/game/data/castles/Dion.xml
new file mode 100644
index 0000000..2da0c30
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Dion.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="2"> <!-- Dion Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35142" x="22172" y="160923" z="-2666" heading="49152"/> <!-- Chamberlain of Light -->
+ <npc id="36610" x="15756" y="142848" z="-2706" heading="13605"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36654" x="22172" y="160923" z="-2666" heading="49152"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/castles/Giran.xml b/L2J_DataPack/dist/game/data/castles/Giran.xml
new file mode 100644
index 0000000..a701bd6
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Giran.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="3"> <!-- Giran Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35184" x="117095" y="144997" z="-2539" heading="32768"/> <!-- Chamberlain of Light -->
+ <npc id="36611" x="83312" y="147907" z="-3404" heading="16400"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36655" x="117095" y="144997" z="-2539" heading="32768"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/castles/Gludio.xml b/L2J_DataPack/dist/game/data/castles/Gludio.xml
new file mode 100644
index 0000000..15aa00e
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Gludio.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="1"> <!-- Gludio Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35100" x="-18212" y="108827" z="-2472" heading="16384"/> <!-- Chamberlain of Light -->
+ <npc id="36609" x="-14491" y="124176" z="-3120" heading="61450"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36653" x="-18212" y="108827" z="-2472" heading="16384"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/castles/Goddard.xml b/L2J_DataPack/dist/game/data/castles/Goddard.xml
new file mode 100644
index 0000000..3b44db9
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Goddard.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="7"> <!-- Goddard Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35363" x="147408" y="-49296" z="-2120" heading="16500"/> <!-- Chamberlain of Light -->
+ <npc id="36615" x="147890" y="-55228" z="-2738" heading="49150"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36659" x="147408" y="-49296" z="-2120" heading="16500"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/castles/Innadril.xml b/L2J_DataPack/dist/game/data/castles/Innadril.xml
new file mode 100644
index 0000000..c77c725
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Innadril.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="6"> <!-- Innadril Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35316" x="116123" y="249702" z="-762" heading="49152"/> <!-- Chamberlain of Light -->
+ <npc id="36614" x="111449" y="219419" z="-3547" heading="49150"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36658" x="116123" y="249702" z="-762" heading="49152"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/castles/Oren.xml b/L2J_DataPack/dist/game/data/castles/Oren.xml
new file mode 100644
index 0000000..ae5a93b
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Oren.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="4"> <!-- Oren Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35226" x="83171" y="37092" z="-2266" heading="32768"/> <!-- Chamberlain of Light -->
+ <npc id="36612" x="83020" y="53263" z="-1496" heading="31000"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36656" x="83171" y="37092" z="-2266" heading="32768"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/castles/Rune.xml b/L2J_DataPack/dist/game/data/castles/Rune.xml
new file mode 100644
index 0000000..6fd4e7c
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Rune.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="8"> <!-- Rune Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35509" x="10211" y="-49084" z="-307" heading="58824"/> <!-- Chamberlain of Light -->
+ <npc id="36616" x="43893" y="-47668" z="-789" heading="47430"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36660" x="10211" y="-49084" z="-307" heading="58824"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/castles/Schuttgard.xml b/L2J_DataPack/dist/game/data/castles/Schuttgard.xml
new file mode 100644
index 0000000..34bd999
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/castles/Schuttgard.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/castleData.xsd">
+ <castle id="9"> <!-- Schuttgard Castle -->
+ <spawn castleSide="LIGHT">
+ <npc id="35555" x="77488" y="-153360" z="-384" heading="16500"/> <!-- Chamberlain of Light -->
+ <npc id="36617" x="87136" y="-143472" z="-1293" heading="16563"/> <!-- Proclaimer -->
+ </spawn>
+ <spawn castleSide="DARK">
+ <npc id="36661" x="77488" y="-153360" z="-384" heading="16500"/> <!-- Chamberlain of Darkness -->
+ </spawn>
+ </castle>
+</list>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/admin/castlemanage.htm b/L2J_DataPack/dist/game/data/html/admin/castlemanage.htm
new file mode 100644
index 0000000..9046125
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/html/admin/castlemanage.htm
@@ -0,0 +1,38 @@
+<html><title>Admin Castle Manage</title><body>
+<center>
+ <center>
+ <table width="270" border="0" bgcolor="444444">
+ <tr>
+ <td><button value="Main" action="bypass -h admin_admin" width="65" height="21" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" /></td>
+ <td><button value="Char" action="bypass -h admin_admin6" width="65" height="21" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" /></td>
+ <td><button value="Game" action="bypass -h admin_admin2" width="65" height="21" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" /></td>
+ <td><button value="GM" action="bypass -h admin_admin7" width="65" height="21" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" /></td>
+ </tr>
+ </table>
+ <br>
+ <font color="LEVEL">Castle manage admin menu</font><br>
+ <table width="270" border="0" bgcolor="444444">
+ <tr>
+ <td><button value="Rune Castle" action="bypass -h admin_castlemanage rune" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td><button value="Aden Castle" action="bypass -h admin_castlemanage aden" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ <tr>
+ <td><button value="Goddard Castle" action="bypass -h admin_castlemanage goddard" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td><button value="Schuttgard Castle" action="bypass -h admin_castlemanage schuttgard" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ <tr>
+ <td><button value="Gludio Castle" action="bypass -h admin_castlemanage gludio" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td><button value="Dion Castle" action="bypass -h admin_castlemanage dion" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ <tr>
+ <td><button value="Giran Castle" action="bypass -h admin_castlemanage giran" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td><button value="Oren Castle" action="bypass -h admin_castlemanage oren" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ </table>
+ <table width="275" border="0" bgcolor="444444">
+ <tr>
+ <td><center><button value="Innadril Castle" action="bypass -h admin_castlemanage innadril" width=125 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></center></td>
+ </tr>
+ </table>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/admin/castlemanage_selected.htm b/L2J_DataPack/dist/game/data/html/admin/castlemanage_selected.htm
new file mode 100644
index 0000000..674dab0
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/html/admin/castlemanage_selected.htm
@@ -0,0 +1,59 @@
+<html><title>Admin Castle Manage</title><body>
+<center>
+<table width=270>
+<tr>
+<td width=45><button value="Main" action="bypass admin_admin" width=45 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td width=180><center>Admin Castle Manage</center></td>
+<td width=45><button value="Back" action="bypass admin_castlemanage" width=45 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+</tr>
+</table>
+<br>
+<font color=""><button action="" value="%castleName% Castle Info" width=270 height=21 back="L2UI_CT1.OlympiadWnd_DF_Watch_Down" fore="L2UI_CT1.OlympiadWnd_DF_Watch"></font>
+ <table width="270" border="0" bgcolor="444444">
+ <tr>
+ <td>Owner:</td>
+ <td><font color="LEVEL">%ownerName%<font></td>
+ </tr>
+ <tr>
+ <td>Clan:</td>
+ <td><font color="LEVEL">%ownerClan%<font></td>
+ </tr>
+ <tr>
+ <td>Castle Side:</td>
+ <td><font color="LEVEL">%castleSide%<font></td>
+ </tr>
+ <tr>
+ <td>Siege Info:</td>
+ <td><button value="Show me" action="bypass admin_castlemanage %castleId% showRegWindow" width=85 height=18 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ </table>
+ <br><br>
+ <button action="" value="Castle Manage" width=270 height=21 back="L2UI_CT1.OlympiadWnd_DF_Watch_Down" fore="L2UI_CT1.OlympiadWnd_DF_Watch">
+ <table width=256 border=0 bgcolor="444444">
+ <tr>
+ <td align=center><button value="Give Castle" action="bypass admin_castlemanage %castleId% setOwner $ebox" width=128 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td align=center><combobox width=120 height=17 var=ebox list=Light;Dark></td>
+ </tr>
+ <tr>
+ <td align=center><button value="Take Castle" action="bypass admin_castlemanage %castleId% takeCastle" width=130 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td align=center><button value="Switch Sides" action="bypass admin_castlemanage %castleId% switchSide" width=130 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ </table>
+ <br><br>
+ <button action="" value="Siege Manage" width=270 height=21 back="L2UI_CT1.OlympiadWnd_DF_Watch_Down" fore="L2UI_CT1.OlympiadWnd_DF_Watch">
+ <table width=256 border=0 bgcolor="444444">
+ <tr>
+ <td align=center><button value="Add Attacker" action="bypass admin_castlemanage %castleId% addAttacker" width=128 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td align=center><button value="Remove Attacker" action="bypass admin_castlemanage %castleId% removeAttacker" width=128 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ <tr>
+ <td align=center><button value="Add Deffender" action="bypass admin_castlemanage %castleId% addDeffender" width=128 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td align=center><button value="Remove Deffender" action="bypass admin_castlemanage %castleId% removeDeffender" width=128 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ <tr>
+ <td align=center><button value="Start Siege" action="bypass admin_castlemanage %castleId% startSiege" width=128 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ <td align=center><button value="Stop Siege" action="bypass admin_castlemanage %castleId% stopSiege" width=128 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+ </tr>
+ </table>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/admin/clanhalls.htm b/L2J_DataPack/dist/game/data/html/admin/clanhalls.htm
new file mode 100644
index 0000000..8c9fe7a
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/html/admin/clanhalls.htm
@@ -0,0 +1,21 @@
+<html><body>
+<table width=260><tr>
+<td width=45><button value="Main" action="bypass -h admin_admin" width=45 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td width=180><center>Siege/Castle/ClanHall Menu</center></td>
+<td width=45><button value="Back" action="bypass -h admin_admin2" width=45 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+</tr></table>
+<center>
+<br>Siegable Clan Halls:<br>
+<table width=270><tr>
+%siegableHalls%
+</tr></table>
+<br>Clan Halls:<br>
+<table width=270><tr>
+%clanhalls%
+</tr></table>
+<br>Free Clan Halls:<br>
+<table width=270><tr>
+%freeclanhalls%
+</tr></table>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/admin/game_menu.htm b/L2J_DataPack/dist/game/data/html/admin/game_menu.htm
index 7d1fd75..1a4b328 100644
--- a/L2J_DataPack/dist/game/data/html/admin/game_menu.htm
+++ b/L2J_DataPack/dist/game/data/html/admin/game_menu.htm
@@ -33,9 +33,9 @@
War Related:<br1>
<table width=240>
<tr>
-<td><button value="Castle / CH" action="bypass -h admin_siege" width=82 height=20 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="ClanHall" action="bypass -h admin_clanhall" width=82 height=20 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
+<td><button value="Castle" action="bypass -h admin_castlemanage" width=82 height=20 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
<td><button value="Fortress" action="bypass -h admin_fortsiege" width=82 height=20 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
-<td><button value="TerritoryWar" action="bypass -h admin_territory_war" width=82 height=20 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
</tr>
</table>
<br>
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35096.htm b/L2J_DataPack/dist/game/data/html/doormen/35096.htm
index eb545be..b7b0568 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35096.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35096.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 1, 19210001, 19210002">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 1, 19210001, 19210002">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2001">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2002">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 1, 19210001, 19210002">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 1, 19210001, 19210002">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2001">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2002">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35097.htm b/L2J_DataPack/dist/game/data/html/doormen/35097.htm
index 5bf2bba..22e33e8 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35097.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35097.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 1, 19210005, 19210006">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 1, 19210005, 19210006">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2003">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2004">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 1, 19210005, 19210006">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 1, 19210005, 19210006">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2003">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2004">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35138.htm b/L2J_DataPack/dist/game/data/html/doormen/35138.htm
index a87c0be..71da502 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35138.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35138.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 2, 20220001, 20220002">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 2, 20220001, 20220002">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2005">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2006">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 2, 20220001, 20220002">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 2, 20220001, 20220002">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2005">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2006">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35139.htm b/L2J_DataPack/dist/game/data/html/doormen/35139.htm
index 3d1c875..9e2573a 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35139.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35139.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 2, 20220005, 20220006">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 2, 20220005, 20220006">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2007">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2008">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 2, 20220005, 20220006">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 2, 20220005, 20220006">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2007">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2008">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35180.htm b/L2J_DataPack/dist/game/data/html/doormen/35180.htm
index d73a644..330a7d7 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35180.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35180.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 3, 23220001, 23220002">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 3, 23220001, 23220002">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2009">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2010">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 3, 23220001, 23220002">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 3, 23220001, 23220002">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2009">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2010">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35181.htm b/L2J_DataPack/dist/game/data/html/doormen/35181.htm
index 353f513..d80a7e0 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35181.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35181.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 3, 23220005, 23220006">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 3, 23220005, 23220006">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2011">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2012">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 3, 23220005, 23220006">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 3, 23220005, 23220006">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2011">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2012">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35222.htm b/L2J_DataPack/dist/game/data/html/doormen/35222.htm
index 7c97bd6..3c39507 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35222.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35222.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 4, 22190001, 22190002">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 4, 22190001, 22190002">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2013">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2014">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 4, 22190001, 22190002">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 4, 22190001, 22190002">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2013">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2014">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35223.htm b/L2J_DataPack/dist/game/data/html/doormen/35223.htm
index 908bce1..f558865 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35223.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35223.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 4, 22190005, 22190006">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 4, 22190005, 22190006">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2015">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2016">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 4, 22190005, 22190006">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 4, 22190005, 22190006">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2015">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2016">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35267.htm b/L2J_DataPack/dist/game/data/html/doormen/35267.htm
index 96b8a77..fa8017a 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35267.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35267.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 5, 24180001, 24180002">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 5, 24180001, 24180002">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2017">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2018">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 5, 24180001, 24180002">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 5, 24180001, 24180002">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2017">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2018">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35268.htm b/L2J_DataPack/dist/game/data/html/doormen/35268.htm
index 09809bf..7cde337 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35268.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35268.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 5, 24180012, 24180013">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 5, 24180012, 24180013">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2019">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2020">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 5, 24180012, 24180013">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 5, 24180012, 24180013">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2019">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2020">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35269.htm b/L2J_DataPack/dist/game/data/html/doormen/35269.htm
index d449c94..49fde2c 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35269.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35269.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 5, 24180004, 24180005">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 5, 24180004, 24180005">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2023">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2024">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 5, 24180004, 24180005">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 5, 24180004, 24180005">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2023">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2024">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35270.htm b/L2J_DataPack/dist/game/data/html/doormen/35270.htm
index 1c5920a..7e48b7e 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35270.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35270.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 5, 24180014, 24180015">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 5, 24180014, 24180015">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2021">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2022">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 5, 24180014, 24180015">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 5, 24180014, 24180015">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2021">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2022">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35271.htm b/L2J_DataPack/dist/game/data/html/doormen/35271.htm
index 5da2da9..0f9e64b 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35271.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35271.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 5, 24180016">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 5, 24180016">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2025">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2026">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 5, 24180016">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 5, 24180016">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2025">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2026">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35312.htm b/L2J_DataPack/dist/game/data/html/doormen/35312.htm
index 40b4a13..5d8efb2 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35312.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35312.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 6, 23250001, 23250002">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 6, 23250001, 23250002">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2027">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2028">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 6, 23250001, 23250002">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 6, 23250001, 23250002">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2027">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2028">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35313.htm b/L2J_DataPack/dist/game/data/html/doormen/35313.htm
index 6e0c1ec..2f3addf 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35313.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35313.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 6, 23250005, 23250006">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 6, 23250005, 23250006">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2029">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2030">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 6, 23250005, 23250006">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 6, 23250005, 23250006">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2029">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2030">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35337.htm b/L2J_DataPack/dist/game/data/html/doormen/35337.htm
index 8a06ede..58ecb6d 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35337.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35337.htm
@@ -1,9 +1,9 @@
<html><body>All is well, my Lord.<br>
What is your command?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 5, 24180016">Open the Terrace Gates</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 5, 24180016">Close the Terrace Gates</a><br>
-<a action="bypass -h npc_%objectId%_open_doors 5, 24180001, 24180002, 24180004, 24180005, 24180012, 24180013, 24180014, 24180015, 24180016">Open All Castle Gates</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 5, 24180001, 24180002, 24180004, 24180005, 24180012, 24180013, 24180014, 24180015, 24180016">Close All Castle Gates</a><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 5, 24180016">Open the Terrace Gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 5, 24180016">Close the Terrace Gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 5, 24180001, 24180002, 24180004, 24180005, 24180012, 24180013, 24180014, 24180015, 24180016">Open All Castle Gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 5, 24180001, 24180002, 24180004, 24180005, 24180012, 24180013, 24180014, 24180015, 24180016">Close All Castle Gates</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35356.htm b/L2J_DataPack/dist/game/data/html/doormen/35356.htm
index c49b801..a88ab9a 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35356.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35356.htm
@@ -1,11 +1,11 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 7, 24160009, 24160010">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 7, 24160009, 24160010">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_open_doors 7, 24160023">Open the Throne Room Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 7, 24160023">Close the Throne Room Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2031">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2032">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 7, 24160009, 24160010">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 7, 24160009, 24160010">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 7, 24160023">Open the Throne Room Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 7, 24160023">Close the Throne Room Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2031">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2032">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35357.htm b/L2J_DataPack/dist/game/data/html/doormen/35357.htm
index 9d8e193..727e7a7 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35357.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35357.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 7, 24160012">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 7, 24160012">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2033">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2034">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 7, 24160012">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 7, 24160012">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2033">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2034">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35358.htm b/L2J_DataPack/dist/game/data/html/doormen/35358.htm
index 6582cb0..41c2e7b 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35358.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35358.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 7, 24160011">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 7, 24160011">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2035">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2036">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 7, 24160011">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 7, 24160011">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2035">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2036">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35359.htm b/L2J_DataPack/dist/game/data/html/doormen/35359.htm
index 48b7436..96e992f 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35359.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35359.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 7, 24160015">Open the Terrace Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 7, 24160015">Close the Terrace Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2037">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2038">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 7, 24160015">Open the Terrace Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 7, 24160015">Close the Terrace Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2037">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2038">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35360.htm b/L2J_DataPack/dist/game/data/html/doormen/35360.htm
index dd886f8..c5747ce 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35360.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35360.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 7, 24160016">Open the Terrace Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 7, 24160016">Close the Terrace Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2039">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2040">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 7, 24160016">Open the Terrace Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 7, 24160016">Close the Terrace Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2039">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2040">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35503.htm b/L2J_DataPack/dist/game/data/html/doormen/35503.htm
index 147d3a2..859f9bd 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35503.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35503.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 8, 20160001, 20160002">Open the Outer Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 8, 20160001, 20160002">Close the Outer Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2041">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2042">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 8, 20160001, 20160002">Open the Outer Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 8, 20160001, 20160002">Close the Outer Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2041">Teleport (Out of the Gate)</a><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2042">Teleport (Into the Gate)</a>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35504.htm b/L2J_DataPack/dist/game/data/html/doormen/35504.htm
index 38b3355..89800bc 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35504.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35504.htm
@@ -1,11 +1,11 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 8, 20160003, 20160004">Open the Inner Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 8, 20160003, 20160004">Close the Inner Gate.</a><br>
-<a action="bypass -h npc_%objectId%_open_doors 8, 20160005">Open the Throne Room Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 8, 20160005">Close the Throne Room Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2043">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2044">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 8, 20160003, 20160004">Open the Inner Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 8, 20160003, 20160004">Close the Inner Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 8, 20160005">Open the Throne Room Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 8, 20160005">Close the Throne Room Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2043">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2044">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35505.htm b/L2J_DataPack/dist/game/data/html/doormen/35505.htm
index f4ecb14..d0cea68 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35505.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35505.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 8, 20160006">Open the Inner Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 8, 20160006">Close the Inner Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2045">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2046">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 8, 20160006">Open the Inner Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 8, 20160006">Close the Inner Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2045">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2046">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35544.htm b/L2J_DataPack/dist/game/data/html/doormen/35544.htm
index a4b3200..32f9555 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35544.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35544.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 9, 22130014">Open the Terrace Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 9, 22130014">Close the Terrace Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2055">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2056">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 9, 22130014">Open the Terrace Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 9, 22130014">Close the Terrace Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2055">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2056">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35545.htm b/L2J_DataPack/dist/game/data/html/doormen/35545.htm
index f69721b..84eb763 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35545.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35545.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 9, 22130015">Open the Terrace Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 9, 22130015">Close the Terrace Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2053">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2054">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 9, 22130015">Open the Terrace Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 9, 22130015">Close the Terrace Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2053">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2054">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35548.htm b/L2J_DataPack/dist/game/data/html/doormen/35548.htm
index 76dc791..212d304 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35548.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35548.htm
@@ -1,11 +1,11 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 9, 22130001, 22130002">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 9, 22130001, 22130002">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_open_doors 9, 22130003">Open the Throne Room Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 9, 22130003">Close the Throne Room Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2047">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2048">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 9, 22130001, 22130002">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 9, 22130001, 22130002">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 9, 22130003">Open the Throne Room Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 9, 22130003">Close the Throne Room Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2047">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2048">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35549.htm b/L2J_DataPack/dist/game/data/html/doormen/35549.htm
index 44e6025..745708a 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35549.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35549.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 9, 22130007">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 9, 22130007">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2049">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2050">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 9, 22130007">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 9, 22130007">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2049">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2050">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/html/doormen/35550.htm b/L2J_DataPack/dist/game/data/html/doormen/35550.htm
index a4a15b2..45a5aeb 100644
--- a/L2J_DataPack/dist/game/data/html/doormen/35550.htm
+++ b/L2J_DataPack/dist/game/data/html/doormen/35550.htm
@@ -1,9 +1,9 @@
<html><body>Nothing unusual to report, my Lord.<br>
What do you wish to do?<br>
<center>
-<a action="bypass -h npc_%objectId%_open_doors 9, 22130006">Open the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_close_doors 9, 22130006">Close the Castle Gate.</a><br>
-<a action="bypass -h npc_%objectId%_tele 2051">Teleport (Out of the Gate)</a><br>
-<a action="bypass -h npc_%objectId%_tele 2052">Teleport (Into the Gate)</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_open_doors 9, 22130006">Open the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_close_doors 9, 22130006">Close the Castle Gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2051">Teleport (Out of the Gate)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_tele 2052">Teleport (Into the Gate)</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts.cfg b/L2J_DataPack/dist/game/data/scripts.cfg
index 02341ca..652d03d 100644
--- a/L2J_DataPack/dist/game/data/scripts.cfg
+++ b/L2J_DataPack/dist/game/data/scripts.cfg
@@ -47,6 +47,7 @@
ai/npc/MonkOfChaos/MonkOfChaos.java
ai/npc/MonumentOfHeroes/MonumentOfHeroes.java
ai/npc/NpcBuffers/NpcBuffers.java
+ai/npc/Proclaimer/Proclaimer.java
ai/npc/Pantheon/Pantheon.java
ai/npc/Rignos/Rignos.java
ai/npc/Rafforty/Rafforty.java
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35098-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35098-01.html
index 918a601..60f5af8 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35098-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35098-01.html
@@ -3,6 +3,6 @@
We Dwarves of the Blacksmith Guild have refined our skills in order to create a greater variety of crops for our Lord.<br>
What can I do for you?<br><br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35098-02.html">Manufacture a crop.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleBlacksmith 35098-02.html">Manufacture a crop</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35098-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35098-02.html
index 9e73092..67b9ec8 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35098-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35098-02.html
@@ -1,6 +1,6 @@
<html><body>
Sure, no problem! Bring the ingredients needed and I'll create an item for you.<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980001">Choose an item.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 350980001">Choose an item</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35140-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35140-01.html
index 02cfb2b..10d090f 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35140-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35140-01.html
@@ -3,6 +3,6 @@
We Dwarves of the Blacksmith Guild have refined our skills in order to create a greater variety of crops for our Lord.<br>
What can I do for you?<br><br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35140-02.html">Manufacture a crop.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleBlacksmith 35140-02.html">Manufacture a crop</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35140-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35140-02.html
index 6867af3..340033a 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35140-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35140-02.html
@@ -1,6 +1,6 @@
<html><body>
Sure, no problem! If you bring me the ingredients I need, I'll get right on it!<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980002">Choose an item.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 350980002">Choose an item</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35182-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35182-01.html
index 5bd771c..9a95105 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35182-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35182-01.html
@@ -1,6 +1,6 @@
<html><body>Blacksmith:<br>
Greetings! Is there anything I can do for you today?<br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35182-02.html">Manufacture a crop.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleBlacksmith 35182-02.html">Manufacture a crop</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35182-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35182-02.html
index 23e1ff5..6661347 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35182-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35182-02.html
@@ -2,6 +2,6 @@
Certainly! If you bring me the ingredients I need I'll make it for you.<br>
What would you like?<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980003">View the list.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 350980003">View the list</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35224-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35224-01.html
index b602f4d..7a594d3 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35224-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35224-01.html
@@ -3,6 +3,6 @@
We Dwarves of the Blacksmith Guild have refined our skills in order to create a greater variety of crops for our Lord.<br>
What can I do for you?<br><br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35224-02.html">Manufacture a crop.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleBlacksmith 35224-02.html">Manufacture a crop</Button>
</center>
-</body></html>
\ No newline at end of file
+</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35224-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35224-02.html
index 855f065..6e55ddf 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35224-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35224-02.html
@@ -1,6 +1,6 @@
<html><body>
Certainly, I'd be glad to make an item for you! Bring me the ingredients I need and I'll make it immediately.<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980004">View the list.</a>
+<a action="bypass -h npc_%objectId%_multisell 350980004">View the list</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35272-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35272-01.html
index 354c170..f858d14 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35272-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35272-01.html
@@ -3,6 +3,6 @@
We Dwarves of the Blacksmith Guild have refined our skills in order to create a greater variety of crops for our Lord.<br>
What can I do for you?<br><br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35272-02.html">Manufacture a crop.</a>
+<a action="bypass -h Quest CastleBlacksmith 35272-02.html">Manufacture a crop</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35272-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35272-02.html
index 1496178..2fb6c7c 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35272-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35272-02.html
@@ -2,6 +2,6 @@
Sure, just bring the ingredients I need and I'll make it for you right away.<br>
What would you like?<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980005">Choose Item</a>
+<a action="bypass -h npc_%objectId%_multisell 350980005">Choose Ite</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35314-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35314-01.html
index 9f7ab3f..9849686 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35314-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35314-01.html
@@ -3,6 +3,6 @@
We Dwarves of the Blacksmith Guild have refined our skills in order to create a greater variety of crops for our Lord.<br>
What can I do for you?<br><br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35314-02.html">Manufacture a crop.</a>
+<a action="bypass -h Quest CastleBlacksmith 35314-02.html">Manufacture a crop</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35314-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35314-02.html
index 79cec3b..7f71ea2 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35314-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35314-02.html
@@ -1,6 +1,6 @@
<html><body>
Certainly, I'd be glad to make an item for you! Bring me the ingredients I need and I'll make it immediately.<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980006">View the list.</a>
+<a action="bypass -h npc_%objectId%_multisell 350980006">View the list</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35361-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35361-01.html
index c6610cc..758cddc 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35361-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35361-01.html
@@ -4,6 +4,6 @@
Our Dwarven dexterity is truly unequaled!<br>
If you want something made, just give us the order!<br><br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35361-02.html">Crop Processing</a>
+<a action="bypass -h Quest CastleBlacksmith 35361-02.html">Crop Processin</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35361-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35361-02.html
index 6c2fa8a..37acae0 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35361-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35361-02.html
@@ -1,6 +1,6 @@
<html><body>
If you provide the materials, it won't take anytime! What do you want made?<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980007">See the list</a>
+<a action="bypass -h npc_%objectId%_multisell 350980007">See the lis</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35507-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35507-01.html
index 1401f14..fa423cd 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35507-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35507-01.html
@@ -4,6 +4,6 @@
Our Dwarves are truly gifted with their hands. Ha! Oops! Pardon me, my Lord!<br>
If you want me to make something, just say the word!<br><br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35507-02.html">Crop Manufacturing</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleBlacksmith 35507-02.html">Crop Manufacturin</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35507-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35507-02.html
index 945e082..fb06b03 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35507-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35507-02.html
@@ -2,6 +2,6 @@
Of course! Give me the materials I need and I'll make anything you want at once!<br>
What do you want?<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980008">Examine the List</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 350980008">Examine the Lis</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35553-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35553-01.html
index 1879b69..5c31b97 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35553-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35553-01.html
@@ -4,6 +4,6 @@
Our Dwarves are truly gifted with their hands.. Ha! Oops! Pardon me, my Lord.<br>
If you want me to make something for you, just ask.<br><br>
<center>
-<a action="bypass -h Quest CastleBlacksmith 35553-02.html">Crop Manufacturing</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleBlacksmith 35553-02.html">Crop Manufacturin</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35553-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35553-02.html
index eb15311..95e0db6 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35553-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleBlacksmith/35553-02.html
@@ -2,6 +2,6 @@
Of course! Bring me the materials I need and I'll make anything you want at once!<br>
What do you want?<br>
<center>
-<a action="bypass -h npc_%objectId%_multisell 350980009">Examine the list</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 350980009">Examine the lis</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-d.html
new file mode 100644
index 0000000..3145d03
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-d.html
@@ -0,0 +1,30 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180001 24180002">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180001 24180002">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180013 24180012">Open the western inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180013 24180012">Close the western inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180014 24180015">Open the easten inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180014 24180015">Close the easten inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180005 24180004">Open the hall entrance castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180005 24180004">Close the hall entrance castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180008 24180007">Open the second level western castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180008 24180007">Close the second level western castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180009 24180010">Open the second level easten castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180009 24180010">Close the second level easten castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180016">Open the terrace entrance castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180016">Close the terrace entrance castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180019">Open the easten sky walk castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180019">Close the easten sky walk castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180018">Open the easten outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180018">Close the easten outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180021">Open the western sky walk castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180021">Close the western sky walk castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180020">Open the western outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180020">Close the western outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24180001 24180002 24180013 24180012 24180014 24180015 24180005 24180004 24180008 24180007 24180009 24180010 24180016 24180019 24180018 24180021 24180020">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24180001 24180002 24180013 24180012 24180014 24180015 24180005 24180004 24180008 24180007 24180009 24180010 24180016 24180019 24180018 24180021 24180020">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-du.html
new file mode 100644
index 0000000..11e8a59
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-du.html
@@ -0,0 +1,13 @@
+<html><body>
+Reinforce castle gates:<br>
+Strengthens gates and walls. A good measure against the incursion of enemy troops into the castle.<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 1 24180001 24180002">Reinforce outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 24180013 24180012">Reinforce western inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 24180014 24180015">Reinforce eastern inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 24180005 24180004">Reinforce entrance to inner castle hall</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 24180011 24180006">Reinforce outer castle wall</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 24180003">Reinforce inner castle wall</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-t1.html
new file mode 100644
index 0000000..4811d6c
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-t1.html
@@ -0,0 +1,6 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13032" msg="811;Front Of Aden Castle">Front Of Aden Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13033" msg="811;Aden Town Square">Aden Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13034" msg="811;Front of the Narsell Fortress">Front of the Narsell Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13035" msg="811;Front of the Bayou Fortress">Front of the Bayou Fortress</Button>
+</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-t2.html
new file mode 100644
index 0000000..f9f1116
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-t2.html
@@ -0,0 +1,12 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13032" msg="811;Front Of Aden Castle">Front Of Aden Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13033" msg="811;Aden Town Square">Aden Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13034" msg="811;Front of the Narsell Fortress">Front of the Narsell Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13035" msg="811;Front of the Bayou Fortress">Front of the Bayou Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13036" msg="811;Enchanted Valley, Northen Region">Enchanted Valley, Northen Region - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13071" msg="811;Blazing Swamp">Blazing Swamp - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13038" msg="811;Forest of Mirrors">Forest of Mirrors - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13039" msg="811;Anghel Waterfall">Anghel Waterfall - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13072" msg="811;The Giant's Cave Upper Layer">The Giant's Cave Upper Layer - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13073" msg="811;The Giant's Cave Lower Layer">The Giant's Cave Lower Layer - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-tu.html
new file mode 100644
index 0000000..cce2b54
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Aden-tu.html
@@ -0,0 +1,10 @@
+<html><body><br>
+Activate the trap that is located in the inner part of the island. Then, the trap function produces a magical fire that emanates from the device, slowing movement of those passing above it and setting them afire.<br>
+This device has the same effect on allies so it must be carefully deployed... Used correctly there is no greater defense for a castle.<br>
+Of course, quality has its price...<br><br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_trap 0">Deploy the device east of the castle</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_trap 1">Deploy the device west of the castle</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/CastleChamberlain.java b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/CastleChamberlain.java
index 895684d..b2e1bbf 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/CastleChamberlain.java
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/CastleChamberlain.java
@@ -30,13 +30,13 @@
import com.l2jserver.Config;
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.datatables.TeleportLocationTable;
+import com.l2jserver.gameserver.enums.CastleSide;
import com.l2jserver.gameserver.instancemanager.CastleManorManager;
import com.l2jserver.gameserver.instancemanager.FortManager;
import com.l2jserver.gameserver.model.ClanPrivilege;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2TeleportLocation;
import com.l2jserver.gameserver.model.PcCondOverride;
-import com.l2jserver.gameserver.model.SeedProduction;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
import com.l2jserver.gameserver.model.actor.instance.L2MerchantInstance;
@@ -68,20 +68,25 @@
public final class CastleChamberlain extends AbstractNpcAI
{
// NPCs
+ //@formatter:off
private static final int[] NPC =
{
- 35100, // Sayres
- 35142, // Crosby
- 35184, // Saul
- 35226, // Brasseur
- 35274, // Logan
- 35316, // Neurath
- 35363, // Alfred
- 35509, // Frederick
- 35555, // August
+ // Chamberlain of Light / Chamberlain of Darkness
+ 35100, 36653, // Gludio
+ 35142, 36654, // Dion
+ 35184, 36655, // Giran
+ 35226, 36656, // Oren
+ 35274, 36657, // Aden
+ 35316, 36658, // Innadril
+ 35363, 36659, // Goddard
+ 35509, 36660, // Rune
+ 35555, 36661, // Schuttgard
};
+ //@formatter:on
// Item
private static final int CROWN = 6841;
+ private static final int LORD_CLOAK_OF_LIGHT = 34996;
+ private static final int LORD_CLOAK_OF_DARK = 34997;
// Fortress
private static final Map<Integer, List<Integer>> FORTRESS = new HashMap<>();
static
@@ -437,7 +442,7 @@
}
else
{
- htmltext = npc.getId() + "-du.html";
+ htmltext = npc.getCastle().getName() + "-du.html";
}
}
else
@@ -534,7 +539,7 @@
}
else
{
- htmltext = npc.getId() + "-tu.html";
+ htmltext = npc.getCastle().getName() + "-tu.html";
}
}
else
@@ -624,28 +629,12 @@
}
break;
}
- case "manage_tax":
+ case "manage_vault":
{
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES))
{
- if (castle.getSiege().isInProgress())
- {
- htmltext = "chamberlain-08.html";
- }
- else
- {
- final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlesettaxrate.html");
- html.replace("%tax_rate%", Integer.toString(castle.getTaxPercent()));
- html.replace("%next_tax_rate%", "0"); // TODO: Implement me!
- html.replace("%tax_limit%", 15);
- player.sendPacket(html);
- }
- }
- else if (isOwner(player, npc))
- {
- final NpcHtmlMessage html = getHtmlPacket(player, npc, "chamberlain-03.html");
- html.replace("%tax_rate%", Integer.toString(castle.getTaxPercent()));
- html.replace("%next_tax_rate%", "0"); // TODO: Implement me!
+ final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html");
+ html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
player.sendPacket(html);
}
else
@@ -654,32 +643,13 @@
}
break;
}
- case "set_tax":
+ case "manage_vault_deposit":
{
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES))
{
- if (castle.getSiege().isInProgress())
- {
- htmltext = "chamberlain-08.html";
- }
- else
- {
- final NpcHtmlMessage html;
- final int tax = (st.hasMoreTokens()) ? Integer.parseInt(st.nextToken()) : 0;
- final int taxLimit = 15;
- if (tax > taxLimit)
- {
- html = getHtmlPacket(player, npc, "castletoohightaxrate.html");
- html.replace("%tax_limit%", Integer.toString(taxLimit));
- }
- else
- {
- castle.setTaxPercent(tax);
- html = getHtmlPacket(player, npc, "castleaftersettaxrate.html");
- html.replace("%next_tax_rate%", Integer.toString(tax));
- }
- player.sendPacket(html);
- }
+ final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html");
+ html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
+ player.sendPacket(html);
}
else
{
@@ -687,27 +657,12 @@
}
break;
}
- case "manage_vault":
+ case "manage_vault_withdraw":
{
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES))
{
- long seedIncome = 0;
- if (Config.ALLOW_MANOR)
- {
- for (SeedProduction sp : CastleManorManager.getInstance().getSeedProduction(castle.getResidenceId(), false))
- {
- final long diff = sp.getStartAmount() - sp.getAmount();
- if (diff != 0)
- {
- seedIncome += diff * sp.getPrice();
- }
- }
- }
-
- final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html");
+ final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
- html.replace("%tax_income_reserved%", "0"); // TODO: Implement me!
- html.replace("%seed_income%", Util.formatAdena(seedIncome));
player.sendPacket(html);
}
else
@@ -830,7 +785,7 @@
}
else
{
- htmltext = npc.getId() + "-d.html";
+ htmltext = npc.getCastle().getName() + "-d.html";
}
break;
}
@@ -973,7 +928,7 @@
}
else
{
- htmltext = npc.getId() + "-t" + castle.getFunction(Castle.FUNC_TELEPORT).getLvl() + ".html";
+ htmltext = npc.getCastle().getName() + "-t" + castle.getFunction(Castle.FUNC_TELEPORT).getLvl() + ".html";
}
break;
}
@@ -1067,11 +1022,6 @@
}
break;
}
- case "list_territory_clans":
- {
- htmltext = "chamberlain-21.html";
- break;
- }
case "manor":
{
if (Config.ALLOW_MANOR)
@@ -1110,6 +1060,30 @@
}
break;
}
+ case "give_cloak":
+ {
+ if (castle.getSiege().isInProgress())
+ {
+ htmltext = "chamberlain-08.html";
+ break;
+ }
+ else if (npc.isMyLord(player))
+ {
+ final int cloakId = npc.getCastle().getSide() == CastleSide.DARK ? LORD_CLOAK_OF_DARK : LORD_CLOAK_OF_LIGHT;
+
+ if (hasQuestItems(player, cloakId))
+ {
+ htmltext = "chamberlain-03.html";
+ break;
+ }
+ giveItems(player, cloakId, 1);
+ }
+ else
+ {
+ htmltext = "chamberlain-29.html";
+ }
+ break;
+ }
case "give_crown":
{
if (castle.getSiege().isInProgress())
@@ -1129,74 +1103,6 @@
html.replace("%feud_name%", String.valueOf(String.valueOf(1001000 + castle.getResidenceId())));
player.sendPacket(html);
giveItems(player, CROWN, 1);
- }
- }
- else
- {
- htmltext = "chamberlain-21.html";
- }
- break;
- }
- case "manors_cert":
- {
- if (npc.isMyLord(player))
- {
- if (castle.getSiege().isInProgress())
- {
- htmltext = "chamberlain-08.html";
- }
- else
- {
- final int ticketCount = castle.getTicketBuyCount();
- if (ticketCount < (Config.SSQ_DAWN_TICKET_QUANTITY / Config.SSQ_DAWN_TICKET_BUNDLE))
- {
- final NpcHtmlMessage html = getHtmlPacket(player, npc, "ssq_selldawnticket.html");
- html.replace("%DawnTicketLeft%", String.valueOf(Config.SSQ_DAWN_TICKET_QUANTITY - (ticketCount * Config.SSQ_DAWN_TICKET_BUNDLE)));
- html.replace("%DawnTicketBundle%", String.valueOf(Config.SSQ_DAWN_TICKET_BUNDLE));
- html.replace("%DawnTicketPrice%", String.valueOf(Config.SSQ_DAWN_TICKET_PRICE * Config.SSQ_DAWN_TICKET_BUNDLE));
- player.sendPacket(html);
- }
- else
- {
- htmltext = "ssq_notenoughticket.html";
- }
- }
- }
- else
- {
- htmltext = "chamberlain-21.html";
- }
- break;
- }
- case "manors_cert_confirm":
- {
- if (npc.isMyLord(player))
- {
- if (castle.getSiege().isInProgress())
- {
- htmltext = "chamberlain-08.html";
- }
- else
- {
- final int ticketCount = castle.getTicketBuyCount();
- if (ticketCount < (Config.SSQ_DAWN_TICKET_QUANTITY / Config.SSQ_DAWN_TICKET_BUNDLE))
- {
- final long totalCost = Config.SSQ_DAWN_TICKET_PRICE * Config.SSQ_DAWN_TICKET_BUNDLE;
- if (player.getAdena() >= totalCost)
- {
- takeItems(player, Inventory.ADENA_ID, totalCost);
- giveItems(player, Config.SSQ_MANORS_AGREEMENT_ID, Config.SSQ_DAWN_TICKET_BUNDLE);
- castle.setTicketBuyCount(ticketCount + 1);
- }
- else
- {
- htmltext = "chamberlain-09.html";
- }
- }
- else
- {
- htmltext = "ssq_notenoughticket.html";
- }
}
}
else
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-d.html
new file mode 100644
index 0000000..0994d0b
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-d.html
@@ -0,0 +1,14 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 20220001 20220002">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 20220001 20220002">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 20220005 20220006">Open the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 20220005 20220006">Close the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 20220008">Open the moring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 20220008">Close the moring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 20220001 20220002 20220005 20220006 20220008">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 20220001 20220002 20220005 20220006 20220008">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-du.html
new file mode 100644
index 0000000..4f7a1d5
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-du.html
@@ -0,0 +1,9 @@
+<html><body>
+Reinforce castle gates:<br>
+Strengthens gates and walls. Since it significantly enhances the durability of castle gates and castle walls, it is a good measure against the incursion of enemy troops into the castle. <center><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 1 20220001 20220002">Reinforce outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 20220005 20220006">Reinforce inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 20220003 20220004">Reinforce castle walls</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.htm">Go back</Button>
+</center>
+</body> </html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-t1.html
new file mode 100644
index 0000000..7514b93
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-t1.html
@@ -0,0 +1,6 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13008" msg="811;Front Of Dion Castle">Front Of Dion Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13009" msg="811;Dion Town Square">Dion Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13010" msg="811;Front of the Hive Fortress">Front of the Hive Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13011" msg="811;Entrance to Floran Village">Entrance to Floran Village</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-t2.html
new file mode 100644
index 0000000..d8b351b
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-t2.html
@@ -0,0 +1,10 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13008" msg="811;Front Of Dion Castle">Front Of Dion Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13009" msg="811;Dion Town Square">Dion Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13010" msg="811;Front of the Hive Fortress">Front of the Hive Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13011" msg="811;Entrance to Floran Village">Entrance to Floran Village</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13012" msg="811;Cruma Marshlands">Cruma Marshlands - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13013" msg="811;Fortress of Resistance">Fortress of Resistance - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13014" msg="811;Plains of Dion">Plains of Dion - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13015" msg="811;Tanor Canyon">Tanor Canyon - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-tu.html
new file mode 100644
index 0000000..cf1dfd7
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Dion-tu.html
@@ -0,0 +1,8 @@
+<html><body><br>
+Activate the traps located in the interior of the island. Once activated, the flames do not distinguish friend from foe. Used properly, the trap is a very effective deterrent to invasion. Of course, it costs a fortune!<br><br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_trap 0">Activate the trap near the entrance of the inner castle</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_trap 1">Activate the trap behind the garden in the inner castle</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-d.html
new file mode 100644
index 0000000..489f9e4
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-d.html
@@ -0,0 +1,14 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 23220001 23220002">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 23220001 23220002">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 23220005 23220006">Open the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 23220005 23220006">Close the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 23220008">Open the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 23220008">Close the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 23220001 23220002 23220005 23220006 23220008">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 23220001 23220002 23220005 23220006 23220008">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-du.html
new file mode 100644
index 0000000..0092482
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-du.html
@@ -0,0 +1,10 @@
+<html><body>
+Reinforce castle gates:<br>
+Strengthens gates and walls. Since it significantly enhances the durability of castle gates and castle walls, it is a good measure against the incursion of enemy troops into the castle.<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 1 23220001 23220002">Reinforce outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 23220005 23220006">Reinforce inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 23220003 23220004">Reinforce castle walls</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-t1.html
new file mode 100644
index 0000000..bccca6f
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-t1.html
@@ -0,0 +1,6 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13016" msg="811;Front Of Giran Castle">Front Of Giran Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13017" msg="811;Giran Town Square">Giran Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13018" msg="811;Front of the Valley Fortress">Front of the Valley Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13019" msg="811;Giran Harbor">Giran Harbor</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-t2.html
new file mode 100644
index 0000000..2dc465f
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-t2.html
@@ -0,0 +1,10 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13016" msg="811;Front Of Giran Castle">Front Of Giran Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13017" msg="811;Giran Town Square">Giran Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13018" msg="811;Front of the Valley Fortress">Front of the Valley Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13019" msg="811;Giran Harbor">Giran Harbor</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13020" msg="811;Breka's Stronghold">Breka's Stronghold - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13021" msg="811;Devil's Isle">Devil's Isle - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13022" msg="811;Dragon Valley">Dragon Valley - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13023" msg="811;Tanor Canyon">Tanor Canyon - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-tu.html
new file mode 100644
index 0000000..e35fa6c
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Giran-tu.html
@@ -0,0 +1,8 @@
+<html><body><br>
+Activate the traps located in the interior of the island. Once activated, the flames do not distinguish friend from foe. Used properly, the trap is a very effective deterrent to invasion. Of course, it costs a fortune!<br><br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_trap 0">Activate the trap near the entrance of the inner castle</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_trap 1">Activate the trap behind the garden in the inner castle</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</a>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-d.html
new file mode 100644
index 0000000..3300072
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-d.html
@@ -0,0 +1,14 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 19210001 19210002">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 19210001 19210002">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 19210005 19210006">Open the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 19210005 19210006">Close the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 19210008">Open the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 19210008">Close the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 19210001 19210002 19210005 19210006 19210008">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 19210001 19210002 19210005 19210006 19210008">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-du.html
new file mode 100644
index 0000000..6dfca9b
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-du.html
@@ -0,0 +1,10 @@
+<html><body>
+Reinforce castle gates:<br>
+Strengthens gates and walls. Since it significantly enhances the durability of castle gates and castle walls, it is a good measure against the incursion of enemy troops into the castle.<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 1 19210001 19210002">Reinforce outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 19210005 19210006">Reinforce inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 19210003 19210004">Reinforce castle walls</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-t1.html
new file mode 100644
index 0000000..607b5cb
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-t1.html
@@ -0,0 +1,6 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13000" msg="811;Front of the Gludio Castle">Front of the Gludio Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13001" msg="811;Gludio Town Square">Gludio Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13002" msg="811;Front of the Shanty Fortress">Front of the Shanty Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13003" msg="811;Front of the Southern Fortress">Front of the Southern Fortress</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-t2.html
new file mode 100644
index 0000000..f9fd632
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-t2.html
@@ -0,0 +1,10 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13000" msg="811;Front of the Gludio Castle">Front of the Gludio Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13001" msg="811;Gludio Town Square">Gludio Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13002" msg="811;Front of the Shanty Fortress">Front of the Shanty Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13003" msg="811;Front of the Southern Fortress">Front of the Southern Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13004" msg="811;Ruins of Agony">Ruins of Agony - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13005" msg="811;Ruins of Despair">Ruins of Despair - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13006" msg="811;The Ant Nest">The Ant Nest - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13007" msg="811;Windawood Manor">Windawood Manor - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-tu.html
new file mode 100644
index 0000000..910386c
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Gludio-tu.html
@@ -0,0 +1,8 @@
+<html><body><br>
+Activate the traps located in the interior of the island. Once activated, the flames do not distinguish friend from foe. Used properly, the trap is a very effective deterrent to invasion. Of course, it costs a fortune!<br><br>
+<center>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 0">Activate the trap near the entrance of the inner castle.</a><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 1">Activate the trap behind the garden in the inner castle.</a><br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-d.html
new file mode 100644
index 0000000..3dd1be2
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-d.html
@@ -0,0 +1,16 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24160010 24160009">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24160010 24160009">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24160011 24160012">Open the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24160011 24160012">Close the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24160013 24160014">Open the inner 2nd floor castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24160013 24160014">Close the inner 2nd floor castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24160015 24160016">Open the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24160015 24160016">Close the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 24160010 24160009 24160011 24160012 24160013 24160014 24160015 24160016">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 24160010 24160009 24160011 24160012 24160013 24160014 24160015 24160016">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-du.html
new file mode 100644
index 0000000..0771a09
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-du.html
@@ -0,0 +1,10 @@
+<html><body>Door Reinforcement:<br>
+The doors or walls of the castle are currently being reinforced. This will help defend against enemy attacks.<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 1 24160010 24160009">Outer Door Reinforcement</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 24160011 24160012">Inner Door Reinforcement 1F</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 24160013 24160014">Inner Door Reinforcement 2F</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 24160021 24160022">Wall Reinforcement</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-t1.html
new file mode 100644
index 0000000..c699875
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-t1.html
@@ -0,0 +1,5 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13047" msg="811;Front Of Goddard Castle">Front Of Goddard Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13048" msg="811;Goddard Town Square">Goddard Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13049" msg="811;Front of the Borderland Fortress">Front of the Borderland Fortress</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-t2.html
new file mode 100644
index 0000000..24ba911
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-t2.html
@@ -0,0 +1,10 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13047" msg="811;Front Of Goddard Castle">Front Of Goddard Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13048" msg="811;Goddard Town Square">Goddard Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13049" msg="811;Front of the Borderland Fortress">Front of the Borderland Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13050" msg="811;Hot Springs">Hot Springs - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13051" msg="811;Varka Silenos Stronghold">Varka Silenos Stronghold - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13052" msg="811;Ketra Orc Outpost">Ketra Orc Outpost - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13053" msg="811;Entrance to the Forge of the Gods">Entrance to the Forge of the Gods - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13054" msg="811;Wall of Argos">Wall of Argos - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-tu.html
new file mode 100644
index 0000000..5f417d4
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Goddard-tu.html
@@ -0,0 +1,10 @@
+<html><body><br>
+Activates a trap inside the castle. When activated, magic fire shoots from the trap, slowing those crossing it and engulfing them in flames.<br>
+These flames will consume friends as well as foes. Used with great care, this is one of the most effective security devices available.<br>
+Of course, it's not cheap!<br><br>
+<center>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 0">Activate the trap near the east entrance of the 2nd floor.</a><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 1">Activate the trap near the west entrance of the 2nd floor.</a><br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-d.html
new file mode 100644
index 0000000..edf4ed4
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-d.html
@@ -0,0 +1,14 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 23250002 23250001">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 23250002 23250001">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 23250006 23250005">Open the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 23250006 23250005">Close the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 23250008">Open the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 23250008">Close the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 23250002 23250001 23250006 23250005 23250008">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 23250002 23250001 23250006 23250005 23250008">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-du.html
new file mode 100644
index 0000000..11086ca
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-du.html
@@ -0,0 +1,10 @@
+<html><body>
+Reinforce castle gates:<br>
+Strengthens gates and walls. Since it significantly enhances the durability of castle gates and castle walls, it is a good measure against the incursion of enemy troops into the castle.<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 1 23250002 23250001">Reinforce outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 23250006 23250005">Reinforce inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 23250003 23250004">Reinforce castle walls</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-t1.html
new file mode 100644
index 0000000..6309159
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-t1.html
@@ -0,0 +1,5 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13040" msg="811;Front Of Innadril Castle">Front Of Innadril Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13041" msg="811;Heine Town Square">Heine Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13042" msg="811;Front of the White Sands Fortress">Front of the White Sands Fortress</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-t2.html
new file mode 100644
index 0000000..2857ee9
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-t2.html
@@ -0,0 +1,9 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13040" msg="811;Front Of Innadril Castle">Front Of Innadril Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13041" msg="811;Heine Town Square">Heine Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13042" msg="811;Front of the White Sands Fortress">Front of the White Sands Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13043" msg="811;The Center of Alligator Island">The Center of Alligator Island - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13044" msg="811;Field of Silence">Field of Silence - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13045" msg="811;Field of Whispers">Field of Whispers - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13046" msg="811;Inside the Garden of Eva">Inside the Garden of Eva - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-tu.html
new file mode 100644
index 0000000..910386c
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Innadril-tu.html
@@ -0,0 +1,8 @@
+<html><body><br>
+Activate the traps located in the interior of the island. Once activated, the flames do not distinguish friend from foe. Used properly, the trap is a very effective deterrent to invasion. Of course, it costs a fortune!<br><br>
+<center>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 0">Activate the trap near the entrance of the inner castle.</a><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 1">Activate the trap behind the garden in the inner castle.</a><br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-d.html
new file mode 100644
index 0000000..26d77dd
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-d.html
@@ -0,0 +1,14 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22190001 22190002">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22190001 22190002">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22190005 22190006">Open the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22190005 22190006">Close the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22190008">Open the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22190008">Close the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22190001 22190002 22190005 22190006 22190008">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22190001 22190002 22190005 22190006 22190008">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-du.html
new file mode 100644
index 0000000..69177d8
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-du.html
@@ -0,0 +1,10 @@
+<html><body>
+Reinforce castle gates:<br>
+Strengthens gates and walls. Since it significantly enhances the durability of castle gates and castle walls, it is a good measure against the incursion of enemy troops into the castle.<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 1 22190001 22190002">Reinforce outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 22190005 22190006">Reinforce inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 22190003 22190004">Reinforce castle walls</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-t1.html
new file mode 100644
index 0000000..f1ab1ef
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-t1.html
@@ -0,0 +1,5 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13024" msg="811;Front Of Oren Castle">Front Of Oren Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13025" msg="811;Oren Town Square">Oren Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13026" msg="811;Front of the Ivory Fortress">Front of the Ivory Fortress</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-t2.html
new file mode 100644
index 0000000..1ad2d9a
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-t2.html
@@ -0,0 +1,10 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13024" msg="811;Front Of Oren Castle">Front Of Oren Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13025" msg="811;Oren Town Square">Oren Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13026" msg="811;Front of the Ivory Fortress">Front of the Ivory Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13027" msg="811;Ivory Tower">Ivory Tower - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13028" msg="811;Near the frontier post">Near the frontier post - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13029" msg="811;Sea of Spores">Sea of Spores - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13030" msg="811;Enchanted Valley, Southern Region">Enchanted Valley, Southern Region - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13031" msg="811;Ancient Battleground">Ancient Battleground - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-tu.html
new file mode 100644
index 0000000..910386c
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Oren-tu.html
@@ -0,0 +1,8 @@
+<html><body><br>
+Activate the traps located in the interior of the island. Once activated, the flames do not distinguish friend from foe. Used properly, the trap is a very effective deterrent to invasion. Of course, it costs a fortune!<br><br>
+<center>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 0">Activate the trap near the entrance of the inner castle.</a><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 1">Activate the trap behind the garden in the inner castle.</a><br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-d.html
new file mode 100644
index 0000000..1f03269
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-d.html
@@ -0,0 +1,14 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 20160002 20160001">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 20160002 20160001">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 20160004 20160003">Open the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 20160004 20160003">Close the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 20160006">Open the east inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 20160006">Close the east inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 20160002 20160001 20160004 20160003 20160006">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 20160002 20160001 20160004 20160003 20160006">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-du.html
new file mode 100644
index 0000000..678cb4c
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-du.html
@@ -0,0 +1,12 @@
+<html><body>
+Castle Gate Reinforcement:<br>
+Castle gates and walls should be thoroughly reinforced to keep the enemy at bay!<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 1 20160002 20160001">Reinforce the outer gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 20160004 20160003">Reinforce the inner gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 2 20160006">Reinforce the east inner gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 20160007 20160008">Reinforce the outer wall</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors 3 20160009">Reinforce the inner wall</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-t1.html
new file mode 100644
index 0000000..414490a
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-t1.html
@@ -0,0 +1,5 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13055" msg="811;Front Of Rune Castle">Front Of Rune Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13056" msg="811;Rune Town Square">Rune Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13057" msg="811;Front of the Swamp Fortress">Front of the Swamp Fortress</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-t2.html
new file mode 100644
index 0000000..1acc26a
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-t2.html
@@ -0,0 +1,11 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13055" msg="811;Front Of Rune Castle">Front Of Rune Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13056" msg="811;Rune Town Square">Rune Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13057" msg="811;Front of the Swamp Fortress">Front of the Swamp Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13058" msg="811;Forest of the Dead">Forest of the Dead - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13059" msg="811;Wild Beast Pastures">Wild Beast Pastures - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13060" msg="811;Swamp of Screams">Swamp of Screams - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13061" msg="811;Valley of Saints">Valley of Saints - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13062" msg="811;Monastery of Silence">Monastery of Silence - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 14063" msg="811;Shyeed's Cavern">Shyeed's Cavern - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-tu.html
new file mode 100644
index 0000000..5f417d4
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Rune-tu.html
@@ -0,0 +1,10 @@
+<html><body><br>
+Activates a trap inside the castle. When activated, magic fire shoots from the trap, slowing those crossing it and engulfing them in flames.<br>
+These flames will consume friends as well as foes. Used with great care, this is one of the most effective security devices available.<br>
+Of course, it's not cheap!<br><br>
+<center>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 0">Activate the trap near the east entrance of the 2nd floor.</a><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 1">Activate the trap near the west entrance of the 2nd floor.</a><br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-d.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-d.html
new file mode 100644
index 0000000..e2a4aa9
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-d.html
@@ -0,0 +1,16 @@
+<html><body>
+<center>
+<br><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22130002 22130001">Open the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22130002 22130001">Close the outer castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22130007 22130006">Open the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22130007 22130006">Close the inner castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22130009 22130008">Open the inner 2nd floor castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22130009 22130008">Close the inner 2nd floor castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22130015 22130014">Open the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22130015 22130014">Close the mooring castle gate</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 1 22130002 22130001 22130007 22130006 22130009 22130008 22130015 22130014">Open all gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain operate_door 0 22130002 22130001 22130007 22130006 22130009 22130008 22130015 22130014">Close all gates</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-du.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-du.html
new file mode 100644
index 0000000..6ff44c5
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-du.html
@@ -0,0 +1,10 @@
+<html><body>Door Reinforcement:<br>
+The doors or walls of the castle are currently being reinforced. This will help defend against enemy attacks.<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h bypass -h Quest CastleChamberlain manage_doors 1 22130002 22130001">Outer Door Reinforcement</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h bypass -h Quest CastleChamberlain manage_doors 2 22130007 22130006">Inner Door Reinforcement 1F</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h bypass -h Quest CastleChamberlain manage_doors 2 22130009 22130008">Inner Door Reinforcement 2F</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h bypass -h Quest CastleChamberlain manage_doors 3 22130005 22130004">Wall Reinforcement</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-t1.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-t1.html
new file mode 100644
index 0000000..6109d78
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-t1.html
@@ -0,0 +1,5 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13063" msg="811;Front Of Schuttgart Castle">Front Of Schuttgart Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13064" msg="811;Schuttgart Town Square">Schuttgart Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13065" msg="811;Front of the Archaic Fortress">Front of the Archaic Fortress</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-t2.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-t2.html
new file mode 100644
index 0000000..1610aaa
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-t2.html
@@ -0,0 +1,10 @@
+<html><body>&$556;<br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13063" msg="811;Front Of Schuttgart Castle">Front Of Schuttgart Castle</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13064" msg="811;Schuttgart Town Square">Schuttgart Town Square</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13065" msg="811;Front of the Archaic Fortress">Front of the Archaic Fortress</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13066" msg="811;The Center of the Abandoned Coal Mines">The Center of the Abandoned Coal Mines - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13067" msg="811;Plunderous Plains">Plunderous Plains - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13068" msg="811;Den of Evil">Den of Evil - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13069" msg="811;Ice Merchant Cabin">Ice Merchant Cabin - 500 Adena</Button>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain goto 13070" msg="811;Crypts of Disgrace">Crypts of Disgrace - 500 Adena</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-tu.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-tu.html
new file mode 100644
index 0000000..5f417d4
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/Schuttgard-tu.html
@@ -0,0 +1,10 @@
+<html><body><br>
+Activates a trap inside the castle. When activated, magic fire shoots from the trap, slowing those crossing it and engulfing them in flames.<br>
+These flames will consume friends as well as foes. Used with great care, this is one of the most effective security devices available.<br>
+Of course, it's not cheap!<br><br>
+<center>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 0">Activate the trap near the east entrance of the 2nd floor.</a><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain manage_trap 1">Activate the trap near the west entrance of the 2nd floor.</a><br><br>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castleafterbuff.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castleafterbuff.html
index 0af3cc0..1d3e1fc 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castleafterbuff.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castleafterbuff.html
@@ -2,6 +2,6 @@
You have cast support magic.<br>
The MP remaining is <font color="00FFFF">%MPLeft%</font>.<br><br>
<center>
-<button action="bypass -h Quest CastleChamberlain buffer" value="Back to the List" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain buffer">Back to the List</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlebuff-05.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlebuff-05.html
index 4bcd2d6..21aa33c 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlebuff-05.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlebuff-05.html
@@ -3,20 +3,20 @@
The amount of magic that can be cast is limited by the Chamberlain's MP.<br>
The Chamberlain's MP is currently <font color="00FFFF">%MPLeft%</font>.<br><br>
<center>
-<a action="bypass -h Quest CastleChamberlain cast_buff 0">Wind Walk Lv.2</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 1">Decrease Weight Lv.3</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 2">Shield Lv.3</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 3">Mental Shield Lv.4</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 4">Might Lv.3</a><br1><br>
-<a action="bypass -h Quest CastleChamberlain cast_buff 5">Bless the Body Lv.2</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 6">Magic Barrier Lv.1</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 7">Resist Shock Lv.1</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 8">Bless the Soul Lv.2</a><br1><br>
-<a action="bypass -h Quest CastleChamberlain cast_buff 9">Concentration Lv.2</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 10">Berserker Spirit Lv.1</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 11">Bless Shield Lv.2</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 12">Guidance Lv.1</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 13">Vampiric Rage Lv.1</a><br1><br>
-<button action="bypass -h Quest CastleChamberlain functions" value="List" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 0">Wind Walk Lv.2</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 1">Decrease Weight Lv.3</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 2">Shield Lv.3</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 3">Mental Shield Lv.4</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 4">Might Lv.3</Button><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 5">Bless the Body Lv.2</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 6">Magic Barrier Lv.1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 7">Resist Shock Lv.1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 8">Bless the Soul Lv.2</Button><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 9">Concentration Lv.2</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 10">Berserker Spirit Lv.1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 11">Bless Shield Lv.2</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 12">Guidance Lv.1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 13">Vampiric Rage Lv.1</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain functions">Go back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlebuff-08.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlebuff-08.html
index 0a556ae..fcea180 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlebuff-08.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlebuff-08.html
@@ -3,25 +3,25 @@
The amount of magic that can be cast is limited by the Chamberlain's MP.<br>
The Chamberlain's MP is currently <font color="00FFFF">%MPLeft%</font>.<br><br>
<center>
-<a action="bypass -h Quest CastleChamberlain cast_buff 0">Wind Walk Lv.2</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 1">Decrease Weight Lv.3</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 2">Shield Lv.3</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 3">Mental Shield Lv.4</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 4">Might Lv.3</a><br1><br>
-<a action="bypass -h Quest CastleChamberlain cast_buff 14">Bless the Body Lv.6</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 15">Magic Barrier Lv.2</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 16">Resist Shock Lv.4</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 17">Bless the Soul Lv.6</a><br1><br>
-<a action="bypass -h Quest CastleChamberlain cast_buff 18">Concentration Lv.6</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 19">Berserker Spirit Lv.2</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 20">Bless Shield Lv.6</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 21">Guidance Lv.3</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 22">Vampiric Rage Lv.4</a><br1><br>
-<a action="bypass -h Quest CastleChamberlain cast_buff 23">Acumen Lv.1</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 24">Empower Lv.1</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 25">Haste Lv.1</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 26">Focus Lv.1</a><br1>
-<a action="bypass -h Quest CastleChamberlain cast_buff 27">Death Whisper Lv.1</a><br1><br>
-<button action="bypass -h Quest CastleChamberlain functions" value="List" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 0">Wind Walk Lv.2</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 1">Decrease Weight Lv.3</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 2">Shield Lv.3</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 3">Mental Shield Lv.4</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 4">Might Lv.3</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 14">Bless the Body Lv.6</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 15">Magic Barrier Lv.2</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 16">Resist Shock Lv.4</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 17">Bless the Soul Lv.6</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 18">Concentration Lv.6</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 19">Berserker Spirit Lv.2</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 20">Bless Shield Lv.6</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 21">Guidance Lv.3</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 22">Vampiric Rage Lv.4</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 23">Acumen Lv.1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 24">Empower Lv.1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 25">Haste Lv.1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 26">Focus Lv.1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain cast_buff 27">Death Whisper Lv.1</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain functions">Go back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault.html
index 816b114..f4e9db5 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault.html
@@ -1,17 +1,9 @@
<html><body>
-<font color="LEVEL">[Castle Vault Management]</font><br>
There is currently <font color="00ffff">%tax_income% Adena</font> in the castle vault.<br>
-The tax revenue collected so far is <font color="CCFF00">%tax_income_reserved% Adena</font>.
-And, the revenue from the sale of seed in this manor during this period is <font color="CCFF00">%seed_income% Adena</font>.<br><br>
-Please enter the amount you wish to withdraw or deposit.<br>
+Please choose if you wish withdraw or deposit.<br>
<center>
-<table height=27 width=280 bgColor="cccccc">
-<tbody><tr>
-<td align=middle width=60>Amount</td>
-<td align=left width=170><edit width="180" var="data1" type="number"></td>
-<td align=left width=60>Adena</td></tr></tbody></table><br><br>
-<button width="74" fore="L2UI_CH3.Btn1_normal" back="L2UI_CH3.Btn1_normalOn" height="21" value="Withdraw" action="bypass -h Quest CastleChamberlain withdraw $data1">
-<button width="74" fore="L2UI_CH3.Btn1_normal" back="L2UI_CH3.Btn1_normalOn" height="21" value="Deposit" action="bypass -h Quest CastleChamberlain deposit $data1"><br><br><br>
-<button width="74" fore="L2UI_CH3.Btn1_normal" back="L2UI_CH3.Btn1_normalOn" height="21" value="Cancel" action="bypass -h Quest CastleChamberlain chamberlain-01.html">
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_vault_withdraw">Withdraw</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_vault_deposit">Deposit</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault_deposit.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault_deposit.html
new file mode 100644
index 0000000..a5d9796
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault_deposit.html
@@ -0,0 +1,10 @@
+<html><body>
+There are currently <font color="00ffff">%tax_income% Adena</font> Adena in taxes stored in the castle's vault.<br>
+Please enter the amount you wish to deposit.<br>
+<table width=270 border=0>
+<tr><td align=center><edit var="data1" width=200 type="number"></td></tr>
+</table>
+<br>
+<button value="Deposit" action="bypass -h Quest CastleChamberlain deposit $data1" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" width=80 height=27>
+<br>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault_withdraw.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault_withdraw.html
new file mode 100644
index 0000000..bd51c0f
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/castlemanagevault_withdraw.html
@@ -0,0 +1,10 @@
+<html><body>
+There are currently <font color="00ffff">%tax_income% Adena</font> Adena in taxes stored in the castle's vault.<br>
+Please enter the amount you wish to withdraw.<br>
+<table width=270 border=0>
+<tr><td align=center><edit var="data1" width=200 type="number"></td></tr>
+</table>
+<br>
+<button value="Withdrawal" action="bypass -h Quest CastleChamberlain withdraw $data1" back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF" width=80 height=27>
+<br>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-01.html
index 7552443..7180f7f 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-01.html
@@ -1,15 +1,13 @@
<html><body>
-Greetings, my lord. How may I serve you today?
-<center><br><br>
-<a action="bypass -h Quest CastleChamberlain receive_report">Receive report.</a><br>
-<a action="bypass -h Quest CastleChamberlain manage_tax">Adjust tax rate and confirm.</a><br>
-<a action="bypass -h Quest CastleChamberlain manage_vault">Manage castle vault.</a><br>
-<a action="bypass -h Quest CastleChamberlain manage_functions">Manage castle functions.</a><br>
-<a action="bypass -h Quest CastleChamberlain functions">Use castle functions.</a><br>
-<a action="bypass -h Quest CastleChamberlain list_siege_clans">View castle siege information.</a><br>
-<a action="bypass -h Quest CastleChamberlain list_territory_clans">View Territory War information.</a><br>
-<a action="bypass -h Quest CastleChamberlain manor">Manage manor.</a><br>
-<a action="bypass -h Quest CastleChamberlain products">Items</a><br>
-<a action="bypass -h npc_%objectId%_Quest">Quest</a>
+Greetings, my lord. How may I serve you today?<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain receive_report">Get a report</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_vault">Manage castle vault</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_functions">Manage castle function</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain functions">Use castle function</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain list_siege_clans">View castle siege information</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manor">Manage manor</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain products">Items</Button>
+<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-02.html
index 5889e29..5a43130 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-02.html
@@ -1,8 +1,8 @@
-<html><body>
-Greetings, Lord <font color="00FFFF">%clanleadername%</font>.<br>
-Currently, the <font color="00FFFF"><fstring>%castlename%</fstring></font> territory is peaceful under the leadership of the <font color="00FFFF">%clanname%</font> clan. This is entirely due to your wisdom and strength, Lord <font color="00FFFF">%clanleadername%</font>.<br><br>
-<center><br>
-<a action="bypass -h Quest CastleChamberlain fort_status">Ask about the current status of the fortress.</a><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back.</a>
+<html></body><br>
+Greetings, Lord <font color="00FFFF"><%clanleadername%></font>.<br>
+Currently, the <font color="00FFFF"><fstring>%castlename%</fstring></font> territory is at peace, under the leadership of the <font color="00FFFF">%clanname%</font> clan. This is entirely due to your wisdom and strength, Lord <font color="00FFFF">%clanleadername%</font>.<br>
+<center>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain fort_status">Check the fortress status</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button><br>
</center>
-</body></html>
\ No newline at end of file
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-03.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-03.html
index 1f5e332..7305b95 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-03.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-03.html
@@ -1,7 +1,3 @@
<html><body>
-The current tax rate is %tax_rate%.<br>
-This tax rate will be changed to %next_tax_rate%.&nbsp;This tax rate will be applied after 12 o'clock tomorrow.<br>
-<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
-</center>
+You already possess this cloak, my lord!
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-05.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-05.html
index 03a208e..7e9ac94 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-05.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-05.html
@@ -1,6 +1,6 @@
<html><body>
The gates have been opened.<br><br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-06.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-06.html
index 0bd0454..4bed6b5 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-06.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-06.html
@@ -1,6 +1,6 @@
<html><body>
-The castle gates have been closed.<br><br>
+The castle gates have been closed.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-07.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-07.html
index b063f88..7ccb945 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-07.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-07.html
@@ -1,6 +1,6 @@
<html><body>
Our castle is under attack! But our victory is certain against such foolish enemies!<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain receive_report">Return</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-08.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-08.html
index 1a929dc..f17a87c 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-08.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-08.html
@@ -1,6 +1,6 @@
<html><body>
This function is not available during the castle siege.<br><br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-09.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-09.html
index c68fd3d..2f56884 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-09.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-09.html
@@ -2,6 +2,7 @@
My Lord, I regret to inform you that you do not currently have enough Adena to set this function.<br>
You may find the money you need in the warehouse.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
-</body></html>
\ No newline at end of file
+<br>
+</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-10.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-10.html
index 1fcd424..05d6d97 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-10.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-10.html
@@ -2,6 +2,6 @@
If you so desire, I shall order all of the foreigners in this castle to leave the premises...but you may earn their ire.<br>
Do you truly wish to banish them?<br>
<center>
-<a action="bypass -h Quest CastleChamberlain banish_foreigner">Banish</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain banish_foreigner">Banish</Button>
</center>
-</body></html>
\ No newline at end of file
+</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-11.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-11.html
index 37746d8..6793f51 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-11.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-11.html
@@ -1,6 +1,6 @@
<html><body>
-All foreigners have been banished from the castle!<br><br>
+All foreigners have been banished from the castle!<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
-</body></html>
\ No newline at end of file
+</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-12.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-12.html
index 7f6349e..0377551 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-12.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-12.html
@@ -1,10 +1,11 @@
<html><body>
The following devices can be used for the protection of the castle.<br>
These devices would all be useful in the next siege, but their high cost should be carefully weighed in your decision.<br>
-If you want to reinforce your device, please note that each device can be directly reinforced to the upper level without going through the lower level.<br>
+If you want to reinforce your device, please note that each device can be directly reinforced on an upper level without going through a lower level.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain manage_doors">Reinforce gates and walls</a><br>
-<a action="bypass -h Quest CastleChamberlain manage_trap">Deploy trap device</a><br><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
-</center>
-</body></html>
\ No newline at end of file
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_doors">Reinforce gates and walls</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manage_trap">Deploy trap devices</Button>
+<Button ALIGN=LEFT ICON="return" action="bypass -h Quest CastleChamberlain chamberlain-01.htmlm">Back</Button>
+</center>
+<br>
+</body> </html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-13.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-13.html
index 1c977d5..d2f4bbf 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-13.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-13.html
@@ -1,9 +1,9 @@
<html><body><br>
-How much reinforcement do you wish?<br>
+How many reinforcements do you wish?<br>
<center>
-<a action="bypass -h Quest CastleChamberlain upgrade_doors %type% 2%doors%">Level 1: </a>Double the strength<br>
-<a action="bypass -h Quest CastleChamberlain upgrade_doors %type% 3%doors%">Level 2: </a>Triple the strength<br>
-<a action="bypass -h Quest CastleChamberlain upgrade_doors %type% 5%doors%">Level 3: </a>Increase strength fivefold<br><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</a>
-</center>
-</body></html>
\ No newline at end of file
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain upgrade_doors %type% 2%doors%">Level 1: </Button> Double the strength<br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_doors %type% 3%doors%">Level 2: </Button> Triple the strength<br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_doors %type% 5%doors%">Level 3: </Button> Increase strength fivefold<br>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body> </html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-14.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-14.html
index 9260d0a..8055e39 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-14.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-14.html
@@ -1,9 +1,9 @@
<html><body><br>
As I said, reinforcements are extremely expensive. I worry what the cost might do to your castle's finances...<br>
Cost: <font color="FFFF00">%gate_price%</font> Adena<br>
-Do you wish to do the reinforcements?
+Do you want to reinforce?<br>
<center>
-<a action="bypass -h Quest CastleChamberlain upgrade_doors_confirm %event%">Reinforce</a><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Cancel</a>
-</center>
-</body></html>
\ No newline at end of file
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_doors_confirm %event%">Yes</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Cancel</Button>
+</center>
+</body> </html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-15.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-15.html
index 34685f0..a66e991 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-15.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-15.html
@@ -1,6 +1,6 @@
<html><body><br>
You should reconsider. The strength already exceeds that level. It is already reinforced to <font color="LEVEL">%doorlevel%%</font> of normal. Think about allocating your resources elsewhere.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Cancel</a>
-</center>
-</body></html>
\ No newline at end of file
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Cancel</Button>
+</center>
+</body> </html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-16.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-16.html
index f2d749a..30cca4a 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-16.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-16.html
@@ -1,6 +1,6 @@
<html><body><br>
The reinforcement was successful.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</a>
-</center>
-</body></html>
\ No newline at end of file
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
+</center>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-17.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-17.html
index 7655c0b..627260c 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-17.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-17.html
@@ -1,7 +1,7 @@
<html><body><br><br>
This trap is capable of first-stage activation. Do you wish to activate it?<br>
<center>
-<a action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 1">Activate the first stage.</a><br><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 1">Activate the first stage</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-17a.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-17a.html
index fe140c2..967f6d7 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-17a.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-17a.html
@@ -1,10 +1,10 @@
<html><body><br><br>
What level of trap do you wish to deploy? The higher the level, the wider the area protected.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 1">Level 1</a><br>
-<a action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 2">Level 2</a><br>
-<a action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 3">Level 3</a><br>
-<a action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 4">Level 4</a><br><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 1">Level 1</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 2">Level 2</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 3">Level 3</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_trap %trapIndex% 4">Level 4</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-18.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-18.html
index 8bb777b..5db1418 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-18.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-18.html
@@ -3,7 +3,7 @@
Cost: <font color="FFFF00">%dmgzone_price%</font> Adena<br>
Do you really wish to deploy the trap?
<center>
-<a action="bypass -h Quest CastleChamberlain upgrade_trap_confirm %trapIndex% %level%">Reinforce</a><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Cancel</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain upgrade_trap_confirm %trapIndex% %level%">Yes</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-19.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-19.html
index cf46c30..b1c8823 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-19.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-19.html
@@ -1,6 +1,6 @@
<html><body><br>
A trap of that level has already been deployed. It is currently level <font color="LEVEL">%dmglevel%</font>.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-20.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-20.html
index 4da73f4..a65e135 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-20.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-20.html
@@ -1,6 +1,6 @@
<html><body><br>
I have deployed the trap as you requested. It will greatly bolster the defense of the castle.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Go back</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-21.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-21.html
index 55bd07e..1978d62 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-21.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-21.html
@@ -1,3 +1,5 @@
<html><body>
-<center>You are not authorized for that action.</center>
+<center>
+You are not authorized for that action.
+</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-22.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-22.html
index c96b6fd..2f243d3 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-22.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-22.html
@@ -1,9 +1,9 @@
<html><body>
You can obtain the following from the castle:
<center><br><br>
-<a action="bypass -h Quest CastleChamberlain manors_cert">Lord of the Manor's Certificate of Approval</a><br><br>
-<a action="bypass -h Quest CastleChamberlain buy %npcId%1">General Items</a><br><br>
-<a action="bypass -h Quest CastleChamberlain give_crown">Castle Lord's Crown</a><br><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain buy %npcId%1">Buy an item</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain give_crown">Receive Castle Lord's Crown</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain give_cloak">Receive a Cloak</Button>
+<Button ALIGN=LEFT ICON="return" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button></center>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-23.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-23.html
index f09c25b..d37fa5c 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-23.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-23.html
@@ -1,10 +1,10 @@
<html><body>
-A castle has the following functions:<br><br>
+A castle has the following functions:<br>
<center>
-<a action="bypass -h Quest CastleChamberlain banish_foreigner_show">Dismiss outsiders.</a><br><br>
-<a action="bypass -h Quest CastleChamberlain doors">Open and close the castle gate.</a><br><br>
-<a action="bypass -h Quest CastleChamberlain siege_functions">Manage the siege functions.</a><br><br>
-<a action="bypass -h Quest CastleChamberlain additional_functions">Manage additional functions.</a><br><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain banish_foreigner_show">Expel an outsider</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain doors">Open and close castle gates</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain siege_functions">Manage the siege functions</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain additional_functions">Manage additional functions</Button>
+<Button ALIGN=LEFT ICON="return" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
-</body></html>
\ No newline at end of file
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-27.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-27.html
index 56ca624..7081891 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-27.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-27.html
@@ -1,6 +1,7 @@
<html><body>
-I beg your pardon, my lord, but you may not use the siege function management without a contract with the fortress.<br><br>
+I'm sorry, my lord.<br>
+You may not use the siege function management without a contract with the fortress.<br>
<center>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back.</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
-</body></html>
\ No newline at end of file
+</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-28.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-28.html
index 95cb7cb..2d077a7 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-28.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-28.html
@@ -2,6 +2,6 @@
This is the current status of the fortress, my lord.<br><br>
%list%
<center><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back.</a>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-29.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-29.html
new file mode 100644
index 0000000..66adcb9
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/chamberlain-29.html
@@ -0,0 +1,3 @@
+<html><body>
+Only a lord can equip this noble cloak. Use it show the world your absolute power!
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/manor.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/manor.html
index 332ea6d..7f12dbe 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/manor.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleChamberlain/manor.html
@@ -1,10 +1,10 @@
<html><body>
Here are some things you'll need to know about to manage the Manor.<br>
<center><br><br>
-<a action="bypass manor_menu_select?ask=3&state=-1&time=0">View the Status of Seeds/Crops</a><br>
-<a action="bypass manor_menu_select?ask=7&state=-1&time=0">Edit Seed Setup</a><br>
-<a action="bypass manor_menu_select?ask=8&state=-1&time=0">Edit Crop Setup</a><br>
-<a action="bypass -h Quest CastleChamberlain manor-help-01.html">View Descriptions</a><br>
-<a action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass manor_menu_select?ask=3&state=-1&time=0">View the Status of Seeds/Crops</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass manor_menu_select?ask=7&state=-1&time=0">Edit Seed Setup</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass manor_menu_select?ask=8&state=-1&time=0">Edit Crop Setup</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleChamberlain manor-help-01.html">View Descriptions</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleChamberlain chamberlain-01.html">Return</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/CastleCourtMagician.java b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/CastleCourtMagician.java
index 93d5339..85a9baa 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/CastleCourtMagician.java
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/CastleCourtMagician.java
@@ -18,15 +18,15 @@
*/
package ai.npc.CastleCourtMagician;
+import handlers.effecthandlers.CallPc;
import ai.npc.AbstractNpcAI;
+import com.l2jserver.gameserver.enums.CastleSide;
import com.l2jserver.gameserver.model.ClanPrivilege;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.holders.SkillHolder;
import com.l2jserver.gameserver.network.clientpackets.RequestAcquireSkill;
-
-import handlers.effecthandlers.CallPc;
/**
* Castle Court Magician AI.
@@ -51,6 +51,8 @@
private static final int CLAN_GATE = 3632; // Clan Gate
private static final SkillHolder DISPLAY_CLAN_GATE = new SkillHolder(5109, 1); // Production - Clan Gate
// Items
+ private static final int CLOAK_OF_LIGHT = 34925;
+ private static final int CLOAK_OF_DARK = 34926;
private static final int EPAULETTE = 9912; // Knight's Epaulette
private static final int RED_MEDITATION = 9931; // Red Talisman of Meditation
private static final int BLUE_DIV_PROTECTION = 9932; // Blue Talisman - Divine Protection
@@ -139,6 +141,7 @@
{
case "courtmagician.html":
case "courtmagician-03.html":
+ case "courtmagician-07.html":
{
htmltext = event;
break;
@@ -283,6 +286,18 @@
}
break;
}
+ case "giveCloak":
+ {
+ final int cloakId = npc.getCastle().getSide() == CastleSide.DARK ? CLOAK_OF_DARK : CLOAK_OF_LIGHT;
+
+ if (hasQuestItems(player, cloakId))
+ {
+ htmltext = "courtmagician-08.html";
+ break;
+ }
+ giveItems(player, cloakId, 1);
+ break;
+ }
}
return htmltext;
}
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-03.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-03.html
index 1beaa86..c3126f6 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-03.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-03.html
@@ -1,6 +1,6 @@
<html><body>
The Talisman is both magical and mysterious. Once applied to your bracelet, you will be able to see its surprising effect for yourself. Before I can give it to you, however, you must prove to me that you are capable of responsibly wielding such power. Give me <font color = "LEVEL">10 Knight's Epaulettes</font> and I will provide you the Talisman.<br><br><br>
<center>
-<a action="bypass -h Quest CastleCourtMagician giveTalisman">Give Knight's Epaulettes.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleCourtMagician giveTalisman">Give Knight's Epaulettes</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-06.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-06.html
index bbc2afb..bc82169 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-06.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-06.html
@@ -1,4 +1,4 @@
<html><body>
You do not have enough Knight's Epaulettes.<br><br>
-<a action="bypass -h Quest CastleCourtMagician courtmagician.html">Back.</a><br><br>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleCourtMagician courtmagician.html">Back</Button>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-07.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-07.html
new file mode 100644
index 0000000..7574881
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-07.html
@@ -0,0 +1,4 @@
+<html><body>Court Wizard:<br>
+Only those who are a Marquis or higher can receive the cloak. You cannot receive more than one cloak either, I might add.<br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleCourtMagician giveCloak">"I would like one."</Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-08.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-08.html
new file mode 100644
index 0000000..5aff018
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician-08.html
@@ -0,0 +1,5 @@
+<html><body>Court Magician:<br>
+<center>
+Don't you already have the cloak?
+</center>
+</body></html>
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician.html
index 0a9a77d..fcf402b 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleCourtMagician/courtmagician.html
@@ -3,12 +3,13 @@
You can make use of a magical field capable of teleporting a clan member through a crown, as well as magic that provides special abilities to your low-ranking soldiers. We even have a Talisman, a magical crystal filled with power.<br>
We have also purchased certain items directly from the Elves' mystical merchant. How may I serve you?<br><br>
<center>
-<a action="bypass -h Quest CastleCourtMagician clanTeleport">Move through the magic field.</a><br>
-<a action="bypass -h npc_%objectId%_multisell 90002001">Purchase Elven items.</a><br>
-<a action="bypass -h npc_%objectId%_multisell 90002002">Purchase Bracelet.</a><br>
-<a action="bypass -h npc_%objectId%_multisell 90002003">Purchase Shirt.</a><br>
-<a action="bypass -h npc_%objectId%_exc_multisell 90002004">Trade Shirt for Enchanted Shirt.</a><br>
-<a action="bypass -h Quest CastleCourtMagician courtmagician-03.html">Obtain Talisman.</a><br>
-<a action="bypass -h Quest CastleCourtMagician squadSkill">Learn special skills for low-ranked soldiers.</a>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleCourtMagician clanTeleport">Move through the magic field</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 90002001">Purchase Elven items</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 90002002">Purchase Bracelet</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 90002003">Purchase Shirt</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 90002004">Trade Shirt for Enchanted Shirt</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleCourtMagician courtmagician-03.html">Obtain Talisman</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleCourtMagician squadSkill">Learn special skills for low-ranked soldiers</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleCourtMagician courtmagician-07.html">Receive a cloak</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-01.html
index de31f3b..2d37693 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-01.html
@@ -3,10 +3,10 @@
Place the certificate on the ground at the beginning of the battle and they will be summoned. They will position themselves wherever you are and in the direction you look. Most importantly, they'll defend you, my lord, to the death!<br>
If you wish to re-position them, simply pick up the certificate and place it where you wish them to be.<br>
You can buy as many certificates as you want, but there is a limit to the number of mercenaries that can be hired.<br>
-<a action="bypass -h Quest CastleMercenaryManager limit">View the Mercenary Posting based on the Seal of Strife.</a><br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager limit">View the Mercenary Posting based on the Seal of Strife</Button>
You cannot position the mercenaries too closely together, and they must be assigned inside the castle. Of course, if you place the certificate in other castles, the mercenaries will not be able to come to your aid.<br>
The contract between us will be terminated at the end of the siege. You may use any unused certificates in another battle.<br>
<center>
-<button action="bypass -h Quest CastleMercenaryManager main" value="Return" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleMercenaryManager main">Return</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-dawn.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-dawn.html
index 4db7690..5e20dff 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-dawn.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-dawn.html
@@ -3,10 +3,10 @@
Along with our highly skilled mercenaries, the <font color="LEVEL">Lords of Dawn</font> will join forces with us. The <font color="LEVEL">Mercenaries of Legend</font> will also join in. The balance of power is tilted in our favor!<br>
The seal of strife is on our side! Victory is assured!<br>
If you don't know the method of Contract, just ask me.<br>
-<a action="bypass -h Quest CastleMercenaryManager mercmanager-01.html">"Tell me about the method of Contract."</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 1">Hire mercenary guild members.</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 2">Hire elite mercenary guild members.</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 4">Hire Lords of Dawn.</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 5">Hire special mercenaries.</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 3">Hire a teleporter.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager mercmanager-01.html">"Tell me about the method of Contract</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 1">Hire mercenary guild members</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 2">Hire elite mercenary guild members</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 4">Hire Lords of Dawn</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 5">Hire special mercenaries</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 3">Hire a teleporter</Button>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-dusk.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-dusk.html
index 8d2ce76..2469ce1 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-dusk.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-dusk.html
@@ -4,7 +4,7 @@
You can still hire <font color="LEVEL">Deadmen of War</font>. Although you possess a posting ticket from a previous Contract, if it does not meet the conditions of the seal, you won't be able to place it.<br>
Although the situation appears dire, trust in your soldiers and be brave until the end.<br>
If you wish to know the method of Contract, just ask me.<br>
-<a action="bypass -h Quest CastleMercenaryManager mercmanager-01.html">"Tell me about the method of Contract."</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 6">Hire Deadmen of War.</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 3">Hire a teleporter.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager mercmanager-01.html">"Tell me about the method of Contract</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 6">Hire Deadmen of War</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 3">Hire a teleporter</Button>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-ssq.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-ssq.html
index 7c03a6a..0cea903 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-ssq.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager-ssq.html
@@ -2,6 +2,6 @@
I'm sorry, my lord.<br>
You can only hire mercenaries during the seal validation period.<br><br>
<center>
-<a action="bypass -h Quest CastleMercenaryManager main">Back</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager main">Back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager.html
index fcc40cf..3e09548 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleMercenaryManager/mercmanager.html
@@ -3,9 +3,9 @@
Although you have already signed a Contract with special mercenaries who were after the Seal of Strife previously, you will not be able to place them unless they belong to our guild.<br>
If you don't know how to draw up a Contract, just ask me.<br>
<center>
-<a action="bypass -h Quest CastleMercenaryManager mercmanager-01.html">Ask about how to draw up a Contract.</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 1">Hire mercenaries.</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 2">Hire elite mercenary guild members.</a><br>
-<a action="bypass -h Quest CastleMercenaryManager buy 3">Hire a teleporter.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager mercmanager-01.html">Ask about how to draw up a Contract</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 1">Hire mercenaries</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 2">Hire elite mercenary guild members</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleMercenaryManager buy 3">Hire a teleporter</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleTeleporter/teleporter-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleTeleporter/teleporter-01.html
index 17a4a00..99d6700 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleTeleporter/teleporter-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleTeleporter/teleporter-01.html
@@ -2,6 +2,6 @@
All those present will be teleported to a position near the castle hall in 30 seconds.<br>
Prepare for transport!<br>
<center>
-<a action="bypass -h Quest CastleTeleporter teleporter-03.html">Teleport</a>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleTeleporter teleporter-03.html">Teleport</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleTeleporter/teleporter-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleTeleporter/teleporter-02.html
index c53656e..31f523f 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleTeleporter/teleporter-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleTeleporter/teleporter-02.html
@@ -3,6 +3,6 @@
Therefore, all of those in the room will be teleported to a position near the castle hall in 8 minutes.<br>
Make yourself comfortable.<br>
<center>
-<a action="bypass -h Quest CastleTeleporter teleporter-03.html">Teleport</a>
+<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h Quest CastleTeleporter teleporter-03.html">Teleport</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-01.html
index 8abac10..0ceff0f 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-01.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-01.html
@@ -1,8 +1,8 @@
<html><body>Warehouse Keeper:<br>
Welcome! What can I do for you today? It costs only 30 Adena to store items. If you are a manager, please let me know in advance and I will give you an item that will help the clan's development.<br><br>
<center>
-<a action="bypass -h Quest CastleWarehouse warehouse-02.html">Private Warehouse.</a><br>
-<a action="bypass -h Quest CastleWarehouse warehouse-03.html">Clan Warehouse.</a><br>
-<a action="bypass -h Quest CastleWarehouse warehouse-04.html">Check honorary item.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleWarehouse warehouse-02.html">Private Warehouse</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleWarehouse warehouse-03.html">Clan Warehouse</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleWarehouse warehouse-04.html">Check honorary item</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-02.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-02.html
index f01068e..20b4807 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-02.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-02.html
@@ -1,7 +1,7 @@
<html><body>Warehouse Keeper:<br>
<center>
-<a action="bypass -h npc_%objectId%_DepositP">Deposit an item. (Private Warehouse)</a><br>
-<a action="bypass -h npc_%objectId%_WithdrawP">Withdraw an item. (Private Warehouse)</a><br><br>
-<a action="bypass -h Quest CastleWarehouse warehouse-01.html">Back</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_DepositP">Deposit an item. (Private Warehouse)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_WithdrawP">Withdraw an item. (Private Warehouse)</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleWarehouse warehouse-01.html">Back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-03.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-03.html
index 6e1d304..e091a60 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-03.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-03.html
@@ -1,7 +1,7 @@
<html><body>Warehouse Keeper:<br>
<center>
-<a action="bypass -h npc_%objectId%_DepositC" msg="1039">Deposit an item. (Clan Warehouse)</a><br>
-<a action="bypass -h npc_%objectId%_WithdrawC">Withdraw an item. (Clan Warehouse)</a><br><br>
-<a action="bypass -h Quest CastleWarehouse warehouse-01.html">Back</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_DepositC" msg="1039">Deposit an item. (Clan Warehouse)</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_WithdrawC">Withdraw an item. (Clan Warehouse)</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleWarehouse warehouse-01.html">Back</Button>
</center>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-04.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-04.html
index 5869906..2e79b2e 100644
--- a/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-04.html
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/CastleWarehouse/warehouse-04.html
@@ -1,6 +1,6 @@
<html><body>Warehouse Keeper:<br>
You can earn a total of <font color="LEVEL">%blood%</font> "Blood Alliances" through a successful siege.<br><br>
-<a action="bypass -h Quest CastleWarehouse Receive">Receive "Blood Alliance."</a><br>
-<a action="bypass -h Quest CastleWarehouse Exchange">Exchange a "Blood Alliance" for 30 "Blood Oaths."</a><br>
-<a action="bypass -h Quest CastleWarehouse warehouse-01.html">Back.</a>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleWarehouse Receive">Receive "Blood Alliance."</Button>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest CastleWarehouse Exchange">Exchange a "Blood Alliance" for 30 "Blood Oaths"</Button>
+<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest CastleWarehouse warehouse-01.html">Back</Button>
</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/Proclaimer.java b/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/Proclaimer.java
new file mode 100644
index 0000000..ded7901
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/Proclaimer.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2004-2015 L2J DataPack
+ *
+ * This file is part of L2J DataPack.
+ *
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package ai.npc.Proclaimer;
+
+import ai.npc.AbstractNpcAI;
+
+import com.l2jserver.gameserver.model.L2Clan;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.holders.SkillHolder;
+import com.l2jserver.gameserver.network.NpcStringId;
+import com.l2jserver.gameserver.network.clientpackets.Say2;
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jserver.gameserver.network.serverpackets.NpcSay;
+
+/**
+ * Proclaimer AI.
+ * @author St3eT
+ */
+public final class Proclaimer extends AbstractNpcAI
+{
+ // NPCs
+ private static final int[] PROCLAIMER =
+ {
+ 36609, // Gludio
+ 36610, // Dion
+ 36611, // Giran
+ 36612, // Oren
+ 36613, // Aden
+ 36614, // Innadril
+ 36615, // Goddard
+ 36616, // Rune
+ 36617, // Schuttgard
+ };
+ // Skills
+ private static final SkillHolder XP_BUFF = new SkillHolder(19036, 1); // Blessing of Light
+
+ private Proclaimer()
+ {
+ super(Proclaimer.class.getSimpleName(), "ai/npc");
+ addStartNpc(PROCLAIMER);
+ addFirstTalkId(PROCLAIMER);
+ addTalkId(PROCLAIMER);
+ }
+
+ @Override
+ public String onFirstTalk(L2Npc npc, L2PcInstance player)
+ {
+ String htmltext = null;
+ if (!player.isOnDarkSide())
+ {
+ player.sendPacket(new NpcSay(npc.getObjectId(), Say2.TELL, npc.getId(), NpcStringId.WHEN_THE_WORLD_PLUNGES_INTO_CHAOS_WE_WILL_NEED_YOUR_HELP_WE_HOPE_YOU_JOIN_US_WHEN_THE_TIME_COMES));
+
+ final L2Clan ownerClan = npc.getCastle().getOwner();
+ if (ownerClan != null)
+ {
+ final NpcHtmlMessage packet = new NpcHtmlMessage(npc.getObjectId());
+ packet.setHtml(getHtm(player.getHtmlPrefix(), "proclaimer.html"));
+ packet.replace("%leaderName%", ownerClan.getLeaderName());
+ packet.replace("%clanName%", ownerClan.getName());
+ packet.replace("%castleName%", npc.getCastle().getName());
+ player.sendPacket(packet);
+ }
+ }
+ else
+ {
+ htmltext = "proclaimer-01.html";
+ }
+ return htmltext;
+ }
+
+ @Override
+ public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+ {
+ String htmltext = null;
+ if (event.equals("giveBuff"))
+ {
+ if (!player.isOnDarkSide())
+ {
+ XP_BUFF.getSkill().applyEffects(npc, player);
+ }
+ else
+ {
+ htmltext = "proclaimer-01.html";
+ }
+ }
+ return htmltext;
+ }
+
+ public static void main(String[] args)
+ {
+ new Proclaimer();
+ }
+}
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/proclaimer-01.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/proclaimer-01.html
new file mode 100644
index 0000000..1499eed
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/proclaimer-01.html
@@ -0,0 +1,3 @@
+<html><body>Proclaimer:<br>
+I cannot aid the forces of darkness.
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/proclaimer.html b/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/proclaimer.html
new file mode 100644
index 0000000..a0f2c6a
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/ai/npc/Proclaimer/proclaimer.html
@@ -0,0 +1,4 @@
+<html><head><body>Proclaimer:<br>
+<font color="55FFFF">%leaderName%</font> of Clan <font color="55FFFF">%clanName%</font>, who is also the owner of %castleName% Castle, has prepared a small gift for you.<br>
+<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Proclaimer giveBuff">"A blessing of light? Thanks!" </Button>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java b/L2J_DataPack/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
index 2a22e6c..a26e0b0 100644
--- a/L2J_DataPack/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
+++ b/L2J_DataPack/dist/game/data/scripts/conquerablehalls/flagwar/FlagWar.java
@@ -33,10 +33,10 @@
import com.l2jserver.gameserver.ai.L2SpecialSiegeGuardAI;
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.datatables.NpcData;
+import com.l2jserver.gameserver.enums.SiegeClanType;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.L2ClanMember;
import com.l2jserver.gameserver.model.L2SiegeClan;
-import com.l2jserver.gameserver.model.L2SiegeClan.SiegeClanType;
import com.l2jserver.gameserver.model.L2Spawn;
import com.l2jserver.gameserver.model.L2World;
import com.l2jserver.gameserver.model.Location;
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/EffectMasterHandler.java b/L2J_DataPack/dist/game/data/scripts/handlers/EffectMasterHandler.java
index 5c84cf4..c40aa6f 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/EffectMasterHandler.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/EffectMasterHandler.java
@@ -172,6 +172,7 @@
SummonTrap.class,
Sweeper.class,
TakeCastle.class,
+ TakeCastleStart.class,
TakeFort.class,
TakeFortStart.class,
TalismanSlot.class,
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_DataPack/dist/game/data/scripts/handlers/MasterHandler.java
index c1008f2..93e6668 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/MasterHandler.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/MasterHandler.java
@@ -93,7 +93,7 @@
import handlers.admincommandhandlers.AdminShop;
import handlers.admincommandhandlers.AdminShowQuests;
import handlers.admincommandhandlers.AdminShutdown;
-import handlers.admincommandhandlers.AdminSiege;
+import handlers.admincommandhandlers.AdminClanHall;
import handlers.admincommandhandlers.AdminSkill;
import handlers.admincommandhandlers.AdminSpawn;
import handlers.admincommandhandlers.AdminSummon;
@@ -382,7 +382,7 @@
AdminShop.class,
AdminShowQuests.class,
AdminShutdown.class,
- AdminSiege.class,
+ AdminClanHall.class,
AdminSkill.class,
AdminSpawn.class,
AdminSummon.class,
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminCastle.java b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminCastle.java
new file mode 100644
index 0000000..96bc937
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminCastle.java
@@ -0,0 +1,263 @@
+/*
+ * Copyright (C) 2004-2015 L2J DataPack
+ *
+ * This file is part of L2J DataPack.
+ *
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package handlers.admincommandhandlers;
+
+import java.util.StringTokenizer;
+
+import com.l2jserver.gameserver.cache.HtmCache;
+import com.l2jserver.gameserver.datatables.ClanTable;
+import com.l2jserver.gameserver.enums.CastleSide;
+import com.l2jserver.gameserver.handler.IAdminCommandHandler;
+import com.l2jserver.gameserver.instancemanager.CastleManager;
+import com.l2jserver.gameserver.model.L2Clan;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.entity.Castle;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
+import com.l2jserver.gameserver.util.Util;
+
+/**
+ * Admin Castle manage admin commands.
+ * @author St3eT
+ */
+public final class AdminCastle implements IAdminCommandHandler
+{
+ private static final String[] ADMIN_COMMANDS =
+ {
+ "admin_castlemanage",
+ };
+
+ @Override
+ public boolean useAdminCommand(String command, L2PcInstance activeChar)
+ {
+ final StringTokenizer st = new StringTokenizer(command, " ");
+ final String actualCommand = st.nextToken();
+
+ if (actualCommand.equals("admin_castlemanage"))
+ {
+ if (st.hasMoreTokens())
+ {
+ final String param = st.nextToken();
+ final Castle castle;
+ if (Util.isDigit(param))
+ {
+ castle = CastleManager.getInstance().getCastleById(Integer.parseInt(param));
+ }
+ else
+ {
+ castle = CastleManager.getInstance().getCastle(param);
+ }
+
+ if (castle == null)
+ {
+ activeChar.sendMessage("Invalid parameters! Usage: //castlemanage <castleId[1-9] / castleName>");
+ return false;
+ }
+
+ if (!st.hasMoreTokens())
+ {
+ showCastleMenu(activeChar, castle.getResidenceId());
+ }
+ else
+ {
+ final String action = st.nextToken();
+ final L2PcInstance target = checkTarget(activeChar) ? activeChar.getActingPlayer() : null;
+ switch (action)
+ {
+ case "showRegWindow":
+ {
+ castle.getSiege().listRegisterClan(activeChar);
+ break;
+ }
+ case "addAttacker":
+ {
+ if (checkTarget(activeChar))
+ {
+ castle.getSiege().registerAttacker(target, true);
+ }
+ else
+ {
+ activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
+ }
+ break;
+ }
+ case "removeAttacker":
+ {
+ if (checkTarget(activeChar))
+ {
+ castle.getSiege().removeSiegeClan(activeChar);
+ }
+ else
+ {
+ activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
+ }
+ break;
+ }
+ case "addDeffender":
+ {
+ if (checkTarget(activeChar))
+ {
+ castle.getSiege().registerDefender(target, true);
+ }
+ else
+ {
+ activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
+ }
+ break;
+ }
+ case "removeDeffender":
+ {
+ if (checkTarget(activeChar))
+ {
+ castle.getSiege().removeSiegeClan(target);
+ }
+ else
+ {
+ activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
+ }
+ break;
+ }
+ case "startSiege":
+ {
+ if (!castle.getSiege().getAttackerClans().isEmpty())
+ {
+ castle.getSiege().startSiege();
+ }
+ else
+ {
+ activeChar.sendMessage("There is currently not registered any clan for castle siege!");
+ }
+ break;
+ }
+ case "stopSiege":
+ {
+ if (castle.getSiege().isInProgress())
+ {
+ castle.getSiege().endSiege();
+ }
+ else
+ {
+ activeChar.sendMessage("Castle siege is not currently in progress!");
+ }
+ showCastleMenu(activeChar, castle.getResidenceId());
+ break;
+ }
+ case "setOwner":
+ {
+ if ((target == null) || !checkTarget(activeChar))
+ {
+ activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
+ }
+ else if (target.getClan().getCastleId() > 0)
+ {
+ activeChar.sendMessage("This clan already have castle!");
+ }
+ else if (castle.getOwner() != null)
+ {
+ activeChar.sendMessage("This castle is already taken by another clan!");
+ }
+ else if (!st.hasMoreTokens())
+ {
+ activeChar.sendMessage("Invalid parameters!!");
+ }
+ else
+ {
+ final CastleSide side = Enum.valueOf(CastleSide.class, st.nextToken().toUpperCase());
+ if (side != null)
+ {
+ castle.setSide(side);
+ castle.setOwner(target.getClan());
+ }
+ }
+ showCastleMenu(activeChar, castle.getResidenceId());
+ break;
+ }
+ case "takeCastle":
+ {
+ final L2Clan clan = ClanTable.getInstance().getClan(castle.getOwnerId());
+ if (clan != null)
+ {
+ castle.removeOwner(clan);
+ }
+ else
+ {
+ activeChar.sendMessage("Error during removing castle!");
+ }
+ showCastleMenu(activeChar, castle.getResidenceId());
+ break;
+ }
+ case "switchSide":
+ {
+ if (castle.getSide() == CastleSide.DARK)
+ {
+ castle.setSide(CastleSide.LIGHT);
+ }
+ else if (castle.getSide() == CastleSide.LIGHT)
+ {
+ castle.setSide(CastleSide.DARK);
+ }
+ else
+ {
+ activeChar.sendMessage("You can't switch sides when is castle neutral!");
+ }
+ showCastleMenu(activeChar, castle.getResidenceId());
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
+ html.setHtml(HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), "data/html/admin/castlemanage.htm"));
+ activeChar.sendPacket(html);
+ }
+ }
+ return true;
+ }
+
+ private void showCastleMenu(L2PcInstance player, int castleId)
+ {
+ final Castle castle = CastleManager.getInstance().getCastleById(castleId);
+
+ if (castle != null)
+ {
+ final L2Clan ownerClan = castle.getOwner();
+ final NpcHtmlMessage html = new NpcHtmlMessage(0, 0);
+ html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/html/admin/castlemanage_selected.htm"));
+ html.replace("%castleId%", castle.getResidenceId());
+ html.replace("%castleName%", castle.getName());
+ html.replace("%ownerName%", ownerClan != null ? ownerClan.getLeaderName() : "NPC");
+ html.replace("%ownerClan%", ownerClan != null ? ownerClan.getName() : "NPC");
+ html.replace("%castleSide%", Util.capitalizeFirst(castle.getSide().toString().toLowerCase()));
+ player.sendPacket(html);
+ }
+ }
+
+ private boolean checkTarget(L2PcInstance player)
+ {
+ return ((player.getTarget() != null) && player.getTarget().isPlayer() && (((L2PcInstance) player.getTarget()).getClan() != null));
+ }
+
+ @Override
+ public String[] getAdminCommandList()
+ {
+ return ADMIN_COMMANDS;
+ }
+}
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminClanHall.java b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminClanHall.java
index 47c7932..3bc359c 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminClanHall.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/admincommandhandlers/AdminClanHall.java
@@ -18,18 +18,15 @@
*/
package handlers.admincommandhandlers;
-import java.util.Calendar;
import java.util.StringTokenizer;
import com.l2jserver.gameserver.datatables.ClanTable;
import com.l2jserver.gameserver.handler.IAdminCommandHandler;
import com.l2jserver.gameserver.instancemanager.AuctionManager;
import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
-import com.l2jserver.gameserver.instancemanager.CastleManager;
import com.l2jserver.gameserver.instancemanager.ClanHallManager;
import com.l2jserver.gameserver.model.L2Clan;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.entity.Castle;
import com.l2jserver.gameserver.model.entity.ClanHall;
import com.l2jserver.gameserver.model.entity.clanhall.SiegableHall;
import com.l2jserver.gameserver.model.zone.type.L2ClanHallZone;
@@ -39,28 +36,13 @@
import com.l2jserver.util.StringUtil;
/**
- * This class handles all siege commands.
+ * This class handles Clan Hall commands.
* @author Zoey76 (rework)
*/
-public class AdminSiege implements IAdminCommandHandler
+public class AdminClanHall implements IAdminCommandHandler
{
private static final String[] ADMIN_COMMANDS =
{
- // Castle commands
- "admin_siege",
- "admin_add_attacker",
- "admin_add_defender",
- "admin_add_guard",
- "admin_list_siege_clans",
- "admin_clear_siege_list",
- "admin_move_defenders",
- "admin_spawn_doors",
- "admin_endsiege",
- "admin_startsiege",
- "admin_setsiegetime",
- "admin_setcastle",
- "admin_removecastle",
- // Clan hall commands
"admin_clanhall",
"admin_clanhallset",
"admin_clanhalldel",
@@ -72,11 +54,9 @@
@Override
public boolean useAdminCommand(String command, L2PcInstance activeChar)
{
- StringTokenizer st = new StringTokenizer(command, " ");
+ final StringTokenizer st = new StringTokenizer(command, " ");
command = st.nextToken(); // Get actual command
- // Get castle
- Castle castle = null;
ClanHall clanhall = null;
if (st.hasMoreTokens())
{
@@ -184,185 +164,24 @@
}
}
}
- else
- {
- castle = CastleManager.getInstance().getCastle(val);
- switch (command)
- {
- case "admin_add_attacker":
- if (player == null)
- {
- activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
- }
- else
- {
- castle.getSiege().registerAttacker(player, true);
- }
- break;
- case "admin_add_defender":
- if (player == null)
- {
- activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
- }
- else
- {
- castle.getSiege().registerDefender(player, true);
- }
- break;
- case "admin_add_guard":
- if (st.hasMoreTokens())
- {
- val = st.nextToken();
- if (Util.isDigit(val))
- {
- castle.getSiege().getSiegeGuardManager().addSiegeGuard(activeChar, Integer.parseInt(val));
- break;
- }
- }
- // If doesn't have more tokens or token is not a number.
- activeChar.sendMessage("Usage: //add_guard castle npcId");
- break;
- case "admin_clear_siege_list":
- castle.getSiege().clearSiegeClan();
- break;
- case "admin_endsiege":
- castle.getSiege().endSiege();
- break;
- case "admin_list_siege_clans":
- castle.getSiege().listRegisterClan(activeChar);
- break;
- case "admin_move_defenders":
- activeChar.sendMessage("Not implemented yet.");
- break;
- case "admin_setcastle":
- if ((player == null) || (player.getClan() == null))
- {
- activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
- }
- else
- {
- castle.setOwner(player.getClan());
- }
- break;
- case "admin_removecastle":
- final L2Clan clan = ClanTable.getInstance().getClan(castle.getOwnerId());
- if (clan != null)
- {
- castle.removeOwner(clan);
- }
- else
- {
- activeChar.sendMessage("Unable to remove castle.");
- }
- break;
- case "admin_setsiegetime":
- if (st.hasMoreTokens())
- {
- final Calendar cal = Calendar.getInstance();
- cal.setTimeInMillis(castle.getSiegeDate().getTimeInMillis());
-
- val = st.nextToken();
-
- if ("month".equals(val))
- {
- int month = cal.get(Calendar.MONTH) + Integer.parseInt(st.nextToken());
- if ((cal.getActualMinimum(Calendar.MONTH) > month) || (cal.getActualMaximum(Calendar.MONTH) < month))
- {
- activeChar.sendMessage("Unable to change Siege Date - Incorrect month value only " + cal.getActualMinimum(Calendar.MONTH) + "-" + cal.getActualMaximum(Calendar.MONTH) + " is accepted!");
- return false;
- }
- cal.set(Calendar.MONTH, month);
- }
- else if ("day".equals(val))
- {
- int day = Integer.parseInt(st.nextToken());
- if ((cal.getActualMinimum(Calendar.DAY_OF_MONTH) > day) || (cal.getActualMaximum(Calendar.DAY_OF_MONTH) < day))
- {
- activeChar.sendMessage("Unable to change Siege Date - Incorrect day value only " + cal.getActualMinimum(Calendar.DAY_OF_MONTH) + "-" + cal.getActualMaximum(Calendar.DAY_OF_MONTH) + " is accepted!");
- return false;
- }
- cal.set(Calendar.DAY_OF_MONTH, day);
- }
- else if ("hour".equals(val))
- {
- int hour = Integer.parseInt(st.nextToken());
- if ((cal.getActualMinimum(Calendar.HOUR_OF_DAY) > hour) || (cal.getActualMaximum(Calendar.HOUR_OF_DAY) < hour))
- {
- activeChar.sendMessage("Unable to change Siege Date - Incorrect hour value only " + cal.getActualMinimum(Calendar.HOUR_OF_DAY) + "-" + cal.getActualMaximum(Calendar.HOUR_OF_DAY) + " is accepted!");
- return false;
- }
- cal.set(Calendar.HOUR_OF_DAY, hour);
- }
- else if ("min".equals(val))
- {
- int min = Integer.parseInt(st.nextToken());
- if ((cal.getActualMinimum(Calendar.MINUTE) > min) || (cal.getActualMaximum(Calendar.MINUTE) < min))
- {
- activeChar.sendMessage("Unable to change Siege Date - Incorrect minute value only " + cal.getActualMinimum(Calendar.MINUTE) + "-" + cal.getActualMaximum(Calendar.MINUTE) + " is accepted!");
- return false;
- }
- cal.set(Calendar.MINUTE, min);
- }
-
- if (cal.getTimeInMillis() < Calendar.getInstance().getTimeInMillis())
- {
- activeChar.sendMessage("Unable to change Siege Date");
- }
- else if (cal.getTimeInMillis() != castle.getSiegeDate().getTimeInMillis())
- {
- castle.getSiegeDate().setTimeInMillis(cal.getTimeInMillis());
- castle.getSiege().saveSiegeDate();
- activeChar.sendMessage("Castle siege time for castle " + castle.getName() + " has been changed.");
- }
- }
- showSiegeTimePage(activeChar, castle);
- break;
- case "admin_spawn_doors":
- castle.spawnDoor();
- break;
- case "admin_startsiege":
- castle.getSiege().startSiege();
- break;
- default:
- showSiegePage(activeChar, castle.getName());
- break;
- }
- }
}
else
{
- showCastleSelectPage(activeChar);
+ showClanHallSelectPage(activeChar);
}
return true;
}
/**
- * Show castle select page.
+ * Show clan hall select page.
* @param activeChar the active char
*/
- private void showCastleSelectPage(L2PcInstance activeChar)
+ private void showClanHallSelectPage(L2PcInstance activeChar)
{
int i = 0;
final NpcHtmlMessage adminReply = new NpcHtmlMessage();
- adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/castles.htm");
+ adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/clanhalls.htm");
final StringBuilder cList = new StringBuilder(500);
- for (Castle castle : CastleManager.getInstance().getCastles())
- {
- if (castle != null)
- {
- String name = castle.getName();
- StringUtil.append(cList, "<td fixwidth=90><a action=\"bypass -h admin_siege ", name, "\">", name, "</a></td>");
- i++;
- }
- if (i > 2)
- {
- cList.append("</tr><tr>");
- i = 0;
- }
- }
- adminReply.replace("%castles%", cList.toString());
- cList.setLength(0);
- i = 0;
for (SiegableHall hall : CHSiegeManager.getInstance().getConquerableHalls().values())
{
if (hall != null)
@@ -409,60 +228,6 @@
}
}
adminReply.replace("%freeclanhalls%", cList.toString());
- activeChar.sendPacket(adminReply);
- }
-
- /**
- * Show the siege page.
- * @param activeChar the active char
- * @param castleName the castle name
- */
- private void showSiegePage(L2PcInstance activeChar, String castleName)
- {
- final NpcHtmlMessage adminReply = new NpcHtmlMessage();
- adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/castle.htm");
- adminReply.replace("%castleName%", castleName);
- activeChar.sendPacket(adminReply);
- }
-
- /**
- * Show the siege time page.
- * @param activeChar the active char
- * @param castle the castle
- */
- private void showSiegeTimePage(L2PcInstance activeChar, Castle castle)
- {
- final NpcHtmlMessage adminReply = new NpcHtmlMessage();
- adminReply.setFile(activeChar.getHtmlPrefix(), "data/html/admin/castlesiegetime.htm");
- adminReply.replace("%castleName%", castle.getName());
- adminReply.replace("%time%", castle.getSiegeDate().getTime().toString());
- final Calendar newDay = Calendar.getInstance();
- boolean isSunday = false;
- if (newDay.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
- {
- isSunday = true;
- }
- else
- {
- newDay.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
- }
-
- if (isSunday)
- {
- adminReply.replace("%sundaylink%", String.valueOf(newDay.get(Calendar.DAY_OF_YEAR)));
- adminReply.replace("%sunday%", String.valueOf(newDay.get(Calendar.MONTH) + "/" + String.valueOf(newDay.get(Calendar.DAY_OF_MONTH))));
- newDay.add(Calendar.DAY_OF_MONTH, 13);
- adminReply.replace("%saturdaylink%", String.valueOf(newDay.get(Calendar.DAY_OF_YEAR)));
- adminReply.replace("%saturday%", String.valueOf(newDay.get(Calendar.MONTH) + "/" + String.valueOf(newDay.get(Calendar.DAY_OF_MONTH))));
- }
- else
- {
- adminReply.replace("%saturdaylink%", String.valueOf(newDay.get(Calendar.DAY_OF_YEAR)));
- adminReply.replace("%saturday%", String.valueOf(newDay.get(Calendar.MONTH) + "/" + String.valueOf(newDay.get(Calendar.DAY_OF_MONTH))));
- newDay.add(Calendar.DAY_OF_MONTH, 1);
- adminReply.replace("%sundaylink%", String.valueOf(newDay.get(Calendar.DAY_OF_YEAR)));
- adminReply.replace("%sunday%", String.valueOf(newDay.get(Calendar.MONTH) + "/" + String.valueOf(newDay.get(Calendar.DAY_OF_MONTH))));
- }
activeChar.sendPacket(adminReply);
}
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/effecthandlers/TakeCastle.java b/L2J_DataPack/dist/game/data/scripts/handlers/effecthandlers/TakeCastle.java
index e31ee53..bd41053 100644
--- a/L2J_DataPack/dist/game/data/scripts/handlers/effecthandlers/TakeCastle.java
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/effecthandlers/TakeCastle.java
@@ -18,24 +18,29 @@
*/
package handlers.effecthandlers;
+import com.l2jserver.gameserver.enums.CastleSide;
import com.l2jserver.gameserver.instancemanager.CastleManager;
import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.conditions.Condition;
import com.l2jserver.gameserver.model.effects.AbstractEffect;
import com.l2jserver.gameserver.model.entity.Castle;
import com.l2jserver.gameserver.model.skills.BuffInfo;
-import com.l2jserver.gameserver.network.SystemMessageId;
-import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
/**
* Take Castle effect implementation.
- * @author Adry_85
+ * @author Adry_85, St3eT
*/
public final class TakeCastle extends AbstractEffect
{
+ private final CastleSide _side;
+
public TakeCastle(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
{
super(attachCond, applyCond, set, params);
+
+ _side = params.getEnum("side", CastleSide.class);
}
@Override
@@ -52,8 +57,10 @@
return;
}
- Castle castle = CastleManager.getInstance().getCastle(info.getEffector());
- castle.engrave(info.getEffector().getActingPlayer().getClan(), info.getEffected());
- castle.getSiege().announceToPlayer(SystemMessage.getSystemMessage(SystemMessageId.THE_OPPOSING_CLAN_HAS_STARTED_S1), false);
+ final L2PcInstance effector = info.getEffector().getActingPlayer();
+ final Castle castle = CastleManager.getInstance().getCastle(effector);
+ final L2Character effected = info.getEffected();
+
+ castle.engrave(effector.getClan(), effected, _side);
}
}
diff --git a/L2J_DataPack/dist/game/data/scripts/handlers/effecthandlers/TakeCastleStart.java b/L2J_DataPack/dist/game/data/scripts/handlers/effecthandlers/TakeCastleStart.java
new file mode 100644
index 0000000..f8fb2f8
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/scripts/handlers/effecthandlers/TakeCastleStart.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2004-2015 L2J DataPack
+ *
+ * This file is part of L2J DataPack.
+ *
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package handlers.effecthandlers;
+
+import com.l2jserver.gameserver.instancemanager.CastleManager;
+import com.l2jserver.gameserver.model.StatsSet;
+import com.l2jserver.gameserver.model.conditions.Condition;
+import com.l2jserver.gameserver.model.effects.AbstractEffect;
+import com.l2jserver.gameserver.model.entity.Castle;
+import com.l2jserver.gameserver.model.skills.BuffInfo;
+import com.l2jserver.gameserver.network.SystemMessageId;
+import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
+
+/**
+ * Take Castle Start effect implementation.
+ * @author St3eT
+ */
+public final class TakeCastleStart extends AbstractEffect
+{
+ public TakeCastleStart(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
+ {
+ super(attachCond, applyCond, set, params);
+ }
+
+ @Override
+ public boolean isInstant()
+ {
+ return true;
+ }
+
+ @Override
+ public void onStart(BuffInfo info)
+ {
+ if (!info.getEffector().isPlayer())
+ {
+ return;
+ }
+
+ final Castle castle = CastleManager.getInstance().getCastle(info.getEffected());
+ if ((castle != null) && castle.getSiege().isInProgress())
+ {
+ castle.getSiege().announceToPlayer(SystemMessage.getSystemMessage(SystemMessageId.THE_OPPOSING_CLAN_HAS_STARTED_S1).addSkillName(info.getSkill().getId()), false);
+ }
+ }
+}
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/stats/items/34900-34999.xml b/L2J_DataPack/dist/game/data/stats/items/34900-34999.xml
index ffcae2c..38492e5 100644
--- a/L2J_DataPack/dist/game/data/stats/items/34900-34999.xml
+++ b/L2J_DataPack/dist/game/data/stats/items/34900-34999.xml
@@ -174,22 +174,65 @@
</for>
</item>
<item id="34925" name="Cloak of Light" additionalName="" type="Armor">
+ <!-- TODO: Confirm me -->
<!-- Cloak that symbolizes glory and light. Can only be equipped by marquis or higher. P. Def. 50, M. Def. 40 and STR/MEN/DEX/WIT/INT/CON + 2. Damage received during PvP decreases by 5%. Can use Escape:ᅠCastle skill. Part of its effect does not apply when you are chaotic. Cannot be used while in a chaotic state. Cannot be transferred between servers. -->
<set name="icon" val="icon.amor_goodness_cloak" />
<set name="default_action" val="EQUIP" />
+ <set name="bodypart" val="back" />
+ <set name="immediate_effect" val="true" />
+ <set name="material" val="CLOTH" />
+ <set name="weight" val="110" />
+ <set name="item_skill" val="19039-1;19041-1" />
+ <set name="is_tradable" val="false" />
+ <set name="is_dropable" val="false" />
+ <cond msgId="1518">
+ <and>
+ <player castle="-1" />
+ <player pledgeClass="8" /> <!-- Marquis or higher -->
+ <player isOnSide="LIGHT" />
+ <player cloakStatus="true" />
+ </and>
+ </cond>
<for>
<add stat="pDef" val="50.0" />
<add stat="mDef" val="40.0" />
+ <add stat="fireRes" val="10" />
+ <add stat="waterRes" val="10" />
+ <add stat="windRes" val="10" />
+ <add stat="earthRes" val="10" />
+ <add stat="holyRes" val="10" />
+ <add stat="darkRes" val="10" />
</for>
</item>
<item id="34926" name="Cloak of Darkness" additionalName="" type="Armor">
<!-- Cloak that symbolizes avarice and darkness. Can only be equipped by marquis or higher. P. Def. 50, M. Def. 40, STR/MEN/DEX/WIT/INT/CON + 2. Damage received during PvP decreases by 5%. Can use Escape:ᅠCastle skill. Cannot be transferred between servers. -->
<set name="icon" val="icon.amor_evilness_cloak" />
<set name="default_action" val="EQUIP" />
- <for>
- <add stat="pDef" val="50.0" />
- <add stat="mDef" val="40.0" />
- </for>
+ <set name="bodypart" val="back" />
+ <set name="immediate_effect" val="true" />
+ <set name="material" val="CLOTH" />
+ <set name="weight" val="110" />
+ <set name="item_skill" val="19040-1;19041-1" />
+ <set name="is_tradable" val="false" />
+ <set name="is_dropable" val="false" />
+ <cond msgId="1518">
+ <and>
+ <player castle="-1" />
+ <player pledgeClass="8" /> <!-- Marquis or higher -->
+ <player isOnSide="DARK" />
+ <player cloakStatus="true" />
+ </and>
+ </cond>
+ <for>
+ <add stat="pDef" val="50.0" />
+ <add stat="mDef" val="40.0" />
+ <add stat="fireRes" val="10" />
+ <add stat="waterRes" val="10" />
+ <add stat="windRes" val="10" />
+ <add stat="earthRes" val="10" />
+ <add stat="holyRes" val="10" />
+ <add stat="darkRes" val="10" />
+ </for>
</item>
<item id="34927" name="Dimension Keeper's Blue Box" additionalName="" type="EtcItem">
<!-- Blue-colored box bestowed by the kingdom of Aden as a reward for defeating the dimension demons in Kartia's Labyrinth. Double-click on it to see its contents. -->
@@ -585,23 +628,67 @@
<set name="is_stackable" val="true" />
</item>
<item id="34996" name="Cloak of Radiant Light" additionalName="" type="Armor">
+ <!-- TODO: Confirm me -->
<!-- Cloak that symbolizes glory and light. Can only be equipped by a lord. STR/MEN/DEX/WIT/INT/CON + 3. Damage received during PvP decreases by 15%. Can use Escape:ᅠCastle skill. Part of its effect does not apply when you are chaotic. Cannot be used while in a chaotic state. Cannot be transferred between servers. -->
<set name="icon" val="icon.amor_goodness_cloak" />
<set name="default_action" val="EQUIP" />
- <for>
- <add stat="pDef" val="100.0" />
- <add stat="mDef" val="80.0" />
- </for>
+ <set name="bodypart" val="back" />
+ <set name="immediate_effect" val="true" />
+ <set name="material" val="CLOTH" />
+ <set name="weight" val="110" />
+ <set name="item_skill" val="19037-1;19041-1" />
+ <set name="is_tradable" val="false" />
+ <set name="is_dropable" val="false" />
+ <cond msgId="1518">
+ <and>
+ <player castle="-1" />
+ <player isClanLeader="true" />
+ <player isOnSide="LIGHT" />
+ <player cloakStatus="true" />
+ </and>
+ </cond>
+ <for>
+ <add stat="pDef" val="100.0" />
+ <add stat="mDef" val="80.0" />
+ <add stat="fireRes" val="15" />
+ <add stat="waterRes" val="15" />
+ <add stat="windRes" val="15" />
+ <add stat="earthRes" val="15" />
+ <add stat="holyRes" val="15" />
+ <add stat="darkRes" val="15" />
+ </for>
</item>
- <item id="34997" name="Cloak of Cold Darkness" additionalName="" type="Armor">
- <!-- Cloak that symbolizes avarice and darkness. Can only be equipped by a lord. STR/MEN/DEX/WIT/INT/CON + 3. Damage received during PvP decreases by 15%. Can use Escape:ᅠCastle skill. Cannot be transferred between servers. -->
- <set name="icon" val="icon.amor_evilness_cloak" />
- <set name="default_action" val="EQUIP" />
- <for>
- <add stat="pDef" val="100.0" />
- <add stat="mDef" val="80.0" />
- </for>
- </item>
+ <item id="34997" name="Cloak of Cold Darkness" additionalName="" type="Armor">
+ <!-- TODO: Confirm me -->
+ <!-- Cloak that symbolizes avarice and darkness. Can only be equipped by a lord. STR/MEN/DEX/WIT/INT/CON + 3. Damage received during PvP decreases by 15%. Can use Escape:ďľ Castle skill. Cannot be transferred between servers. -->
+ <set name="icon" val="icon.amor_evilness_cloak" />
+ <set name="default_action" val="EQUIP" />
+ <set name="bodypart" val="back" />
+ <set name="immediate_effect" val="true" />
+ <set name="material" val="CLOTH" />
+ <set name="weight" val="110" />
+ <set name="item_skill" val="19038-1;19041-1" />
+ <set name="is_tradable" val="false" />
+ <set name="is_dropable" val="false" />
+ <cond msgId="1518">
+ <and>
+ <player castle="-1" />
+ <player isClanLeader="true" />
+ <player isOnSide="DARK" />
+ <player cloakStatus="true" />
+ </and>
+ </cond>
+ <for>
+ <add stat="pDef" val="100.0" />
+ <add stat="mDef" val="80.0" />
+ <add stat="fireRes" val="15" />
+ <add stat="waterRes" val="15" />
+ <add stat="windRes" val="15" />
+ <add stat="earthRes" val="15" />
+ <add stat="holyRes" val="15" />
+ <add stat="darkRes" val="15" />
+ </for>
+ </item>
<item id="34998" name="Tauti's One-handed Axe" additionalName="" type="Weapon">
<!-- Weapon augmented from Tauti's Fragment. When equipped, can use Tauti's Rage skill. When equipped, increases Atk. Spd. by about 15%, critical by 150, Max HP by 25%, and P. Atk. by 415. Increases damage inflicted during PvP. Enchantment, attribute, crystallization, augmentation or modification is impossible. -->
<set name="icon" val="icon.weapon_tauti_one_hand_axe_i01" />
diff --git a/L2J_DataPack/dist/game/data/stats/npcs/36600-36700.xml b/L2J_DataPack/dist/game/data/stats/npcs/36600-36700.xml
index ed3b8d2..7be50e6 100644
--- a/L2J_DataPack/dist/game/data/stats/npcs/36600-36700.xml
+++ b/L2J_DataPack/dist/game/data/stats/npcs/36600-36700.xml
@@ -901,7 +901,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36653" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36653" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
@@ -918,7 +918,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36654" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36654" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
@@ -935,7 +935,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36655" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36655" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
@@ -952,7 +952,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36656" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36656" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
@@ -969,7 +969,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36657" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36657" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
@@ -986,7 +986,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36658" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36658" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
@@ -1003,7 +1003,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36659" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36659" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
@@ -1020,7 +1020,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36660" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36660" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
@@ -1037,7 +1037,7 @@
<height normal="22.4" />
</collision>
</npc>
- <npc id="36661" level="85" type="L2Npc" name="Chamberlain of Darkness" title="">
+ <npc id="36661" level="85" type="L2Merchant" name="Chamberlain of Darkness" title="">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
diff --git a/L2J_DataPack/dist/game/data/stats/skills/00200-00299.xml b/L2J_DataPack/dist/game/data/stats/skills/00200-00299.xml
index 79ab780..ff0e96e 100644
--- a/L2J_DataPack/dist/game/data/stats/skills/00200-00299.xml
+++ b/L2J_DataPack/dist/game/data/stats/skills/00200-00299.xml
@@ -1033,6 +1033,7 @@
</skill>
<skill id="246" levels="1" name="Seal of Ruler">
<!-- Confirmed CT2.5 -->
+ <!-- Not Used Anymore -->
<set name="castRange" val="85" />
<set name="effectRange" val="400" />
<set name="hitTime" val="180000" />
@@ -1048,7 +1049,9 @@
<player canTakeCastle="true" />
</cond>
<for>
- <effect name="TakeCastle" />
+ <effect name="TakeCastle">
+ <param side="NEUTRAL" />
+ </effect>
</for>
</skill>
<skill id="247" levels="1" name="Build Headquarters">
diff --git a/L2J_DataPack/dist/game/data/stats/skills/19000-19099.xml b/L2J_DataPack/dist/game/data/stats/skills/19000-19099.xml
index 805f5fd..24b0be4 100644
--- a/L2J_DataPack/dist/game/data/stats/skills/19000-19099.xml
+++ b/L2J_DataPack/dist/game/data/stats/skills/19000-19099.xml
@@ -331,95 +331,225 @@
<set name="isDebuff" val="false" />
</skill>
<skill id="19032" levels="1" name="Ability of Light">
- <!-- AUTO GENERATED SKILL -->
+ <!-- TODO: confirm me -->
<!-- Imbued with the Ability of Light. Increases Max CP by 3000 and damage inflicted during PvP by 10%. Effects do not apply when in Chaotic state. Can be used by a Marquis or higher. -->
<set name="icon" val="icon.skill19008" />
+ <set name="magicLvl" val="1" />
<set name="operateType" val="P" />
<set name="targetType" val="SELF" />
- <set name="isDebuff" val="false" />
+ <cond msgId="113">
+ <player chaotic="false" />
+ </cond>
+ <for>
+ <effect name="Buff">
+ <add stat="maxCp" val="3000" />
+ <mul stat="pvpPhysDmg" val="1.10" />
+ <mul stat="pvpPhysSkillsDmg" val="1.10" />
+ <mul stat="pvpMagicalDmg" val="1.10" />
+ </effect>
+ </for>
</skill>
<skill id="19033" levels="1" name="Ability of Darkness">
- <!-- AUTO GENERATED SKILL -->
+ <!-- TODO: confirm me -->
<!-- Imbued with the Ability of Darkness. Increases Max CP by 3000 and damage inflicted during PvP by 10%. Can be used by a Marquis or higher. -->
<set name="icon" val="icon.skill19008" />
+ <set name="magicLvl" val="1" />
<set name="operateType" val="P" />
<set name="targetType" val="SELF" />
- <set name="isDebuff" val="false" />
+ <cond msgId="113">
+ <player chaotic="false" />
+ </cond>
+ <for>
+ <effect name="Buff">
+ <add stat="maxCp" val="3000" />
+ <mul stat="pvpPhysDmg" val="1.10" />
+ <mul stat="pvpPhysSkillsDmg" val="1.10" />
+ <mul stat="pvpMagicalDmg" val="1.10" />
+ </effect>
+ </for>
</skill>
<skill id="19034" levels="1" name="Imprint of Light">
- <!-- AUTO GENERATED SKILL -->
<!-- Engraves the Imprint of Light on the ancient relic that guards the castle. -->
- <set name="icon" val="icon.skill0246" />
- <set name="operateType" val="A1" />
- <set name="targetType" val="SELF" />
- <set name="mpConsume" val="50" />
<set name="castRange" val="85" />
- <set name="hitTime" val="120000" />
+ <set name="effectRange" val="400" />
+ <set name="hitTime" val="180000" />
+ <set name="icon" val="icon.skill0246" />
+ <set name="isMagic" val="2" /> <!-- Static Skill -->
+ <set name="magicLvl" val="30" />
+ <set name="operateType" val="A1" />
<set name="reuseDelay" val="5000" />
- <set name="isDebuff" val="false" />
+ <set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
+ <set name="targetType" val="HOLY" />
+ <cond>
+ <player canTakeCastle="true" />
+ </cond>
+ <startEffects>
+ <effect name="TakeCastleStart" />
+ </startEffects>
+ <for>
+ <effect name="TakeCastle">
+ <param side="LIGHT" />
+ </effect>
+ </for>
</skill>
<skill id="19035" levels="1" name="Imprint of Darkness">
- <!-- AUTO GENERATED SKILL -->
<!-- Engraves the Imprint of Darkness on the ancient relic that guards the castle. -->
- <set name="icon" val="icon.skill0246" />
- <set name="operateType" val="A1" />
- <set name="targetType" val="SELF" />
- <set name="mpConsume" val="50" />
<set name="castRange" val="85" />
- <set name="hitTime" val="120000" />
+ <set name="effectRange" val="400" />
+ <set name="hitTime" val="180000" />
+ <set name="icon" val="icon.skill0246" />
+ <set name="isMagic" val="2" /> <!-- Static Skill -->
+ <set name="magicLvl" val="30" />
+ <set name="operateType" val="A1" />
<set name="reuseDelay" val="5000" />
- <set name="isDebuff" val="false" />
+ <set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
+ <set name="targetType" val="HOLY" />
+ <cond>
+ <player canTakeCastle="true" />
+ </cond>
+ <startEffects>
+ <effect name="TakeCastleStart" />
+ </startEffects>
+ <for>
+ <effect name="TakeCastle">
+ <param side="DARK" />
+ </effect>
+ </for>
</skill>
<skill id="19036" levels="1" name="Blessing of Light">
- <!-- AUTO GENERATED SKILL -->
+ <!-- TODO: Confir me -->
<!-- Acquires 3% additional XP and SP through the blessing of the Guardian of Light. -->
<set name="icon" val="icon.etc_pi_gift_box_i04" />
<set name="operateType" val="A2" />
<set name="targetType" val="SELF" />
<set name="isMagic" val="4" />
- <set name="isDebuff" val="false" />
+ <set name="abnormalTime" val="3600" />
+ <for>
+ <effect name="Buff">
+ <add stat="bonusExp" val="3" />
+ <add stat="bonusSp" val="3" />
+ </effect>
+ </for>
</skill>
<skill id="19037" levels="1" name="Cloak of Radiant Light">
- <!-- AUTO GENERATED SKILL -->
+ <!-- TODO: Confirm me -->
<!-- STR/MEN/DEX/CON/INT/WIT + 3, decreased damage received during PvP by 15%. Ineffective in Chaotic state. -->
<set name="icon" val="icon.vesper_cloack_i00" />
+ <set name="magicLvl" val="1" />
<set name="operateType" val="P" />
<set name="targetType" val="SELF" />
- <set name="isDebuff" val="false" />
+ <cond msgId="113">
+ <player chaotic="false" />
+ </cond>
+ <for>
+ <effect name="Buff">
+ <mul stat="pvpPhysDef" val="1.15" />
+ <mul stat="pvpMagicalDef" val="1.15" />
+ <mul stat="pvpPhysSkillsDef" val="1.15" />
+ <add stat="STR" val="3" />
+ <add stat="DEX" val="3" />
+ <add stat="CON" val="3" />
+ <add stat="INT" val="3" />
+ <add stat="WIT" val="3" />
+ <add stat="MEN" val="3" />
+ <add stat="pDef" val="100.0" />
+ <add stat="mDef" val="80.0" />
+ </effect>
+ </for>
</skill>
<skill id="19038" levels="1" name="Cold Cloak of Darkness">
- <!-- AUTO GENERATED SKILL -->
+ <!-- TODO: Confirm me -->
<!-- STR/MEN/DEX/CON/INT/WIT + 3, decreased damage received during PvP by 15%. -->
<set name="icon" val="icon.vesper_cloack_i00" />
+ <set name="magicLvl" val="1" />
<set name="operateType" val="P" />
<set name="targetType" val="SELF" />
- <set name="isDebuff" val="false" />
+ <for>
+ <effect name="Buff">
+ <mul stat="pvpPhysDef" val="1.15" />
+ <mul stat="pvpMagicalDef" val="1.15" />
+ <mul stat="pvpPhysSkillsDef" val="1.15" />
+ <add stat="STR" val="3" />
+ <add stat="DEX" val="3" />
+ <add stat="CON" val="3" />
+ <add stat="INT" val="3" />
+ <add stat="WIT" val="3" />
+ <add stat="MEN" val="3" />
+ <add stat="pDef" val="100.0" />
+ <add stat="mDef" val="80.0" />
+ </effect>
+ </for>
</skill>
<skill id="19039" levels="1" name="Cloak of Light">
- <!-- AUTO GENERATED SKILL -->
+ <!-- TODO: Confirm me -->
<!-- STR/MEN/DEX/CON/INT/WIT + 2, decreased damage received during PvP by 5%. Ineffective in Chaotic state. -->
<set name="icon" val="icon.vesper_cloack_i00" />
+ <set name="magicLvl" val="1" />
<set name="operateType" val="P" />
<set name="targetType" val="SELF" />
- <set name="isDebuff" val="false" />
+ <for>
+ <effect name="Buff">
+ <mul stat="pvpPhysDef" val="1.05" />
+ <mul stat="pvpMagicalDef" val="1.05" />
+ <mul stat="pvpPhysSkillsDef" val="1.05" />
+ <add stat="STR" val="2" />
+ <add stat="DEX" val="2" />
+ <add stat="CON" val="2" />
+ <add stat="INT" val="2" />
+ <add stat="WIT" val="2" />
+ <add stat="MEN" val="2" />
+ <add stat="pDef" val="50.0" />
+ <add stat="mDef" val="40.0" />
+ </effect>
+ </for>
</skill>
<skill id="19040" levels="1" name="Cloak of Darkness">
- <!-- AUTO GENERATED SKILL -->
+ <!-- TODO: Confirm me -->
<!-- STR/MEN/DEX/CON/INT/WIT + 2, decreased damage received during PvP by 5%. -->
<set name="icon" val="icon.vesper_cloack_i00" />
+ <set name="magicLvl" val="1" />
<set name="operateType" val="P" />
<set name="targetType" val="SELF" />
- <set name="isDebuff" val="false" />
+ <for>
+ <effect name="Buff">
+ <mul stat="pvpPhysDef" val="1.05" />
+ <mul stat="pvpMagicalDef" val="1.05" />
+ <mul stat="pvpPhysSkillsDef" val="1.05" />
+ <add stat="STR" val="2" />
+ <add stat="DEX" val="2" />
+ <add stat="CON" val="2" />
+ <add stat="INT" val="2" />
+ <add stat="WIT" val="2" />
+ <add stat="MEN" val="2" />
+ <add stat="pDef" val="50.0" />
+ <add stat="mDef" val="40.0" />
+ </effect>
+ </for>
</skill>
<skill id="19041" levels="1" name="Escape: Castle">
- <!-- AUTO GENERATED SKILL -->
+ <!-- TODO: Confirm me -->
<!-- Return to Castle. -->
- <set name="icon" val="icon.skill0000" />
- <set name="operateType" val="A1" />
- <set name="targetType" val="SELF" />
<set name="hitTime" val="20000" />
- <set name="reuseDelay" val="3600000" />
- <set name="isDebuff" val="false" />
+ <set name="icon" val="icon.skill0000" />
+ <set name="isMagic" val="2" /> <!-- Static Skill -->
+ <set name="magicLvl" val="1" />
+ <set name="operateType" val="A1" />
+ <set name="reuseDelay" val="1800000" />
+ <set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
+ <set name="targetType" val="SELF" />
+ <cond msgId="113" addName="1">
+ <and>
+ <player canEscape="true" />
+ <not>
+ <player insideZoneId="10501, 10502, 10503, 10504, 10505, 10506, 10507, 10508" />
+ </not>
+ </and>
+ </cond>
+ <for>
+ <effect name="Escape">
+ <param escapeType="CASTLE" />
+ </effect>
+ </for>
</skill>
<skill id="19042" levels="1" name="Blessed Scroll of Escape: Castle">
<!-- AUTO GENERATED SKILL -->
diff --git a/L2J_DataPack/dist/game/data/xsd/castleData.xsd b/L2J_DataPack/dist/game/data/xsd/castleData.xsd
new file mode 100644
index 0000000..df54e40
--- /dev/null
+++ b/L2J_DataPack/dist/game/data/xsd/castleData.xsd
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="list">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="castle">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="spawn" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="npc" maxOccurs="unbounded" minOccurs="0">
+ <xs:complexType>
+ <xs:attribute type="xs:int" name="id" use="optional" />
+
+ <xs:attribute type="xs:int" name="x" use="required" />
+ <xs:attribute type="xs:int" name="y" use="required" />
+ <xs:attribute type="xs:int" name="z" use="required" />
+ <xs:attribute type="xs:int" name="heading" use="optional" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="castleSide">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="NEUTRAL" />
+ <xs:enumeration value="LIGHT" />
+ <xs:enumeration value="DARK" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute type="xs:short" name="id" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file
diff --git a/L2J_DataPack/dist/game/data/xsd/items.xsd b/L2J_DataPack/dist/game/data/xsd/items.xsd
index 3890e94..f6d962d 100644
--- a/L2J_DataPack/dist/game/data/xsd/items.xsd
+++ b/L2J_DataPack/dist/game/data/xsd/items.xsd
@@ -79,6 +79,16 @@
</xs:restriction>
</xs:simpleType>
</xs:attribute>
+ <xs:attribute name="isOnSide" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="NEUTRAL" />
+ <xs:enumeration value="LIGHT" />
+ <xs:enumeration value="DARK" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="isClanLeader" type="xs:boolean" />
<xs:attribute name="clanHall" type="xs:normalizedString" />
<xs:attribute name="class_id_restriction" type="xs:normalizedString" />
<xs:attribute name="cloakStatus" type="xs:boolean" />
diff --git a/L2J_DataPack/dist/game/data/xsd/skills.xsd b/L2J_DataPack/dist/game/data/xsd/skills.xsd
index 02076c2..789cdbf 100644
--- a/L2J_DataPack/dist/game/data/xsd/skills.xsd
+++ b/L2J_DataPack/dist/game/data/xsd/skills.xsd
@@ -35,6 +35,15 @@
<xs:complexType name="playerType">
<xs:simpleContent>
<xs:extension base="xs:string">
+ <xs:attribute name="isOnSide" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="NEUTRAL" />
+ <xs:enumeration value="LIGHT" />
+ <xs:enumeration value="DARK" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
<xs:attribute type="xs:string" name="Charges" use="optional" />
<xs:attribute type="xs:string" name="canSummon" use="optional" />
<xs:attribute type="xs:string" name="canResurrect" use="optional" />
@@ -143,6 +152,7 @@
<xs:complexType name="paramType">
<xs:simpleContent>
<xs:extension base="xs:string">
+ <xs:attribute type="xs:string" name="side" use="optional" />
<xs:attribute type="xs:string" name="chance" use="optional" />
<xs:attribute type="xs:string" name="power" use="optional" />
<xs:attribute type="xs:string" name="index" use="optional" />
diff --git a/L2J_DataPack/dist/sql/game/castle.sql b/L2J_DataPack/dist/sql/game/castle.sql
index 341ad78..755d660 100644
--- a/L2J_DataPack/dist/sql/game/castle.sql
+++ b/L2J_DataPack/dist/sql/game/castle.sql
@@ -1,7 +1,7 @@
CREATE TABLE IF NOT EXISTS `castle` (
`id` INT NOT NULL DEFAULT 0,
`name` varchar(25) NOT NULL,
- `taxPercent` INT NOT NULL DEFAULT 15,
+ `side` enum('NEUTRAL','LIGHT','DARK') DEFAULT 'NEUTRAL' NOT NULL,
`treasury` BIGINT NOT NULL DEFAULT 0,
`siegeDate` bigint(13) unsigned NOT NULL DEFAULT '0',
`regTimeOver` enum('true','false') DEFAULT 'true' NOT NULL,
@@ -13,12 +13,12 @@
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT IGNORE INTO `castle` VALUES
-(1,'Gludio',0,0,0,'true',0,'false',0),
-(2,'Dion',0,0,0,'true',0,'false',0),
-(3,'Giran',0,0,0,'true',0,'false',0),
-(4,'Oren',0,0,0,'true',0,'false',0),
-(5,'Aden',0,0,0,'true',0,'false',0),
-(6,'Innadril',0,0,0,'true',0,'false',0),
-(7,'Goddard',0,0,0,'true',0,'false',0),
-(8,'Rune',0,0,0,'true',0,'false',0),
-(9,'Schuttgart',0,0,0,'true',0,'false',0);
\ No newline at end of file
+(1,'Gludio','NEUTRAL',0,0,'true',0,'false',0),
+(2,'Dion','NEUTRAL',0,0,'true',0,'false',0),
+(3,'Giran','NEUTRAL',0,0,'true',0,'false',0),
+(4,'Oren','NEUTRAL',0,0,'true',0,'false',0),
+(5,'Aden','NEUTRAL',0,0,'true',0,'false',0),
+(6,'Innadril','NEUTRAL',0,0,'true',0,'false',0),
+(7,'Goddard','NEUTRAL',0,0,'true',0,'false',0),
+(8,'Rune','NEUTRAL',0,0,'true',0,'false',0),
+(9,'Schuttgart','NEUTRAL',0,0,'true',0,'false',0);
\ No newline at end of file
diff --git a/L2J_DataPack/dist/sql/game/spawnlist.sql b/L2J_DataPack/dist/sql/game/spawnlist.sql
index be63152..3d9b0de 100644
--- a/L2J_DataPack/dist/sql/game/spawnlist.sql
+++ b/L2J_DataPack/dist/sql/game/spawnlist.sql
@@ -9522,8 +9522,6 @@
("gludio_blacksmith", 1, 35098, -17644, 109616, -2656, 0, 0, 33000, 60, 0, 0, 0),
-- Warehouse Keeper
("gludio_warehouse", 1, 35099, -18130, 110020, -2656, 0, 0, 49152, 60, 0, 0, 0),
--- Sayres
-("gludio_chamberlain_etc", 1, 35100, -18212, 108827, -2472, 0, 0, 16384, 60, 0, 0, 0),
-- Grad
("Wyvern_Manager", 1, 35101, -17952, 108142, -2032, 0, 0, -16384, 60, 0, 0, 0),
-- Greenspan
@@ -12318,8 +12316,6 @@
("rune_blacksmith", 1, 35507, 12872, -48752, -1088, 0, 0, 33000, 60, 0, 0, 0),
-- Warehouse Keeper
("rune_warehouse", 1, 35508, 12864, -49184, -1088, 0, 0, 39746, 60, 0, 0, 0),
--- Frederick
-("rune_chamberlain_etc", 1, 35509, 10211, -49084, -307, 0, 0, 36736, 60, 0, 0, 0),
-- Titus
("rune_chamberlain_etc", 1, 35510, 12318, -47703, 1296, 0, 0, 22879, 60, 0, 0, 0),
-- Gompus
@@ -14932,8 +14928,6 @@
("dion_blacksmith", 1, 35140, 21649, 160199, -2850, 0, 0, 61379, 60, 0, 0, 0),
-- Warehouse Keeper
("dion_warehouse", 1, 35141, 22100, 159781, -2877, 0, 0, 6134, 60, 0, 0, 0),
--- Crosby
-("dion_chamberlain_etc", 1, 35142, 22172, 160923, -2666, 0, 0, 49152, 60, 0, 0, 0),
-- Hodler
("Wyvern_Manager", 1, 35143, 21912, 161608, -2226, 0, 0, 0, 60, 0, 0, 0),
-- Mercenary Manager Sanford
@@ -20837,8 +20831,6 @@
("schuttgart_blacksmith", 1, 35553, 77056, -152960, -904, 0, 0, 16500, 60, 0, 0, 0),
-- Warehouse Keeper
("schuttgart_warehouse", 1, 35554, 78080, -152976, -904, 0, 0, 16500, 60, 0, 0, 0),
--- August
-("schuttgart_chmberlain_etc", 1, 35555, 77488, -153360, -384, 0, 0, 16500, 60, 0, 0, 0),
-- Gallic
("schuttgart_chmberlain_etc", 1, 35556, 77502, -153296, 1224, 0, 0, 16500, 60, 0, 0, 0),
-- Kendrew
@@ -23701,8 +23693,6 @@
("oren_warehouse", 1, 35224, 82464, 37592, -2450, 0, 0, 44984, 60, 0, 0, 0),
-- Warehouse Keeper
("oren_blacksmith", 1, 35225, 82043, 37132, -2450, 0, 0, 65001, 60, 0, 0, 0),
--- Brasseur
-("oren_chamberlain_etc", 1, 35226, 83171, 37092, -2266, 0, 0, 32768, 60, 0, 0, 0),
-- Finrod
("Wyvern_Manager", 1, 35227, 83853, 37192, -1835, 0, 0, 49000, 60, 0, 0, 0),
-- Morrison
@@ -30910,8 +30900,6 @@
("giran_blacksmith", 1, 35182, 116494, 145516, -2723, 0, 0, 58824, 60, 0, 0, 0),
-- Warehouse Keeper
("giran_warehouse", 1, 35183, 115910, 145101, -2723, 0, 0, 1353, 60, 0, 0, 0),
--- Saul
-("giran_chamberlain_etc", 1, 35184, 117095, 144997, -2539, 0, 0, 32768, 60, 0, 0, 0),
-- Bryce
("Wyvern_Manager", 1, 35185, 117780, 145257, -2099, 0, 0, 49000, 60, 0, 0, 0),
-- Arvid
@@ -31687,8 +31675,6 @@
("innadril_blacksmith", 1, 35314, 115649, 249072, -973, 0, 0, 868, 60, 0, 0, 0),
-- Warehouse Keeper
("innadril_warehouse", 1, 35315, 116015, 248558, -946, 0, 0, 18052, 60, 0, 0, 0),
--- Neurath
-("innadrile_chamberlain_etc", 1, 35316, 116123, 249702, -762, 0, 0, 49152, 60, 0, 0, 0),
-- Tate
("Wyvern_Manager", 1, 35317, 115863, 250387, -322, 0, 0, 0, 60, 0, 0, 0),
-- Solinus
@@ -33674,8 +33660,6 @@
("goddard_blacksmith", 1, 35361, 146992, -48896, -2640, 0, 0, 16000, 60, 0, 0, 0),
-- Warehouse Keeper
("goddard_warehouse", 1, 35362, 147952, -48912, -2640, 0, 0, 16000, 60, 0, 0, 0),
--- Alfred
-("godard03_npc2416_01", 1, 35363, 147408, -49296, -2120, 0, 0, 16500, 60, 0, 0, 0),
-- Hadley
("Wyvern_Manager", 1, 35364, 147470, -49083, -503, 0, 0, 16500, 60, 0, 0, 0),
-- Rowell
@@ -34538,8 +34522,6 @@
("aden_blacksmith", 1, 35272, 147908, 5595, -884, 0, 0, 48126, 60, 0, 0, 0),
-- Warehouse Keeper
("aden_warehouse", 1, 35273, 147056, 5595, -884, 0, 0, 58383, 60, 0, 0, 0),
--- Logan
-("aden_chamberlain_etc", 1, 35274, 147412, 3355, -46, 0, 0, 16389, 60, 0, 0, 0),
-- Kruger
("Wyvern_Manager", 1, 35275, 147449, 1899, 216, 0, 0, 49000, 60, 0, 0, 0),
-- Eldon
diff --git a/L2J_DataPack/dist/sql/game/updates/20150108update.sql b/L2J_DataPack/dist/sql/game/updates/20150108update.sql
new file mode 100644
index 0000000..479569b
--- /dev/null
+++ b/L2J_DataPack/dist/sql/game/updates/20150108update.sql
@@ -0,0 +1,2 @@
+ALTER TABLE castle CHANGE COLUMN `taxPercent` `side` enum('NEUTRAL','LIGHT','DARK') DEFAULT 'NEUTRAL' NOT NULL AFTER `name`;
+UPDATE castle SET side='LIGHT' WHERE castle.id IN (SELECT hasCastle FROM clan_data);
\ No newline at end of file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment