Guest User

Untitled

a guest
Apr 8th, 2013
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 18.05 KB | None | 0 0
  1. Index: java/com/l2jserver/gameserver/model/actor/instance/L2CastleChamberlainInstance.java
  2. ===================================================================
  3. --- java/com/l2jserver/gameserver/model/actor/instance/L2CastleChamberlainInstance.java (revision 343)
  4. +++ java/com/l2jserver/gameserver/model/actor/instance/L2CastleChamberlainInstance.java (working copy)
  5. @@ -20,7 +20,6 @@
  6.  
  7.  import java.text.SimpleDateFormat;
  8.  import java.util.Calendar;
  9. -import java.util.List;
  10.  import java.util.NoSuchElementException;
  11.  import java.util.StringTokenizer;
  12.  
  13. @@ -59,9 +58,9 @@
  14.     protected static final int COND_ALL_FALSE = 0;
  15.     protected static final int COND_BUSY_BECAUSE_OF_SIEGE = 1;
  16.     protected static final int COND_OWNER = 2;
  17. -   private int _preDay;
  18. -   private int _preHour;
  19.    
  20. +   private int _preHour = 6;
  21. +  
  22.     public L2CastleChamberlainInstance(int objectId, L2NpcTemplate template)
  23.     {
  24.         super(objectId, template);
  25. @@ -105,6 +104,8 @@
  26.                 val = st.nextToken();
  27.             }
  28.            
  29. +           final Castle castle = getCastle();
  30. +          
  31.             if (actualCommand.equalsIgnoreCase("banish_foreigner"))
  32.             {
  33.                 if (!validatePrivileges(player, L2Clan.CP_CS_DISMISS))
  34. @@ -1129,93 +1130,55 @@
  35.                 doTeleport(player, whereTo);
  36.                 return;
  37.             }
  38. -           else if (actualCommand.equalsIgnoreCase("siege_change")) // siege day set
  39. +           else if (actualCommand.equalsIgnoreCase("siege_change")) // set siege time
  40.             {
  41. -               if (Config.CL_SET_SIEGE_TIME_LIST.isEmpty())
  42. +               if (!validatePrivileges(player, L2Clan.CP_CS_MANAGE_SIEGE))
  43.                 {
  44. +                   return;
  45. +               }
  46. +              
  47. +               if (castle.getSiege().getTimeRegistrationOverDate().getTimeInMillis() < Calendar.getInstance().getTimeInMillis())
  48. +               {
  49.                     NpcHtmlMessage html = new NpcHtmlMessage(1);
  50. -                   html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/chamberlain-noadmin.htm");
  51. +                   html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/siegetime1.htm");
  52.                     sendHtmlMessage(player, html);
  53.                 }
  54. -               else if (player.isClanLeader())
  55. +               else if (castle.getSiege().getIsTimeRegistrationOver())
  56.                 {
  57. -                   if (getCastle().getSiege().getTimeRegistrationOverDate().getTimeInMillis() < Calendar.getInstance().getTimeInMillis())
  58. -                   {
  59. -                       NpcHtmlMessage html = new NpcHtmlMessage(1);
  60. -                       html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/siegetime1.htm");
  61. -                       sendHtmlMessage(player, html);
  62. -                   }
  63. -                   else if (getCastle().getSiege().getIsTimeRegistrationOver())
  64. -                   {
  65. -                       NpcHtmlMessage html = new NpcHtmlMessage(1);
  66. -                       html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/siegetime2.htm");
  67. -                       sendHtmlMessage(player, html);
  68. -                   }
  69. -                   else
  70. -                   {
  71. -                       NpcHtmlMessage html = new NpcHtmlMessage(1);
  72. -                       html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/siegetime3.htm");
  73. -                       html.replace("%time%", String.valueOf(getCastle().getSiegeDate().getTime()));
  74. -                       sendHtmlMessage(player, html);
  75. -                   }
  76. +                   NpcHtmlMessage html = new NpcHtmlMessage(1);
  77. +                   html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/siegetime2.htm");
  78. +                   sendHtmlMessage(player, html);
  79.                 }
  80.                 else
  81.                 {
  82.                     NpcHtmlMessage html = new NpcHtmlMessage(1);
  83. -                   html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/chamberlain-noprivs.htm");
  84. +                   html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/siegetime3.htm");
  85.                     sendHtmlMessage(player, html);
  86.                 }
  87. -               return;
  88.             }
  89.             else if (actualCommand.equalsIgnoreCase("siege_time_set")) // set preDay
  90.             {
  91. -               boolean isAfternoon = Config.SIEGE_HOUR_LIST_MORNING.isEmpty();
  92.                 switch (Integer.parseInt(val))
  93.                 {
  94. -                   case 0:
  95. -                   case 4:
  96. -                       break;
  97.                     case 1:
  98. -                       _preDay = Integer.parseInt(st.nextToken());
  99. -                       break;
  100. -                   case 2:
  101. -                       isAfternoon = Boolean.parseBoolean(st.nextToken());
  102. -                       break;
  103. -                   case 3:
  104.                         _preHour = Integer.parseInt(st.nextToken());
  105.                         break;
  106. +                  
  107.                     default:
  108.                         break;
  109.                 }
  110. -               NpcHtmlMessage html = getNextSiegeTimePage(player.getHtmlPrefix(), Integer.parseInt(val), isAfternoon);
  111.                
  112. -               if (html == null)
  113. +               if (_preHour != 6)
  114.                 {
  115. -                   if (Config.CL_SET_SIEGE_TIME_LIST.contains("day"))
  116. -                   {
  117. -                       getCastle().getSiegeDate().set(Calendar.DAY_OF_WEEK, _preDay);
  118. -                   }
  119. -                   else
  120. -                   {
  121. -                       getCastle().getSiegeDate().set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
  122. -                   }
  123. -                   if (Config.CL_SET_SIEGE_TIME_LIST.contains("hour"))
  124. -                   {
  125. -                       getCastle().getSiegeDate().set(Calendar.HOUR_OF_DAY, _preHour);
  126. -                   }
  127. -                   if (Config.CL_SET_SIEGE_TIME_LIST.contains("minute"))
  128. -                   {
  129. -                       getCastle().getSiegeDate().set(Calendar.MINUTE, Integer.parseInt(st.nextToken()));
  130. -                   }
  131. +                   castle.getSiegeDate().set(Calendar.HOUR_OF_DAY, _preHour + 12);
  132. +                  
  133.                     // now store the changed time and finished next Siege Time registration
  134. -                   getCastle().getSiege().endTimeRegistration(false);
  135. -                  
  136. -                   html = new NpcHtmlMessage(1);
  137. -                   html.setFile(player.getHtmlPrefix(), "data/html/chamberlain/siegetime8.htm");
  138. -                   html.replace("%time%", String.valueOf(getCastle().getSiegeDate().getTime()));
  139. +                   castle.getSiege().endTimeRegistration(false);
  140. +                   sendHtmlMessage(player, "data/html/chamberlain/siegetime8.htm");
  141. +                   return;
  142.                 }
  143. -               sendHtmlMessage(player, html);
  144. -               return;
  145. +              
  146. +               sendHtmlMessage(player, "data/html/chamberlain/siegetime6.htm");
  147.             }
  148.             else if (actualCommand.equals("give_crown"))
  149.             {
  150. @@ -1352,80 +1315,13 @@
  151.         }
  152.     }
  153.    
  154. -   private NpcHtmlMessage getNextSiegeTimePage(String htmlPrefix, int now, boolean isAfternoon)
  155. -   {
  156. -       NpcHtmlMessage ret = new NpcHtmlMessage(1);
  157. -       if ((now == 0) && Config.CL_SET_SIEGE_TIME_LIST.contains("day"))
  158. -       {
  159. -           ret.setFile(htmlPrefix, "data/html/chamberlain/siegetime4.htm");
  160. -           return ret;
  161. -       }
  162. -       if ((now < 3) && Config.CL_SET_SIEGE_TIME_LIST.contains("hour"))
  163. -       {
  164. -           switch (now)
  165. -           {
  166. -               case 0:
  167. -               case 1:
  168. -                   if (!Config.SIEGE_HOUR_LIST_MORNING.isEmpty() && !Config.SIEGE_HOUR_LIST_AFTERNOON.isEmpty())
  169. -                   {
  170. -                       ret.setFile(htmlPrefix, "data/html/chamberlain/siegetime5.htm");
  171. -                       return ret;
  172. -                   }
  173. -               case 2:
  174. -                   ret.setFile(htmlPrefix, "data/html/chamberlain/siegetime6.htm");
  175. -                   List<Integer> list;
  176. -                   int inc = 0;
  177. -                   String ampm = "";
  178. -                  
  179. -                   if (!isAfternoon)
  180. -                   {
  181. -                       if (Config.SIEGE_HOUR_LIST_AFTERNOON.isEmpty())
  182. -                       {
  183. -                           ampm = "AM";
  184. -                       }
  185. -                       list = Config.SIEGE_HOUR_LIST_MORNING;
  186. -                   }
  187. -                   else
  188. -                   {
  189. -                       if (Config.SIEGE_HOUR_LIST_MORNING.isEmpty())
  190. -                       {
  191. -                           ampm = "PM";
  192. -                       }
  193. -                       inc = 12;
  194. -                       list = Config.SIEGE_HOUR_LIST_AFTERNOON;
  195. -                   }
  196. -                  
  197. -                   final StringBuilder tList = new StringBuilder(list.size() * 50);
  198. -                   for (Integer hour : list)
  199. -                   {
  200. -                       if (hour == 0)
  201. -                       {
  202. -                           StringUtil.append(tList, "<a action=\"bypass -h npc_%objectId%_siege_time_set 3 ", String.valueOf(hour + inc), "\">", String.valueOf(hour + 12), ":00 ", ampm, "</a><br>");
  203. -                       }
  204. -                       else
  205. -                       {
  206. -                           StringUtil.append(tList, "<a action=\"bypass -h npc_%objectId%_siege_time_set 3 ", String.valueOf(hour + inc), "\">", String.valueOf(hour), ":00 ", ampm, "</a><br>");
  207. -                       }
  208. -                   }
  209. -                   ret.replace("%links%", tList.toString());
  210. -           }
  211. -           return ret;
  212. -       }
  213. -       if ((now < 4) && Config.CL_SET_SIEGE_TIME_LIST.contains("minute"))
  214. -       {
  215. -           ret.setFile(htmlPrefix, "data/html/chamberlain/siegetime7.htm");
  216. -           return ret;
  217. -       }
  218. -      
  219. -       return null;
  220. -   }
  221. -  
  222.     private void sendHtmlMessage(L2PcInstance player, String htmlMessage)
  223.     {
  224.         NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
  225.         html.setHtml(htmlMessage);
  226.         html.replace("%objectId%", String.valueOf(getObjectId()));
  227.         html.replace("%npcname%", getName());
  228. +       html.replace("%time%", String.valueOf(getCastle().getSiegeDate().getTime()));
  229.         player.sendPacket(html);
  230.     }
  231.    
  232. Index: java/com/l2jserver/gameserver/model/entity/Siege.java
  233. ===================================================================
  234. --- java/com/l2jserver/gameserver/model/entity/Siege.java   (revision 343)
  235. +++ java/com/l2jserver/gameserver/model/entity/Siege.java   (working copy)
  236. @@ -1484,27 +1484,47 @@
  237.     /** Set the date for the next siege. */
  238.     private void setNextSiegeDate()
  239.     {
  240. -       while (getCastle().getSiegeDate().getTimeInMillis() < Calendar.getInstance().getTimeInMillis())
  241. +       // Copy of siege date. All modifications are made on it, then once ended, it is registered.
  242. +       Calendar siegeDate = getCastle().getSiegeDate();
  243. +      
  244. +       // Loop until current time is lower than next siege period.
  245. +       while (siegeDate.getTimeInMillis() < Calendar.getInstance().getTimeInMillis())
  246.         {
  247. -           if ((getCastle().getSiegeDate().get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) && (getCastle().getSiegeDate().get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY))
  248. +           // If current day is another than Saturday or Sunday, change it accordingly to castle
  249. +           if ((siegeDate.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) || (siegeDate.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY))
  250.             {
  251. -               getCastle().getSiegeDate().set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
  252. +               switch (getCastle().getCastleId())
  253. +               {
  254. +                   case 3:
  255. +                   case 4:
  256. +                   case 6:
  257. +                   case 7:
  258. +                       siegeDate.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
  259. +                       break;
  260. +                  
  261. +                   default:
  262. +                       siegeDate.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
  263. +                       break;
  264. +               }
  265.             }
  266. -           // from CT2.3 Castle sieges are on Sunday, but if server admins allow to set day of the siege
  267. -           // than sieges can occur on Saturdays as well
  268. -           if ((getCastle().getSiegeDate().get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) && !Config.CL_SET_SIEGE_TIME_LIST.contains("day"))
  269. -           {
  270. -               getCastle().getSiegeDate().set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
  271. -           }
  272. -           // set the next siege day to the next weekend
  273. -           getCastle().getSiegeDate().add(Calendar.DAY_OF_MONTH, 7);
  274. +          
  275. +           // Set next siege date if siege has passed ; add 14 days (2 weeks).
  276. +           siegeDate.add(Calendar.DAY_OF_MONTH, 14);
  277.         }
  278.        
  279. -       if (!SevenSigns.getInstance().isDateInSealValidPeriod(getCastle().getSiegeDate()))
  280. +       // If the siege date goes on a Seven Signs seal period, add 7 days (1 week).
  281. +       if (!SevenSigns.getInstance().isDateInSealValidPeriod(siegeDate))
  282.         {
  283. -           getCastle().getSiegeDate().add(Calendar.DAY_OF_MONTH, 7);
  284. +           siegeDate.add(Calendar.DAY_OF_MONTH, 7);
  285.         }
  286.        
  287. +       // Set default hour to 18:00. This can be changed - only once - by the castle leader via the chamberlain.
  288. +       siegeDate.set(Calendar.HOUR_OF_DAY, 18);
  289. +       siegeDate.set(Calendar.MINUTE, 0);
  290. +      
  291. +       // After all modifications are applied on local variable, register the time as siege date of that castle.
  292. +       getCastle().getSiegeDate().setTimeInMillis(siegeDate.getTimeInMillis());
  293. +      
  294.         SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_ANNOUNCED_SIEGE_TIME);
  295.         sm.addCastleId(getCastle().getCastleId());
  296.         Announcements.getInstance().announceToAll(sm);
  297. Index: java/com/l2jserver/Config.java
  298. ===================================================================
  299. --- java/com/l2jserver/Config.java  (revision 343)
  300. +++ java/com/l2jserver/Config.java  (working copy)
  301. @@ -113,7 +113,7 @@
  302.     public static int CS_SUPPORT2_FEE;
  303.     public static int CS_SUPPORT3_FEE;
  304.     public static int CS_SUPPORT4_FEE;
  305. -   public static List<String> CL_SET_SIEGE_TIME_LIST;
  306. -   public static List<Integer> SIEGE_HOUR_LIST_MORNING;
  307. -   public static List<Integer> SIEGE_HOUR_LIST_AFTERNOON;
  308.    
  309.     // --------------------------------------------------
  310.     // Fortress Settings
  311. @@ -1569,58 +1566,6 @@
  312.             CH_FRONT2_FEE = Integer.parseInt(Feature.getProperty("ClanHallFrontPlatformFunctionFeeLvl2", "4000"));
  313.             CH_BUFF_FREE = Boolean.parseBoolean(Feature.getProperty("AltClanHallMpBuffFree", "False"));
  314.            
  315. -           CL_SET_SIEGE_TIME_LIST = new ArrayList<>();
  316. -           SIEGE_HOUR_LIST_MORNING = new ArrayList<>();
  317. -           SIEGE_HOUR_LIST_AFTERNOON = new ArrayList<>();
  318. -           String[] sstl = Feature.getProperty("CLSetSiegeTimeList", "").split(",");
  319. -           if (sstl.length != 0)
  320. -           {
  321. -               boolean isHour = false;
  322. -               for (String st : sstl)
  323. -               {
  324. -                   if (st.equalsIgnoreCase("day") || st.equalsIgnoreCase("hour") || st.equalsIgnoreCase("minute"))
  325. -                   {
  326. -                       if (st.equalsIgnoreCase("hour"))
  327. -                       {
  328. -                           isHour = true;
  329. -                       }
  330. -                       CL_SET_SIEGE_TIME_LIST.add(st.toLowerCase());
  331. -                   }
  332. -                   else
  333. -                   {
  334. -                       _log.warning(StringUtil.concat("[CLSetSiegeTimeList]: invalid config property -> CLSetSiegeTimeList \"", st, "\""));
  335. -                   }
  336. -               }
  337. -               if (isHour)
  338. -               {
  339. -                   String[] shl = Feature.getProperty("SiegeHourList", "").split(",");
  340. -                   for (String st : shl)
  341. -                   {
  342. -                       if (!st.equalsIgnoreCase(""))
  343. -                       {
  344. -                           int val = Integer.parseInt(st);
  345. -                           if ((val > 23) || (val < 0))
  346. -                           {
  347. -                               _log.warning(StringUtil.concat("[SiegeHourList]: invalid config property -> SiegeHourList \"", st, "\""));
  348. -                           }
  349. -                           else if (val < 12)
  350. -                           {
  351. -                               SIEGE_HOUR_LIST_MORNING.add(val);
  352. -                           }
  353. -                           else
  354. -                           {
  355. -                               val -= 12;
  356. -                               SIEGE_HOUR_LIST_AFTERNOON.add(val);
  357. -                           }
  358. -                       }
  359. -                   }
  360. -                   if (Config.SIEGE_HOUR_LIST_AFTERNOON.isEmpty() && Config.SIEGE_HOUR_LIST_AFTERNOON.isEmpty())
  361. -                   {
  362. -                       _log.warning("[SiegeHourList]: invalid config property -> SiegeHourList is empty");
  363. -                       CL_SET_SIEGE_TIME_LIST.remove("hour");
  364. -                   }
  365. -               }
  366. -           }
  367.             CS_TELE_FEE_RATIO = Long.parseLong(Feature.getProperty("CastleTeleportFunctionFeeRatio", "604800000"));
  368.             CS_TELE1_FEE = Integer.parseInt(Feature.getProperty("CastleTeleportFunctionFeeLvl1", "7000"));
  369.             CS_TELE2_FEE = Integer.parseInt(Feature.getProperty("CastleTeleportFunctionFeeLvl2", "14000"));
  370. Index: dist/game/data/html/chamberlain/siegetime3.htm
  371. ===================================================================
  372. --- dist/game/data/html/chamberlain/siegetime3.htm  (revision 894)
  373. +++ dist/game/data/html/chamberlain/siegetime3.htm  (working copy)
  374. @@ -1,6 +1,9 @@
  375.  <html><body>
  376. -The current time of siege is %time%.<br>
  377. -Do you want to change this?<center><br>
  378. +<font color="LEVEL">[Manage The Next Siege Time]</font><br>
  379. +The next siege time is %time%.<br>
  380. +Do you want to change this?<br>
  381. +<center>
  382.  <a action="bypass -h npc_%objectId%_siege_time_set 0">Yes</a><br>
  383. -<a action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm">Cancel</a>
  384. -</center></body></html>
  385. \ No newline at end of file
  386. +<button action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm" value="Back" width=74 height=21 back="L2UI_CH3.Btn1_normalOn" fore="L2UI_CH3.Btn1_normal">
  387. +</center>
  388. +</body></html>
  389. \ No newline at end of file
  390. Index: dist/game/data/html/chamberlain/siegetime2.htm
  391. ===================================================================
  392. --- dist/game/data/html/chamberlain/siegetime2.htm  (revision 894)
  393. +++ dist/game/data/html/chamberlain/siegetime2.htm  (working copy)
  394. @@ -1,4 +1,5 @@
  395.  <html><body>
  396. -I regret to inform you, my Lord, that the siege battle time cannot be changed once it is set.<center><br>
  397. -<a action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm">Return</a>
  398. -</center></body></html>
  399. \ No newline at end of file
  400. +<font color="LEVEL">[Manage The Next Siege Time]</font><br>
  401. +I regret to inform you, my Lord, that the siege battle time cannot be changed once it is set.<br>
  402. +<center><button action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm" value="Back" width=74 height=21 back="L2UI_CH3.Btn1_normalOn" fore="L2UI_CH3.Btn1_normal"></center>
  403. +</body></html>
  404. \ No newline at end of file
  405. Index: dist/game/data/html/chamberlain/siegetime6.htm
  406. ===================================================================
  407. --- dist/game/data/html/chamberlain/siegetime6.htm  (revision 894)
  408. +++ dist/game/data/html/chamberlain/siegetime6.htm  (working copy)
  409. @@ -1,5 +1,9 @@
  410.  <html><body>
  411. -Please set the castle siege time.<center><br><br>
  412. -%links%<br>
  413. -<a action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm">Return</a>
  414. -</center></body></html>
  415. \ No newline at end of file
  416. +<font color="LEVEL">[Manage The Next Siege Time]</font><br>
  417. +Please set the new castle siege time.<br><br>
  418. +<center>
  419. +<a action="bypass -h npc_%objectId%_siege_time_set 1 4">4:00 PM</a><br1>
  420. +<a action="bypass -h npc_%objectId%_siege_time_set 1 8">8:00 PM</a><br>
  421. +<button action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm" value="Back" width=74 height=21 back="L2UI_CH3.Btn1_normalOn" fore="L2UI_CH3.Btn1_normal">
  422. +</center>
  423. +</body></html>
  424. \ No newline at end of file
  425. Index: dist/game/data/html/chamberlain/siegetime1.htm
  426. ===================================================================
  427. --- dist/game/data/html/chamberlain/siegetime1.htm  (revision 894)
  428. +++ dist/game/data/html/chamberlain/siegetime1.htm  (working copy)
  429. @@ -1,4 +1,5 @@
  430.  <html><body>
  431. -You may not set the time of the castle siege now.<center><br>
  432. -<a action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm">Return</a><br>
  433. -</center></body></html>
  434. \ No newline at end of file
  435. +<font color="LEVEL">[Manage The Next Siege Time]</font><br>
  436. +You may not set the time of the castle siege now.<br>
  437. +<center><button action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm" value="Back" width=74 height=21 back="L2UI_CH3.Btn1_normalOn" fore="L2UI_CH3.Btn1_normal"></center>
  438. +</body></html>
  439. \ No newline at end of file
  440. Index: dist/game/data/html/chamberlain/siegetime8.htm
  441. ===================================================================
  442. --- dist/game/data/html/chamberlain/siegetime8.htm  (revision 894)
  443. +++ dist/game/data/html/chamberlain/siegetime8.htm  (working copy)
  444. @@ -1,4 +1,5 @@
  445.  <html><body>
  446. -The siege will commence at %time%.<center><br>
  447. -<a action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm">Return</a>
  448. -</center></body></html>
  449. \ No newline at end of file
  450. +<font color="LEVEL">[Manage The Next Siege Time]</font><br>
  451. +The siege will commence at %time%.<br>
  452. +<center><button action="bypass -h npc_%objectId%_Link chamberlain/chamberlain.htm" value="Back" width=74 height=21 back="L2UI_CH3.Btn1_normalOn" fore="L2UI_CH3.Btn1_normal"></center>
  453. +</body></html>
  454. \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment