Gladicek

902_diff

Dec 10th, 2012
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.50 KB | None | 0 0
  1. Index: dist/game/data/html/guard/31340.htm
  2. ===================================================================
  3. --- dist/game/data/html/guard/31340.htm (revision 9327)
  4. +++ dist/game/data/html/guard/31340.htm (working copy)
  5. @@ -4,6 +4,7 @@
  6. <a action="Link guard/kamaroka_level.htm">Look at the list of Kamaloka.</a><br>
  7. <a action="bypass -h npc_%objectId%_Quest Kamaloka">Enter Kamaloka.</a><br>
  8. <a action="bypass -h npc_%objectId%_Chat 4">"Do you know anything about the ominous rumor I heard?"</a><br>
  9. +<a action="bypass -h npc_%objectId%_multisell 300">Purchase item with marks</a><br>
  10. <a action="bypass -h npc_%objectId%_TerritoryStatus">Ask about the local lord and tax rate.</a><br>
  11. <a action="bypass -h npc_%objectId%_Quest">Quest</a>
  12. </body></html>
  13. \ No newline at end of file
  14. Index: dist/game/data/multisell/300.xml
  15. ===================================================================
  16. --- dist/game/data/multisell/300.xml (revision 0)
  17. +++ dist/game/data/multisell/300.xml (working copy)
  18. @@ -0,0 +1,63 @@
  19. +<?xml version="1.0" encoding="UTF-8"?>
  20. +<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
  21. + <item>
  22. + <!-- Blue Elmore Coin -->
  23. + <ingredient count="40" id="21750" />
  24. + <!-- Pablo's Box -->
  25. + <production count="1" id="21753" />
  26. + </item>
  27. + <item>
  28. + <!-- Blue Elmore Coin -->
  29. + <ingredient count="10" id="21750" />
  30. + <!-- Bronze Bracelet -->
  31. + <production count="1" id="9590" />
  32. + </item>
  33. + <item>
  34. + <!-- Blue Elmore Coin -->
  35. + <ingredient count="23" id="21750" />
  36. + <!-- Steel Bracelet -->
  37. + <production count="1" id="9591" />
  38. + </item>
  39. + <item>
  40. + <!-- Blue Elmore Coin -->
  41. + <ingredient count="70" id="21750" />
  42. + <!-- Mithril Bracelet -->
  43. + <production count="1" id="9592" />
  44. + </item>
  45. + <item>
  46. + <!-- Blue Elmore Coin -->
  47. + <ingredient count="2" id="21750" />
  48. + <!-- Rune Jewelry Box - Talisman -->
  49. + <production count="1" id="21752" />
  50. + </item>
  51. + <item>
  52. + <!-- Blue Elmore Coin -->
  53. + <ingredient count="1" id="21750" />
  54. + <!-- Memento Mori -->
  55. + <production count="10" id="9814" />
  56. + </item>
  57. + <item>
  58. + <!-- Blue Elmore Coin -->
  59. + <ingredient count="1" id="21750" />
  60. + <!-- Dragon Heart -->
  61. + <production count="10" id="9815" />
  62. + </item>
  63. + <item>
  64. + <!-- Blue Elmore Coin -->
  65. + <ingredient count="1" id="21750" />
  66. + <!-- Earth Egg -->
  67. + <production count="10" id="9816" />
  68. + </item>
  69. + <item>
  70. + <!-- Blue Elmore Coin -->
  71. + <ingredient count="1" id="21750" />
  72. + <!-- Nonliving Nucleus -->
  73. + <production count="10" id="9817" />
  74. + </item>
  75. + <item>
  76. + <!-- Blue Elmore Coin -->
  77. + <ingredient count="1" id="21750" />
  78. + <!-- Angelic Essence -->
  79. + <production count="10" id="9818" />
  80. + </item>
  81. +</list>
  82. \ No newline at end of file
  83. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-00.htm
  84. ===================================================================
  85. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-00.htm (revision 0)
  86. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-00.htm (working copy)
  87. @@ -0,0 +1,4 @@
  88. +<html><body>Captain Mathias:<br>
  89. +I cannot trust your skill level. In order to receive this important mission, you need more experience.<br>
  90. +This is a life-risking task. (Only characters above level 80 can undertake this quest.)
  91. +</body></html>
  92. \ No newline at end of file
  93. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-01.htm
  94. ===================================================================
  95. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-01.htm (revision 0)
  96. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-01.htm (working copy)
  97. @@ -0,0 +1,5 @@
  98. +<html><body>Captain Mathias:<br>
  99. +Have you noticed the Red Moon as of Late? A bad omen to be sure. When that moon rises it tends to cause creatures to become more aggressive. I don't know maybe it has something to do with the color of blood.<br>
  100. +The king tries to hide it but I know he is troubled by the rise in monster related attacks. Unfortunately our forces are scarce as is and I cannot afford to send any of my troops out to handle the problem.<br>
  101. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-02.htm">"That is a problem. I might be the solution."</a>
  102. +</body></html>
  103. \ No newline at end of file
  104. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-02.htm
  105. ===================================================================
  106. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-02.htm (revision 0)
  107. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-02.htm (working copy)
  108. @@ -0,0 +1,6 @@
  109. +<html><body>Captain Mathias:<br>
  110. +You? Well, I suppose... those scars aren't for show, now are they? It looks like you can handle yourself in a fight.<br>
  111. +We have had reports of monsters near <font color="LEVEL">Rune and Goddard</font> that have been the cause of these recent attacks. <br>
  112. +I'm not going to lie, it will be dangerous, but I will be able to reward you for your efforts... that is if you are still interested.<br>
  113. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-03.htm">"Hmmm, likely to be killed... sure why not."</a>
  114. +</body></html>
  115. \ No newline at end of file
  116. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-03.htm
  117. ===================================================================
  118. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-03.htm (revision 0)
  119. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-03.htm (working copy)
  120. @@ -0,0 +1,7 @@
  121. +<html><body>Captain Mathias:<br>
  122. +Alright, there are three high priority targets.<br>
  123. +In Goddard, the Varka Silenos and Ketra Orcs Leaders have been rallying their troops. We need someone to go in there and eliminate the cause of their hostility.<br>
  124. +In the swamps near Rune, there is the Cannibalistic Stakato Chief... apparently it's got a taste for it's own kind. Creates a chemically induced state that causes it to go on a rampage. We need it taken out.<br>
  125. +Lastly, there is Anais in the Monastery of Silence. Our Intel is sketchy on the exact nature of this threat only that they need to be eliminated.<br>
  126. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-04.htm">"Well then, what I'm I waiting for."</a>
  127. +</body></html>
  128. \ No newline at end of file
  129. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-04.htm
  130. ===================================================================
  131. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-04.htm (revision 0)
  132. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-04.htm (working copy)
  133. @@ -0,0 +1,6 @@
  134. +<html><body>Captain Mathias:<br>
  135. +Wait a second. I like to keep tabs on who is doing what for me. I want to know what your plan of attack is. Which target do you plan on addressing?<br>
  136. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-06.htm">The Ketra Orcs and the Varka Silenos</a><br>
  137. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-08.htm">The Cannibalistic Stakato Chief</a><br>
  138. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-10.htm">Anais</a>
  139. +</body></html>
  140. \ No newline at end of file
  141. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-05.html
  142. ===================================================================
  143. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-05.html (revision 0)
  144. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-05.html (working copy)
  145. @@ -0,0 +1,7 @@
  146. +<html><body>Captain Mathias:<br>
  147. +Thanks for agreeing to help.<br>
  148. +I would like to know where you are planning to go. Which of the monsters I mentioned will you go to suppress?<br>
  149. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-06.htm">The Ketra Orcs and the Varka Silenos</a><br>
  150. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-08.htm">The Cannibalistic Stakato Chief</a><br>
  151. +<a action="bypass -h Quest Q00902_ReclaimOurEra 31340-10.htm">Anais</a>
  152. +</body></html>
  153. \ No newline at end of file
  154. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-06.htm
  155. ===================================================================
  156. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-06.htm (revision 0)
  157. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-06.htm (working copy)
  158. @@ -0,0 +1,4 @@
  159. +<html><body>Captain Mathias:<br>
  160. +So, you want to take a shot at the Varka Silenos and the Ketra Orcs?<br>
  161. +You are going to want to kill their leaders. The ones to hunt are <font color="LEVEL">Shadith, Moss, Horus, Hekaton, Tayr, and Braki.</font> You don't need to kill them all... killing 1 should send the message. Oh, and once you are done... bring back their <font color="LEVEL">Shattered Bones.</font> as proof you have completed the assignment.
  162. +</body></html>
  163. \ No newline at end of file
  164. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-07.htm
  165. ===================================================================
  166. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-07.htm (revision 0)
  167. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-07.htm (working copy)
  168. @@ -0,0 +1,3 @@
  169. +<html><body>Captain Mathias:<br>
  170. +The Ketra Orcs and the Varka Silenos are sworn enemies. Capturing just <font color="LEVEL">one of the leader monsters</font> will be considered meeting the suppression goal.
  171. +</body></html>
  172. \ No newline at end of file
  173. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-08.htm
  174. ===================================================================
  175. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-08.htm (revision 0)
  176. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-08.htm (working copy)
  177. @@ -0,0 +1,3 @@
  178. +<html><body>Captain Mathias:<br>
  179. +The Stakatos have become more aggressive lately. This is probably due to their Leader who has a taste of their own kind. Consuming the flesh of the Stakato seems to produce a chemical that causes intense aggression. It sends them in a fury to attack all those around. We don't have a scientific name for him, we just call it the <font color="LEVEL">Cannibalistic Stakato Chief.</font> Once you have taken care of this creature be sure to remove and bring me back the <font color="LEVEL">Cannibalistic Stakato Chief's Claw</font> as proof you have finished the assignment.
  180. +</body></html>
  181. \ No newline at end of file
  182. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-09.htm
  183. ===================================================================
  184. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-09.htm (revision 0)
  185. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-09.htm (working copy)
  186. @@ -0,0 +1,3 @@
  187. +<html><body>Captain Mathias:<br>
  188. +The Stakato Nest, where the Cannibalistic Stakato Chief lives, is a very dangerous place. Please be careful.
  189. +</body></html>
  190. \ No newline at end of file
  191. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-10.htm
  192. ===================================================================
  193. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-10.htm (revision 0)
  194. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-10.htm (working copy)
  195. @@ -0,0 +1,3 @@
  196. +<html><body>Captain Mathias:<br>
  197. +The Monastery of Silence, Eh? The creature you seek is <font color="LEVEL">Anais</font>. A very powerful creature, so be careful. Just a tip... the Monks there don't like weapons. Your best off not brandishing your weapon until you find what you are looking for. Rumor has it Anais can be found near the Holy Grail. IF you know where that is, you know where to find Anais. Bring me <font color="LEVEL">Anais's Scroll</font> once you have taken care of that little problem.
  198. +</body></html>
  199. \ No newline at end of file
  200. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-11.htm
  201. ===================================================================
  202. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-11.htm (revision 0)
  203. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-11.htm (working copy)
  204. @@ -0,0 +1,3 @@
  205. +<html><body>Captain Mathias:<br>
  206. +If you wish to defeat Anais in the Monastery of Silence, you will first need to walk a dangerous path. Be careful.
  207. +</body></html>
  208. \ No newline at end of file
  209. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-12.htm
  210. ===================================================================
  211. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-12.htm (revision 0)
  212. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-12.htm (working copy)
  213. @@ -0,0 +1,3 @@
  214. +<html><body>Captain Mathias:<br>
  215. +Here is your reward.
  216. +</body></html>
  217. \ No newline at end of file
  218. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-completed.htm
  219. ===================================================================
  220. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-completed.htm (revision 0)
  221. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/31340-completed.htm (working copy)
  222. @@ -0,0 +1,4 @@
  223. +<html><body><br>
  224. +This quest can be completed only once a day.
  225. + This quest resets everyday at 6:30 am.<br>
  226. +</body></html>
  227. \ No newline at end of file
  228. Index: dist/game/data/scripts/quests/Q00902_ReclaimOurEra/Q00902_ReclaimOurEra.java
  229. ===================================================================
  230. --- dist/game/data/scripts/quests/Q00902_ReclaimOurEra/Q00902_ReclaimOurEra.java (revision 0)
  231. +++ dist/game/data/scripts/quests/Q00902_ReclaimOurEra/Q00902_ReclaimOurEra.java (working copy)
  232. @@ -0,0 +1,230 @@
  233. +/*
  234. + * This program is free software: you can redistribute it and/or modify it under
  235. + * the terms of the GNU General Public License as published by the Free Software
  236. + * Foundation, either version 3 of the License, or (at your option) any later
  237. + * version.
  238. + *
  239. + * This program is distributed in the hope that it will be useful, but WITHOUT
  240. + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  241. + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  242. + * details.
  243. + *
  244. + * You should have received a copy of the GNU General Public License along with
  245. + * this program. If not, see <http://www.gnu.org/licenses/>.
  246. + */
  247. +package quests.Q00902_ReclaimOurEra;
  248. +
  249. +import com.l2jserver.gameserver.model.actor.L2Npc;
  250. +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  251. +import com.l2jserver.gameserver.model.quest.Quest;
  252. +import com.l2jserver.gameserver.model.quest.QuestState;
  253. +import com.l2jserver.gameserver.model.quest.QuestState.QuestType;
  254. +import com.l2jserver.gameserver.model.quest.State;
  255. +import com.l2jserver.gameserver.util.Util;
  256. +
  257. +/**
  258. + * Reclaim Our Era (902)
  259. + * @author Gladicek, lion
  260. + */
  261. +public class Q00902_ReclaimOurEra extends Quest
  262. +{
  263. + // NPC
  264. + private static final int MATHIAS = 31340; // Captain Mathias in Rune Castle Town
  265. +
  266. + // Quest Items
  267. + private static final int SHATTERED_BONES = 21997;
  268. + private static final int STAKATO_LEADER_CLAW = 21998;
  269. + private static final int ANAIS_SCROLL = 21999;
  270. +
  271. + // Reward Items
  272. + private static final int BLUE_ELMORE_COIN = 21750;
  273. +
  274. + // Raid Bosses
  275. + private static final int[] KETRA_AND_VARKA =
  276. + {
  277. + 25309, // Varka's Hero Shadith
  278. + 25312, // Varka's Commander Mos
  279. + 25315, // Varka's Chief Horus
  280. + 25299, // Ketra's Hero Hekaton
  281. + 25302, // Ketra's Commander Tayr
  282. + 25305 // Ketra's Chief Brakki
  283. + };
  284. +
  285. + private static final int[] STAKATO_NEST =
  286. + {
  287. + 25667, // Cannibalistic Stakato Chief
  288. + 25668, // Cannibalistic Stakato Chief
  289. + 25669, // Cannibalistic Stakato Chief
  290. + 25670 // Cannibalistic Stakato Chief
  291. + };
  292. +
  293. + private static final int ANAIS = 25701;
  294. +
  295. + // Misc
  296. + private static final int MIN_LEVEL = 80;
  297. +
  298. + @Override
  299. + public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
  300. + {
  301. + // Check for party, if player have it then reward them too
  302. + if (player.isInParty())
  303. + {
  304. + for (L2PcInstance ply : player.getParty().getMembers())
  305. + {
  306. + giveItem(npc, ply);
  307. + }
  308. + }
  309. + // Reward player without party
  310. + else
  311. + {
  312. + giveItem(npc, player);
  313. + }
  314. +
  315. + return super.onKill(npc, player, isPet);
  316. + }
  317. +
  318. + private void giveItem(L2Npc npc, L2PcInstance player)
  319. + {
  320. + final QuestState st = player.getQuestState(getName());
  321. + // If player have quest + is in radius then he can receive item from boss
  322. + if ((st != null) && (st.isStarted()) && player.isInsideRadius(npc, 2500, false, false))
  323. + {
  324. + // Ketra/Varka bosses
  325. + if (st.isCond(2) && Util.contains(KETRA_AND_VARKA, npc.getNpcId()))
  326. + {
  327. + st.giveItems(SHATTERED_BONES, 1);
  328. + st.setCond(5, true);
  329. + }
  330. + // Stakato bosses
  331. + else if (st.isCond(3) && Util.contains(STAKATO_NEST, npc.getNpcId()))
  332. + {
  333. + st.giveItems(STAKATO_LEADER_CLAW, 1);
  334. + st.setCond(5, true);
  335. + }
  336. + // Monastery of Silence boss (Anais)
  337. + else if (st.isCond(4) && (npc.getNpcId() == ANAIS))
  338. + {
  339. + st.giveItems(ANAIS_SCROLL, 1);
  340. + st.setCond(5, true);
  341. + }
  342. + }
  343. + }
  344. +
  345. + @Override
  346. + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  347. + {
  348. + final QuestState st = player.getQuestState(getName());
  349. + if (st == null)
  350. + {
  351. + return null;
  352. + }
  353. +
  354. + String htmltext = event;
  355. + if (npc.getNpcId() == MATHIAS)
  356. + {
  357. + switch (event)
  358. + {
  359. + case "31340-02.htm":
  360. + case "31340-03.htm":
  361. + break;
  362. + case "31340-04.htm":
  363. + st.startQuest();
  364. + break;
  365. + case "31340-06.htm":
  366. + st.setCond(2, true);
  367. + break;
  368. + case "31340-08.htm":
  369. + st.setCond(3, true);
  370. + break;
  371. + case "31340-10.htm":
  372. + st.setCond(4, true);
  373. + break;
  374. + default:
  375. + htmltext = null;
  376. + break;
  377. + }
  378. + }
  379. + return htmltext;
  380. + }
  381. +
  382. + @Override
  383. + public String onTalk(L2Npc npc, L2PcInstance player)
  384. + {
  385. + String htmltext = getNoQuestMsg(player);
  386. + final QuestState st = player.getQuestState(getName());
  387. + if (st == null)
  388. + {
  389. + return htmltext;
  390. + }
  391. +
  392. + switch (st.getState())
  393. + {
  394. + case State.CREATED:
  395. + htmltext = (player.getLevel() >= MIN_LEVEL) ? "31340-01.htm" : "31340-00.htm";
  396. + break;
  397. + case State.COMPLETED:
  398. + htmltext = "31340-completed.htm";
  399. + break;
  400. + case State.STARTED:
  401. + switch (st.getCond())
  402. + {
  403. + case 2:
  404. + htmltext = "31340-07.htm";
  405. + break;
  406. + case 3:
  407. + htmltext = "31340-09.htm";
  408. + break;
  409. + case 4:
  410. + htmltext = "31340-11.htm";
  411. + break;
  412. + case 5:
  413. + boolean finishQuest = false;
  414. + if (st.hasQuestItems(SHATTERED_BONES))
  415. + {
  416. + st.giveAdena(134038, true);
  417. + finishQuest = true;
  418. + }
  419. + else if (st.hasQuestItems(STAKATO_LEADER_CLAW))
  420. + {
  421. + st.giveAdena(210119, true);
  422. + finishQuest = true;
  423. + }
  424. + else if (st.hasQuestItems(ANAIS_SCROLL))
  425. + {
  426. + st.giveAdena(348155, true);
  427. + finishQuest = true;
  428. + }
  429. +
  430. + if (finishQuest)
  431. + {
  432. + st.giveItems(BLUE_ELMORE_COIN, 1);
  433. + st.exitQuest(QuestType.DAILY, true);
  434. + htmltext = "31340-12.htm";
  435. + }
  436. + break;
  437. + default:
  438. + htmltext = "31340-05.html";
  439. + break;
  440. + }
  441. + break;
  442. + }
  443. + return htmltext;
  444. + }
  445. +
  446. + public Q00902_ReclaimOurEra(int questId, String name, String descr)
  447. + {
  448. + super(questId, name, descr);
  449. + addStartNpc(MATHIAS);
  450. + addTalkId(MATHIAS);
  451. + addKillId(KETRA_AND_VARKA);
  452. + addKillId(STAKATO_NEST);
  453. + addKillId(ANAIS);
  454. +
  455. + registerQuestItems(SHATTERED_BONES, STAKATO_LEADER_CLAW, ANAIS_SCROLL);
  456. + }
  457. +
  458. + public static void main(String[] args)
  459. + {
  460. + new Q00902_ReclaimOurEra(902, Q00902_ReclaimOurEra.class.getSimpleName(), "Reclaim Our Era");
  461. + }
  462. +}
  463. \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment