Advertisement
CostyKiller

Krofin Nest Instance patch

Jun 2nd, 2021 (edited)
2,273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 25.93 KB | None | 0 0
  1. Index: dist/game/data/html/default/34542.htm
  2. ===================================================================
  3. --- dist/game/data/html/default/34542.htm   (revision 8809)
  4. +++ dist/game/data/html/default/34542.htm   (working copy)
  5. @@ -3,4 +3,5 @@
  6.  <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest BaylorWarzone enterInstance">Fight Baylor</Button>
  7.  <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest NightmareKamaloka enterInstance">Go to Nightmare Kamaloka</Button>
  8.  <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest AshenShadowRevolutionaries enterInstance">Go to Ashen Shadow Revolutionaries</Button>
  9. +<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest KrofinNest enterInstance">Go to Krofin Nest</Button>
  10.  </body></html>
  11. \ No newline at end of file
  12.  
  13. Index: dist/game/data/instances/KrofinNest.xml
  14. ===================================================================
  15. --- dist/game/data/instances/KrofinNest.xml (nonexistent)
  16. +++ dist/game/data/instances/KrofinNest.xml (working copy)
  17. @@ -0,0 +1,124 @@
  18. +<?xml version="1.0" encoding="UTF-8"?>
  19. +<!-- Krofins Nest -->
  20. +<instance id="291" maxWorlds="100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
  21. +   <time duration="60" empty="1" />
  22. +   <locations>
  23. +       <enter type="FIXED">
  24. +           <location x="124390" y="155333" z="-3713" heading="0" /> <!-- Krofin Nest -->
  25. +       </enter>
  26. +       <exit type="ORIGIN" />
  27. +   </locations>
  28. +   <conditions>
  29. +       <condition type="Reenter" />
  30. +       <condition type="Party" showMessageAndHtml="true">
  31. +           <param name="html" value="condNoPartyLeader.html" />
  32. +       </condition>
  33. +       <condition type="PartyLeader" showMessageAndHtml="true">
  34. +           <param name="html" value="condNoPartyLeader.html" />
  35. +       </condition>
  36. +       <condition type="GroupMin">
  37. +           <param name="limit" value="2" />
  38. +       </condition>
  39. +       <condition type="GroupMax">
  40. +           <param name="limit" value="7" />
  41. +       </condition>
  42. +       <condition type="Level">
  43. +           <param name="min" value="105" />
  44. +       </condition>
  45. +       <condition type="Distance" />
  46. +   </conditions>
  47. +   <reenter apply="ON_FINISH">
  48. +       <reset day="MONDAY" hour="6" minute="30" />
  49. +       <reset day="TUESDAY" hour="6" minute="30" />
  50. +       <reset day="WEDNESDAY" hour="6" minute="30" />
  51. +       <reset day="THURSDAY" hour="6" minute="30" />
  52. +       <reset day="FRIDAY" hour="6" minute="30" />
  53. +       <reset day="SATURDAY" hour="6" minute="30" />
  54. +       <reset day="SUNDAY" hour="6" minute="30" />
  55. +   </reenter>
  56. +   <doorlist>
  57. +       <door id="23220101">
  58. +           <openStatus default="close" />
  59. +       </door>
  60. +       <door id="24250002">
  61. +           <openStatus default="close" />
  62. +       </door>
  63. +       <door id="24250004">
  64. +           <openStatus default="close" />
  65. +       </door>
  66. +       <door id="24250006">
  67. +           <openStatus default="close" />
  68. +       </door>
  69. +   </doorlist>
  70. +   <spawnlist>
  71. +       <group name="FIRST_AREA" spawnByDefault="false">
  72. +           <npc id="26398" x="123970" y="154547" z="-3664" heading="32542" /> <!-- Young Kropion -->
  73. +           <npc id="26398" x="123906" y="154494" z="-3664" heading="32542" /> <!-- Young Kropion -->
  74. +           <npc id="26398" x="124308" y="154585" z="-3664" heading="32542" /> <!-- Young Kropion -->
  75. +           <npc id="26398" x="123833" y="154401" z="-3664" heading="32542" /> <!-- Young Kropion -->
  76. +           <npc id="26396" x="124370" y="154268" z="-3666" heading="32542" /> <!-- Kropion -->
  77. +           <npc id="26396" x="124131" y="154115" z="-3664" heading="32542" /> <!-- Kropion -->
  78. +           <npc id="26396" x="124012" y="153981" z="-3664" heading="32542" /> <!-- Kropion -->
  79. +           <npc id="26396" x="123682" y="154261" z="-3664" heading="32542" /> <!-- Kropion -->
  80. +           <npc id="26398" x="124123" y="152724" z="-3667" heading="32542" /> <!-- Young Kropion -->
  81. +           <npc id="26398" x="124200" y="153026" z="-3674" heading="32542" /> <!-- Young Kropion -->
  82. +           <npc id="26398" x="124303" y="152969" z="-3670" heading="32542" /> <!-- Young Kropion -->
  83. +           <npc id="26398" x="124399" y="152839" z="-3666" heading="32542" /> <!-- Young Kropion -->
  84. +           <npc id="26396" x="124029" y="152515" z="-3670" heading="32542" /> <!-- Kropion -->
  85. +           <npc id="26396" x="124268" y="152311" z="-3669" heading="32542" /> <!-- Kropion -->
  86. +       </group>
  87. +       <group name="SECOND_AREA" spawnByDefault="false">
  88. +           <npc id="26396" x="150858" y="249727" z="-7112" heading="32542" /> <!-- Kropion -->
  89. +           <npc id="26396" x="150598" y="249649" z="-7112" heading="32542" /> <!-- Kropion -->
  90. +           <npc id="26396" x="151442" y="249603" z="-7112" heading="32542" /> <!-- Kropion -->
  91. +           <npc id="26396" x="151294" y="249068" z="-7112" heading="32542" /> <!-- Kropion -->
  92. +       </group>
  93. +       <group name="THIRD_AREA" spawnByDefault="false">
  94. +           <npc id="26395" x="142173" y="249603" z="-7112" heading="32542" /> <!-- Krotanion -->
  95. +           <npc id="26397" x="141842" y="249717" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  96. +           <npc id="26397" x="141942" y="249900" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  97. +           <npc id="26397" x="142065" y="249808" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  98. +           <npc id="26397" x="142232" y="250114" z="-7101" heading="32542" /> <!-- Young Krotanion -->
  99. +           <npc id="26397" x="142264" y="249813" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  100. +           <npc id="26397" x="142145" y="249693" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  101. +           <npc id="26397" x="142243" y="249603" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  102. +           <npc id="26397" x="142408" y="249281" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  103. +       </group>
  104. +       <group name="FOURTH_AREA" spawnByDefault="false">
  105. +           <npc id="26395" x="150536" y="241386" z="-7112" heading="32542" /> <!-- Krotanion -->
  106. +           <npc id="26397" x="150470" y="241678" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  107. +           <npc id="26397" x="150720" y="241104" z="-7112" heading="32542" /> <!-- Young Krotanion -->
  108. +           <npc id="26396" x="151089" y="241259" z="-7119" heading="32542" /> <!-- Kropion -->
  109. +       </group>
  110. +       <group name="KROPION_MINIONS" spawnByDefault="false">
  111. +           <npc id="26398" x="151023" y="249494" z="-7095" heading="32542" /> <!-- Young Kropion -->
  112. +           <npc id="26398" x="151023" y="249494" z="-7095" heading="32542" /> <!-- Young Kropion -->
  113. +           <npc id="26398" x="151023" y="249494" z="-7095" heading="32542" /> <!-- Young Kropion -->
  114. +       </group>
  115. +       <group name="KROSHA_FIRST_FORM" spawnByDefault="false">
  116. +           <npc id="26389" x="142395" y="240706" z="-6216" heading="32542" /> <!-- Queen Krosha First Form -->
  117. +       </group>
  118. +       <group name="KROSHA_FIRST_FORM_MINIONS" spawnByDefault="false">
  119. +           <npc id="26393" x="142455" y="240523" z="-6224" heading="32542" /> <!-- Fragile Young Krotanion -->
  120. +           <npc id="26394" x="142322" y="240618" z="-6224" heading="32542" /> <!-- Fragile Young Kropion -->
  121. +           <npc id="26393" x="142273" y="240821" z="-6224" heading="32542" /> <!-- Fragile Young Krotanion -->
  122. +           <npc id="26394" x="142398" y="240950" z="-6224" heading="32542" /> <!-- Fragile Young Kropion -->
  123. +           <npc id="26393" x="142571" y="240895" z="-6224" heading="32542" /> <!-- Fragile Young Krotanion -->
  124. +           <npc id="26394" x="142616" y="240616" z="-6224" heading="32542" /> <!-- Fragile Young Kropion -->
  125. +       </group>
  126. +       <group name="ENHANCED_MINIONS" spawnByDefault="false">
  127. +           <npc id="26391" x="142124" y="240586" z="-6224" heading="6224" /> <!-- Enhanced Krotanion -->
  128. +           <npc id="26392" x="142124" y="240586" z="-6224" heading="32542" /> <!-- Enhanced Kropion -->
  129. +           <npc id="26392" x="142815" y="240935" z="-6209" heading="32542" /> <!-- Enhanced Kropion -->
  130. +       </group>
  131. +       <group name="KROSHA_FINAL_FORM" spawnByDefault="false">
  132. +           <npc id="26390" x="142395" y="240706" z="-6216" heading="32542" /> <!-- Queen Krosha Final Form -->
  133. +       </group>       
  134. +       <group name="KROSHA_FINAL_FORM_MINIONS" spawnByDefault="false">
  135. +           <npc id="26391" x="142124" y="240586" z="-6224" heading="6224" /> <!-- Enhanced Krotanion -->
  136. +           <npc id="26392" x="142124" y="240586" z="-6224" heading="32542" /> <!-- Enhanced Kropion -->
  137. +           <npc id="26392" x="142815" y="240935" z="-6209" heading="32542" /> <!-- Enhanced Kropion -->
  138. +       </group>
  139. +   </spawnlist>
  140. +</instance>
  141.  
  142. Index: dist/game/data/scripts/instances/KrofinNest/KrofinNest.java
  143. ===================================================================
  144. --- dist/game/data/scripts/instances/KrofinNest/KrofinNest.java (nonexistent)
  145. +++ dist/game/data/scripts/instances/KrofinNest/KrofinNest.java (working copy)
  146. @@ -0,0 +1,288 @@
  147. +/*
  148. + * This file is part of the L2J Mobius project.
  149. + *
  150. + * This program is free software: you can redistribute it and/or modify
  151. + * it under the terms of the GNU General Public License as published by
  152. + * the Free Software Foundation, either version 3 of the License, or
  153. + * (at your option) any later version.
  154. + *
  155. + * This program is distributed in the hope that it will be useful,
  156. + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  157. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  158. + * General Public License for more details.
  159. + *
  160. + * You should have received a copy of the GNU General Public License
  161. + * along with this program. If not, see <http://www.gnu.org/licenses/>.
  162. + */
  163. +package instances.KrofinNest;
  164. +
  165. +import org.l2jmobius.commons.util.CommonUtil;
  166. +import org.l2jmobius.gameserver.model.actor.Npc;
  167. +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
  168. +import org.l2jmobius.gameserver.model.holders.ItemHolder;
  169. +import org.l2jmobius.gameserver.model.instancezone.Instance;
  170. +import org.l2jmobius.gameserver.network.NpcStringId;
  171. +import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
  172. +
  173. +import instances.AbstractInstance;
  174. +
  175. +/**
  176. + * @author CostyKiller, NasSeKa
  177. + * @URL https://www.youtube.com/watch?v=UCI2lnm-Bc0
  178. + * @TODO Add doors water effect and bumping water tornados npcs.
  179. + */
  180. +public class KrofinNest extends AbstractInstance
  181. +{
  182. +   // NPC
  183. +   private static final int BENUSTA = 34542;
  184. +   // Item
  185. +   private static final ItemHolder BENUSTAS_REWARD_BOX = new ItemHolder(81151, 1);
  186. +   private static final ItemHolder BENUSTAS_SHINING_REWARD_BOX = new ItemHolder(81452, 1);
  187. +   // Misc
  188. +   private static final int TEMPLATE_ID = 291; // Krofin Nest
  189. +   private static int INITIAL_PARTY_MEMBERS = 0;
  190. +   private static final int DOOR1 = 23220101;
  191. +   private static final int DOOR2 = 24250002;
  192. +   private static final int DOOR3 = 24250004;
  193. +   private static final int DOOR4 = 24250006;
  194. +   private static final int[] FIRST_AREA =
  195. +   {
  196. +       26396,
  197. +       26398
  198. +   };
  199. +   private static final int[] SECOND_AREA =
  200. +   {
  201. +       26396,
  202. +       26398
  203. +   };
  204. +   private static final int[] THIRD_AREA =
  205. +   {
  206. +       26395,
  207. +       26397
  208. +   };
  209. +   private static final int[] FOURTH_AREA =
  210. +   {
  211. +       26395,
  212. +       26396,
  213. +       26397,
  214. +       26398
  215. +   };
  216. +   private static final int KROSHA_FIRST_FORM = 26389;
  217. +   private static final int KROSHA_FINAL_FORM = 26390;
  218. +   private static final int KROPION = 26396;
  219. +   private static final int[] KROSHA_FIRST_FORM_MINIONS =
  220. +   {
  221. +       26393,
  222. +       26394
  223. +   };
  224. +   private static final int[] ENHANCED_MINIONS =
  225. +   {
  226. +       26391,
  227. +       26392
  228. +   };
  229. +  
  230. +   public KrofinNest()
  231. +   {
  232. +       super(TEMPLATE_ID);
  233. +       addStartNpc(BENUSTA);
  234. +       addTalkId(BENUSTA);
  235. +       addAttackId(FIRST_AREA);
  236. +       addAttackId(SECOND_AREA);
  237. +       addAttackId(THIRD_AREA);
  238. +       addAttackId(FOURTH_AREA);
  239. +       addAttackId(KROSHA_FIRST_FORM);
  240. +       addAttackId(KROSHA_FINAL_FORM);
  241. +       addKillId(KROSHA_FIRST_FORM_MINIONS);
  242. +       addKillId(ENHANCED_MINIONS);
  243. +       addKillId(KROSHA_FINAL_FORM);
  244. +   }
  245. +  
  246. +   @Override
  247. +   public String onAdvEvent(String event, Npc npc, PlayerInstance player)
  248. +   {
  249. +       switch (event)
  250. +       {
  251. +           case "enterInstance":
  252. +           {
  253. +               enterInstance(player, npc, TEMPLATE_ID);
  254. +               if (player.getInstanceWorld() != null)
  255. +               {
  256. +                   startQuestTimer("check_status", 1000, null, player);
  257. +               }
  258. +               return null;
  259. +           }
  260. +           case "check_status":
  261. +           {
  262. +               final Instance world = player.getInstanceWorld();
  263. +               if (!isInInstance(world))
  264. +               {
  265. +                   return null;
  266. +               }
  267. +               switch (world.getStatus())
  268. +               {
  269. +                   case 0:
  270. +                   {
  271. +                       world.setStatus(1);
  272. +                       world.spawnGroup("FIRST_AREA");
  273. +                       startQuestTimer("check_status", 10000, null, player);
  274. +                       break;
  275. +                   }
  276. +                   case 1:
  277. +                   {
  278. +                       if (world.getAliveNpcs(FIRST_AREA).isEmpty())
  279. +                       {
  280. +                           showOnScreenMsg(world, NpcStringId.THE_WATER_ENERGY_IS_NO_LONGER_ACTIVE_THE_WAY_IS_CLEAR, ExShowScreenMessage.TOP_CENTER, 10000, true);
  281. +                           world.setStatus(2);
  282. +                           world.getDoor(DOOR1).openMe();
  283. +                           world.spawnGroup("SECOND_AREA");
  284. +                       }
  285. +                       startQuestTimer("check_status", 1000, null, player);
  286. +                       break;
  287. +                   }
  288. +                   case 2:
  289. +                   {
  290. +                       if (world.getAliveNpcs(SECOND_AREA).isEmpty())
  291. +                       {
  292. +                           showOnScreenMsg(world, NpcStringId.THE_WATER_ENERGY_IS_NO_LONGER_ACTIVE_THE_WAY_IS_CLEAR, ExShowScreenMessage.TOP_CENTER, 10000, true);
  293. +                           world.setStatus(3);
  294. +                           world.getDoor(DOOR2).openMe();
  295. +                           world.spawnGroup("THIRD_AREA");
  296. +                       }
  297. +                       startQuestTimer("check_status", 10000, null, player);
  298. +                       break;
  299. +                   }
  300. +                   case 3:
  301. +                   {
  302. +                       if (world.getAliveNpcs(THIRD_AREA).isEmpty())
  303. +                       {
  304. +                           showOnScreenMsg(world, NpcStringId.THE_WATER_ENERGY_IS_NO_LONGER_ACTIVE_THE_WAY_IS_CLEAR, ExShowScreenMessage.TOP_CENTER, 10000, true);
  305. +                           world.setStatus(4);
  306. +                           world.getDoor(DOOR3).openMe();
  307. +                           world.spawnGroup("FOURTH_AREA");
  308. +                       }
  309. +                       startQuestTimer("check_status", 10000, null, player);
  310. +                       break;
  311. +                   }
  312. +                   case 4:
  313. +                   {
  314. +                       if (world.getAliveNpcs(FOURTH_AREA).isEmpty())
  315. +                       {
  316. +                           showOnScreenMsg(world, NpcStringId.THE_WATER_ENERGY_IS_NO_LONGER_ACTIVE_THE_WAY_IS_CLEAR, ExShowScreenMessage.TOP_CENTER, 10000, true);
  317. +                           world.setStatus(5);
  318. +                           world.getDoor(DOOR4).openMe();
  319. +                           world.spawnGroup("KROSHA_FIRST_FORM");
  320. +                       }
  321. +                       startQuestTimer("check_status", 10000, null, player);
  322. +                       break;
  323. +                   }
  324. +               }
  325. +               return null;
  326. +           }
  327. +       }
  328. +       return super.onAdvEvent(event, npc, player);
  329. +   }
  330. +  
  331. +   @Override
  332. +   public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
  333. +   {
  334. +       final Instance world = attacker.getInstanceWorld();
  335. +       if (isInInstance(world))
  336. +       {
  337. +           final boolean KROPION_MINIONS_SPAWNED = world.getParameters().getBoolean("KROPION_MINIONS_SPAWNED", false);
  338. +           final boolean KROSHA_FIRST_FORM_MINIONS_SPAWNED = world.getParameters().getBoolean("KROSHA_FIRST_FORM_MINIONS_SPAWNED", false);
  339. +           final boolean KROSHA_FINAL_FORM_MINIONS_SPAWNED = world.getParameters().getBoolean("KROSHA_FINAL_FORM_MINIONS_SPAWNED", false);
  340. +           if ((world.getStatus() == 2) && (npc.getId() == KROPION))
  341. +           {
  342. +               if (!KROPION_MINIONS_SPAWNED)
  343. +               {
  344. +                   world.getParameters().set("KROPION_MINIONS_SPAWNED", true);
  345. +                   world.spawnGroup("KROPION_MINIONS");
  346. +               }
  347. +           }
  348. +           else if (world.getStatus() == 5)
  349. +           {
  350. +               if ((npc.getId() == KROSHA_FIRST_FORM) && !KROSHA_FIRST_FORM_MINIONS_SPAWNED)
  351. +               {
  352. +                   world.getParameters().set("KROSHA_FIRST_FORM_MINIONS_SPAWNED", true);
  353. +                   world.spawnGroup("KROSHA_FIRST_FORM_MINIONS");
  354. +               }
  355. +               else if ((npc.getId() == KROSHA_FINAL_FORM) && !KROSHA_FINAL_FORM_MINIONS_SPAWNED)
  356. +               {
  357. +                   world.getParameters().set("KROSHA_FINAL_FORM_MINIONS_SPAWNED", true);
  358. +                   world.spawnGroup("KROSHA_FINAL_FORM_MINIONS");
  359. +               }
  360. +           }
  361. +       }
  362. +       return super.onAttack(npc, attacker, damage, isSummon);
  363. +   }
  364. +  
  365. +   @Override
  366. +   public void onInstanceCreated(Instance instance, PlayerInstance player)
  367. +   {
  368. +       INITIAL_PARTY_MEMBERS = player.getParty().getMemberCount();
  369. +   }
  370. +  
  371. +   @Override
  372. +   public String onKill(Npc npc, PlayerInstance killer, boolean isPet)
  373. +   {
  374. +       final Instance world = npc.getInstanceWorld();
  375. +       if (isInInstance(world))
  376. +       {
  377. +           final boolean KROSHA_FIRST_FORM_MINIONS_SPAWNED_TWICE = world.getParameters().getBoolean("KROSHA_FIRST_FORM_MINIONS_SPAWNED_TWICE", false);
  378. +           final boolean KROSHA_FINAL_FORM_SPAWNED = world.getParameters().getBoolean("KROSHA_FINAL_FORM_SPAWNED", false);
  379. +           final PlayerInstance randomPl = world.getFirstPlayer().getParty().getRandomPlayer();
  380. +           if (world.getStatus() == 5)
  381. +           {
  382. +               if (CommonUtil.contains(KROSHA_FIRST_FORM_MINIONS, npc.getId()))
  383. +               {
  384. +                   if (world.getAliveNpcs(KROSHA_FIRST_FORM_MINIONS).isEmpty() && !KROSHA_FIRST_FORM_MINIONS_SPAWNED_TWICE)
  385. +                   {
  386. +                       world.getParameters().set("KROSHA_FIRST_FORM_MINIONS_SPAWNED_TWICE", true);
  387. +                       world.spawnGroup("KROSHA_FIRST_FORM_MINIONS");
  388. +                   }
  389. +                   else if (world.getAliveNpcs(KROSHA_FIRST_FORM_MINIONS).isEmpty() && KROSHA_FIRST_FORM_MINIONS_SPAWNED_TWICE)
  390. +                   {
  391. +                       world.despawnGroup("KROSHA_FIRST_FORM");
  392. +                       showOnScreenMsg(world, NpcStringId.QUEEN_KROSHA_HAS_DISAPPEARED, ExShowScreenMessage.TOP_CENTER, 7000, true);
  393. +                       world.spawnGroup("ENHANCED_MINIONS");
  394. +                   }
  395. +               }
  396. +               else if (CommonUtil.contains(ENHANCED_MINIONS, npc.getId()))
  397. +               {
  398. +                   if (world.getAliveNpcs(ENHANCED_MINIONS).isEmpty() && !KROSHA_FINAL_FORM_SPAWNED)
  399. +                   {
  400. +                       world.spawnGroup("KROSHA_FINAL_FORM");
  401. +                       world.getParameters().set("KROSHA_FINAL_FORM_SPAWNED", true);
  402. +                       showOnScreenMsg(world, NpcStringId.QUEEN_KROSHA_HAS_RETURNED_MORE_POWERFUL_THAN_EVER, ExShowScreenMessage.TOP_CENTER, 7000, true);
  403. +                   }
  404. +               }
  405. +               else if (npc.getId() == KROSHA_FINAL_FORM)
  406. +               {
  407. +                   for (PlayerInstance member : world.getPlayers())
  408. +                   {
  409. +                       giveItems(member, BENUSTAS_REWARD_BOX);
  410. +                   }
  411. +                   if (world.getPlayersCount() == INITIAL_PARTY_MEMBERS)
  412. +                   {
  413. +                       if (getRandom(100) < 80)
  414. +                       {
  415. +                           giveItems(randomPl, BENUSTAS_SHINING_REWARD_BOX);
  416. +                       }
  417. +                   }
  418. +                   showOnScreenMsg(world, NpcStringId.THE_WATER_POWER_PROTECTING_QUEEN_KROSHA_HAS_DISAPPEARED, ExShowScreenMessage.TOP_CENTER, 7000, true);
  419. +                   world.finishInstance();
  420. +               }
  421. +               else
  422. +               {
  423. +                   world.setReenterTime();
  424. +               }
  425. +           }
  426. +       }
  427. +       return super.onKill(npc, killer, isPet);
  428. +   }
  429. +  
  430. +   public static void main(String[] args)
  431. +   {
  432. +       new KrofinNest();
  433. +   }
  434. +}
  435.  
  436. Index: dist/game/data/zones/teleportzones.xml
  437. ===================================================================
  438. --- dist/game/data/zones/teleportzones.xml  (revision 8809)
  439. +++ dist/game/data/zones/teleportzones.xml  (working copy)
  440. @@ -454,4 +454,48 @@
  441.         <node X="-161807" Y="72486" />
  442.         <node X="-162587" Y="85862" />
  443.     </zone>
  444. +<zone name="tp_krofin1" type="TeleportZone" shape="NPoly" minZ="-10400" maxZ="10000">
  445. +        <stat name="oustX" val="151072" />
  446. +        <stat name="oustY" val="250180" />
  447. +        <stat name="oustZ" val="-7095" />
  448. +        <stat name="instanceId" val="291" />
  449. +        <stat name="targetClass" val="PlayerInstance" />
  450. +        <node X="123222" Y="152541" />
  451. +        <node X="123230" Y="153134" />
  452. +        <node X="123205" Y="152889" />
  453. +        <node X="122786" Y="152618" />
  454. +    </zone>
  455. +    <zone name="tp_krofin2" type="TeleportZone" shape="NPoly" minZ="-10400" maxZ="10000">
  456. +        <stat name="oustX" val="142111" />
  457. +        <stat name="oustY" val="250187" />
  458. +        <stat name="oustZ" val="-7103" />
  459. +        <stat name="instanceId" val="291" />
  460. +        <stat name="targetClass" val="PlayerInstance" />
  461. +        <node X="150442" Y="247979" />
  462. +        <node X="149762" Y="248090" />
  463. +        <node X="149625" Y="247505" />
  464. +        <node X="149986" Y="247532" />
  465. +    </zone>
  466. +    <zone name="tp_krofin3" type="TeleportZone" shape="NPoly" minZ="-10400" maxZ="10000">
  467. +        <stat name="oustX" val="150780" />
  468. +        <stat name="oustY" val="242301" />
  469. +        <stat name="oustZ" val="-7121" />
  470. +        <stat name="instanceId" val="291" />
  471. +        <stat name="targetClass" val="PlayerInstance" />
  472. +        <node X="141289" Y="247972" />
  473. +        <node X="141112" Y="248335" />
  474. +        <node X="140742" Y="247920" />
  475. +        <node X="140919" Y="247768" />
  476. +    </zone>
  477. +    <zone name="tp_krofin_boss" type="TeleportZone" shape="NPoly" minZ="-10400" maxZ="10000">
  478. +        <stat name="oustX" val="142265" />
  479. +        <stat name="oustY" val="241841" />
  480. +        <stat name="oustZ" val="-6192" />
  481. +        <stat name="instanceId" val="291" />
  482. +        <stat name="targetClass" val="PlayerInstance" />
  483. +        <node X="150112" Y="239750" />
  484. +        <node X="149776" Y="240109" />
  485. +        <node X="149758" Y="239301" />
  486. +        <node X="149490" Y="238955" />
  487. +    </zone>
  488.  </list>
  489. \ No newline at end of file
  490.  
  491. Index: dist/game/data/html/admin/teleports/instance.htm
  492. ===================================================================
  493. --- dist/game/data/html/admin/teleports/instance.htm    (revision 8809)
  494. +++ dist/game/data/html/admin/teleports/instance.htm    (working copy)
  495. @@ -7,6 +7,7 @@
  496.  <td width=40><button value="Back" action="bypass -h admin_show_moves" width=40 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
  497.  </tr></table></center>
  498.  <center>
  499. +<button action="bypass -h admin_html teleports/instance/krofin.htm" value="Krofin Nest" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  500.  <button action="bypass -h admin_html teleports/instance/destruction.htm" value="Seed of Destruction" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  501.  <button action="bypass -h admin_html teleports/instance/anhilation.htm" value="Seed of Annihilation" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  502.  <button action="bypass -h admin_html teleports/instance/infinity.htm" value="Seed of Infinity" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  503. Index: dist/game/data/html/admin/teleports/instance/krofin.htm
  504. ===================================================================
  505. --- dist/game/data/html/admin/teleports/instance/krofin.htm (nonexistent)
  506. +++ dist/game/data/html/admin/teleports/instance/krofin.htm (working copy)
  507. @@ -0,0 +1,17 @@
  508. + <html><title>Admin Teleports</title>
  509. +<body>
  510. +<center>
  511. +<table width=260>
  512. +<tr><td width=40><button value="Main" action="bypass -h admin_admin" width=40 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
  513. +<td width=180><center>Krofin Nest</center></td>
  514. +<td width=40><button value="Back" action="bypass -h admin_html teleports/instance.htm" width=40 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>
  515. +</tr></table>
  516. +<br><font color="LEVEL">Monster Rooms</font><br1>
  517. +<button action="bypass -h admin_move_to 124029 154731 -3663" value="First Room" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  518. +<button action="bypass -h admin_move_to 150780 242301 -7121" value="Second Room" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  519. +<button action="bypass -h admin_move_to 151072 250180 -7095" value="Third Room" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  520. +<button action="bypass -h admin_move_to 150777 242111 -7095" value="Fourth Room" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  521. +<br><font color="LEVEL">Boss Room</font><br1>
  522. +<button action="bypass -h admin_move_to 142488 240888 -6235" value="Boss Room" width=210 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
  523. +</center>
  524. +</body></html>
  525. \ No newline at end of file
  526.  
  527. Index: dist/game/data/DoorData.xml
  528. ===================================================================
  529. --- dist/game/data/DoorData.xml (revision 8809)
  530. +++ dist/game/data/DoorData.xml (working copy)
  531. @@ -18278,6 +18278,30 @@
  532.         <status showHp="false" />
  533.         <openStatus openMethod="BY_ITEM" default="close" />
  534.     </door>
  535. +   <door id="12220002" name="Inner_Castle_Gate">
  536. +       <nodes nodeZ="3048">
  537. +           <node x="-245752" y="148808" />
  538. +           <node x="-245752" y="148808" />
  539. +           <node x="-245752" y="148808" />
  540. +           <node x="-245752" y="148808" />
  541. +       </nodes>
  542. +       <location x="-245752" y="148808" z="4677" height="150" />
  543. +       <stats basePDef="644" baseMDef="518" baseHpMax="169710" />
  544. +       <status showHp="false" />
  545. +       <openStatus default="close" />
  546. +   </door>
  547. +   <door id="12220001" name="Inner_Castle_Gate">
  548. +       <nodes nodeZ="3049">
  549. +           <node x="-245752" y="148808" />
  550. +           <node x="-245752" y="148808" />
  551. +           <node x="-245752" y="148808" />
  552. +           <node x="-245752" y="148808" />
  553. +       </nodes>
  554. +       <location x="-245752" y="148808" z="4677" height="150" />
  555. +       <stats basePDef="644" baseMDef="518" baseHpMax="169710" />
  556. +       <status showHp="false" />
  557. +       <openStatus default="close" />
  558. +   </door>
  559.     <door id="12230702" name="Etina_outer_door1">
  560.         <nodes nodeZ="3048">
  561.             <node x="-245663" y="188024" />
  562. @@ -18350,4 +18374,40 @@
  563.         <status showHp="false" />
  564.         <openStatus default="close" />
  565.     </door>
  566. +   <door id="24250002" name="Rachiq_Habitat_S.rachiq_Door01" >
  567. +        <nodes nodeZ="-7192">
  568. +            <node x="151333" y="248716" />
  569. +            <node x="151334" y="248741" />
  570. +            <node x="150927" y="248740" />
  571. +            <node x="150927" y="248714" />
  572. +        </nodes>
  573. +        <location x="151131" y="248728" z="-7189" />
  574. +        <stats basePDef="644" baseMDef="518" baseHpMax="169710" />
  575. +        <status showHp="false" />
  576. +        <openStatus default="close" />
  577. +    </door>
  578. +    <door id="24250004" name="Rachiq_Habitat_S.rachiq_Door01" >
  579. +        <nodes nodeZ="-7192">
  580. +            <node x="142375" y="248859" />
  581. +            <node x="142374" y="248886" />
  582. +            <node x="141967" y="248885" />
  583. +            <node x="141965" y="248857" />
  584. +        </nodes>
  585. +        <location x="142171" y="248872" z="-7189" />
  586. +        <stats basePDef="644" baseMDef="518" baseHpMax="169710" />
  587. +        <status showHp="false" />
  588. +        <openStatus default="close" />
  589. +    </door>
  590. +    <door id="24250006" name="Rachiq_Habitat_S.rachiq_Door01" >
  591. +        <nodes nodeZ="-7192">
  592. +            <node x="151015" y="240587" />
  593. +            <node x="151014" y="240614" />
  594. +            <node x="150607" y="240613" />
  595. +            <node x="150605" y="240585" />
  596. +        </nodes>
  597. +        <location x="150811" y="240600" z="-7189" />
  598. +        <stats basePDef="644" baseMDef="518" baseHpMax="169710" />
  599. +        <status showHp="false" />
  600. +        <openStatus default="close" />
  601. +    </door>
  602.  </list>
  603. \ No newline at end of file
  604.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement