Initial Grand Crusade changes.

This commit is contained in:
MobiusDev 2017-11-10 00:34:51 +00:00
parent b14755d840
commit 407edebc0e
111 changed files with 4960 additions and 1990 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>L2J_Mobius_3.0_Helios</name>
<name>L2J_Mobius_4.0_GrandCrusade</name>
<comment></comment>
<projects>
</projects>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<project name="L2J_Mobius_3.0_Helios" default="cleanup" basedir=".">
<project name="L2J_Mobius_4.0_GrandCrusade" default="cleanup" basedir=".">
<description>
This file is part of the L2J Mobius project.
@ -136,15 +136,15 @@
</target>
<target name="adding-core" depends="jar" description="Adding the compiled jars to the Zip file.">
<zip destfile="${build}/L2J_Mobius_3.0_Helios.zip" basedir="${build.dist}" level="9" />
<zip destfile="${build}/L2J_Mobius_4.0_GrandCrusade.zip" basedir="${build.dist}" level="9" />
</target>
<target name="adding-datapack" depends="adding-core" description="Updating the Zip file with datapack content.">
<zip destfile="${build}/L2J_Mobius_3.0_Helios.zip" basedir="${datapack}" update="true" level="9" />
<zip destfile="${build}/L2J_Mobius_4.0_GrandCrusade.zip" basedir="${datapack}" update="true" level="9" />
</target>
<target name="adding-readme" depends="adding-datapack" description="Adding readme.txt to the Zip file.">
<zip destfile="${build}/L2J_Mobius_3.0_Helios.zip" basedir="." includes="readme.txt" update="true" level="9" />
<zip destfile="${build}/L2J_Mobius_4.0_GrandCrusade.zip" basedir="." includes="readme.txt" update="true" level="9" />
</target>
<target name="cleanup" depends="adding-readme" description="Cleaning the build folder.">

View File

@ -305,8 +305,8 @@ MaxSp = 50000000000
# Maximum Player Level
# WARNING: Cannot exceed the maximum experince.xml level.
# Example: Set as 85 to force the maximum player level at 85.
# Default: 105
MaximumPlayerLevel = 105
# Default: 110
MaximumPlayerLevel = 110
# Maximum number of allowed subclasses for every player.
# Do not use more than 3!

View File

@ -88,8 +88,8 @@ MaximumOnlineUsers = 2000
# Numbers of protocol revisions that server allows to connect.
# Delimiter is ;
# WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u>
# Helios: 64
AllowedProtocolRevisions = 64
# Grand Crusade: 110
AllowedProtocolRevisions = 110
# Displays server type next to the server name on character selection.
# Notes:

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/DailyMission.xsd">
<reward id="26" reward_id="10" name="Reach Level (Lv. 4)">
<reward id="26" reward_id="10" name="Reach Level (Lv. 4)" requiredCompletion="4">
<handler name="level">
<param name="level">4</param>
</handler>
@ -8,7 +8,7 @@
<item id="10650" count="5" />
</items>
</reward>
<reward id="28" reward_id="16" name="Reach Level (Lv. 6)">
<reward id="28" reward_id="16" name="Reach Level (Lv. 6)" requiredCompletion="6">
<classId>0</classId>
<classId>1</classId>
<classId>2</classId>
@ -40,7 +40,7 @@
<item id="32226" count="10" />
</items>
</reward>
<reward id="28" reward_id="17" name="Reach Level (Lv. 6 Ertheia">
<reward id="28" reward_id="17" name="Reach Level (Lv. 6 Ertheia)" requiredCompletion="6">
<classId>182</classId>
<classId>183</classId>
<classId>184</classId>
@ -56,7 +56,7 @@
<item id="40195" count="10" />
</items>
</reward>
<reward id="31" reward_id="25" name="Reach Level (Lv. 9)">
<reward id="31" reward_id="25" name="Reach Level (Lv. 9)" requiredCompletion="9">
<handler name="level">
<param name="level">9</param>
</handler>
@ -64,7 +64,7 @@
<item id="22193" count="1" />
</items>
</reward>
<reward id="34" reward_id="34" name="Reach Level (Lv. 12)">
<reward id="34" reward_id="34" name="Reach Level (Lv. 12)" requiredCompletion="12">
<handler name="level">
<param name="level">12</param>
</handler>
@ -72,7 +72,7 @@
<item id="20922" count="1" />
</items>
</reward>
<reward id="37" reward_id="43" name="Reach Level (Lv. 15)">
<reward id="37" reward_id="43" name="Reach Level (Lv. 15)" requiredCompletion="15">
<handler name="level">
<param name="level">15</param>
</handler>
@ -80,7 +80,7 @@
<item id="27511" count="1" />
</items>
</reward>
<reward id="57" reward_id="103" name="Reach Level (Lv. 35)">
<reward id="57" reward_id="103" name="Reach Level (Lv. 35)" requiredCompletion="35">
<handler name="level">
<param name="level">35</param>
</handler>
@ -88,7 +88,7 @@
<item id="33510" count="1" />
</items>
</reward>
<reward id="63" reward_id="121" name="Reach Level (Lv. 41)">
<reward id="63" reward_id="121" name="Reach Level (Lv. 41)" requiredCompletion="41">
<handler name="level">
<param name="level">41</param>
</handler>
@ -98,7 +98,7 @@
<item id="28399" count="1" />
</items>
</reward>
<reward id="64" reward_id="124" name="Reach Level (Lv. 42)">
<reward id="64" reward_id="124" name="Reach Level (Lv. 42)" requiredCompletion="42">
<handler name="level">
<param name="level">42</param>
</handler>
@ -106,7 +106,7 @@
<item id="38606" count="1" />
</items>
</reward>
<reward id="65" reward_id="127" name="Reach Level (Lv. 43)">
<reward id="65" reward_id="127" name="Reach Level (Lv. 43)" requiredCompletion="43">
<handler name="level">
<param name="level">43</param>
</handler>
@ -114,7 +114,7 @@
<item id="38602" count="1" />
</items>
</reward>
<reward id="66" reward_id="130" name="Reach Level (Lv. 44 Heavy Armor)">
<reward id="66" reward_id="130" name="Reach Level (Lv. 44 Heavy Armor)" requiredCompletion="44">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -159,7 +159,7 @@
<item id="38603" count="1" />
</items>
</reward>
<reward id="66" reward_id="131" name="Reach Level (Lv. 44 Light Armor)">
<reward id="66" reward_id="131" name="Reach Level (Lv. 44 Light Armor)" requiredCompletion="44">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -207,7 +207,7 @@
<item id="38612" count="1" />
</items>
</reward>
<reward id="66" reward_id="132" name="Reach Level (Lv. 44 Robe)">
<reward id="66" reward_id="132" name="Reach Level (Lv. 44 Robe)" requiredCompletion="44">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -254,7 +254,7 @@
<item id="38608" count="1" />
</items>
</reward>
<reward id="67" reward_id="133" name="Reach Level (Lv. 45 Heavy Armor)">
<reward id="67" reward_id="133" name="Reach Level (Lv. 45 Heavy Armor)" requiredCompletion="45">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -299,7 +299,7 @@
<item id="38605" count="1" />
</items>
</reward>
<reward id="67" reward_id="134" name="Reach Level (Lv. 45 Light Armor)">
<reward id="67" reward_id="134" name="Reach Level (Lv. 45 Light Armor)" requiredCompletion="45">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -346,7 +346,7 @@
<item id="38614" count="1" />
</items>
</reward>
<reward id="67" reward_id="135" name="Reach Level (Lv. 45 Robe)">
<reward id="67" reward_id="135" name="Reach Level (Lv. 45 Robe)" requiredCompletion="45">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -392,7 +392,7 @@
<item id="38609" count="1" />
</items>
</reward>
<reward id="68" reward_id="136" name="Reach Level (Lv. 46 Heavy Armor)">
<reward id="68" reward_id="136" name="Reach Level (Lv. 46 Heavy Armor)" requiredCompletion="46">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -438,7 +438,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="68" reward_id="137" name="Reach Level (Lv. 46 Light Armor)">
<reward id="68" reward_id="137" name="Reach Level (Lv. 46 Light Armor)" requiredCompletion="46">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -486,7 +486,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="68" reward_id="138" name="Reach Level (Lv. 46 Robe)">
<reward id="68" reward_id="138" name="Reach Level (Lv. 46 Robe)" requiredCompletion="46">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -533,7 +533,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="69" reward_id="139" name="Reach Level (Lv. 47)">
<reward id="69" reward_id="139" name="Reach Level (Lv. 47)" requiredCompletion="47">
<handler name="level">
<param name="level">47</param>
</handler>
@ -542,7 +542,7 @@
<item id="27513" count="1" />
</items>
</reward>
<reward id="70" reward_id="142" name="Reach Level (Lv. 48)">
<reward id="70" reward_id="142" name="Reach Level (Lv. 48)" requiredCompletion="48">
<handler name="level">
<param name="level">48</param>
</handler>
@ -550,7 +550,7 @@
<item id="38676" count="1" />
</items>
</reward>
<reward id="71" reward_id="145" name="Reach Level (Lv. 49)">
<reward id="71" reward_id="145" name="Reach Level (Lv. 49)" requiredCompletion="49">
<handler name="level">
<param name="level">49</param>
</handler>
@ -558,7 +558,7 @@
<item id="38675" count="1" />
</items>
</reward>
<reward id="72" reward_id="148" name="Reach Level (Lv. 50)">
<reward id="72" reward_id="148" name="Reach Level (Lv. 50)" requiredCompletion="50">
<handler name="level">
<param name="level">50</param>
</handler>
@ -567,7 +567,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="73" reward_id="151" name="Reach Level (Lv. 51)">
<reward id="73" reward_id="151" name="Reach Level (Lv. 51)" requiredCompletion="51">
<handler name="level">
<param name="level">51</param>
</handler>
@ -576,7 +576,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="75" reward_id="157" name="Reach Level (Lv. 53)">
<reward id="75" reward_id="157" name="Reach Level (Lv. 53)" requiredCompletion="53">
<handler name="level">
<param name="level">53</param>
</handler>
@ -584,7 +584,7 @@
<item id="27566" count="1" />
</items>
</reward>
<reward id="76" reward_id="160" name="Reach Level (Lv. 54)">
<reward id="76" reward_id="160" name="Reach Level (Lv. 54)" requiredCompletion="54">
<handler name="level">
<param name="level">54</param>
</handler>
@ -593,7 +593,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="77" reward_id="163" name="Reach Level (Lv. 55 Heavy Armor)">
<reward id="77" reward_id="163" name="Reach Level (Lv. 55 Heavy Armor)" requiredCompletion="55">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -639,7 +639,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="77" reward_id="164" name="Reach Level (Lv. 55 Light Armor)">
<reward id="77" reward_id="164" name="Reach Level (Lv. 55 Light Armor)" requiredCompletion="55">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -687,7 +687,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="77" reward_id="165" name="Reach Level (Lv. 55 Robe)">
<reward id="77" reward_id="165" name="Reach Level (Lv. 55 Robe)" requiredCompletion="55">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -734,7 +734,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="78" reward_id="166" name="Reach Level (Lv. 56 Heavy Armor)">
<reward id="78" reward_id="166" name="Reach Level (Lv. 56 Heavy Armor)" requiredCompletion="56">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -780,7 +780,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="78" reward_id="167" name="Reach Level (Lv. 56 Light Armor)">
<reward id="78" reward_id="167" name="Reach Level (Lv. 56 Light Armor)" requiredCompletion="56">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -828,7 +828,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="78" reward_id="168" name="Reach Level (Lv. 56 Robe)">
<reward id="78" reward_id="168" name="Reach Level (Lv. 56 Robe)" requiredCompletion="56">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -875,7 +875,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="79" reward_id="169" name="Reach Level (Lv. 57 Heavy Armor)">
<reward id="79" reward_id="169" name="Reach Level (Lv. 57 Heavy Armor)" requiredCompletion="57">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -921,7 +921,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="79" reward_id="170" name="Reach Level (Lv. 57 Light Armor)">
<reward id="79" reward_id="170" name="Reach Level (Lv. 57 Light Armor)" requiredCompletion="57">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -969,7 +969,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="79" reward_id="171" name="Reach Level (Lv. 57 Robe)">
<reward id="79" reward_id="171" name="Reach Level (Lv. 57 Robe)" requiredCompletion="57">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -1016,7 +1016,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="80" reward_id="172" name="Reach Level (Lv. 58 Heavy Armor)">
<reward id="80" reward_id="172" name="Reach Level (Lv. 58 Heavy Armor)" requiredCompletion="58">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -1061,7 +1061,7 @@
<item id="38617" count="1" />
</items>
</reward>
<reward id="80" reward_id="173" name="Reach Level (Lv. 58 Light Armor)">
<reward id="80" reward_id="173" name="Reach Level (Lv. 58 Light Armor)" requiredCompletion="58">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -1108,7 +1108,7 @@
<item id="38627" count="1" />
</items>
</reward>
<reward id="80" reward_id="174" name="Reach Level (Lv. 58 Robe)">
<reward id="80" reward_id="174" name="Reach Level (Lv. 58 Robe)" requiredCompletion="58">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -1154,7 +1154,7 @@
<item id="38623" count="1" />
</items>
</reward>
<reward id="81" reward_id="175" name="Reach Level (Lv. 59)">
<reward id="81" reward_id="175" name="Reach Level (Lv. 59)" requiredCompletion="59">
<handler name="level">
<param name="level">59</param>
</handler>
@ -1162,7 +1162,7 @@
<item id="38677" count="1" />
</items>
</reward>
<reward id="82" reward_id="178" name="Reach Level (Lv. 60)">
<reward id="82" reward_id="178" name="Reach Level (Lv. 60)" requiredCompletion="60">
<handler name="level">
<param name="level">60</param>
</handler>
@ -1171,7 +1171,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="83" reward_id="181" name="Reach Level (Lv. 61)">
<reward id="83" reward_id="181" name="Reach Level (Lv. 61)" requiredCompletion="61">
<handler name="level">
<param name="level">61</param>
</handler>
@ -1181,7 +1181,7 @@
<item id="38679" count="1" />
</items>
</reward>
<reward id="84" reward_id="184" name="Reach Level (Lv. 62)">
<reward id="84" reward_id="184" name="Reach Level (Lv. 62)" requiredCompletion="62">
<handler name="level">
<param name="level">62</param>
</handler>
@ -1189,7 +1189,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="85" reward_id="187" name="Reach Level (Lv. 63)">
<reward id="85" reward_id="187" name="Reach Level (Lv. 63)" requiredCompletion="63">
<handler name="level">
<param name="level">63</param>
</handler>
@ -1198,7 +1198,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="86" reward_id="190" name="Reach Level (Lv. 64)">
<reward id="86" reward_id="190" name="Reach Level (Lv. 64)" requiredCompletion="64">
<handler name="level">
<param name="level">64</param>
</handler>
@ -1207,7 +1207,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="87" reward_id="193" name="Reach Level (Lv. 65 Heavy Armor)">
<reward id="87" reward_id="193" name="Reach Level (Lv. 65 Heavy Armor)" requiredCompletion="65">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -1252,7 +1252,7 @@
<item id="38629" count="1" />
</items>
</reward>
<reward id="87" reward_id="194" name="Reach Level (Lv. 65 Light Armor)">
<reward id="87" reward_id="194" name="Reach Level (Lv. 65 Light Armor)" requiredCompletion="65">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -1299,7 +1299,7 @@
<item id="38634" count="1" />
</items>
</reward>
<reward id="87" reward_id="195" name="Reach Level (Lv. 65 Robe)">
<reward id="87" reward_id="195" name="Reach Level (Lv. 65 Robe)" requiredCompletion="65">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -1345,7 +1345,7 @@
<item id="38634" count="1" />
</items>
</reward>
<reward id="88" reward_id="196" name="Reach Level (Lv. 66 Heavy Armor)">
<reward id="88" reward_id="196" name="Reach Level (Lv. 66 Heavy Armor)" requiredCompletion="66">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -1391,7 +1391,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="88" reward_id="197" name="Reach Level (Lv. 66 Light Armor)">
<reward id="88" reward_id="197" name="Reach Level (Lv. 66 Light Armor)" requiredCompletion="66">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -1440,7 +1440,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="88" reward_id="198" name="Reach Level (Lv. 66 Robe)">
<reward id="88" reward_id="198" name="Reach Level (Lv. 66 Robe)" requiredCompletion="66">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -1487,7 +1487,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="89" reward_id="199" name="Reach Level (Lv. 67 Heavy Armor)">
<reward id="89" reward_id="199" name="Reach Level (Lv. 67 Heavy Armor)" requiredCompletion="67">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -1533,7 +1533,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="89" reward_id="200" name="Reach Level (Lv. 67 Light Armor)">
<reward id="89" reward_id="200" name="Reach Level (Lv. 67 Light Armor)" requiredCompletion="67">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -1581,7 +1581,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="89" reward_id="201" name="Reach Level (Lv. 67 Robe)">
<reward id="89" reward_id="201" name="Reach Level (Lv. 67 Robe)" requiredCompletion="67">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -1628,7 +1628,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="90" reward_id="202" name="Reach Level (Lv. 68 Heavy Armor)">
<reward id="90" reward_id="202" name="Reach Level (Lv. 68 Heavy Armor)" requiredCompletion="68">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -1674,7 +1674,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="90" reward_id="203" name="Reach Level (Lv. 68 Light Armor)">
<reward id="90" reward_id="203" name="Reach Level (Lv. 68 Light Armor)" requiredCompletion="68">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -1722,7 +1722,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="90" reward_id="204" name="Reach Level (Lv. 68 Robe)">
<reward id="90" reward_id="204" name="Reach Level (Lv. 68 Robe)" requiredCompletion="68">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -1769,7 +1769,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="91" reward_id="205" name="Reach Level (Lv. 69)">
<reward id="91" reward_id="205" name="Reach Level (Lv. 69)" requiredCompletion="69">
<handler name="level">
<param name="level">69</param>
</handler>
@ -1778,7 +1778,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="92" reward_id="208" name="Reach Level (Lv. 70)">
<reward id="92" reward_id="208" name="Reach Level (Lv. 70)" requiredCompletion="70">
<handler name="level">
<param name="level">70</param>
</handler>
@ -1787,7 +1787,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="93" reward_id="211" name="Reach Level (Lv. 71)">
<reward id="93" reward_id="211" name="Reach Level (Lv. 71)" requiredCompletion="71">
<handler name="level">
<param name="level">71</param>
</handler>
@ -1796,7 +1796,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="94" reward_id="214" name="Reach Level (Lv. 72)">
<reward id="94" reward_id="214" name="Reach Level (Lv. 72)" requiredCompletion="72">
<handler name="level">
<param name="level">72</param>
</handler>
@ -1805,7 +1805,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="95" reward_id="217" name="Reach Level (Lv. 73)">
<reward id="95" reward_id="217" name="Reach Level (Lv. 73)" requiredCompletion="73">
<handler name="level">
<param name="level">73</param>
</handler>
@ -1814,7 +1814,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="96" reward_id="220" name="Reach Level (Lv. 74)">
<reward id="96" reward_id="220" name="Reach Level (Lv. 74)" requiredCompletion="74">
<handler name="level">
<param name="level">74</param>
</handler>
@ -1826,7 +1826,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="97" reward_id="223" name="Reach Level (Lv. 75)">
<reward id="97" reward_id="223" name="Reach Level (Lv. 75)" requiredCompletion="75">
<handler name="level">
<param name="level">75</param>
</handler>
@ -1834,7 +1834,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="98" reward_id="226" name="Reach Level (Lv. 76)">
<reward id="98" reward_id="226" name="Reach Level (Lv. 76)" requiredCompletion="76">
<handler name="level">
<param name="level">76</param>
</handler>
@ -1842,7 +1842,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="99" reward_id="229" name="Reach Level (Lv. 77)">
<reward id="99" reward_id="229" name="Reach Level (Lv. 77)" requiredCompletion="77">
<handler name="level">
<param name="level">77</param>
</handler>
@ -1851,7 +1851,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="100" reward_id="232" name="Reach Level (Lv. 78 Heavy Armor)">
<reward id="100" reward_id="232" name="Reach Level (Lv. 78 Heavy Armor)" requiredCompletion="78">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -1897,7 +1897,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="100" reward_id="233" name="Reach Level (Lv. 78 Light Armor)">
<reward id="100" reward_id="233" name="Reach Level (Lv. 78 Light Armor)" requiredCompletion="78">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -1944,7 +1944,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="100" reward_id="234" name="Reach Level (Lv. 78 Robe)">
<reward id="100" reward_id="234" name="Reach Level (Lv. 78 Robe)" requiredCompletion="78">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -1991,7 +1991,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="101" reward_id="235" name="Reach Level (Lv. 79 Heavy Armor)">
<reward id="101" reward_id="235" name="Reach Level (Lv. 79 Heavy Armor)" requiredCompletion="79">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -2039,7 +2039,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="101" reward_id="236" name="Reach Level (Lv. 79 Light Armor)">
<reward id="101" reward_id="236" name="Reach Level (Lv. 79 Light Armor)" requiredCompletion="79">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -2088,7 +2088,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="101" reward_id="237" name="Reach Level (Lv. 79 Robe)">
<reward id="101" reward_id="237" name="Reach Level (Lv. 79 Robe)" requiredCompletion="79">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -2136,7 +2136,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="102" reward_id="238" name="Reach Level (Lv. 80 Heavy Armor)">
<reward id="102" reward_id="238" name="Reach Level (Lv. 80 Heavy Armor)" requiredCompletion="80">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -2183,7 +2183,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="102" reward_id="239" name="Reach Level (Lv. 80 Light Armor)">
<reward id="102" reward_id="239" name="Reach Level (Lv. 80 Light Armor)" requiredCompletion="80">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -2232,7 +2232,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="102" reward_id="240" name="Reach Level (Lv. 80 Robe)">
<reward id="102" reward_id="240" name="Reach Level (Lv. 80 Robe)" requiredCompletion="80">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -2280,7 +2280,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="103" reward_id="241" name="Reach Level (Lv. 81)">
<reward id="103" reward_id="241" name="Reach Level (Lv. 81)" requiredCompletion="81">
<handler name="level">
<param name="level">81</param>
</handler>
@ -2292,7 +2292,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="104" reward_id="244" name="Reach Level (Lv. 82 Heavy Armor)">
<reward id="104" reward_id="244" name="Reach Level (Lv. 82 Heavy Armor)" requiredCompletion="82">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -2338,7 +2338,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="104" reward_id="245" name="Reach Level (Lv. 82 Light Armor)">
<reward id="104" reward_id="245" name="Reach Level (Lv. 82 Light Armor)" requiredCompletion="82">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -2385,7 +2385,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="104" reward_id="246" name="Reach Level (Lv. 82 Robe)">
<reward id="104" reward_id="246" name="Reach Level (Lv. 82 Robe)" requiredCompletion="82">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -2432,7 +2432,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="105" reward_id="247" name="Reach Level (Lv. 83 Heavy Armor)">
<reward id="105" reward_id="247" name="Reach Level (Lv. 83 Heavy Armor)" requiredCompletion="83">
<classId>0</classId>
<classId>18</classId>
<classId>31</classId>
@ -2482,7 +2482,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="105" reward_id="248" name="Reach Level (Lv. 83 Light Armor)">
<reward id="105" reward_id="248" name="Reach Level (Lv. 83 Light Armor)" requiredCompletion="83">
<classId>49</classId>
<classId>123</classId>
<classId>124</classId>
@ -2534,7 +2534,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="105" reward_id="249" name="Reach Level (Lv. 83 Robe)">
<reward id="105" reward_id="249" name="Reach Level (Lv. 83 Robe)" requiredCompletion="83">
<classId>10</classId>
<classId>25</classId>
<classId>38</classId>
@ -2585,7 +2585,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="106" reward_id="250" name="Reach Level (Lv. 84)">
<reward id="106" reward_id="250" name="Reach Level (Lv. 84)" requiredCompletion="84">
<handler name="level">
<param name="level">84</param>
</handler>
@ -2596,7 +2596,7 @@
<item id="35987" count="1" />
</items>
</reward>
<reward id="107" reward_id="252" name="Reach Level (Lv. 85)">
<reward id="107" reward_id="252" name="Reach Level (Lv. 85)" requiredCompletion="85">
<handler name="level">
<param name="level">85</param>
</handler>
@ -2604,42 +2604,45 @@
<item id="46919" count="1" />
</items>
</reward>
<reward id="187" reward_id="493" name="Reach Level (Dual Lv. 84)">
<!-- Dual Class
<reward id="187" reward_id="493" name="Reach Level (Dual Lv. 84)" requiredCompletion="84">
<handler name="level">
<param name="level">84</param>
<param name="dualclass">true</param>
</handler>
<items>
<item id="35987" count="10" />
</items>
</reward>
<reward id="224" reward_id="604" name="Login All Weekend" isOneTime="false">
-->
<reward id="224" reward_id="604" name="Login Once During the Weekend" requiredCompletion="1" isOneTime="false">
<items>
<item id="27593" count="4" />
<item id="27603" count="1" />
</items>
</reward>
<reward id="225" reward_id="605" name="Login All Month" isOneTime="false">
<!-- has issues - 2/1
<reward id="225" reward_id="605" name="Login Once During the Month" requiredCompletion="1" isOneTime="false">
<items>
<item id="27593" count="15" />
<item id="27603" count="1" />
</items>
</reward>
<reward id="226" reward_id="606" name="Quest Mania" requiredCompletion="2" isOneTime="false">
-->
<reward id="226" reward_id="606" name="Complete Quests" requiredCompletion="2" isOneTime="false">
<handler name="quest" />
<items>
<item id="27593" count="1" />
<item id="27603" count="1" />
</items>
</reward>
<reward id="227" reward_id="607" name="Olympiad Warrior" requiredCompletion="2" isOneTime="false">
<reward id="227" reward_id="607" name="Participate in the Olympiad" requiredCompletion="2" isOneTime="false">
<handler name="olympiad" />
<items>
<item id="27593" count="4" />
<item id="27603" count="3" />
</items>
</reward>
<reward id="228" reward_id="608" name="Siege Ruler" isOneTime="false">
<reward id="228" reward_id="608" name="Sieges" requiredCompletion="1" isOneTime="false">
<handler name="siege" />
<items>
<item id="27593" count="50" />
@ -2660,7 +2663,7 @@
<item id="27603" count="1" />
</items>
</reward>
<reward id="231" reward_id="611" name="Fisher" requiredCompletion="3" isOneTime="false">
<reward id="231" reward_id="611" name="Catch Fish" requiredCompletion="3" isOneTime="false">
<handler name="fishing" />
<items>
<item id="27593" count="1" />

View File

@ -10,103 +10,7 @@
<!-- <instance id="NPC ID of the auctioneer" interval="1" hour_of_day="0-23" minute_of_hour="0-59"> -->
<!-- <item auctionItemId="1" itemId="10485" itemCount="1" auctionInitBid="100000" auctionLenght="300" /> -->
<!-- </instance> -->
<instance id="32320" day_of_week="5" hour_of_day="17">
<!-- Yellow Soul Crystal (R99-grade) -->
<item auctionItemId="1" itemId="18560" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Teal Soul Crystal (R99-grade) -->
<item auctionItemId="2" itemId="18561" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Purple Soul Crystal (R99-grade) -->
<item auctionItemId="3" itemId="18562" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Transformation Sealbook: Anakim -->
<item auctionItemId="4" itemId="10296" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Reinforced Baium's Ring -->
<item auctionItemId="5" itemId="22173" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Reinforced Blessed Zaken's Earring -->
<item auctionItemId="6" itemId="22174" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Transformation Sealbook: Anakim -->
<item auctionItemId="7" itemId="22175" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient STR Dye -->
<item auctionItemId="8" itemId="17003" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient DEX Dye -->
<item auctionItemId="9" itemId="17004" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient CON Dye -->
<item auctionItemId="10" itemId="17005" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient INT Dye -->
<item auctionItemId="11" itemId="17006" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient WIT Dye -->
<item auctionItemId="12" itemId="17007" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient MEN Dye -->
<item auctionItemId="13" itemId="17008" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary STR Dye -->
<item auctionItemId="14" itemId="17009" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary DEX Dye -->
<item auctionItemId="15" itemId="17010" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary CON Dye -->
<item auctionItemId="16" itemId="17011" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary INT Dye -->
<item auctionItemId="17" itemId="17012" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary WIT Dye -->
<item auctionItemId="18" itemId="17013" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary MEN Dye -->
<item auctionItemId="19" itemId="17014" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Bottle of Antharas' Soul -->
<item auctionItemId="20" itemId="19465" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Bottle of Valakas' Soul -->
<item auctionItemId="21" itemId="19466" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Kaliel's Energy -->
<item auctionItemId="22" itemId="36186" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Tauti's Fragment -->
<item auctionItemId="23" itemId="35667" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
</instance>
<instance id="32321" day_of_week="1" hour_of_day="17">
<!-- Yellow Soul Crystal (R99-grade) -->
<item auctionItemId="1" itemId="18560" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Teal Soul Crystal (R99-grade) -->
<item auctionItemId="2" itemId="18561" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Purple Soul Crystal (R99-grade) -->
<item auctionItemId="3" itemId="18562" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Transformation Sealbook: Anakim -->
<item auctionItemId="4" itemId="10296" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Reinforced Baium's Ring -->
<item auctionItemId="5" itemId="22173" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Reinforced Blessed Zaken's Earring -->
<item auctionItemId="6" itemId="22174" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Transformation Sealbook: Anakim -->
<item auctionItemId="7" itemId="22175" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient STR Dye -->
<item auctionItemId="8" itemId="17003" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient DEX Dye -->
<item auctionItemId="9" itemId="17004" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient CON Dye -->
<item auctionItemId="10" itemId="17005" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient INT Dye -->
<item auctionItemId="11" itemId="17006" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient WIT Dye -->
<item auctionItemId="12" itemId="17007" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Ancient MEN Dye -->
<item auctionItemId="13" itemId="17008" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary STR Dye -->
<item auctionItemId="14" itemId="17009" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary DEX Dye -->
<item auctionItemId="15" itemId="17010" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary CON Dye -->
<item auctionItemId="16" itemId="17011" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary INT Dye -->
<item auctionItemId="17" itemId="17012" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary WIT Dye -->
<item auctionItemId="18" itemId="17013" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Lv. 5 Legendary MEN Dye -->
<item auctionItemId="19" itemId="17014" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Bottle of Antharas' Soul -->
<item auctionItemId="20" itemId="19465" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Bottle of Valakas' Soul -->
<item auctionItemId="21" itemId="19466" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Kaliel's Energy -->
<item auctionItemId="22" itemId="36186" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
<!-- Tauti's Fragment -->
<item auctionItemId="23" itemId="35667" itemCount="10" auctionInitBid="100000" auctionLenght="300" />
</instance>
<instance id="32322" day_of_week="3" hour_of_day="17">
<instance id="34328" day_of_week="6" hour_of_day="17">
<!-- Yellow Soul Crystal (R99-grade) -->
<item auctionItemId="1" itemId="18560" itemCount="1" auctionInitBid="100000" auctionLenght="300" />
<!-- Teal Soul Crystal (R99-grade) -->

View File

@ -0,0 +1,710 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd/MonsterBook.xsd">
<!-- Direction.pic_common.23812 -->
<card id="1" monster="23812" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23815 -->
<card id="2" monster="23815" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23384 -->
<card id="3" monster="23384" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23385 -->
<card id="4" monster="23385" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23386 -->
<card id="5" monster="23386" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23387 -->
<card id="6" monster="23387" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23388 -->
<card id="7" monster="23388" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23395 -->
<card id="8" monster="23395" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23396 -->
<card id="9" monster="23396" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23397 -->
<card id="10" monster="23397" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23398 -->
<card id="11" monster="23398" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23399 -->
<card id="12" monster="23399" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23354 -->
<card id="13" monster="23354" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23355 -->
<card id="14" monster="23355" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23356 -->
<card id="15" monster="23356" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23357 -->
<card id="16" monster="23357" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23360 -->
<card id="17" monster="23360" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23361 -->
<card id="18" monster="23361" faction="BLACKBIRD_CLAN">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1428" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2142" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="3570" />
</card>
<!-- Direction.pic_common.23578 -->
<card id="19" monster="23578" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23566 -->
<card id="20" monster="23566" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23567 -->
<card id="21" monster="23567" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23568 -->
<card id="22" monster="23568" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23569 -->
<card id="23" monster="23569" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23572 -->
<card id="24" monster="23572" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23573 -->
<card id="25" monster="23573" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23570 -->
<card id="26" monster="23570" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23571 -->
<card id="27" monster="23571" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23581 -->
<card id="28" monster="23581" faction="MOTHER_TREE_GUARDIANS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="542" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="813" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="1355" />
</card>
<!-- Direction.pic_common.23746 -->
<card id="29" monster="23746" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23748 -->
<card id="30" monster="23748" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23749 -->
<card id="32" monster="23749" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23754 -->
<card id="33" monster="23754" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23742 -->
<card id="34" monster="23742" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23743 -->
<card id="35" monster="23743" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23744 -->
<card id="36" monster="23744" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23727 -->
<card id="37" monster="23727" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23729 -->
<card id="38" monster="23729" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23750 -->
<card id="39" monster="23750" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23735 -->
<card id="40" monster="23735" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23736 -->
<card id="41" monster="23736" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23737 -->
<card id="42" monster="23737" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23738 -->
<card id="43" monster="23738" faction="GIANT_TRACKERS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="10800" exp="54268434920" sp="5426843" points="1638" />
<rewards kills="36000" exp="81402652380" sp="8140265" points="2457" />
<rewards kills="82800" exp="108536869840" sp="10853687" points="4095" />
</card>
<!-- Direction.pic_common.23543 -->
<card id="44" monster="23543" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23552 -->
<card id="45" monster="23552" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23541 -->
<card id="46" monster="23541" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23550 -->
<card id="47" monster="23550" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23542 -->
<card id="48" monster="23542" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23551 -->
<card id="49" monster="23551" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23546 -->
<card id="50" monster="23546" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23555 -->
<card id="51" monster="23555" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23544 -->
<card id="52" monster="23544" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23553 -->
<card id="53" monster="23553" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23547 -->
<card id="54" monster="23547" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23556 -->
<card id="55" monster="23556" faction="UNWORLDLY_VISITORS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="662" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="993" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="1655" />
</card>
<!-- Direction.pic_common.23505 -->
<card id="56" monster="23505" faction="KINGDOM_ROYAL_GUARDS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="338" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="507" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="845" />
</card>
<!-- Direction.pic_common.23506 -->
<card id="57" monster="23506" faction="KINGDOM_ROYAL_GUARDS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="338" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="507" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="845" />
</card>
<!-- Direction.pic_common.23507 -->
<card id="58" monster="23507" faction="KINGDOM_ROYAL_GUARDS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="338" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="507" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="845" />
</card>
<!-- Direction.pic_common.23508 -->
<card id="59" monster="23508" faction="KINGDOM_ROYAL_GUARDS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="338" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="507" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="845" />
</card>
<!-- Direction.pic_common.23509 -->
<card id="60" monster="23509" faction="KINGDOM_ROYAL_GUARDS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="338" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="507" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="845" />
</card>
<!-- Direction.pic_common.23510 -->
<card id="61" monster="23510" faction="KINGDOM_ROYAL_GUARDS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="338" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="507" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="845" />
</card>
<!-- Direction.pic_common.23511 -->
<card id="62" monster="23511" faction="KINGDOM_ROYAL_GUARDS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="338" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="507" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="845" />
</card>
<!-- Direction.pic_common.23512 -->
<card id="63" monster="23512" faction="KINGDOM_ROYAL_GUARDS">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="7200" exp="54268434920" sp="5426843" points="338" />
<rewards kills="24000" exp="81402652380" sp="8140265" points="507" />
<rewards kills="55200" exp="108536869840" sp="10853687" points="845" />
</card>
<!-- Direction.pic_raid.29250 -->
<card id="64" monster="29250" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29197 -->
<card id="65" monster="29197" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29062 -->
<card id="66" monster="29062" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.25931 -->
<card id="67" monster="25931" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.25930 -->
<card id="68" monster="25930" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.25929 -->
<card id="69" monster="25929" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.25928 -->
<card id="70" monster="25928" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26173 -->
<card id="71" monster="26173" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26172 -->
<card id="72" monster="26172" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26171 -->
<card id="73" monster="26171" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26170 -->
<card id="74" monster="26170" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26165 -->
<card id="75" monster="26165" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26164 -->
<card id="76" monster="26164" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26163 -->
<card id="77" monster="26163" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26162 -->
<card id="78" monster="26162" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26189 -->
<card id="79" monster="26189" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26188 -->
<card id="80" monster="26188" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26187 -->
<card id="81" monster="26187" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26186 -->
<card id="82" monster="26186" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26181 -->
<card id="83" monster="26181" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26180 -->
<card id="84" monster="26180" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26179 -->
<card id="85" monster="26179" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26178 -->
<card id="86" monster="26178" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26124 -->
<card id="87" monster="26124" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26143 -->
<card id="88" monster="26143" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29196 -->
<card id="89" monster="29196" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29212 -->
<card id="90" monster="29212" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29234 -->
<card id="91" monster="29234" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29218 -->
<card id="92" monster="29218" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29251 -->
<card id="93" monster="29251" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26102 -->
<card id="94" monster="26102" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26136 -->
<card id="95" monster="26136" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.26236 -->
<card id="96" monster="26236" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="5" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="17" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="38" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29305 -->
<card id="97" monster="29305" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="2" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="4" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="7" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29240 -->
<card id="98" monster="29240" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="2" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="4" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="7" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29068 -->
<card id="99" monster="29068" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="2" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="4" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="7" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.29028 -->
<card id="100" monster="29028" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="2" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="4" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="7" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.25876 -->
<card id="101" monster="25876" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
<!-- Direction.pic_raid.25877 -->
<card id="102" monster="25877" faction="HUNTERS_GUILD">
<rewards kills="1" exp="1356710873" sp="135671" points="100" />
<rewards kills="15" exp="54268434920" sp="5426843" points="1280" />
<rewards kills="50" exp="81402652380" sp="8140265" points="1920" />
<rewards kills="115" exp="108536869840" sp="10853687" points="3200" />
</card>
</list>

View File

@ -25,5 +25,9 @@
<br>Dungeons</font><br1>
<button action="bypass -h admin_move_to -175520 154505 2712" value="Seed of Annihilation" width=150 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
<button action="bypass -h admin_move_to -147348 152527 -14056" value="Seed of Hellfire" width=150 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
<br>Messiah Fortress</font><br1>
<button action="bypass -h admin_move_to -248520 133016 1048" value="Entrace" width=150 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
<button action="bypass -h admin_move_to -245752 150392 11840" value="Boss Area" width=150 height=21 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"><br1>
</center>
<br>
</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Item Broker:<br>
Welcome! We are selling precious items never before seen. We only have a limited number, so only the highest bidders will benefit!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">View Sales Rule</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction show">Buy Item</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction cancel">Receive Bid Amount</Button>
</body></html>

View File

@ -1,9 +0,0 @@
<html><body>Item Broker: <br>
We will sell the items, many of them precious or hard-to-find, only at the time of the auction, which will be announced in advance.<br>
Once items are registered, they will auctioned off to the highest bidder.<br>
All non-winning bidders will be refunded the exact amount of their initial bid. The highest bidder will receive the item (at the cost specified).<br>
If you are outbid, you can return to the Item Broker and receive your refunded bid price.<br>
After the auction ends, the highest bidder can obtain his or her new items at the warehouse.<br>
If you are outbid, you must pick-up your refund within one week or the amount will be forfeited to the Item Broker. A long-term deposit is impossible due to the large number of customers.<br>
Remember: items are non-returnable, so make your selections carefully!<br>
</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Item Broker:<br>
Welcome! We are selling precious items never before seen. We only have a limited number, so only the highest bidders will benefit!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">View Sales Rule</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction show">Buy Item</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction cancel">Receive Bid Amount</Button>
</body></html>

View File

@ -1,9 +0,0 @@
<html><body>Item Broker: <br>
We will sell the items, many of them precious or hard-to-find, only at the time of the auction, which will be announced in advance.<br>
Once items are registered, they will auctioned off to the highest bidder.<br>
All non-winning bidders will be refunded the exact amount of their initial bid. The highest bidder will receive the item (at the cost specified).<br>
If you are outbid, you can return to the Item Broker and receive your refunded bid price.<br>
After the auction ends, the highest bidder can obtain his or her new items at the warehouse.<br>
If you are outbid, you must pick-up your refund within one week or the amount will be forfeited to the Item Broker. A long-term deposit is impossible due to the large number of customers.<br>
Remember: items are non-returnable, so make your selections carefully!<br>
</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Item Broker:<br>
Welcome! We are selling precious items never before seen. We only have a limited number, so only the highest bidders will benefit!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">View Sales Rule</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction show">Buy Item</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction cancel">Receive Bid Amount</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>Auction Broker Laia:<br>
Welcome! I'm Laia, the best Auction Broker in the Aden Continent.<br>
Are you interested in this item? Then, make a bid. I'll sell it to the highest bidder.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">See the sales rules</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction show">Buy Item</Button>
<!--<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction next">Info about the next auction</Button>-->
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_ItemAuction cancel">Receive the rejected bid</Button>
</body></html>

View File

@ -26,7 +26,6 @@ import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.SkillHolder;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
import com.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
@ -94,7 +93,7 @@ public final class Cannon extends AbstractNpcAI
{
takeItems(player, CANNONBALL, 1);
npc.setScriptValue(0);
npc.setTitleString(NpcStringId.CANNON_IS_LOADING);
npc.setTitle("Cannon is loading");
npc.broadcastInfo();
addSkillCastDesire(npc, npc, PRESENT_SKILL, 23);
startQuestTimer("CANNON_RECHARGE", 300000, npc, null);
@ -104,7 +103,7 @@ public final class Cannon extends AbstractNpcAI
case "CANNON_RECHARGE":
{
npc.setScriptValue(1);
npc.setTitleString(NpcStringId.EMPTY_CANNON);
npc.setTitle("Empty Cannon");
npc.broadcastInfo();
break;
}

View File

@ -0,0 +1,75 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.others;
import java.util.ArrayList;
import java.util.List;
import com.l2jmobius.gameserver.data.xml.impl.MonsterBookData;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.MonsterBookCardHolder;
import ai.AbstractNpcAI;
/**
* @author Mobius
*/
public class MonsterBook extends AbstractNpcAI
{
private static final int MAXIMUM_REWARD_RANGE = 2500;
private MonsterBook()
{
for (MonsterBookCardHolder card : MonsterBookData.getInstance().getMonsterBookCards())
{
addKillId(card.getMonsterId());
}
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final L2Party party = killer.getParty();
List<L2PcInstance> rewardedPlayers = new ArrayList<>();
if (party != null)
{
rewardedPlayers = party.isInCommandChannel() ? party.getCommandChannel().getMembers() : party.getMembers();
}
else
{
rewardedPlayers.add(killer);
}
final MonsterBookCardHolder card = MonsterBookData.getInstance().getMonsterBookCardByMonsterId(npc.getId());
for (L2PcInstance player : rewardedPlayers)
{
if ((player != null) && (player.calculateDistance(killer, false, false) < MAXIMUM_REWARD_RANGE))
{
player.updateMonsterBook(card);
}
}
return super.onKill(npc, killer, isSummon);
}
public static void main(String[] args)
{
new MonsterBook();
}
}

View File

@ -1,6 +1,59 @@
482 Recertification of Value
504 Competition for the Bandit Stronghold
655 A Grand Plan for Taming Wild Beasts
665 Basic Training for Hunter Guild Member
666 Knowledgeable Hunter Guild Member
667 How to Cover Shilen's Eyes
668 Fight with Giants
669 Intense Fight against Dragon
670 Defeating the Lord of Seed
671 Path to Finding the Past
672 Embryo the Archenemy
673 Beleth' Ambition
690 |Attack| Begin Alliance Base Defense - 1
691 |Attack| Begin Alliance Base Defense - 2
692 |Attack| Begin Alliance Base Defense - 3
693 |Defense| Protecting Military Power - 1
694 |Defense| Protecting Military Power - 2
695 |Defense| Protecting Military Power - 3
696 |Support| Defense Battery Crafting Support - 1
697 |Support| Defense Battery Crafting Support - 2
698 |Support| Defense Battery Crafting Support - 3
699 |Attack| Sabotage Embryo Solider - 1
700 |Attack| Sabotage Embryo Solider - 2
701 |Attack| Sabotage Embryo Solider - 3
702 |Defense| Gracian Soldier Support - 1
703 |Defense| Gracian Soldier Support - 2
704 |Defense| Gracian Soldier Support - 3
705 |Support| Defense Battery Cannonball Crafting - 1
706 |Support| Defense Battery Cannonball Crafting - 2
707 |Support| Defense Battery Cannonball Crafting - 3
708 |Attack| Neutralize Embryo - 1
709 |Attack| Neutralize Embryo - 2
710 |Attack| Neutralize Embryo - 3
711 |Defense| All-out Battle - 1
712 |Defense| All-out Battle - 2
713 |Defense| Join the battle - 3
714 |Support| Installing Defense Battery - 1
715 |Support| Installing Defense Battery - 2
716 |Support| Installing Defense Battery - 3
717 |Attack| Eliminate Embryo Captain - 1
718 |Attack| Eliminate Embryo Captain - 2
719 |Attack| Eliminate Embryo Captain - 3
720 |Defense| Eliminate Embryo Captain - 1
721 |Defense| Eliminate Embryo Captain - 2
722 |Defense| Eliminate Embryo Captain - 3
723 |Support| Eliminate Enemy with Defense Battery - 1
724 |Support| Defeat enemies with the defense artillery - 2
725 |Support| Eliminate Enemy with Defense Battery - 3
729 |Attack| Impede Kain
730 |Defense| Impede Kain
731 |Support| Impede Kain
732 Red Libra's Request - Kartia's Labyrinth
733 Red Libra's Request - Crystal Prison (Baylor)
734 Red Libra Request - Nightmare Kamaloka
735 Red Libra Request - Embryo Command Post
736 Red Libra Request - Altar of Shilen
744 The Alligator Hunter returns
745 The Outlaws are Incoming
746 The Reason One Cannot Wait
@ -15,7 +68,9 @@
780 Utilize the Darkness - Seed of Infinity
781 Utilize the Darkness - Seed of Annihilation
782 Utilize the Darkness - Seed of Hellfire
788 Red Libra Request - Altar of Evil
789 Waiting for Pa'agrio
791 Red Libra Request - Fairy Settlement
792 The Superion Giants
800 Hunter Guild Request - Altar of Evil
801 Hunter Guild Request - Gludio Territory
@ -53,11 +108,17 @@
844 Giant's Treasure
845 Sabotage the Embryo Supplies
846 Building up Strength
910 Red Libra Request - Lv. 1
911 Red Libra Request - Lv. 2
912 Red Libra Request - Lv. 3
913 Red Libra Request - Lv. 4
914 Red Libra Request - Lv. 5
861 Kain's Choice
910 Red Libra Request - Isle of Souls
911 Red Libra's Request - Seal of Shilen
912 Red Libra Request - Monsters from Three Areas
913 Red Libra Request - Raider's Crossroads
914 Red Libra Request - Hellbound
915 Red Libra Request - Enchanted Valley
916 Red Libra Request - Giant's Cave
917 Red Libra Request - Garden of Spirits
918 Red Libra Request - Atelia Fortress
919 Red Libra Request - Superion
922 Hunter Guild Request - Northern Region, Isle of Prayer
923 Shinedust Extraction
924 Giant of the Restoration Room
@ -70,11 +131,19 @@
932 Sayha's Energy
938 The Fisherman's Other Hobby
940 Hunter Guild Request - Atelia Fortress
985 Adventure Guild's Special Request - Lv1
986 Adventure Guild's Special Request - Lv. 2
987 Adventure Guild's Special Request - Lv. 3
988 Adventure Guild's Special Request - Lv. 4
989 Adventure Guild's Special Request - Lv. 5
10298 Wasteland Queen
10357 Altar of Blood that Awakens Destruction
10355 Blacksmith's Soul-awakening Weapon - 1
10356 Blacksmith's Soul-awakening Weapon - 2
10373 Exploring the Dimension - Sealing the Dimension
10396 Witch of Spores
10418 The Immortal Pirate King
10423 Embryo Stronghold Ambush
10454 Final Embryo Apostle
10456 Operation: Rescue
10457 Kefensis' Illusion
10506 Diana's Request
@ -89,6 +158,7 @@
10530 Kekropus' Letter, The Dragon's Transition Achieve Level 81
10531 Odd Happenings at Dragon Valley Strange Things Afoot in the Valley
10532 Uncovering the Conspiracy Eliminate the Undead and Dragons
10535 Blacksmith's Soul-awakening Weapon - 3
10537 Kamael Disarray To Retbach
10538 Giant's Evolution Cause of failed evolution
10539 Energy Supply Cutoff Plan Defeat Halisha's Henchman
@ -121,4 +191,14 @@
10856 Superion Appears
10857 Secret Teleport
10858 Queen Ramona, Controller of the Vessel
10859 Own the Earth and the Heavens
10859 Own the Earth and the Heavens
10873 Exalted, Reaching Another Level
10874 Against the New Enemy
10875 For Reputation
10876 Leader's Grace
10877 Break Through Crisis
10879 Exalted, Guide to Power
10880 The Last One Standing
10881 For the Pride
10882 Victory Collection
10883 Immortal Honor

View File

@ -1,5 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
You have a <font color="LEVEL">Portal Stone</font>... it means that you are one of the few who can challenge Antharas.<br>
So, do you feel that you are up to the challenge of defeating the land dragon?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00904_DragonTrophyAntharas 30755-05.htm">Say that you can defeat it.</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
Do you look down on the earth dragon? Its claws have shattered countless lives.<br>
(Only characters at level 85 or above can undertake this quest.)
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
Ah, you have returned, and with a victor's skip in your step!<br>
You have defeated the dragon! Your power shall be praised throughout the lands!<br>
(This quest can be done only a day. This quest gets initialized everyday at 6:30 am.)
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
The fact that you don't have the <font color="LEVEL">Portal Stone</font> means you didn't satisfy the minimum requirement for this mission.<br>
If you really want to defeat Antharas, first you need to get recognized by <font color="LEVEL">Gabrielle</font> in Giran village.
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
You may think that you are invincible and that your courage is unmatched, but does anyone know of your fame?<br>
Do you wish to become famous?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00904_DragonTrophyAntharas 30755-06.htm">Ask how to become famous.</Button>
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
It's simple really. Use your strength and destroy the first offspring of the Goddess of Destruction... Antharas. Who is the Goddess of Destruction? This discussion will have to wait for another time.<br>
Do you think you can handle the challenge to defeat Antharas?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00904_DragonTrophyAntharas 30755-07.html">"I shall defeat Antharas."</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
I wish you the best of luck. Unfortunately I cannot go with you on this journey. However, I am sure there are others just like you who wish to take on Antharas.<br>
You may wish to continue once you have acquired <font color="LEVEL">a large group of highly skilled adventurers</font> to go with you on your journey.
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
I know for a fact that you have not destroyed Antharas.<br>
When you do, I know for I shall have heard it echo throughout the winds.<br>
Until that time, I stand... I wait... and I watch.
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Watcher of Antharas Theodric:<br>
Word has already spread throughout the land that you and your fellowship have defeated the land dragon Antharas. Enjoy your victory while it lasts. Unfortunately, the legends are true about Antharas... the beast can never truly be killed. It will rise once again.<br>
True to my code, I will stand watch for the land dragon's return. When it does I will be here awaiting your return.<br>
As promised, here is the gift of fame and fortune. These are rare... be sure to use them wisely.
</body></html>

View File

@ -1,170 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 quests.Q00904_DragonTrophyAntharas;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.util.Util;
/**
* Dragon Trophy - Antharas (904)
* @author Zoey76
*/
public final class Q00904_DragonTrophyAntharas extends Quest
{
// NPC
private static final int THEODRIC = 30755;
// Monster
private static final int ANTHARAS = 29068;
// Items
private static final int MEDAL_OF_GLORY = 21874;
private static final int PORTAL_STONE = 3865;
// Misc
private static final int MIN_LEVEL = 85;
public Q00904_DragonTrophyAntharas()
{
super(904);
addStartNpc(THEODRIC);
addTalkId(THEODRIC);
addKillId(ANTHARAS);
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(1500, npc, player, false))
{
qs.setCond(2, true);
}
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
if ((player.getLevel() >= MIN_LEVEL) && hasQuestItems(player, PORTAL_STONE))
{
switch (event)
{
case "30755-05.htm":
case "30755-06.htm":
{
htmltext = event;
break;
}
case "30755-07.html":
{
qs.startQuest();
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
executeForEachPlayer(killer, npc, isSummon, true, true);
return super.onKill(npc, killer, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "30755-02.html";
}
else if (!hasQuestItems(player, PORTAL_STONE))
{
htmltext = "30755-04.html";
}
else
{
htmltext = "30755-01.htm";
}
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "30755-08.html";
break;
}
case 2:
{
giveItems(player, MEDAL_OF_GLORY, 30);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
qs.exitQuest(QuestType.DAILY, true);
htmltext = "30755-09.html";
break;
}
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "30755-03.html";
}
else
{
qs.setState(State.CREATED);
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "30755-02.html";
}
else if (!hasQuestItems(player, PORTAL_STONE))
{
htmltext = "30755-04.html";
}
else
{
htmltext = "30755-01.htm";
}
}
break;
}
}
return htmltext;
}
}

View File

@ -1,7 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
Is it hot in here or is it just me? Ha, that one never gets old... well, maybe a little. As you probably know this path leads to the lair of Valakas.<br>
Oh how many have come and became one with the flame that fills these halls...<br>
Valakas calls and those brave souls answer. Not like you though. Destiny has brought you here to face and defeat Valakas.<br>
Do you want to fight the beast? Do ya? Who wants to fight Valakas?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00907_DragonTrophyValakas 31540-05.htm">"I do! I want to fight Valakas!"</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
Do you look down on the fire dragon? Its claws have shattered countless lives.<br>
(Only characters at level 85 or above can undertake this quest.)
</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
Glorious adventurer.<br>
The dragon's nemesis.<br>
You have defeated the dragon. Your power in defeating the evil beast shall be praised throughout the land.<br>
(This quest can be done only a day. This quest gets initialized everyday at 6:30 am.)
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
The fact that you don't have the <font color="LEVEL">Floating Stone</font> means you did not satisfy the minimum requirement for this mission.<br>
If you really want to defeat Valakas, you must first obtain a Vacualite Floating Stone.
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
That a boy... er, girl... ah... you... that's the spirit! I'm somewhat mildy confident of your chances... definitely much better than the hordes of previous adventurers who have been sent to their deaths.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00907_DragonTrophyValakas 31540-06.htm">"Nice... anything I need to do?"</Button>
</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
Nothing special... just march through the vast army of creatures created by the Fire Dragon Valakas into his lair and vanquish the most feared and deadly creature known to roam this land which will most likely kill you and all those around you.<br>
Nah, nothing too much. Just come back with proof you have defeated Valakas and I'll have a surprise waiting for you.<br>
You'll never guess what it is.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00907_DragonTrophyValakas 31540-07.html">"Those new Medals of Glory?"</Button>
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
Yeah. How did you... never mind. Best of luck kid, you're gonna need it.<br>
You know I feel really dumb for saying this and stop me if you have heard it before... cause you know I've sent how many people to their countless deaths trying to kill that thing that everyone starts to look the same, but you shouldn't go after Valakas solo.<br>
Your best bet would be <font color="LEVEL">attacking Valakas with a large group of equally skilled adventurers.</font>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
Defeating Valakas is something that you must do with your comrades.<br>
I shall wait here for news of your victory against the beast.
</body></html>

View File

@ -1,6 +0,0 @@
<html><body>Watcher of Valakas Klein:<br>
What's that you say? You managed to kill the fire dragon? Well, yes, I heard but I thought they were talking about some other adventurer who managed to kill Valakas.<br>
You must feel like Emperor Shunaiman on Aden Mountain so who would want to mess with you.<br>
Well allow me to be the one to kick you off your pedestal so you can fall back to the real world. Valakas ain't dead. Never really dies. He comes back, ever now and then... grumpy as ever and we can expect someone like you to come knocking on his door asking him to turn down that noise.<br>
Well buck up kid, take these Medals of Glory... better than a lousy t-shirt.
</body></html>

View File

@ -1,171 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 quests.Q00907_DragonTrophyValakas;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.util.Util;
/**
* Dragon Trophy - Valakas (907)
* @author Zoey76
*/
public class Q00907_DragonTrophyValakas extends Quest
{
// NPC
private static final int KLEIN = 31540;
// Monster
private static final int VALAKAS = 29028;
// Items
private static final int MEDAL_OF_GLORY = 21874;
private static final int VACUALITE_FLOATING_STONE = 7267;
// Misc
private static final int MIN_LEVEL = 85;
public Q00907_DragonTrophyValakas()
{
super(907);
addStartNpc(KLEIN);
addTalkId(KLEIN);
addKillId(VALAKAS);
}
@Override
public void actionForEachPlayer(L2PcInstance player, L2Npc npc, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(1500, npc, player, false))
{
qs.setCond(2, true);
}
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
if ((player.getLevel() >= MIN_LEVEL) && hasQuestItems(player, VACUALITE_FLOATING_STONE))
{
switch (event)
{
case "31540-05.htm":
case "31540-06.htm":
{
htmltext = event;
break;
}
case "31540-07.html":
{
qs.startQuest();
htmltext = event;
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
executeForEachPlayer(killer, npc, isSummon, true, true);
return super.onKill(npc, killer, isSummon);
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "31540-02.html";
}
else if (!hasQuestItems(player, VACUALITE_FLOATING_STONE))
{
htmltext = "31540-04.html";
}
else
{
htmltext = "31540-01.htm";
}
break;
}
case State.STARTED:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "31540-08.html";
break;
}
case 2:
{
giveItems(player, MEDAL_OF_GLORY, 30);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
qs.exitQuest(QuestType.DAILY, true);
htmltext = "31540-09.html";
break;
}
}
break;
}
case State.COMPLETED:
{
if (!qs.isNowAvailable())
{
htmltext = "31540-03.html";
}
else
{
qs.setState(State.CREATED);
if (player.getLevel() < MIN_LEVEL)
{
htmltext = "31540-02.html";
}
else if (!hasQuestItems(player, VACUALITE_FLOATING_STONE))
{
htmltext = "31540-04.html";
}
else
{
htmltext = "31540-01.htm";
}
}
break;
}
}
return htmltext;
}
}

View File

@ -81,11 +81,10 @@ public final class Q10363_RequestOfTheSeeker extends Quest
case "33450-03.htm":
{
qs.startQuest();
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_TO_GO_TO_EXPLORATION_AREA_2, ExShowScreenMessage.TOP_CENTER, 10000);
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_SHINING_WITH_A_RED_SHIMMER_TO_GO_TO_EXPLORATION_AREA_2, ExShowScreenMessage.TOP_CENTER, 10000);
htmltext = event;
break;
}
case "33451-02.html":
{
if (qs.isCond(2))
@ -94,7 +93,6 @@ public final class Q10363_RequestOfTheSeeker extends Quest
addExpAndSp(player, 70000, 13);
qs.exitQuest(false, true);
htmltext = event;
break;
}
break;
}
@ -115,7 +113,6 @@ public final class Q10363_RequestOfTheSeeker extends Quest
if (npc.getId() == NAGEL)
{
htmltext = "33450-01.htm";
break;
}
break;
}
@ -123,30 +120,17 @@ public final class Q10363_RequestOfTheSeeker extends Quest
{
if (npc.getId() == NAGEL)
{
switch (qs.getCond())
{
case 1:
case 2:
{
htmltext = "33450-04.html";
break;
}
}
break;
htmltext = "33450-04.html";
}
else if (npc.getId() == CELIN)
else if ((npc.getId() == CELIN) && qs.isCond(2))
{
if (qs.isCond(2))
{
htmltext = "33451-01.html";
break;
}
htmltext = "33451-01.html";
}
break;
}
case State.COMPLETED:
{
htmltext = npc.getId() == NAGEL ? "33450-07.html" : "33451-04.html";
htmltext = getAlreadyCompletedMsg(player);
break;
}
}

View File

@ -29,7 +29,7 @@ import quests.Q10363_RequestOfTheSeeker.Q10363_RequestOfTheSeeker;
/**
* Obligations of the Seeker (10364)
* @URL https://l2wiki.com/Obligations_of_the_Seeker
* @author Gladicek
* @author Stayway
*/
public final class Q10364_ObligationsOfTheSeeker extends Quest
{
@ -37,6 +37,7 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
private static final int CELIN = 33451;
private static final int WALTER = 33452;
private static final int DEP = 33453;
// Monsters
private static final int KRAPHER = 22996;
private static final int AVIAN = 22994;
// Items
@ -44,7 +45,7 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
private static final int LEATHER_SHOES = 37;
// Misc
private static final int MIN_LEVEL = 13;
private static final int MAX_LEVEL = 20;
private static final int MAX_LEVEL = 25;
public Q10364_ObligationsOfTheSeeker()
{
@ -81,7 +82,7 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
case "33451-03.html":
{
qs.startQuest();
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_TO_GO_TO_EXPLORATION_AREA_3, ExShowScreenMessage.TOP_CENTER, 10000);
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_SHINING_WITH_A_RED_SHIMMER_TO_GO_TO_EXPLORATION_AREA_3, ExShowScreenMessage.TOP_CENTER, 10000);
htmltext = event;
break;
}
@ -91,7 +92,6 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
{
qs.setCond(2, true);
htmltext = event;
break;
}
break;
}
@ -103,7 +103,6 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
addExpAndSp(player, 114000, 14);
qs.exitQuest(false, true);
htmltext = event;
break;
}
break;
}
@ -122,7 +121,7 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
{
qs.setCond(0);
qs.setCond(3);
showOnScreenMsg(killer, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_TO_GO_TO_EXPLORATION_AREA_4, ExShowScreenMessage.TOP_CENTER, 4500);
showOnScreenMsg(killer, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_SHINING_WITH_A_RED_SHIMMER_TO_GO_TO_EXPLORATION_AREA_4, ExShowScreenMessage.TOP_CENTER, 4500);
}
}
return super.onKill(npc, killer, isSummon);
@ -141,7 +140,6 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
if (npc.getId() == CELIN)
{
htmltext = "33451-01.htm";
break;
}
break;
}
@ -153,9 +151,8 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
{
if (qs.isCond(1))
{
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_TO_GO_TO_EXPLORATION_AREA_3, ExShowScreenMessage.TOP_CENTER, 10000);
htmltext = "33451-06.html";
break;
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_SHINING_WITH_A_RED_SHIMMER_TO_GO_TO_EXPLORATION_AREA_3, ExShowScreenMessage.TOP_CENTER, 10000);
htmltext = "33451-05.html";
}
break;
}
@ -186,33 +183,15 @@ public final class Q10364_ObligationsOfTheSeeker extends Quest
if (qs.isCond(3))
{
htmltext = "33453-01.html";
break;
}
}
break;
}
}
break;
}
case State.COMPLETED:
{
switch (npc.getId())
{
case CELIN:
{
htmltext = "33451-05.html";
break;
}
case WALTER:
{
htmltext = "33452-07.html";
break;
}
case DEP:
{
htmltext = "33453-05.html";
break;
}
}
htmltext = getAlreadyCompletedMsg(player);
break;
}
}

View File

@ -87,7 +87,6 @@ public final class Q10365_ForTheSearchdogKing extends Quest
addExpAndSp(player, 172000, 15);
qs.exitQuest(false, true);
htmltext = event;
break;
}
break;
}
@ -99,7 +98,6 @@ public final class Q10365_ForTheSearchdogKing extends Quest
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
if (giveItemRandomly(killer, npc, KINGS_TONIC, 1, 20, 0.5, true))
@ -125,7 +123,6 @@ public final class Q10365_ForTheSearchdogKing extends Quest
if (npc.getId() == DEP)
{
htmltext = "33453-01.htm";
break;
}
break;
}
@ -137,10 +134,10 @@ public final class Q10365_ForTheSearchdogKing extends Quest
{
if (qs.isCond(1))
{
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_TO_GO_TO_EXPLORATION_AREA_3, ExShowScreenMessage.TOP_CENTER, 10000);
showOnScreenMsg(player, NpcStringId.USE_THE_YE_SAGIRA_TELEPORT_DEVICE_SHINING_WITH_A_RED_SHIMMER_TO_GO_TO_EXPLORATION_AREA_5, ExShowScreenMessage.TOP_CENTER, 10000);
htmltext = "33453-05.html";
break;
}
break;
}
case SEBION:
{
@ -150,15 +147,14 @@ public final class Q10365_ForTheSearchdogKing extends Quest
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}

View File

@ -1,4 +1,4 @@
<html><body>Sebion:<br>
This place is dangerous. I think it's best if you go back to town.<br>
(Only level 16-25 characters who have completed the 'For The Searchdog King' may complete this quest.)
(Only level 17-25 characters who have completed the 'For The Searchdog King' may complete this quest.)
</body></html>

View File

@ -44,11 +44,10 @@ public final class Q10366_ReportOnTheSituationAtTheRuins extends Quest
22993, // Critter
22994, // Avian
22995, // Rider
23122
// Eyesaroch
23122 // Eyesaroch
};
// Misc
private static final int MIN_LEVEL = 16;
private static final int MIN_LEVEL = 17;
private static final int MAX_LEVEL = 25;
private static final String KILL_COUNT_VAR = "KillCount";

View File

@ -1,4 +0,0 @@
<html><body>Eva's Knight Lionel Hunter:<br>
The powers you possess may be to die for to the common folk, but they are nothing to me. But Lady Eva chooses, not I. With her favor, you deserve to at least hear me out. Well, listen well.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10461_TappingThePowerWithin 33907-02.htm">"Uh oh."</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Eva's Knight Lionel Hunter:<br>
Who do you think are the ones who live on in history? Noble are their souls, and their strength is unhindered by bodily limits.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10461_TappingThePowerWithin 33907-03.htm">"Oh. Uh, I knew that. Anyway, go on."</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Eva's Knight Lionel Hunter:<br>
Well then, how do you measure up? Perhaps slightly greater than others in strength, but nowhere close to a legendary hero. But Lady Eva has chosen you, and I bow to her choice. I will help you if you wish to take the next step in strengthening yourself. Are you willing?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10461_TappingThePowerWithin 33907-04.htm">"Yes."</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Eva's Knight Lionel Hunter:<br>
Very well. If you wish to tap the power within you, listen to my words, and listen carefully. I need your full conviction that you want this, before allowing you to choose the class which will bring about this new power.<br><br>
<font color="LEVEL">(This quest only rewards either the main or dual class. Please switch to the class for which you want rewards before proceeding with the quest.)</font>
</body></html>

View File

@ -1,5 +0,0 @@
<html><body>Eva's Knight Lionel Hunter:<br>
Are you ready? Ready to bring out your hidden power? As the first step, I will give you <font color="LEVEL">Skill Points</font> so that you can acquire <font color="LEVEL">Ability Points</font> with them.<br>
<font color="LEVEL">(In this quest, you get skill points required to get the 1st Ability Point.Please switch to the class for which you want rewards before proceeding with the quest. If your character already has AP, you may be unable to acquire the 1 AP with the SP awarded.)</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10461_TappingThePowerWithin 33907-06.html">"I'd like to receive rewards for the current class."</Button>
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Eva's Knight Lionel Hunter:<br>
Very well. You are ready. Whether this leads to glory or suffering is for you to decide. Eva be with you!
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Eva's Knight Lionel Hunter:<br>
I only serve Lady Eva and Innadril. If you have no business with me, be gone.<br>
(Only Noblesse or Exalted characters Lv. 99 or above can perform this quest.)
</body></html>

View File

@ -1,3 +0,0 @@
<html><body>Eva's Knight Lionel Hunter:<br>
I see that there is nothing I can teach you that you do not already know yourself.
</body></html>

View File

@ -1,125 +0,0 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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 quests.Q10461_TappingThePowerWithin;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import com.l2jmobius.gameserver.network.serverpackets.ability.ExShowAPListWnd;
/**
* Tapping The Power Within (10461)
* @author Gladicek
*/
public final class Q10461_TappingThePowerWithin extends Quest
{
// NPCs
private static final int LIONEL_HUNTER = 33907;
// Misc
private static final int MIN_LEVEL = 99;
public Q10461_TappingThePowerWithin()
{
super(10461);
addStartNpc(LIONEL_HUNTER);
addTalkId(LIONEL_HUNTER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = event;
switch (event)
{
case "33907-02.htm":
case "33907-03.htm":
{
htmltext = event;
break;
}
case "33907-04.htm":
{
qs.startQuest();
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.DOES_YOUR_FATE_NOT_WEIGH_UPON_YOU);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2text\\QT_025_ability_01.htm", TutorialShowHtml.LARGE_WINDOW));
break;
}
case "33907-06.html":
{
if (!player.isSubClassActive() || (player.isDualClassActive()))
{
showOnScreenMsg(player, NpcStringId.OPEN_THE_ABILITY_SCREEN_IN_THE_CHARACTER_INFORMATION_SCREEN_NPRESS_ADJUST_POINTS_TO_ADJUST_THE_ACQUIRED_SP_AND_ABILITY_POINTS, ExShowScreenMessage.TOP_CENTER, 5000);
npc.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.THIS_IS_JUST_THE_BEGINNING);
player.sendPacket(ExShowAPListWnd.STATIC_PACKET);
addExpAndSp(player, 0, 250_000_000);
qs.exitQuest(false, true);
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.CREATED:
{
if (((player.getLevel() >= MIN_LEVEL) && (player.getNobleLevel() > 0)))
{
htmltext = "33907-01.htm";
break;
}
htmltext = "33907-07.html";
break;
}
case State.STARTED:
{
if (qs.isCond(1))
{
htmltext = "33907-05.html";
}
break;
}
case State.COMPLETED:
{
htmltext = "33907-08.html";
break;
}
}
return htmltext;
}
}

View File

@ -188,10 +188,8 @@ import quests.Q00823_DisappearedRaceNewFairy.Q00823_DisappearedRaceNewFairy;
import quests.Q00901_HowLavasaurusesAreMade.Q00901_HowLavasaurusesAreMade;
import quests.Q00902_ReclaimOurEra.Q00902_ReclaimOurEra;
import quests.Q00903_TheCallOfAntharas.Q00903_TheCallOfAntharas;
import quests.Q00904_DragonTrophyAntharas.Q00904_DragonTrophyAntharas;
import quests.Q00905_RefinedDragonBlood.Q00905_RefinedDragonBlood;
import quests.Q00906_TheCallOfValakas.Q00906_TheCallOfValakas;
import quests.Q00907_DragonTrophyValakas.Q00907_DragonTrophyValakas;
import quests.Q00937_ToReviveTheFishingGuild.Q00937_ToReviveTheFishingGuild;
import quests.Q10273_GoodDayToFly.Q10273_GoodDayToFly;
import quests.Q10274_CollectingInTheAir.Q10274_CollectingInTheAir;
@ -321,7 +319,6 @@ import quests.Q10453_StoppingTheWindDragon.Q10453_StoppingTheWindDragon;
import quests.Q10455_ElikiasLetter.Q10455_ElikiasLetter;
import quests.Q10459_ASickAmbition.Q10459_ASickAmbition;
import quests.Q10460_ReturnOfTheAlligatorHunter.Q10460_ReturnOfTheAlligatorHunter;
import quests.Q10461_TappingThePowerWithin.Q10461_TappingThePowerWithin;
import quests.Q10462_TemperARustingBlade.Q10462_TemperARustingBlade;
import quests.Q10465_SoulFrostSword.Q10465_SoulFrostSword;
import quests.Q10472_WindsOfFateEncroachingShadows.Q10472_WindsOfFateEncroachingShadows;
@ -608,10 +605,8 @@ public class QuestMasterHandler
Q00901_HowLavasaurusesAreMade.class,
Q00902_ReclaimOurEra.class,
Q00903_TheCallOfAntharas.class,
Q00904_DragonTrophyAntharas.class,
Q00905_RefinedDragonBlood.class,
Q00906_TheCallOfValakas.class,
Q00907_DragonTrophyValakas.class,
Q00937_ToReviveTheFishingGuild.class,
Q10273_GoodDayToFly.class,
Q10274_CollectingInTheAir.class,
@ -741,7 +736,6 @@ public class QuestMasterHandler
Q10455_ElikiasLetter.class,
Q10459_ASickAmbition.class,
Q10460_ReturnOfTheAlligatorHunter.class,
Q10461_TappingThePowerWithin.class,
Q10462_TemperARustingBlade.class,
Q10465_SoulFrostSword.class,
Q10472_WindsOfFateEncroachingShadows.class,

View File

@ -66,7 +66,6 @@
<npc id="32222" x="143904" y="22736" z="-2120" respawnTime="60sec" /> <!-- Liane -->
<npc id="32223" x="143936" y="22672" z="-2120" respawnTime="60sec" /> <!-- Duroga -->
<npc id="32224" x="143936" y="22752" z="-2120" respawnTime="60sec" /> <!-- Auren -->
<npc id="32321" x="147257" y="28611" z="-2264" heading="56124" respawnTime="60sec" /> <!-- Item Broker -->
<npc id="32325" x="150272" y="27840" z="-2264" heading="49292" respawnTime="60sec" /> <!-- Yin -->
<npc id="32327" x="147174" y="25672" z="-2008" respawnTime="60sec" /> <!-- Adventurers' Guide -->
<npc id="32478" x="148399" y="26626" z="-2200" heading="11382" respawnTime="60sec" /> <!-- Dimensional Merchant -->
@ -107,6 +106,8 @@
<npc id="36478" x="145174" y="30492" z="-2456" respawnTime="60sec" /> <!-- Mickey -->
<npc id="36479" x="146437" y="27902" z="-2264" heading="60664" respawnTime="60sec" /> <!-- Rapidus -->
<npc id="36706" x="146264" y="21952" z="-2136" heading="36261" respawnTime="60sec" /> <!-- Mermoden -->
<npc id="30703" x="147796" y="25622" z="-2008" heading="12414" respawnTime="60sec" /> <!-- Colin -->
<npc id="30744" x="147840" y="25591" z="-2008" heading="14023" respawnTime="60sec" /> <!-- Grey -->
</group>
</spawn>
</list>

View File

@ -5,7 +5,7 @@
<npc id="30080" x="83396" y="147904" z="-3384" heading="16384" respawnTime="60sec" /> <!-- Clarissa -->
<npc id="30081" x="80518" y="147922" z="-3504" heading="32768" respawnTime="60sec" /> <!-- Helvetia -->
<npc id="30082" x="80518" y="147873" z="-3504" heading="32768" respawnTime="60sec" /> <!-- Denkus -->
<npc id="30083" x="80370" y="145482" z="-3512" heading="0" respawnTime="60sec" /> <!-- Pochi -->
<npc id="30083" x="81103" y="145951" z="-3533" heading="32767" respawnTime="60sec" /> <!-- Pochi -->
<npc id="30084" x="79747" y="146492" z="-3520" heading="16384" respawnTime="60sec" /> <!-- Graham -->
<npc id="30085" x="79801" y="146493" z="-3520" heading="16384" respawnTime="60sec" /> <!-- Stanford -->
<npc id="30086" x="80752" y="146400" z="-3528" heading="16384" respawnTime="60sec" /> <!-- Taurin -->
@ -83,7 +83,6 @@
<npc id="32214" x="81066" y="150706" z="-3512" heading="39915" respawnTime="60sec" /> <!-- Meldina -->
<npc id="32215" x="81061" y="150669" z="-3512" heading="39915" respawnTime="60sec" /> <!-- Tenain -->
<npc id="32216" x="81004" y="150734" z="-3512" heading="39915" respawnTime="60sec" /> <!-- Noir -->
<npc id="32320" x="81069" y="149398" z="-3464" heading="58312" respawnTime="60sec" /> <!-- Item Broker -->
<npc id="32327" x="83575" y="147665" z="-3400" heading="18408" respawnTime="60sec" /> <!-- Adventurers' Guide -->
<npc id="32478" x="82672" y="146752" z="-3464" heading="33000" respawnTime="60sec" /> <!-- Dimensional Merchant -->
<npc id="32498" x="85104" y="147616" z="-3400" heading="53248" respawnTime="60sec" /> <!-- Devil's Isle Survivor -->
@ -114,6 +113,7 @@
<npc id="35460" x="81808" y="151776" z="-3528" heading="32000" respawnTime="60sec" /> <!-- Trey -->
<npc id="36706" x="88290" y="147578" z="-3400" heading="34492" respawnTime="60sec" /> <!-- Mermoden -->
<npc id="34222" x="83487" y="149304" z="-3400" heading="48708" respawnTime="60sec" /> <!-- Kekropus -->
<npc id="34328" x="80370" y="145482" z="-3512" heading="0" respawnTime="60sec" /> <!-- Laia -->
</group>
</spawn>
</list>

View File

@ -1937,4 +1937,52 @@
<spawn>
<npc id="25927" x="-18328" y="-114704" z="-4088" heading="8331" dbSave="true" dbName="Krogel" respawnTime="24hour" respawnRandom="12hour" /> <!-- Krogel -->
</spawn>
<spawn>
<npc id="26162" x="140047" y="183193" z="-3680" heading="0" dbSave="true" dbName="Demon Worshipper Dorgon" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Demon Worshipper Dorgon -->
</spawn>
<spawn>
<npc id="26163" x="147954" y="189880" z="-3720" heading="0" dbSave="true" dbName="Demon Worshipper Zarka" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Demon Worshipper Zarka -->
</spawn>
<spawn>
<npc id="26164" x="160156" y="181936" z="-3624" heading="0" dbSave="true" dbName="Demon Worshipper Kultaan" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Demon Worshipper Kultaan -->
</spawn>
<spawn>
<npc id="26165" x="156105" y="190695" z="-3712" heading="0" dbSave="true" dbName="Demon Worshipper Nortan" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Demon Worshipper Nortan -->
</spawn>
<spawn>
<npc id="26170" x="137801" y="162885" z="-2840" heading="0" dbSave="true" dbName="Valac" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Valac -->
</spawn>
<spawn>
<npc id="26171" x="136250" y="177036" z="-3360" heading="0" dbSave="true" dbName="Kurion" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Kurion -->
</spawn>
<spawn>
<npc id="26172" x="144655" y="161851" z="-2496" heading="0" dbSave="true" dbName="Atluum" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Atluum -->
</spawn>
<spawn>
<npc id="26173" x="157277" y="169834" z="-3504" heading="0" dbSave="true" dbName="Lebruum" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Lebruum -->
</spawn>
<spawn>
<npc id="26186" x="-57560" y="66816" z="-3336" heading="0" dbSave="true" dbName="Wandering Croamis" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Wandering Croamis -->
</spawn>
<spawn>
<npc id="26178" x="-34495" y="38072" z="-3328" heading="0" dbSave="true" dbName="Berserker Hard" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Berserker Hard -->
</spawn>
<spawn>
<npc id="26179" x="-34434" y="48018" z="-2832" heading="0" dbSave="true" dbName="Patrol Commander Pho" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Patrol Commander Pho -->
</spawn>
<spawn>
<npc id="26180" x="-37071" y="55891" z="-2728" heading="0" dbSave="true" dbName="Guardian Gastra" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Guardian Gastra -->
</spawn>
<spawn>
<npc id="26181" x="-39351" y="60750" z="-3376" heading="0" dbSave="true" dbName="Dark Wizard Ruby" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Dark Wizard Ruby -->
</spawn>
<spawn>
<npc id="26187" x="-64939" y="81990" z="-3376" heading="0" dbSave="true" dbName="Wandering Harpe" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Wandering Harpe -->
</spawn>
<spawn>
<npc id="26188" x="-64076" y="73510" z="-3312" heading="0" dbSave="true" dbName="Wandering Barrena" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Wandering Barrena -->
</spawn>
<spawn>
<npc id="26189" x="-57562" y="86979" z="-3600" heading="0" dbSave="true" dbName="Wandering Purka" respawnTime="24Hour" respawnRandom="12hour" /> <!-- Wandering Purka -->
</spawn>
</list>

View File

@ -108,7 +108,6 @@
<npc id="32230" x="43071" y="-51683" z="-776" heading="20480" respawnTime="60sec" /> <!-- Ceci -->
<npc id="32231" x="42983" y="-51691" z="-776" heading="16384" respawnTime="60sec" /> <!-- Luben -->
<npc id="32232" x="43090" y="-51647" z="-776" heading="24576" respawnTime="60sec" /> <!-- Minuet -->
<npc id="32322" x="44113" y="-47596" z="-792" heading="55308" respawnTime="60sec" /> <!-- Item Broker -->
<npc id="32326" x="44480" y="-49536" z="-792" heading="42012" respawnTime="60sec" /> <!-- Yang -->
<npc id="32327" x="44174" y="-48342" z="-792" heading="16383" respawnTime="60sec" /> <!-- Adventurers' Guide -->
<npc id="32478" x="43568" y="-48976" z="-792" heading="1000" respawnTime="60sec" /> <!-- Dimensional Merchant -->

View File

@ -379,6 +379,7 @@
<npc id="33218" x="-113404" y="249823" z="-1816" heading="0" respawnTime="60sec" /> <!-- Soros -->
<npc id="33219" x="-105210" y="247610" z="-3640" heading="59900" respawnTime="60sec" /> <!-- Holly -->
<npc id="33223" x="-119816" y="246292" z="-968" heading="843" respawnTime="60sec" /> <!-- Bink -->
<npc id="33453" x="-112438" y="238732" z="-2922" respawnTime="60sec" /> <!-- Dep -->
<npc id="33223" x="-114723" y="230366" z="-1664" heading="16383" respawnTime="60sec" /> <!-- Bink -->
<npc id="33230" x="-116789" y="249225" z="-1896" heading="33827" respawnTime="60sec" /> <!-- -->
<npc id="33230" x="-115159" y="249100" z="-1696" heading="24037" respawnTime="60sec" /> <!-- -->
@ -412,7 +413,6 @@
<npc id="33450" x="-113506" y="237261" z="-3040" heading="49300" respawnTime="60sec" /> <!-- Nagel -->
<npc id="33451" x="-116539" y="234026" z="-2896" heading="6234" respawnTime="60sec" /> <!-- Celin -->
<npc id="33452" x="-116530" y="239219" z="-2768" heading="1063" respawnTime="60sec" /> <!-- Walter -->
<npc id="33453" x="-110618" y="238364" z="-2920" heading="18190" respawnTime="60sec" /> <!-- Dep -->
<npc id="33477" x="-114711" y="243564" z="-7944" heading="16000" respawnTime="60sec" /> <!-- Cellphine -->
<npc id="33480" x="-114809" y="243578" z="-7952" heading="16000" respawnTime="60sec" /> <!-- Giant's Soldier -->
<npc id="33481" x="-114845" y="243591" z="-7960" heading="16000" respawnTime="60sec" /> <!-- Giant's Soldier -->

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<table maxLevel="107" maxPetLevel="99" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/experience.xsd">
<table maxLevel="110" maxPetLevel="99" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/experience.xsd">
<experience level="1" tolevel="0" trainingRate="0" />
<experience level="2" tolevel="68" trainingRate="0" />
<experience level="3" tolevel="363" trainingRate="0" />
@ -107,5 +107,8 @@
<experience level="105" tolevel="358035537321346" trainingRate="0.0001" />
<experience level="106" tolevel="3514822095225670" trainingRate="0.0001" />
<experience level="107" tolevel="7302965964710870" trainingRate="0.0001" />
<experience level="108" tolevel="12302965964710870" trainingRate="0.0001" />
<experience level="108" tolevel="13363996155887200" trainingRate="0.0001" />
<experience level="109" tolevel="20637232385298800" trainingRate="0.0001" />
<experience level="110" tolevel="32274410352357300" trainingRate="0.00005" />
<experience level="111" tolevel="46239023912827500" trainingRate="0.00005" />
</table>

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
<npc id="26236" level="104" type="L2RaidBoss" name="Camille" title="Final Disciple">
<!-- Source: www.l2wiki.com -->
<race>HUMANOID</race>
<acquire exp="304278653952" sp="608557372" raidPoints="21" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="72698011" hpRegen="1824.56140350877" mp="50920" mpRegen="1925.92592592593" />
<speed>
<walk ground="60" /> <!-- Need retail value -->
<run ground="120" /> <!-- Need retail value -->
</speed>
<attack physical="49523.8095238095" magical="8739.49579831933" critical="4" attackSpeed="253" range="40" />
<defence physical="3851.85185185185" magical="2236.55913978495" />
</stats>
<status attackable="true" />
<skill_list>
<skill id="4416" level="6" /> <!-- Humanoids -->
<skill id="5467" level="1" /> <!-- Dark Attack -->
<skill id="4494" level="1" /> <!-- Raid Boss -->
<skill id="16899" level="1" /> <!-- Camille -->
<skill id="14804" level="10" /> <!-- Damage Reflect Attack Resistance -->
</skill_list>
<collision>
<radius normal="39.0" />
<height normal="52.9" />
</collision>
<drop_lists>
<drop>
<item id="17434" min="1" max="1" chance="1.242" /> <!-- Eternal Boots -->
<item id="17432" min="1" max="1" chance="1.241" /> <!-- Eternal Gaiters -->
<item id="17440" min="1" max="1" chance="1.227" /> <!-- Eternal Leather Boots -->
<item id="17439" min="1" max="1" chance="1.216" /> <!-- Eternal Leather Gloves -->
<item id="17444" min="1" max="1" chance="1.214" /> <!-- Eternal Gloves -->
<item id="17436" min="1" max="1" chance="1.205" /> <!-- Eternal Leather Helmet -->
<item id="17433" min="1" max="1" chance="1.195" /> <!-- Eternal Gauntlets -->
<item id="17445" min="1" max="1" chance="1.188" /> <!-- Eternal Shoes -->
<item id="17443" min="1" max="1" chance="1.185" /> <!-- Eternal Stockings -->
<item id="17446" min="1" max="1" chance="1.18" /> <!-- Eternal Sigil -->
<item id="17431" min="1" max="1" chance="1.175" /> <!-- Eternal Breastplate -->
<item id="17430" min="1" max="1" chance="1.166" /> <!-- Eternal Helmet -->
<item id="17442" min="1" max="1" chance="1.159" /> <!-- Eternal Tunic -->
<item id="17435" min="1" max="1" chance="1.157" /> <!-- Eternal Shield -->
<item id="17437" min="1" max="1" chance="1.147" /> <!-- Eternal Leather Armor -->
<item id="17438" min="1" max="1" chance="1.124" /> <!-- Eternal Leather Leggings -->
<item id="17441" min="1" max="1" chance="1.113" /> <!-- Eternal Circlet -->
<item id="17419" min="1" max="1" chance="0.75" /> <!-- Helios Avenger -->
<item id="17418" min="1" max="1" chance="0.75" /> <!-- Helios Slasher -->
<item id="17417" min="1" max="1" chance="0.75" /> <!-- Helios Cutter -->
<item id="17420" min="1" max="1" chance="0.75" /> <!-- Helios Fighter -->
<item id="17421" min="1" max="1" chance="0.75" /> <!-- Helios Stormer -->
<item id="17426" min="1" max="1" chance="0.75" /> <!-- Helios Retributer -->
<item id="17422" min="1" max="1" chance="0.75" /> <!-- Helios Thrower -->
<item id="17423" min="1" max="1" chance="0.75" /> <!-- Helios Shooter -->
<item id="17424" min="1" max="1" chance="0.75" /> <!-- Helios Buster -->
<item id="17425" min="1" max="1" chance="0.75" /> <!-- Helios Caster -->
<item id="17416" min="1" max="1" chance="0.75" /> <!-- Helios Shaper -->
<item id="19448" min="1" max="1" chance="60.17" /> <!-- Blessed Scroll: Enchant Armor (R-grade) -->
<item id="19447" min="1" max="1" chance="41.44" /> <!-- Blessed Scroll: Enchant Weapon (R-grade) -->
<item id="17709" min="1" max="1" chance="17.39" /> <!-- Lv. 5 Legendary STR Dye -->
<item id="17711" min="1" max="1" chance="17.2" /> <!-- Lv. 5 Legendary CON Dye -->
<item id="17713" min="1" max="1" chance="16.86" /> <!-- Lv. 5 Legendary WIT Dye -->
<item id="17714" min="1" max="1" chance="16.4" /> <!-- Lv. 5 Legendary MEN Dye -->
<item id="17710" min="1" max="1" chance="16.36" /> <!-- Lv. 5 Legendary DEX Dye -->
<item id="17712" min="1" max="1" chance="15.86" /> <!-- Lv. 5 Legendary INT Dye -->
<item id="37078" min="1" max="1" chance="5.056" /> <!-- Monster Weapon Appearance Stone: Thesakar's Spear -->
<item id="37079" min="1" max="1" chance="5.055" /> <!-- Monster Weapon Appearance Stone: Mimilead's Staff -->
<item id="37077" min="1" max="1" chance="5.051" /> <!-- Monster Weapon Appearance Stone: Guillotine's Greatsword -->
<item id="37074" min="1" max="1" chance="5.047" /> <!-- Monster Weapon Appearance Stone: Tebot's Dual Blunt Weapon -->
<item id="37083" min="1" max="1" chance="5.044" /> <!-- Monster Weapon Appearance Stone: Centaur's Bow -->
<item id="37067" min="1" max="1" chance="5.043" /> <!-- Monster Weapon Appearance Stone: Theor's Sword -->
<item id="37081" min="1" max="1" chance="5.026" /> <!-- Monster Weapon Appearance Stone: Kanadis' Hand -->
<item id="37082" min="1" max="1" chance="5.021" /> <!-- Monster Weapon Appearance Stone: Kanadis' Bow -->
<item id="37073" min="1" max="1" chance="5.014" /> <!-- Monster Weapon Appearance Stone: Glakias' Hammer -->
<item id="37075" min="1" max="1" chance="5.011" /> <!-- Monster Weapon Appearance Stone: Drakos' Dagger -->
<item id="37072" min="1" max="1" chance="5.004" /> <!-- Monster Weapon Appearance Stone: Tebot's Axe -->
<item id="37070" min="1" max="1" chance="4.99" /> <!-- Monster Weapon Appearance Stone: Tegaffe's Dualsword -->
<item id="37071" min="1" max="1" chance="4.989" /> <!-- Monster Weapon Appearance Stone: Seknus' One-handed Magic Sword -->
<item id="37084" min="1" max="1" chance="4.986" /> <!-- Monster Weapon Appearance Stone: Spicula's Crossbow -->
<item id="37069" min="1" max="1" chance="4.984" /> <!-- Monster Weapon Appearance Stone: Octavis' Sword -->
<item id="37085" min="1" max="1" chance="4.978" /> <!-- Monster Weapon Appearance Stone: Theor's Shield -->
<item id="37080" min="1" max="1" chance="4.968" /> <!-- Monster Weapon Appearance Stone: Satyr's Staff -->
<item id="37076" min="1" max="1" chance="4.951" /> <!-- Monster Weapon Appearance Stone: Drakos' Dual Dagger -->
<item id="37068" min="1" max="1" chance="4.94" /> <!-- Monster Weapon Appearance Stone: Sword of Corruption -->
<item id="37086" min="1" max="1" chance="4.931" /> <!-- Monster Weapon Appearance Stone: Shield of Corruption -->
<item id="35473" min="1" max="1" chance="4.788" /> <!-- Recipe: Eternal Circlet (60%) -->
<item id="35470" min="1" max="1" chance="4.786" /> <!-- Recipe: Eternal Leather Leggings (60%) -->
<item id="35469" min="1" max="1" chance="4.785" /> <!-- Recipe: Eternal Leather Armor (60%) -->
<item id="35464" min="1" max="1" chance="4.778" /> <!-- Recipe: Eternal Gaiters (60%) -->
<item id="35462" min="1" max="1" chance="4.77" /> <!-- Recipe: Eternal Helmet (60%) -->
<item id="35478" min="1" max="1" chance="4.766" /> <!-- Recipe: Eternal Sigil (60%) -->
<item id="35465" min="1" max="1" chance="4.758" /> <!-- Recipe: Eternal Gauntlets (60%) -->
<item id="35472" min="1" max="1" chance="4.756" /> <!-- Recipe: Eternal Leather Boots (60%) -->
<item id="35463" min="1" max="1" chance="4.723" /> <!-- Recipe: Eternal Breastplate (60%) -->
<item id="35466" min="1" max="1" chance="4.723" /> <!-- Recipe: Eternal Boots (60%) -->
<item id="35475" min="1" max="1" chance="4.704" /> <!-- Recipe: Eternal Stockings (60%) -->
<item id="35477" min="1" max="1" chance="4.697" /> <!-- Recipe: Eternal Shoes (60%) -->
<item id="35471" min="1" max="1" chance="4.685" /> <!-- Recipe: Eternal Leather Gloves (60%) -->
<item id="35476" min="1" max="1" chance="4.681" /> <!-- Recipe: Eternal Gloves (60%) -->
<item id="35467" min="1" max="1" chance="4.672" /> <!-- Recipe: Eternal Shield (60%) -->
<item id="35468" min="1" max="1" chance="4.656" /> <!-- Recipe: Eternal Leather Helmet (60%) -->
<item id="35474" min="1" max="1" chance="4.651" /> <!-- Recipe: Eternal Tunic (60%) -->
<item id="46476" min="1" max="1" chance="2.498" /> <!-- Leona's Soul Crystal - Stage 3 -->
<item id="46506" min="1" max="1" chance="2.476" /> <!-- Lionel's Soul Crystal - Stage 3 -->
<item id="46491" min="1" max="1" chance="2.441" /> <!-- Pantheon's Soul Crystal - Stage 3 -->
<item id="46507" min="1" max="1" chance="1.895" /> <!-- Lionel's Soul Crystal - Stage 4 -->
<item id="35454" min="1" max="1" chance="1.854" /> <!-- Recipe: Helios Avenger (60%) -->
<item id="35460" min="1" max="1" chance="1.844" /> <!-- Recipe: Helios Caster (60%) -->
<item id="35452" min="1" max="1" chance="1.822" /> <!-- Recipe: Helios Cutter (60%) -->
<item id="46492" min="1" max="1" chance="1.816" /> <!-- Pantheon's Soul Crystal - Stage 4 -->
<item id="46477" min="1" max="1" chance="1.812" /> <!-- Leona's Soul Crystal - Stage 4 -->
<item id="35451" min="1" max="1" chance="1.791" /> <!-- Recipe: Helios Shaper (60%) -->
<item id="35461" min="1" max="1" chance="1.776" /> <!-- Recipe: Helios Retributer (60%) -->
<item id="35459" min="1" max="1" chance="1.77" /> <!-- Recipe: Helios Buster (60%) -->
<item id="35457" min="1" max="1" chance="1.768" /> <!-- Recipe: Helios Thrower (60%) -->
<item id="35458" min="1" max="1" chance="1.765" /> <!-- Recipe: Helios Shooter (60%) -->
<item id="35456" min="1" max="1" chance="1.746" /> <!-- Recipe: Helios Stormer (60%) -->
<item id="35455" min="1" max="1" chance="1.743" /> <!-- Recipe: Helios Fighter (60%) -->
<item id="35453" min="1" max="1" chance="1.725" /> <!-- Recipe: Helios Slasher (60%) -->
<item id="39483" min="1" max="1" chance="1.655" /> <!-- Alchemic Tome: Enchant Scroll -->
<item id="46461" min="1" max="1" chance="1.628" /> <!-- Mermoden's Soul Crystal - Stage 3 -->
<item id="39485" min="1" max="1" chance="1.628" /> <!-- Alchemic Tome: Dye -->
<item id="46508" min="1" max="1" chance="1.612" /> <!-- Lionel's Soul Crystal - Stage 5 -->
<item id="46478" min="1" max="1" chance="1.602" /> <!-- Leona's Soul Crystal - Stage 5 -->
<item id="46446" min="1" max="1" chance="1.608" /> <!-- Kain's Soul Crystal - Stage 3 -->
<item id="39484" min="1" max="1" chance="1.603" /> <!-- Alchemic Tome: Life Stone -->
<item id="46493" min="1" max="1" chance="1.519" /> <!-- Pantheon's Soul Crystal - Stage 5 -->
<item id="46447" min="1" max="1" chance="1.198" /> <!-- Kain's Soul Crystal - Stage 4 -->
<item id="46462" min="1" max="1" chance="1.185" /> <!-- Mermoden's Soul Crystal - Stage 4 -->
<item id="46463" min="1" max="1" chance="1.11" /> <!-- Mermoden's Soul Crystal - Stage 5 -->
<item id="46448" min="1" max="1" chance="1.031" /> <!-- Kain's Soul Crystal - Stage 5 -->
<item id="46494" min="1" max="1" chance="0.75" /> <!-- Pantheon's Soul Crystal - Stage 6 -->
<item id="46464" min="1" max="1" chance="0.75" /> <!-- Mermoden's Soul Crystal - Stage 6 -->
<item id="46479" min="1" max="1" chance="0.75" /> <!-- Leona's Soul Crystal - Stage 6 -->
<item id="46509" min="1" max="1" chance="0.75" /> <!-- Lionel's Soul Crystal - Stage 6 -->
<item id="46449" min="1" max="1" chance="0.75" /> <!-- Kain's Soul Crystal - Stage 6 -->
<item id="46495" min="1" max="1" chance="0.3" /> <!-- Pantheon's Soul Crystal - Stage 7 -->
<item id="46465" min="1" max="1" chance="0.3" /> <!-- Mermoden's Soul Crystal - Stage 7 -->
<item id="46450" min="1" max="1" chance="0.3" /> <!-- Kain's Soul Crystal - Stage 7 -->
<item id="46480" min="1" max="1" chance="0.3" /> <!-- Leona's Soul Crystal - Stage 7 -->
<item id="46510" min="1" max="1" chance="0.3" /> <!-- Lionel's Soul Crystal - Stage 7 -->
</drop>
</drop_lists>
</npc>
</list>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/npcs.xsd">
<npc id="34328" level="85" type="L2Npc" name="Laia" title="Auction Broker">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>HUMAN</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="14612" hpRegen="7.5" mp="2355" mpRegen="2.7" />
<speed>
<walk ground="1" />
<run ground="1" />
</speed>
</stats>
<status attackable="false" />
<collision>
<radius normal="110" />
<height normal="70" />
</collision>
</npc>
</list>

View File

@ -0,0 +1,29 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element name="card" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="rewards" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:int" name="kills"/>
<xs:attribute type="xs:long" name="exp"/>
<xs:attribute type="xs:int" name="sp"/>
<xs:attribute type="xs:short" name="points"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:byte" name="id"/>
<xs:attribute type="xs:short" name="monster"/>
<xs:attribute type="xs:string" name="faction"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -3,13 +3,13 @@
<xs:element name="table">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="experience" minOccurs="1" maxOccurs="108">
<xs:element name="experience" minOccurs="1" maxOccurs="111">
<xs:complexType>
<xs:attribute name="level" use="required">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1" />
<xs:maxInclusive value="108" />
<xs:maxInclusive value="111" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
@ -28,7 +28,7 @@
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1" />
<xs:maxInclusive value="108" />
<xs:maxInclusive value="111" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
@ -36,7 +36,7 @@
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1" />
<xs:maxInclusive value="108" />
<xs:maxInclusive value="111" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>

View File

@ -71,6 +71,7 @@ import com.l2jmobius.gameserver.data.xml.impl.InitialShortcutData;
import com.l2jmobius.gameserver.data.xml.impl.ItemCrystalizationData;
import com.l2jmobius.gameserver.data.xml.impl.KarmaData;
import com.l2jmobius.gameserver.data.xml.impl.LuckyGameData;
import com.l2jmobius.gameserver.data.xml.impl.MonsterBookData;
import com.l2jmobius.gameserver.data.xml.impl.MultisellData;
import com.l2jmobius.gameserver.data.xml.impl.NpcData;
import com.l2jmobius.gameserver.data.xml.impl.OptionData;
@ -292,6 +293,7 @@ public class GameServer
NpcData.getInstance();
ExtendDropData.getInstance();
SpawnsData.getInstance();
MonsterBookData.getInstance();
WalkingManager.getInstance();
StaticObjectData.getInstance();
ItemAuctionManager.getInstance();

View File

@ -0,0 +1,138 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.data.xml.impl;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import com.l2jmobius.commons.util.IGameXmlReader;
import com.l2jmobius.gameserver.enums.Faction;
import com.l2jmobius.gameserver.model.holders.MonsterBookCardHolder;
import com.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder;
/**
* @author Mobius
*/
public class MonsterBookData implements IGameXmlReader
{
private static final Logger LOGGER = Logger.getLogger(MonsterBookData.class.getName());
private final List<MonsterBookCardHolder> _monsterBook = new ArrayList<>();
protected MonsterBookData()
{
load();
}
@Override
public void load()
{
_monsterBook.clear();
parseDatapackFile("data/MonsterBook.xml");
LOGGER.info(getClass().getSimpleName() + ": Loaded: " + _monsterBook.size() + " monster data.");
}
@Override
public void parseDocument(Document doc, File f)
{
for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
{
if ("list".equalsIgnoreCase(n.getNodeName()))
{
for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
{
if ("card".equalsIgnoreCase(d.getNodeName()))
{
final NamedNodeMap attrs = d.getAttributes();
final int itemId = parseInteger(attrs, "id");
final int monster = parseInteger(attrs, "monster");
final String faction = parseString(attrs, "faction");
final MonsterBookCardHolder card = new MonsterBookCardHolder(itemId, monster, Faction.valueOf(faction));
if (NpcData.getInstance().getTemplate(monster) == null)
{
LOGGER.severe(getClass().getSimpleName() + ": Could not find NPC template with id " + monster + ".");
}
for (Node b = d.getFirstChild(); b != null; b = b.getNextSibling())
{
if ("rewards".equalsIgnoreCase(b.getNodeName()))
{
final NamedNodeMap rewardAttrs = b.getAttributes();
final int kills = parseInteger(rewardAttrs, "kills");
final Long exp = parseLong(rewardAttrs, "exp");
final int sp = parseInteger(rewardAttrs, "sp");
final int points = parseInteger(rewardAttrs, "points");
card.addReward(new MonsterBookRewardHolder(kills, exp, sp, points));
}
}
_monsterBook.add(card);
}
}
}
}
}
public List<MonsterBookCardHolder> getMonsterBookCards()
{
return _monsterBook;
}
public MonsterBookCardHolder getMonsterBookCardByMonsterId(int monsterId)
{
for (MonsterBookCardHolder card : _monsterBook)
{
if (card.getMonsterId() == monsterId)
{
return card;
}
}
return null;
}
public MonsterBookCardHolder getMonsterBookCardById(int cardId)
{
for (MonsterBookCardHolder card : _monsterBook)
{
if (card.getId() == cardId)
{
return card;
}
}
return null;
}
public static MonsterBookData getInstance()
{
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder
{
protected static final MonsterBookData INSTANCE = new MonsterBookData();
}
}

View File

@ -26,7 +26,8 @@ public enum Faction
GIANT_TRACKERS(3, 200, 1350, 3650, 7100, 12850, 22050, 34700),
UNWORLDLY_VISITORS(4, 100, 1200, 3400, 6700, 12200, 21000, 33100),
KINGDOM_ROYAL_GUARDS(5, 100, 900, 2500, 4900, 8100, 12100, 16900, 22500, 29700, 38500, 48900),
FISHING_GUILD(6, 100, 7300, 18100, 32500, 53500, 78700, 106700);
FISHING_GUILD(6, 100, 7300, 18100, 32500, 53500, 78700, 106700),
HUNTERS_GUILD(7, 200, 4000, 9600, 19900, 32500, 47200, 64000);
private int _id;
private int[] _points;

View File

@ -69,6 +69,12 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0;
}
public boolean getRecentlyCompleted(L2PcInstance player)
{
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted();
}
public synchronized void reset()
{
try (Connection con = DatabaseFactory.getInstance().getConnection();
@ -97,6 +103,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
entry.setStatus(DailyMissionStatus.COMPLETED);
entry.setLastCompleted(System.currentTimeMillis());
entry.setRecentlyCompleted(true);
storePlayerEntry(entry);
return true;

View File

@ -109,6 +109,10 @@ public final class GrandBossManager implements IStorable
public int getBossStatus(int bossId)
{
if (!_bossStatus.containsKey(bossId))
{
return -1;
}
return _bossStatus.get(bossId);
}

View File

@ -91,7 +91,7 @@ public class DailyMissionDataHolder
public boolean isDisplayable(L2PcInstance player)
{
return (!_isOneTime || (getStatus(player) != DailyMissionStatus.COMPLETED.getClientId())) && (_classRestriction.isEmpty() || _classRestriction.contains(player.getClassId()));
return (!_isOneTime || getRecentlyCompleted(player) || (getStatus(player) != DailyMissionStatus.COMPLETED.getClientId())) && (_classRestriction.isEmpty() || _classRestriction.contains(player.getClassId()));
}
public void requestReward(L2PcInstance player)
@ -112,6 +112,11 @@ public class DailyMissionDataHolder
return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId();
}
public boolean getRecentlyCompleted(L2PcInstance player)
{
return (_handler != null) && _handler.getRecentlyCompleted(player);
}
public void reset()
{
if (_handler != null)

View File

@ -28,6 +28,7 @@ public class DailyMissionPlayerEntry
private DailyMissionStatus _status = DailyMissionStatus.NOT_AVAILABLE;
private int _progress;
private long _lastCompleted;
private boolean _recentlyCompleted;
public DailyMissionPlayerEntry(int objectId, int rewardId)
{
@ -88,4 +89,14 @@ public class DailyMissionPlayerEntry
{
_lastCompleted = lastCompleted;
}
public boolean getRecentlyCompleted()
{
return _recentlyCompleted;
}
public void setRecentlyCompleted(boolean recentlyCompleted)
{
_recentlyCompleted = recentlyCompleted;
}
}

View File

@ -33,6 +33,8 @@ import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.ExPrivateStoreBuyingResult;
import com.l2jmobius.gameserver.network.serverpackets.ExPrivateStoreSellingResult;
import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.util.Util;
@ -866,6 +868,8 @@ public class TradeList
msg.addItemName(newItem);
player.sendPacket(msg);
}
_owner.sendPacket(new ExPrivateStoreSellingResult(item.getObjectId(), item.getCount(), player.getAppearance().getVisibleName()));
}
// Send inventory update packet
@ -1044,6 +1048,8 @@ public class TradeList
msg.addItemName(newItem);
player.sendPacket(msg);
}
_owner.sendPacket(new ExPrivateStoreBuyingResult(item.getObjectId(), item.getCount(), player.getAppearance().getVisibleName()));
}
if (totalPrice > 0)

View File

@ -66,6 +66,7 @@ import com.l2jmobius.gameserver.data.xml.impl.AdminData;
import com.l2jmobius.gameserver.data.xml.impl.ClassListData;
import com.l2jmobius.gameserver.data.xml.impl.ExperienceData;
import com.l2jmobius.gameserver.data.xml.impl.HennaData;
import com.l2jmobius.gameserver.data.xml.impl.MonsterBookData;
import com.l2jmobius.gameserver.data.xml.impl.NpcData;
import com.l2jmobius.gameserver.data.xml.impl.PetDataTable;
import com.l2jmobius.gameserver.data.xml.impl.PlayerTemplateData;
@ -211,6 +212,8 @@ import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerPvPKi
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerReputationChanged;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerSubChange;
import com.l2jmobius.gameserver.model.holders.ItemHolder;
import com.l2jmobius.gameserver.model.holders.MonsterBookCardHolder;
import com.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder;
import com.l2jmobius.gameserver.model.holders.MovieHolder;
import com.l2jmobius.gameserver.model.holders.PlayerEventHolder;
import com.l2jmobius.gameserver.model.holders.SellBuffHolder;
@ -335,6 +338,9 @@ import com.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
import com.l2jmobius.gameserver.network.serverpackets.ability.ExAcquireAPSkillList;
import com.l2jmobius.gameserver.network.serverpackets.commission.ExResponseCommissionInfo;
import com.l2jmobius.gameserver.network.serverpackets.friend.L2FriendStatus;
import com.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBook;
import com.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBookCloseForce;
import com.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBookRewardIcon;
import com.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
import com.l2jmobius.gameserver.util.Broadcast;
import com.l2jmobius.gameserver.util.EnumIntBitmask;
@ -850,6 +856,10 @@ public final class L2PcInstance extends L2Playable
// Character UI
private UIKeysSettings _uiKeySettings;
// Monster Book variables
private final static String MONSTER_BOOK_KILLS_VAR = "MONSTER_BOOK_KILLS_";
private final static String MONSTER_BOOK_LEVEL_VAR = "MONSTER_BOOK_LEVEL_";
// Save responder name for log it
private String _lastPetitionGmName = null;
@ -14015,7 +14025,7 @@ public final class L2PcInstance extends L2Playable
if ((currentPoints + count) < faction.getPointsOfLevel(faction.getLevelCount() - 1))
{
getVariables().set(faction.toString(), currentPoints + count);
sendMessage("You obtained " + count + " Faction Points for " + faction.toString().toLowerCase().replace("_", " ") + ".");
sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_OBTAINED_S1_FACTION_POINTS_FOR_S2).addInt(count).addFactionName(faction.getId()));
}
else
{
@ -14024,7 +14034,46 @@ public final class L2PcInstance extends L2Playable
}
if (oldLevel < getFactionLevel(faction))
{
sendMessage("The Faction Level of " + faction.toString().toLowerCase().replace("_", " ") + " has increased. Open the Factions window to check.");
sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THE_FACTION_LEVEL_OF_S1_HAS_INCREASED_OPEN_THE_FACTIONS_WINDOW_TO_CHECK).addFactionName(faction.getId()));
}
}
public int getMonsterBookKillCount(int cardId)
{
return getVariables().getInt(MONSTER_BOOK_KILLS_VAR + cardId, 0);
}
public int getMonsterBookRewardLevel(int cardId)
{
return getVariables().getInt(MONSTER_BOOK_LEVEL_VAR + cardId, 0);
}
public void updateMonsterBook(MonsterBookCardHolder card)
{
final int killCount = getMonsterBookKillCount(card.getId());
if (killCount < card.getReward(3).getKills()) // no point adding kills when player has reached max
{
getVariables().set(MONSTER_BOOK_KILLS_VAR + card.getId(), killCount + 1);
sendPacket(new ExMonsterBookCloseForce()); // in case it is open
final int rewardLevel = getMonsterBookRewardLevel(card.getId());
if ((getMonsterBookKillCount(card.getId()) >= card.getReward(rewardLevel).getKills()) && (rewardLevel < 4)) // make sure player can be rewarded
{
sendPacket(new ExMonsterBookRewardIcon());
}
}
}
public void rewardMonsterBook(int cardId)
{
final int rewardLevel = getMonsterBookRewardLevel(cardId);
final MonsterBookCardHolder card = MonsterBookData.getInstance().getMonsterBookCardById(cardId);
final MonsterBookRewardHolder reward = card.getReward(rewardLevel);
if ((getMonsterBookKillCount(cardId) >= reward.getKills()) && (rewardLevel < 4)) // make sure player can be rewarded
{
getVariables().set(MONSTER_BOOK_LEVEL_VAR + cardId, rewardLevel + 1);
addExpAndSp(reward.getExp(), reward.getSp());
addFactionPoints(card.getFaction(), reward.getPoints());
sendPacket(new ExMonsterBook(this));
}
}

View File

@ -298,7 +298,7 @@ public class PcStat extends PlayableStat
{
getActiveChar().sendPacket(new ExAcquireAPSkillList(getActiveChar()));
}
getActiveChar().sendPacket(new ExOneDayReceiveRewardList(getActiveChar()));
getActiveChar().sendPacket(new ExOneDayReceiveRewardList(getActiveChar(), true));
return levelIncreased;
}

View File

@ -0,0 +1,65 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.model.holders;
import java.util.ArrayList;
import java.util.List;
import com.l2jmobius.gameserver.enums.Faction;
/**
* @author Mobius
*/
public class MonsterBookCardHolder
{
private final int _id;
private final int _monsterId;
private final Faction _faction;
private final List<MonsterBookRewardHolder> _rewards = new ArrayList<>(4);
public MonsterBookCardHolder(int id, int monsterId, Faction faction)
{
_id = id;
_monsterId = monsterId;
_faction = faction;
}
public int getId()
{
return _id;
}
public int getMonsterId()
{
return _monsterId;
}
public Faction getFaction()
{
return _faction;
}
public MonsterBookRewardHolder getReward(int level)
{
return _rewards.get(level);
}
public void addReward(MonsterBookRewardHolder reward)
{
_rewards.add(reward);
}
}

View File

@ -0,0 +1,56 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.model.holders;
/**
* @author Mobius
*/
public class MonsterBookRewardHolder
{
private final int _kills;
private final long _exp;
private final int _sp;
private final int _points;
public MonsterBookRewardHolder(int kills, long exp, int sp, int points)
{
_kills = kills;
_exp = exp;
_sp = sp;
_points = points;
}
public int getKills()
{
return _kills;
}
public long getExp()
{
return _exp;
}
public int getSp()
{
return _sp;
}
public int getPoints()
{
return _points;
}
}

View File

@ -74,6 +74,9 @@ import com.l2jmobius.gameserver.network.clientpackets.mentoring.RequestMenteeAdd
import com.l2jmobius.gameserver.network.clientpackets.mentoring.RequestMenteeWaitingList;
import com.l2jmobius.gameserver.network.clientpackets.mentoring.RequestMentorCancel;
import com.l2jmobius.gameserver.network.clientpackets.mentoring.RequestMentorList;
import com.l2jmobius.gameserver.network.clientpackets.monsterbook.RequestMonsterBookClose;
import com.l2jmobius.gameserver.network.clientpackets.monsterbook.RequestMonsterBookOpen;
import com.l2jmobius.gameserver.network.clientpackets.monsterbook.RequestMonsterBookReward;
import com.l2jmobius.gameserver.network.clientpackets.pledgebonus.RequestPledgeBonusOpen;
import com.l2jmobius.gameserver.network.clientpackets.pledgebonus.RequestPledgeBonusReward;
import com.l2jmobius.gameserver.network.clientpackets.pledgebonus.RequestPledgeBonusRewardList;
@ -82,6 +85,8 @@ import com.l2jmobius.gameserver.network.clientpackets.primeshop.RequestBRGamePoi
import com.l2jmobius.gameserver.network.clientpackets.primeshop.RequestBRProductInfo;
import com.l2jmobius.gameserver.network.clientpackets.primeshop.RequestBRProductList;
import com.l2jmobius.gameserver.network.clientpackets.primeshop.RequestBRRecentProductList;
import com.l2jmobius.gameserver.network.clientpackets.raidbossinfo.RequestRaidBossSpawnInfo;
import com.l2jmobius.gameserver.network.clientpackets.raidbossinfo.RequestRaidServerInfo;
import com.l2jmobius.gameserver.network.clientpackets.sayune.RequestFlyMove;
import com.l2jmobius.gameserver.network.clientpackets.sayune.RequestFlyMoveStart;
import com.l2jmobius.gameserver.network.clientpackets.shuttle.CannotMoveAnymoreInShuttle;
@ -362,22 +367,31 @@ public enum ExIncomingPackets implements IIncomingPackets<L2GameClient>
EX_CANCEL_MATCH_ARENA(0x114, null, ConnectionState.IN_GAME),
EX_CHANGE_CLASS_ARENA(0x115, null, ConnectionState.IN_GAME),
EX_CONFIRM_CLASS_ARENA(0x116, null, ConnectionState.IN_GAME),
// TODO: Check Helios updates
REQUEST_OPEN_DECO_NPCUI(0x117, null, ConnectionState.IN_GAME),
REQUEST_CHECK_AGIT_DECO_AVAILABILITY(0x118, null, ConnectionState.IN_GAME),
REQUEST_USER_FACTION_INFO(0x119, RequestUserFactionInfo::new, ConnectionState.IN_GAME),
EX_EXIT_ARENA(0x11A, null, ConnectionState.IN_GAME),
REQUEST_EVENT_BALTHUS_TOKEN(0x11B, null, ConnectionState.IN_GAME),
REQUEST_PARTY_MATCHING_HISTORY(0x11C, null, ConnectionState.IN_GAME),
REQUEST_TODO_LIST(0x11D, RequestTodoList::new, ConnectionState.IN_GAME),
REQUEST_TODO_LIST_HTML(0x11E, null, ConnectionState.IN_GAME),
REQUEST_ONE_DAY_REWARD_RECEIVE(0x11F, RequestOneDayRewardReceive::new, ConnectionState.IN_GAME),
REQUEST_QUEUE_TICKET(0x120, null, ConnectionState.IN_GAME),
REQUEST_PLEDGE_BONUS_OPEN(0x121, RequestPledgeBonusOpen::new, ConnectionState.IN_GAME),
REQUEST_PLEDGE_BONUS_REWARD_LIST(0x122, RequestPledgeBonusRewardList::new, ConnectionState.IN_GAME),
REQUEST_PLEDGE_BONUS_REWARD(0x123, RequestPledgeBonusReward::new, ConnectionState.IN_GAME),
REQUEST_SSO_AUTHN_TOKEN(0x124, null, ConnectionState.IN_GAME),
REQUEST_QUEUE_TICKET_LOGIN(0x125, null, ConnectionState.IN_GAME),
REQUEST_BLOCK_MEMO_INFO(0x126, null, ConnectionState.IN_GAME),
REQUEST_TRY_EN_SOUL_EXTRACTION(0x127, null, ConnectionState.IN_GAME);
EX_ARENA_CUSTOM_NOTIFICATION(0x11D, null, ConnectionState.IN_GAME),
REQUEST_TODO_LIST(0x11E, RequestTodoList::new, ConnectionState.IN_GAME),
REQUEST_TODO_LIST_HTML(0x11F, null, ConnectionState.IN_GAME),
REQUEST_ONE_DAY_REWARD_RECEIVE(0x120, RequestOneDayRewardReceive::new, ConnectionState.IN_GAME),
REQUEST_QUEUE_TICKET(0x121, null, ConnectionState.IN_GAME),
REQUEST_PLEDGE_BONUS_OPEN(0x122, RequestPledgeBonusOpen::new, ConnectionState.IN_GAME),
REQUEST_PLEDGE_BONUS_REWARD_LIST(0x123, RequestPledgeBonusRewardList::new, ConnectionState.IN_GAME),
REQUEST_PLEDGE_BONUS_REWARD(0x124, RequestPledgeBonusReward::new, ConnectionState.IN_GAME),
REQUEST_SSO_AUTHN_TOKEN(0x125, null, ConnectionState.IN_GAME),
REQUEST_QUEUE_TICKET_LOGIN(0x126, null, ConnectionState.IN_GAME),
REQUEST_BLOCK_MEMO_INFO(0x127, null, ConnectionState.IN_GAME),
REQUEST_TRY_EN_SOUL_EXTRACTION(0x128, null, ConnectionState.IN_GAME),
REQUEST_RAIDBOSS_SPAWN_INFO(0x129, RequestRaidBossSpawnInfo::new, ConnectionState.IN_GAME),
REQUEST_RAID_SERVER_INFO(0x12A, RequestRaidServerInfo::new, ConnectionState.IN_GAME),
REQUEST_SHOW_AGIT_SIEGE_INFO(0x12B, null, ConnectionState.IN_GAME),
REQUEST_ITEM_AUCTION_STATUS(0x12C, null, ConnectionState.IN_GAME),
REQUEST_MONSTER_BOOK_OPEN(0x12D, RequestMonsterBookOpen::new, ConnectionState.IN_GAME),
REQUEST_MONSTER_BOOK_CLOSE(0x12E, RequestMonsterBookClose::new, ConnectionState.IN_GAME),
REQUEST_MONSTER_BOOK_REWARD(0x12F, RequestMonsterBookReward::new, ConnectionState.IN_GAME);
public static final ExIncomingPackets[] PACKET_ARRAY;

View File

@ -692,28 +692,42 @@ public enum OutgoingPackets
EX_CLOSING_ARENA(0xFE, 0x19B),
EX_CLOSED_ARENA(0xFE, 0x19C),
EX_DIE_IN_ARENA(0xFE, 0x19D),
EX_ARENA_DASHBOARD(0xFE, 0x19E),
EX_ARENA_UPDATE_EQUIP_SLOT(0xFE, 0x19F),
EX_ARENA_KILL_INFO(0xFE, 0x1A0),
EX_EXIT_ARENA(0xFE, 0x1A1),
EX_BALTHUS_EVENT(0xFE, 0x1A2),
EX_BALTHUS_EVENT_JACKPOT_USER(0xFE, 0x1A3),
EX_PARTY_MATCHING_ROOM_HISTORY(0xFE, 0x1A4),
EX_AI_CONTENT_UI_EVENT(0xFE, 0x1A5),
EX_ONE_DAY_RECEIVE_REWARD_LIST(0xFE, 0x1A7),
EX_CONNECTED_TIME_AND_GETTABLE_REWARD(0xFE, 0x1A8),
EX_TODO_LIST_RECOMMAND(0xFE, 0x1A9),
EX_TODO_LIST_INZONE(0xFE, 0x1AA),
EX_TODO_LIST_HTML(0xFE, 0x1AB),
EX_QUEUE_TICKET(0xFE, 0x1AC),
EX_PLEDGE_BONUS_OPEN(0xFE, 0x1AD),
EX_PLEDGE_BONUS_LIST(0xFE, 0x1AE),
EX_PLEDGE_BONUS_MARK_RESET(0xFE, 0x1AF),
EX_PLEDGE_BONUS_UPDATE(0xFE, 0x1B0),
EX_SSO_AUTH_TOKEN(0xFE, 0x1B1),
EX_QUEUE_TICKET_LOGIN(0xFE, 0x1B2),
EX_ENSOUL_EXTRACTION_SHOW(0xFE, 0x1B3),
EX_ENSOUL_EXTRACTION_RESULT(0xFE, 0x1B4);
EX_ARENA_DASHBOARD(0xFE, 0x19F),
EX_ARENA_UPDATE_EQUIP_SLOT(0xFE, 0x1A0),
EX_ARENA_KILL_INFO(0xFE, 0x1A1),
EX_EXIT_ARENA(0xFE, 0x1A2),
EX_BALTHUS_EVENT(0xFE, 0x1A3),
EX_BALTHUS_EVENT_JACKPOT_USER(0xFE, 0x1A4),
EX_PARTY_MATCHING_ROOM_HISTORY(0xFE, 0x1A5),
EX_AI_CONTENT_UI_EVENT(0xFE, 0x1A6),
EX_ONE_DAY_RECEIVE_REWARD_LIST(0xFE, 0x1A8),
EX_CONNECTED_TIME_AND_GETTABLE_REWARD(0xFE, 0x1A9),
EX_TODO_LIST_RECOMMAND(0xFE, 0x1AA),
EX_TODO_LIST_INZONE(0xFE, 0x1AB),
EX_TODO_LIST_HTML(0xFE, 0x1AC),
EX_QUEUE_TICKET(0xFE, 0x1AD),
EX_PLEDGE_BONUS_OPEN(0xFE, 0x1AE),
EX_PLEDGE_BONUS_LIST(0xFE, 0x1AF),
EX_PLEDGE_BONUS_MARK_RESET(0xFE, 0x1B0),
EX_PLEDGE_BONUS_UPDATE(0xFE, 0x1B1),
EX_SSO_AUTH_TOKEN(0xFE, 0x1B2),
EX_QUEUE_TICKET_LOGIN(0xFE, 0x1B3),
EX_ENSOUL_EXTRACTION_SHOW(0xFE, 0x1B4),
EX_ENSOUL_EXTRACTION_RESULT(0xFE, 0x1B5),
EX_FIELD_EVENT_STEP(0xFE, 0x1B6),
EX_FIELD_EVENT_POINT(0xFE, 0x1B7),
EX_FIELD_EVENT_EFFECT(0xFE, 0x1B8),
EX_RAID_BOSS_SPAWN_INFO(0xFE, 0x1B9),
EX_RAID_SERVER_INFO(0xFE, 0x1BA),
EX_SHOW_AGIT_SIEGE_INFO(0xFE, 0x1BB),
EX_ITEM_ACTION_STATUS(0xFE, 0x1BC),
EX_MONSTER_BOOK(0xFE, 0x1BD),
EX_MONSTER_BOOK_REWARD_ICON(0xFE, 0x1BE),
EX_MONSTER_BOOK_REWARD_FACTION_UI(0xFE, 0x1BF),
EX_MONSTER_BOOK_OPEN_RESULT(0xFE, 0x1C0),
EX_MONSTER_BOOK_CLOSE_FORCE(0xFE, 0x1C1),
EX_PRIVATE_STORE_BUYING_RESULT(0xFE, 0x1C5),
EX_PRIVATE_STORE_SELLING_RESULT(0xFE, 0x1C6);
private final int _id1;
private final int _id2;

View File

@ -12373,7 +12373,7 @@ public final class SystemMessageId
@ClientString(id = 4355, message = "Failed to apply the Soul Crystal effect because of abnormal circumstances.")
public static SystemMessageId FAILED_TO_APPLY_THE_SOUL_CRYSTAL_EFFECT_BECAUSE_OF_ABNORMAL_CIRCUMSTANCES;
@ClientString(id = 4356, message = "There are no items that can be searched byn($s1).")
@ClientString(id = 4356, message = "There are no items that can be searched byn<$s1>.")
public static SystemMessageId THERE_ARE_NO_ITEMS_THAT_CAN_BE_SEARCHED_BY_N_S1;
@ClientString(id = 4357, message = "There are no items that can be traded.")
@ -12541,6 +12541,201 @@ public final class SystemMessageId
@ClientString(id = 4411, message = "Macros consisting of chat messages only cannot be used automatically.")
public static SystemMessageId MACROS_CONSISTING_OF_CHAT_MESSAGES_ONLY_CANNOT_BE_USED_AUTOMATICALLY;
@ClientString(id = 4412, message = "Send $s1")
public static SystemMessageId SEND_S1;
@ClientString(id = 4413, message = "Congratulations. Compounding was successful and you obtained $s2 of $s1.")
public static SystemMessageId CONGRATULATIONS_COMPOUNDING_WAS_SUCCESSFUL_AND_YOU_OBTAINED_S2_OF_S1;
@ClientString(id = 4414, message = "Compounding failed and you obtained $s2 of $s1.")
public static SystemMessageId COMPOUNDING_FAILED_AND_YOU_OBTAINED_S2_OF_S1;
@ClientString(id = 4415, message = "A remote control program has been detected. Please keep in mind that your game data may be compromised while using the program.")
public static SystemMessageId A_REMOTE_CONTROL_PROGRAM_HAS_BEEN_DETECTED_PLEASE_KEEP_IN_MIND_THAT_YOUR_GAME_DATA_MAY_BE_COMPROMISED_WHILE_USING_THE_PROGRAM;
@ClientString(id = 4416, message = "You have to register the items in order.")
public static SystemMessageId YOU_HAVE_TO_REGISTER_THE_ITEMS_IN_ORDER;
@ClientString(id = 4417, message = "You obtained $s2 of $s1 after compounding.")
public static SystemMessageId YOU_OBTAINED_S2_OF_S1_AFTER_COMPOUNDING;
@ClientString(id = 4418, message = "You don't have enough space in your inventory to continue with compounding. You need more than 2 empty slots.")
public static SystemMessageId YOU_DON_T_HAVE_ENOUGH_SPACE_IN_YOUR_INVENTORY_TO_CONTINUE_WITH_COMPOUNDING_YOU_NEED_MORE_THAN_2_EMPTY_SLOTS;
@ClientString(id = 4419, message = "The auction for $s1 will begin in 24 hours.")
public static SystemMessageId THE_AUCTION_FOR_S1_WILL_BEGIN_IN_24_HOURS;
@ClientString(id = 4420, message = "The auction for $s1 is in progress.")
public static SystemMessageId THE_AUCTION_FOR_S1_IS_IN_PROGRESS;
@ClientString(id = 4421, message = "$s1 is sold for $s2 Adena.")
public static SystemMessageId S1_IS_SOLD_FOR_S2_ADENA;
@ClientString(id = 4422, message = "Processing failed due to death of a character. Resurrect first and try again.")
public static SystemMessageId PROCESSING_FAILED_DUE_TO_DEATH_OF_A_CHARACTER_RESURRECT_FIRST_AND_TRY_AGAIN;
@ClientString(id = 4423, message = "The Faction Level of $s1 has increased. Open the Factions window to check.")
public static SystemMessageId THE_FACTION_LEVEL_OF_S1_HAS_INCREASED_OPEN_THE_FACTIONS_WINDOW_TO_CHECK;
@ClientString(id = 4424, message = "When you compound, you may lose some or all of the ingredients. Continue?")
public static SystemMessageId WHEN_YOU_COMPOUND_YOU_MAY_LOSE_SOME_OR_ALL_OF_THE_INGREDIENTS_CONTINUE;
@ClientString(id = 4425, message = "$s1 Raid Monster")
public static SystemMessageId S1_RAID_MONSTER;
@ClientString(id = 4426, message = "Completed all objectives of the $s2 Monster Collection level $s1.")
public static SystemMessageId COMPLETED_ALL_OBJECTIVES_OF_THE_S2_MONSTER_COLLECTION_LEVEL_S1;
@ClientString(id = 4427, message = "Completed all levels of the $s1 Monster Collection.")
public static SystemMessageId COMPLETED_ALL_LEVELS_OF_THE_S1_MONSTER_COLLECTION;
@ClientString(id = 4428, message = "Only characters of level $s1 or higher are eligible for rewards.")
public static SystemMessageId ONLY_CHARACTERS_OF_LEVEL_S1_OR_HIGHER_ARE_ELIGIBLE_FOR_REWARDS;
@ClientString(id = 4429, message = "No rewards can be obtained while changing class.")
public static SystemMessageId NO_REWARDS_CAN_BE_OBTAINED_WHILE_CHANGING_CLASS;
@ClientString(id = 4430, message = "You cannot abandon missions in the area while defending the Keucereus Alliance Base.")
public static SystemMessageId YOU_CANNOT_ABANDON_MISSIONS_IN_THE_AREA_WHILE_DEFENDING_THE_KEUCEREUS_ALLIANCE_BASE;
@ClientString(id = 4431, message = "Location information is needed to show this.")
public static SystemMessageId LOCATION_INFORMATION_IS_NEEDED_TO_SHOW_THIS;
@ClientString(id = 4432, message = "Keucereus Defense - In progress")
public static SystemMessageId KEUCEREUS_DEFENSE_IN_PROGRESS;
@ClientString(id = 4433, message = "Keucereus Defense - Won")
public static SystemMessageId KEUCEREUS_DEFENSE_WON;
@ClientString(id = 4434, message = "Keucereus Defense - Lost")
public static SystemMessageId KEUCEREUS_DEFENSE_LOST;
@ClientString(id = 4435, message = "Keucereus Defense - Invasion declared")
public static SystemMessageId KEUCEREUS_DEFENSE_INVASION_DECLARED;
@ClientString(id = 4436, message = "$s1 Territory")
public static SystemMessageId S1_TERRITORY;
@ClientString(id = 4437, message = "$s1 appeared - Click it to track down.")
public static SystemMessageId S1_APPEARED_CLICK_IT_TO_TRACK_DOWN;
@ClientString(id = 4438, message = "Nothing has been recorded in the Monster Collection.")
public static SystemMessageId NOTHING_HAS_BEEN_RECORDED_IN_THE_MONSTER_COLLECTION;
@ClientString(id = 4439, message = "Ka...Kain?")
public static SystemMessageId KA_KAIN;
@ClientString(id = 4440, message = "We could defeat Kain van Halter...ntogether.")
public static SystemMessageId WE_COULD_DEFEAT_KAIN_VAN_HALTER_NTOGETHER;
@ClientString(id = 4441, message = "Now it's time to show our strength.nLet's go to the Messiah Castle.")
public static SystemMessageId NOW_IT_S_TIME_TO_SHOW_OUR_STRENGTH_NLET_S_GO_TO_THE_MESSIAH_CASTLE;
@ClientString(id = 4442, message = "We had to retreat... to live to fight another day.")
public static SystemMessageId WE_HAD_TO_RETREAT_TO_LIVE_TO_FIGHT_ANOTHER_DAY;
@ClientString(id = 4443, message = "Let's sharpen our blades until we return to Gracia.")
public static SystemMessageId LET_S_SHARPEN_OUR_BLADES_UNTIL_WE_RETURN_TO_GRACIA;
@ClientString(id = 4444, message = "The mission is a success. Fall back!")
public static SystemMessageId THE_MISSION_IS_A_SUCCESS_FALL_BACK;
@ClientString(id = 4445, message = "Where in the world was the castle-guarding apostle?")
public static SystemMessageId WHERE_IN_THE_WORLD_WAS_THE_CASTLE_GUARDING_APOSTLE;
@ClientString(id = 4446, message = "Leona Blackbird...Your days are numbered...")
public static SystemMessageId LEONA_BLACKBIRD_YOUR_DAYS_ARE_NUMBERED;
@ClientString(id = 4447, message = "Now is the time! Charge into the courtyard!")
public static SystemMessageId NOW_IS_THE_TIME_CHARGE_INTO_THE_COURTYARD;
@ClientString(id = 4448, message = "Why is there no one here?")
public static SystemMessageId WHY_IS_THERE_NO_ONE_HERE;
@ClientString(id = 4449, message = "Gis...Giselle?")
public static SystemMessageId GIS_GISELLE;
@ClientString(id = 4450, message = "All stages are completed.")
public static SystemMessageId ALL_STAGES_ARE_COMPLETED;
@ClientString(id = 4451, message = "You obtained $s1 Faction Points for $s2")
public static SystemMessageId YOU_OBTAINED_S1_FACTION_POINTS_FOR_S2;
@ClientString(id = 4452, message = "Current location: $s1/$s2/$s3 (Messiah Castle)")
public static SystemMessageId CURRENT_LOCATION_S1_S2_S3_MESSIAH_CASTLE;
@ClientString(id = 4453, message = "$c1 cannot perform the Couple Action as the person is using a skill.")
public static SystemMessageId C1_CANNOT_PERFORM_THE_COUPLE_ACTION_AS_THE_PERSON_IS_USING_A_SKILL;
@ClientString(id = 4454, message = "$c1 cannot perform the Couple Action as the person is using Sayunes.")
public static SystemMessageId C1_CANNOT_PERFORM_THE_COUPLE_ACTION_AS_THE_PERSON_IS_USING_SAYUNES;
@ClientString(id = 4455, message = "You cannot attack other players in this area.")
public static SystemMessageId YOU_CANNOT_ATTACK_OTHER_PLAYERS_IN_THIS_AREA;
@ClientString(id = 4456, message = "You cannot attack players who are in a non-combat area.")
public static SystemMessageId YOU_CANNOT_ATTACK_PLAYERS_WHO_ARE_IN_A_NON_COMBAT_AREA;
@ClientString(id = 4457, message = "The items sent can be retrieved only through an Alchemist or Dimensional Merchant on the same server. Are you sure you want to continue?")
public static SystemMessageId THE_ITEMS_SENT_CAN_BE_RETRIEVED_ONLY_THROUGH_AN_ALCHEMIST_OR_DIMENSIONAL_MERCHANT_ON_THE_SAME_SERVER_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE;
@ClientString(id = 4458, message = "Pull yourself together, Kain! Are you trying to get us killed?")
public static SystemMessageId PULL_YOURSELF_TOGETHER_KAIN_ARE_YOU_TRYING_TO_GET_US_KILLED;
@ClientString(id = 4459, message = "You have reputations to keep, Karla. What a shame.")
public static SystemMessageId YOU_HAVE_REPUTATIONS_TO_KEEP_KARLA_WHAT_A_SHAME;
@ClientString(id = 4460, message = "This man is no longer our ally.")
public static SystemMessageId THIS_MAN_IS_NO_LONGER_OUR_ALLY;
@ClientString(id = 4461, message = "Get back, everyone! You might all get killed the next time!")
public static SystemMessageId GET_BACK_EVERYONE_YOU_MIGHT_ALL_GET_KILLED_THE_NEXT_TIME;
@ClientString(id = 4462, message = "You exceeded the limit and cannot complete the task.")
public static SystemMessageId YOU_EXCEEDED_THE_LIMIT_AND_CANNOT_COMPLETE_THE_TASK;
@ClientString(id = 4463, message = "Before the scheduled maintenance on $s1.$s2.$s3")
public static SystemMessageId BEFORE_THE_SCHEDULED_MAINTENANCE_ON_S1_S2_S3;
@ClientString(id = 4464, message = "After the scheduled maintenance on $s1.$s2.$s3")
public static SystemMessageId AFTER_THE_SCHEDULED_MAINTENANCE_ON_S1_S2_S3;
@ClientString(id = 4465, message = "From $s1 $s2 to $s3")
public static SystemMessageId FROM_S1_S2_TO_S3;
@ClientString(id = 4466, message = "$s1 day(s) $s2 hour(s) $s3 minute(s)")
public static SystemMessageId S1_DAY_S_S2_HOUR_S_S3_MINUTE_S;
@ClientString(id = 4467, message = "$s1.$s2.$s3")
public static SystemMessageId S1_S2_S3;
@ClientString(id = 4468, message = "Task cannot be completed: Your selling price exceeds the Adena limit.")
public static SystemMessageId TASK_CANNOT_BE_COMPLETED_YOUR_SELLING_PRICE_EXCEEDS_THE_ADENA_LIMIT;
@ClientString(id = 4469, message = "Task cannot be completed: Your balance exceeds the Adena limit.")
public static SystemMessageId TASK_CANNOT_BE_COMPLETED_YOUR_BALANCE_EXCEEDS_THE_ADENA_LIMIT;
@ClientString(id = 4470, message = "Task cannot be completed: Your balance after the transaction exceeds the Adena limit.")
public static SystemMessageId TASK_CANNOT_BE_COMPLETED_YOUR_BALANCE_AFTER_THE_TRANSACTION_EXCEEDS_THE_ADENA_LIMIT;
@ClientString(id = 4471, message = "The item was upgraded successfully and you obtained a $s1.")
public static SystemMessageId THE_ITEM_WAS_UPGRADED_SUCCESSFULLY_AND_YOU_OBTAINED_A_S1;
@ClientString(id = 4472, message = "$c1 has succeeded in upgrading equipment and obtained a $s2.")
public static SystemMessageId C1_HAS_SUCCEEDED_IN_UPGRADING_EQUIPMENT_AND_OBTAINED_A_S2;
@ClientString(id = 4473, message = "Failed the operation.")
public static SystemMessageId FAILED_THE_OPERATION;
@ClientString(id = 4474, message = "Failed because the target item does not exist.")
public static SystemMessageId FAILED_BECAUSE_THE_TARGET_ITEM_DOES_NOT_EXIST;
@ClientString(id = 4475, message = "Failed because there are not enough ingredients.")
public static SystemMessageId FAILED_BECAUSE_THERE_ARE_NOT_ENOUGH_INGREDIENTS;
@ClientString(id = 4476, message = "Failed because there's not enough Adena.")
public static SystemMessageId FAILED_BECAUSE_THERE_S_NOT_ENOUGH_ADENA;
@ClientString(id = 4601, message = "- Great P. Def. and skillful Shield Defense(br)- Increased P. Def. for the whole party(br)- Protect party members")
public static SystemMessageId GREAT_P_DEF_AND_SKILLFUL_SHIELD_DEFENSE_BR_INCREASED_P_DEF_FOR_THE_WHOLE_PARTY_BR_PROTECT_PARTY_MEMBERS;
@ -13636,8 +13831,11 @@ public final class SystemMessageId
@ClientString(id = 5331, message = "Your account has been restricted for violating the EULA, RoC and/or the User Agreement. When a user violates the terms of the User Agreement, the company can impose a restriction on their account. For more information, please visit the Support Center on the NCSOFT website (https://support.lineage2.com).")
public static SystemMessageId YOUR_ACCOUNT_HAS_BEEN_RESTRICTED_FOR_VIOLATING_THE_EULA_ROC_AND_OR_THE_USER_AGREEMENT_WHEN_A_USER_VIOLATES_THE_TERMS_OF_THE_USER_AGREEMENT_THE_COMPANY_CAN_IMPOSE_A_RESTRICTION_ON_THEIR_ACCOUNT_FOR_MORE_INFORMATION_PLEASE_VISIT_THE_SUPPORT_CENTER_ON_THE_NCSOFT_WEBSITE_HTTPS_SUPPORT_LINEAGE2_COM122;
@ClientString(id = 5332, message = "Your account has been idle for a long time. If you do not play the game for a certain period, your account will become idle. You can reactivate your account at the (font color='FFDF4C')plaync webpage ((/font)(font color='6699FF')(a action='url https://id.plaync.com/account/dormant/index')id.plaync.com/account/dormant/index(/a)(/font)(font color='FFDF4C'))(/font).")
public static SystemMessageId YOUR_ACCOUNT_HAS_BEEN_IDLE_FOR_A_LONG_TIME_IF_YOU_DO_NOT_PLAY_THE_GAME_FOR_A_CERTAIN_PERIOD_YOUR_ACCOUNT_WILL_BECOME_IDLE_YOU_CAN_REACTIVATE_YOUR_ACCOUNT_AT_THE_FONT_COLOR_FFDF4C_PLAYNC_WEBPAGE_FONT_COLOR_6699FF_A_ACTION_URL_HTTPS_ID_PLAYNC_COM_ACCOUNT_DORMANT_INDEX_ID_PLAYNC_COM_ACCOUNT_DORMANT_INDEX_FONT_COLOR_FFDF4C;
@ClientString(id = 5332, message = "Your account has been idle for a long time. If you do not play the game for a certain period, your account will become idle. You can reactivate your account at the <font color=FFDF4C>plaync webpage (</font><font color=6699FF><a action=url https://id.plaync.com/account/dormant/index>id.plaync.com/account/dormant/index</a></font><font color=FFDF4C>)</font>.")
public static SystemMessageId YOUR_ACCOUNT_HAS_BEEN_IDLE_FOR_A_LONG_TIME_IF_YOU_DO_NOT_PLAY_THE_GAME_FOR_A_CERTAIN_PERIOD_YOUR_ACCOUNT_WILL_BECOME_IDLE_YOU_CAN_REACTIVATE_YOUR_ACCOUNT_AT_THE_FONT_COLOR_FFDF4C_PLAYNC_WEBPAGE_FONT_FONT_COLOR_6699FF_A_ACTION_URL_HTTPS_ID_PLAYNC_COM_ACCOUNT_DORMANT_INDEX_ID_PLAYNC_COM_ACCOUNT_DORMANT_INDEX_A_FONT_FONT_COLOR_FFDF4C_FONT;
@ClientString(id = 5333, message = "Your account has been completely blocked due to account theft. For more information, go to the <font color=FFDF4C>plaync Homepage (</font><font color=6699FF><a action=url http://www.plaync.com>www.plaync.com</a></font><font color=FFDF4C>) and contact us via the Support Center</font>.")
public static SystemMessageId YOUR_ACCOUNT_HAS_BEEN_COMPLETELY_BLOCKED_DUE_TO_ACCOUNT_THEFT_FOR_MORE_INFORMATION_GO_TO_THE_FONT_COLOR_FFDF4C_PLAYNC_HOMEPAGE_FONT_FONT_COLOR_6699FF_A_ACTION_URL_HTTP_WWW_PLAYNC_COM_WWW_PLAYNC_COM_A_FONT_FONT_COLOR_FFDF4C_AND_CONTACT_US_VIA_THE_SUPPORT_CENTER_FONT;
@ClientString(id = 5501, message = "$s1 has been killed by $s2.")
public static SystemMessageId S1_HAS_BEEN_KILLED_BY_S2;
@ -13672,7 +13870,7 @@ public final class SystemMessageId
@ClientString(id = 5511, message = "Standing by...")
public static SystemMessageId STANDING_BY;
@ClientString(id = 5512, message = "$s1 has chosen a class.")
@ClientString(id = 5512, message = "$s1 has chosen a class. ")
public static SystemMessageId S1_HAS_CHOSEN_A_CLASS;
@ClientString(id = 5513, message = "The battle will soon begin.")
@ -13681,6 +13879,78 @@ public final class SystemMessageId
@ClientString(id = 5514, message = "Skill enhancement complete.")
public static SystemMessageId SKILL_ENHANCEMENT_COMPLETE;
@ClientString(id = 5515, message = "The selected player is in the Arena lobby and cannot be invited to the party.")
public static SystemMessageId THE_SELECTED_PLAYER_IS_IN_THE_ARENA_LOBBY_AND_CANNOT_BE_INVITED_TO_THE_PARTY;
@ClientString(id = 5516, message = "Users participating in Arena cannot be invited to a party.")
public static SystemMessageId USERS_PARTICIPATING_IN_ARENA_CANNOT_BE_INVITED_TO_A_PARTY;
@ClientString(id = 5517, message = "This function is unavailable to use in Arena.")
public static SystemMessageId THIS_FUNCTION_IS_UNAVAILABLE_TO_USE_IN_ARENA;
@ClientString(id = 5518, message = "User preparing for Arena battle cannot join a party.")
public static SystemMessageId USER_PREPARING_FOR_ARENA_BATTLE_CANNOT_JOIN_A_PARTY;
@ClientString(id = 5519, message = "The user invited to the party is preparing for Arena battle, and the invitation failed.")
public static SystemMessageId THE_USER_INVITED_TO_THE_PARTY_IS_PREPARING_FOR_ARENA_BATTLE_AND_THE_INVITATION_FAILED;
@ClientString(id = 5520, message = "You can no longer queue with that class.")
public static SystemMessageId YOU_CAN_NO_LONGER_QUEUE_WITH_THAT_CLASS;
@ClientString(id = 5521, message = "Begin matchmaking.")
public static SystemMessageId BEGIN_MATCHMAKING;
@ClientString(id = 5522, message = "Matchmaking has been canceled.")
public static SystemMessageId MATCHMAKING_HAS_BEEN_CANCELED;
@ClientString(id = 5523, message = "A match was found.")
public static SystemMessageId A_MATCH_WAS_FOUND;
@ClientString(id = 5524, message = "You are already in the queue.")
public static SystemMessageId YOU_ARE_ALREADY_IN_THE_QUEUE;
@ClientString(id = 5525, message = "Up to 2 players per class can queue.")
public static SystemMessageId UP_TO_2_PLAYERS_PER_CLASS_CAN_QUEUE;
@ClientString(id = 5526, message = "Matching will be canceled unless all the classes are confirmed within the set time.")
public static SystemMessageId MATCHING_WILL_BE_CANCELED_UNLESS_ALL_THE_CLASSES_ARE_CONFIRMED_WITHIN_THE_SET_TIME;
@ClientString(id = 5527, message = "$s1 has confirmed the class.")
public static SystemMessageId S1_HAS_CONFIRMED_THE_CLASS;
@ClientString(id = 5528, message = "Click here to enchant your skill!")
public static SystemMessageId CLICK_HERE_TO_ENCHANT_YOUR_SKILL;
@ClientString(id = 5529, message = "Enhanced the $s1 skill.")
public static SystemMessageId ENHANCED_THE_S1_SKILL;
@ClientString(id = 5530, message = "Reached the consecutive notifications limit.")
public static SystemMessageId REACHED_THE_CONSECUTIVE_NOTIFICATIONS_LIMIT;
@ClientString(id = 5531, message = "$s1 is under attack.")
public static SystemMessageId S1_IS_UNDER_ATTACK;
@ClientString(id = 5532, message = "$s1: Attacking $s2.")
public static SystemMessageId S1_ATTACKING_S2;
@ClientString(id = 5533, message = "$s1: Watch out for $s2!")
public static SystemMessageId S1_WATCH_OUT_FOR_S2;
@ClientString(id = 5534, message = "$s1: Protecting $s2.")
public static SystemMessageId S1_PROTECTING_S2;
@ClientString(id = 5535, message = "$s1: Abandoning $s2.")
public static SystemMessageId S1_ABANDONING_S2;
@ClientString(id = 5536, message = "$s1: Moving.")
public static SystemMessageId S1_MOVING;
@ClientString(id = 5537, message = "$s1: Be careful!")
public static SystemMessageId S1_BE_CAREFUL;
@ClientString(id = 5538, message = "You must be in a group to access the Group channel.")
public static SystemMessageId YOU_MUST_BE_IN_A_GROUP_TO_ACCESS_THE_GROUP_CHANNEL;
@ClientString(id = 6001, message = "The item has been successfully purchased.")
public static SystemMessageId THE_ITEM_HAS_BEEN_SUCCESSFULLY_PURCHASED2;
@ -14296,9 +14566,6 @@ public final class SystemMessageId
@ClientString(id = 6205, message = "We're upgrading our systems, and you must migrate your account to continue playing. Click (BLUE02)(u)(a href='event:here')here(/a)(/u)(/BLUE02) to log into your NC Account")
public static SystemMessageId WE_RE_UPGRADING_OUR_SYSTEMS_AND_YOU_MUST_MIGRATE_YOUR_ACCOUNT_TO_CONTINUE_PLAYING_CLICK_BLUE02_U_U_BLUE02_TO_LOG_INTO_YOUR_NC_ACCOUNT;
@ClientString(id = 6206, message = "When you add offerings, the success rate can be increased up to 100%%. Your current success rate is $s1%%. Continue?")
public static SystemMessageId WHEN_YOU_ADD_OFFERINGS_THE_SUCCESS_RATE_CAN_BE_INCREASED_UP_TO_100_YOUR_CURRENT_SUCCESS_RATE_IS_S1_CONTINUE;
@ClientString(id = 6501, message = "You cannot bookmark this location because you do not have a My Teleport Flag.")
public static SystemMessageId YOU_CANNOT_BOOKMARK_THIS_LOCATION_BECAUSE_YOU_DO_NOT_HAVE_A_MY_TELEPORT_FLAG;
@ -14419,6 +14686,9 @@ public final class SystemMessageId
@ClientString(id = 6832, message = "You cannot drop any more items in this zone. Please try again after picking up the item on the ground.")
public static SystemMessageId YOU_CANNOT_DROP_ANY_MORE_ITEMS_IN_THIS_ZONE_PLEASE_TRY_AGAIN_AFTER_PICKING_UP_THE_ITEM_ON_THE_GROUND;
@ClientString(id = 6833, message = "The character has already been blocked.")
public static SystemMessageId THE_CHARACTER_HAS_ALREADY_BEEN_BLOCKED;
@ClientString(id = 7001, message = "Cannot proceed until the current dice roll is over.")
public static SystemMessageId CANNOT_PROCEED_UNTIL_THE_CURRENT_DICE_ROLL_IS_OVER;
@ -14434,7 +14704,7 @@ public final class SystemMessageId
@ClientString(id = 7005, message = "$c1 rolled the dice and got $s2 points.")
public static SystemMessageId C1_ROLLED_THE_DICE_AND_GOT_S2_POINTS;
@ClientString(id = 7006, message = "$c1 rolled the highest with $s2 points and acquired the $s3%.")
@ClientString(id = 7006, message = "$c1 rolled the highest with $s2 points and acquired the $s3.")
public static SystemMessageId C1_ROLLED_THE_HIGHEST_WITH_S2_POINTS_AND_ACQUIRED_THE_S3;
@ClientString(id = 7007, message = "A party member is rolling the dice, so the party cannot be disbanded.")
@ -15425,7 +15695,7 @@ public final class SystemMessageId
public static SystemMessageId S1_HAS_BECOME_YOUR_STUDENT;
@ClientString(id = 7354, message = "$s1 day(s), $s2 hour(s), $s3 minute(s)")
public static SystemMessageId S1_DAY_S_S2_HOUR_S_S3_MINUTE_S;
public static SystemMessageId S1_DAY_S_S2_HOUR_S_S3_MINUTE_S_2;
@ClientString(id = 7355, message = "Your student has achieved a goal so you are sending a reward.")
public static SystemMessageId YOUR_STUDENT_HAS_ACHIEVED_A_GOAL_SO_YOU_ARE_SENDING_A_REWARD;

View File

@ -641,7 +641,7 @@ public class EnterWorld implements IClientIncomingPacket
{
activeChar.sendPacket(new ExWorldChatCnt(activeChar));
}
activeChar.sendPacket(new ExOneDayReceiveRewardList(activeChar));
activeChar.sendPacket(new ExOneDayReceiveRewardList(activeChar, true));
activeChar.sendPacket(ExConnectedTimeAndGettableReward.STATIC_PACKET);
// Handle soulshots, disable all on EnterWorld

View File

@ -24,6 +24,7 @@ import com.l2jmobius.gameserver.model.DailyMissionDataHolder;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.ExConnectedTimeAndGettableReward;
import com.l2jmobius.gameserver.network.serverpackets.dailymission.ExOneDayReceiveRewardList;
/**
@ -36,7 +37,7 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
_reward = packet.readC();
_reward = packet.readH();
return true;
}
@ -50,12 +51,13 @@ public class RequestOneDayRewardReceive implements IClientIncomingPacket
}
final Collection<DailyMissionDataHolder> reward = DailyMissionData.getInstance().getDailyMissionData(_reward);
if (reward.isEmpty())
if ((reward == null) || reward.isEmpty())
{
return;
}
reward.stream().filter(o -> o.isDisplayable(player)).forEach(r -> r.requestReward(player));
player.sendPacket(new ExOneDayReceiveRewardList(player));
player.sendPacket(new ExConnectedTimeAndGettableReward());
player.sendPacket(new ExOneDayReceiveRewardList(player, true));
}
}

View File

@ -28,14 +28,13 @@ import com.l2jmobius.gameserver.network.serverpackets.dailymission.ExOneDayRecei
public class RequestTodoList implements IClientIncomingPacket
{
private int _tab;
@SuppressWarnings("unused")
private int _showAllLevels;
private boolean _showAllLevels;
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
_tab = packet.readC(); // Daily Reward = 9, Event = 1, Instance Zone = 2
_showAllLevels = packet.readC(); // Disabled = 0, Enabled = 1
_showAllLevels = packet.readC() == 1; // Disabled = 0, Enabled = 1
return true;
}
@ -62,7 +61,7 @@ public class RequestTodoList implements IClientIncomingPacket
// }
case 9:
{
player.sendPacket(new ExOneDayReceiveRewardList(player));
player.sendPacket(new ExOneDayReceiveRewardList(player, _showAllLevels));
break;
}
}

View File

@ -0,0 +1,40 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.network.clientpackets.monsterbook;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBookCloseForce;
/**
* @author Mobius
*/
public class RequestMonsterBookClose implements IClientIncomingPacket
{
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
return true;
}
@Override
public void run(L2GameClient client)
{
client.sendPacket(new ExMonsterBookCloseForce());
}
}

View File

@ -0,0 +1,42 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.network.clientpackets.monsterbook;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBook;
import com.l2jmobius.gameserver.network.serverpackets.monsterbook.ExMonsterBookOpenResult;
/**
* @author Mobius
*/
public class RequestMonsterBookOpen implements IClientIncomingPacket
{
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
return true;
}
@Override
public void run(L2GameClient client)
{
client.sendPacket(new ExMonsterBookOpenResult(true));
client.sendPacket(new ExMonsterBook(client.getActiveChar()));
}
}

View File

@ -0,0 +1,42 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.network.clientpackets.monsterbook;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
/**
* @author Mobius
*/
public class RequestMonsterBookReward implements IClientIncomingPacket
{
private int _id;
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
_id = packet.readH();
return true;
}
@Override
public void run(L2GameClient client)
{
client.getActiveChar().rewardMonsterBook(_id);
}
}

View File

@ -0,0 +1,65 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.network.clientpackets.raidbossinfo;
import java.util.ArrayList;
import java.util.List;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.instancemanager.DBSpawnManager;
import com.l2jmobius.gameserver.instancemanager.DBSpawnManager.DBStatusType;
import com.l2jmobius.gameserver.instancemanager.GrandBossManager;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.raidbossinfo.ExRaidBossSpawnInfo;
/**
* @author Mobius
*/
public class RequestRaidBossSpawnInfo implements IClientIncomingPacket
{
private final List<Integer> _bossIds = new ArrayList<>();
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
final int count = packet.readD();
for (int i = 0; i < count; i++)
{
final int bossId = packet.readD();
if (DBSpawnManager.getInstance().getNpcStatusId(bossId).equals(DBStatusType.ALIVE))
{
_bossIds.add(bossId);
}
else if (GrandBossManager.getInstance().getBossStatus(bossId) == 0)
{
_bossIds.add(bossId);
}
/*
* else { String message = "Could not find spawn info for boss " + bossId; final L2NpcTemplate template = NpcData.getInstance().getTemplate(bossId); if (template != null) { message += " - " + template.getName() + "."; } else { message += " - NPC template not found."; }
* System.out.println(message); }
*/
}
return true;
}
@Override
public void run(L2GameClient client)
{
client.sendPacket(new ExRaidBossSpawnInfo(_bossIds));
}
}

View File

@ -0,0 +1,39 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.network.clientpackets.raidbossinfo;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
/**
* @author Mobius
*/
public class RequestRaidServerInfo implements IClientIncomingPacket
{
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
// System.out.println("RequestRaidServerInfo");
return true;
}
@Override
public void run(L2GameClient client)
{
}
}

View File

@ -78,6 +78,7 @@ public abstract class AbstractMessagePacket<T extends AbstractMessagePacket<?>>
}
}
private static final byte TYPE_FACTION_NAME = 24; // c(short), faction id.
// id 22 d (shared with 1-3,17,22
// id 21 h
// id 20 c
@ -346,6 +347,12 @@ public abstract class AbstractMessagePacket<T extends AbstractMessagePacket<?>>
return (T) this;
}
public final T addFactionName(int factionId)
{
append(new SMParam(TYPE_FACTION_NAME, factionId));
return (T) this;
}
public final T addPopup(int target, int attacker, int damage)
{
append(new SMParam(TYPE_POPUP_ID, new int[]
@ -397,6 +404,7 @@ public abstract class AbstractMessagePacket<T extends AbstractMessagePacket<?>>
{
case TYPE_ELEMENT_NAME:
case TYPE_BYTE:
case TYPE_FACTION_NAME:
{
packet.writeC(param.getIntValue());
break;

View File

@ -115,6 +115,7 @@ public class CharInfo implements IClientOutgoingPacket
OutgoingPackets.CHAR_INFO.writeId(packet);
final CeremonyOfChaosEvent event = _activeChar.getEvent(CeremonyOfChaosEvent.class);
final CeremonyOfChaosMember cocPlayer = event != null ? event.getMember(_activeChar.getObjectId()) : null;
packet.writeC(0x00); // Grand Crusade
packet.writeD(_x); // Confirmed
packet.writeD(_y); // Confirmed
packet.writeD(_z); // Confirmed

View File

@ -54,6 +54,10 @@ public class DropItem implements IClientOutgoingPacket
packet.writeC(0x00);
// packet.writeD(0x01); if above C == true (1) then packet.readD()
packet.writeC(_item.getEnchantLevel()); // Grand Crusade
packet.writeC(_item.getAugmentation() != null ? 1 : 0); // Grand Crusade
packet.writeC(_item.getSpecialAbilities().size()); // Grand Crusade
return true;
}
}

View File

@ -36,5 +36,4 @@ public class ExConnectedTimeAndGettableReward implements IClientOutgoingPacket
}
return true;
}
}

View File

@ -46,6 +46,7 @@ public class ExInzoneWaiting implements IClientOutgoingPacket
{
OutgoingPackets.EX_INZONE_WAITING_INFO.writeId(packet);
packet.writeC(0x00); // identify if this is a response to a passive request
packet.writeD(_currentTemplateId);
packet.writeD(_instanceTimes.size());
for (Entry<Integer, Long> entry : _instanceTimes.entrySet())

View File

@ -0,0 +1,44 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.network.serverpackets;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.network.OutgoingPackets;
public class ExPrivateStoreBuyingResult implements IClientOutgoingPacket
{
private final int _objectId;
private final long _count;
private final String _seller;
public ExPrivateStoreBuyingResult(int objectId, long count, String seller)
{
_objectId = objectId;
_count = count;
_seller = seller;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_PRIVATE_STORE_BUYING_RESULT.writeId(packet);
packet.writeD(_objectId);
packet.writeQ(_count);
packet.writeS(_seller);
return true;
}
}

View File

@ -0,0 +1,44 @@
/*
* This file is part of the L2J Mobius project.
*
* This program 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.
*
* This program 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.l2jmobius.gameserver.network.serverpackets;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.network.OutgoingPackets;
public class ExPrivateStoreSellingResult implements IClientOutgoingPacket
{
private final int _objectId;
private final long _count;
private final String _buyer;
public ExPrivateStoreSellingResult(int objectId, long count, String buyer)
{
_objectId = objectId;
_count = count;
_buyer = buyer;
}
@Override
public boolean write(PacketWriter packet)
{
OutgoingPackets.EX_PRIVATE_STORE_SELLING_RESULT.writeId(packet);
packet.writeD(_objectId);
packet.writeQ(_count);
packet.writeS(_buyer);
return true;
}
}

View File

@ -34,7 +34,6 @@ public class ExShowCastleInfo implements IClientOutgoingPacket
private ExShowCastleInfo()
{
}
@Override
@ -65,6 +64,9 @@ public class ExShowCastleInfo implements IClientOutgoingPacket
}
packet.writeD(castle.getTaxPercent(TaxType.BUY));
packet.writeD((int) (castle.getSiege().getSiegeDate().getTimeInMillis() / 1000));
packet.writeC(castle.getSiege().isInProgress() ? 0x01 : 0x00); // Grand Crusade
packet.writeC(castle.getSide().ordinal()); // Grand Crusade
}
return true;
}

View File

@ -36,15 +36,11 @@ public class ExShowSeedMapInfo implements IClientOutgoingPacket
packet.writeD(2); // seed count
// Seed of Destruction
packet.writeD(-246857); // x coord
packet.writeD(251960); // y coord
packet.writeD(4331); // z coord
packet.writeD(1); // id 1? Grand Crusade
packet.writeD(2770 + GraciaSeedsManager.getInstance().getSoDState()); // sys msg id
// Seed of Infinity
packet.writeD(-213770); // x coord
packet.writeD(210760); // y coord
packet.writeD(4400); // z coord
packet.writeD(2); // id 2? Grand Crusade
// Manager not implemented yet
packet.writeD(2766); // sys msg id
return true;

View File

@ -61,6 +61,7 @@ public final class MultiSellList implements IClientOutgoingPacket
packet.writeD(_finished ? 0x01 : 0x00); // finished
packet.writeD(PAGE_SIZE); // size of pages
packet.writeD(_size); // list length
packet.writeC(0x00); // Grand Crusade
packet.writeC(_list.isNewMultisell() ? 0x01 : 0x00); // new multisell window
packet.writeD(0x20); // Always 32 oO

View File

@ -46,6 +46,7 @@ public class MyTargetSelected implements IClientOutgoingPacket
{
OutgoingPackets.MY_TARGET_SELECTED.writeId(packet);
packet.writeD(0x01); // Grand Crusade
packet.writeD(_objectId);
packet.writeH(_color);
packet.writeD(0x00);

View File

@ -28,6 +28,9 @@ public final class SpawnItem implements IClientOutgoingPacket
private final int _x, _y, _z;
private int _stackable;
private long _count;
private int _enchantLevl;
private int _isAugmented;
private int _saCount;
public SpawnItem(L2Object obj)
{
@ -42,12 +45,18 @@ public final class SpawnItem implements IClientOutgoingPacket
_itemId = item.getDisplayId();
_stackable = item.isStackable() ? 0x01 : 0x00;
_count = item.getCount();
_enchantLevl = item.getEnchantLevel();
_isAugmented = item.getAugmentation() != null ? 1 : 0;
_saCount = item.getSpecialAbilities().size();
}
else
{
_itemId = obj.getPoly().getPolyId();
_stackable = 0;
_count = 1;
_enchantLevl = 0;
_isAugmented = 0;
_saCount = 0;
}
}
@ -66,6 +75,10 @@ public final class SpawnItem implements IClientOutgoingPacket
packet.writeD(_stackable);
packet.writeQ(_count);
packet.writeD(0x00); // c2
packet.writeC(_enchantLevl); // Grand Crusade
packet.writeC(_isAugmented); // Grand Crusade
packet.writeC(_saCount); // Grand Crusade
return true;
}
}

View File

@ -21,7 +21,6 @@ import java.util.List;
import com.l2jmobius.Config;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.data.xml.impl.AbilityPointsData;
import com.l2jmobius.gameserver.data.xml.impl.SkillTreesData;
import com.l2jmobius.gameserver.model.L2SkillLearn;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
@ -35,7 +34,7 @@ import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
public class ExAcquireAPSkillList implements IClientOutgoingPacket
{
private final int _abilityPoints, _usedAbilityPoints;
private final long _price;
// private final long _price; Removed on Grand Crusade
private final boolean _enable;
private final List<Skill> _skills = new ArrayList<>();
@ -43,7 +42,7 @@ public class ExAcquireAPSkillList implements IClientOutgoingPacket
{
_abilityPoints = activeChar.getAbilityPoints();
_usedAbilityPoints = activeChar.getAbilityPointsUsed();
_price = AbilityPointsData.getInstance().getPrice(_abilityPoints);
// _price = AbilityPointsData.getInstance().getPrice(_abilityPoints); Removed on Grand Crusade
for (L2SkillLearn sk : SkillTreesData.getInstance().getAbilitySkillTree().values())
{
final Skill knownSkill = activeChar.getKnownSkill(sk.getSkillId());
@ -65,8 +64,8 @@ public class ExAcquireAPSkillList implements IClientOutgoingPacket
packet.writeD(_enable ? 1 : 0);
packet.writeQ(Config.ABILITY_POINTS_RESET_ADENA);
packet.writeQ(_price);
packet.writeD(Config.ABILITY_MAX_POINTS);
// packet.writeQ(_price); Removed on Grand Crusade
// packet.writeD(Config.ABILITY_MAX_POINTS); Removed on Grand Crusade
packet.writeD(_abilityPoints);
packet.writeD(_usedAbilityPoints);
packet.writeD(_skills.size());

Some files were not shown because too many files have changed in this diff Show More