Daily Mission changes.
Contributed by kamikadzz.
This commit is contained in:
@@ -1931,14 +1931,14 @@
|
||||
<item id="49591" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="224" reward_id="100" name="Login Once During the Weekend" requiredCompletion="1">
|
||||
<reward id="224" reward_id="100" name="Login Once During the Weekend" requiredCompletion="1" isOneTime="false" duration="WEEKEND">
|
||||
<!-- Receive it when you login once during the weekend. -->
|
||||
<handler name="loginweekend" />
|
||||
<items>
|
||||
<item id="49499" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="225" reward_id="200" name="Login Once During the Month" requiredCompletion="1">
|
||||
<reward id="225" reward_id="200" name="Login Once During the Month" requiredCompletion="1" isOneTime="false" duration="MONTH">
|
||||
<!-- Receive it when you login once during the month. -->
|
||||
<handler name="loginmonth" />
|
||||
<items>
|
||||
@@ -1959,15 +1959,13 @@
|
||||
<item id="49508" count="360" />
|
||||
</items>
|
||||
</reward>
|
||||
<!-- TODO: joinclan handler
|
||||
<reward id="232" reward_id="300" name="Join the Clan!" requiredCompletion="1">
|
||||
Receive it when you join a clan.
|
||||
<!-- Receive it when you join a clan. -->
|
||||
<handler name="joinclan" />
|
||||
<items>
|
||||
<item id="29978" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
-->
|
||||
<reward id="233" reward_id="3" name="Participate in 1 Olympiad Match!" requiredCompletion="1">
|
||||
<!-- Receive it when you participate in 1 Olympiad match, regardless of the result. -->
|
||||
<handler name="olympiad" />
|
||||
@@ -2102,79 +2100,84 @@
|
||||
<item id="70767" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<!-- TODO: Weekly monster handler
|
||||
<reward id="261" reward_id="103" name="Weekly Hunting (Lv. 20 or lower)" requiredCompletion="100">
|
||||
Receive it when you kill any 100 monsters. Monsters that are level 6 or lower than the character are not counted.
|
||||
<reward id="261" reward_id="103" name="Weekly Hunting (Lv. 20 or lower)" requiredCompletion="100" duration="WEEK" isOneTime="false">
|
||||
<!-- Receive it when you kill any 100 monsters. Monsters that are level 6 or lower than the character are not counted. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">1</param>
|
||||
<param name="maxLevel">20</param>
|
||||
<param name="duration">WEEK</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="29648" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="262" reward_id="104" name="Weekly Hunting (Lv. 21-40)" requiredCompletion="150">
|
||||
Receive it when you kill any 150 monsters. Monsters that are level 6 or lower than the character are not counted.
|
||||
<reward id="262" reward_id="104" name="Weekly Hunting (Lv. 21-40)" requiredCompletion="150" duration="WEEK" isOneTime="false">
|
||||
<!-- Receive it when you kill any 150 monsters. Monsters that are level 6 or lower than the character are not counted. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">21</param>
|
||||
<param name="maxLevel">40</param>
|
||||
<param name="duration">WEEK</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="29648" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="263" reward_id="105" name="Weekly Hunting (Lv. 41-50)" requiredCompletion="200">
|
||||
Receive it when you kill any 200 monsters. Monsters that are level 6 or lower than the character are not counted.
|
||||
<reward id="263" reward_id="105" name="Weekly Hunting (Lv. 41-50)" requiredCompletion="200" duration="WEEK" isOneTime="false">
|
||||
<!-- Receive it when you kill any 200 monsters. Monsters that are level 6 or lower than the character are not counted. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">41</param>
|
||||
<param name="maxLevel">50</param>
|
||||
<param name="duration">WEEK</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="29648" count="1" />
|
||||
<item id="29648" count="2" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="264" reward_id="106" name="Weekly Hunting (Lv. 51-60)" requiredCompletion="250">
|
||||
Receive it when you kill any 250 monsters. Monsters that are level 6 or lower than the character are not counted.
|
||||
<reward id="264" reward_id="106" name="Weekly Hunting (Lv. 51-60)" requiredCompletion="250" duration="WEEK" isOneTime="false">
|
||||
<!-- Receive it when you kill any 250 monsters. Monsters that are level 6 or lower than the character are not counted. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">51</param>
|
||||
<param name="maxLevel">60</param>
|
||||
<param name="duration">WEEK</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="29649" count="1" />
|
||||
<item id="29648" count="3" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="265" reward_id="107" name="Weekly Hunting (Lv. 61-70)" requiredCompletion="300">
|
||||
Receive it when you kill any 300 monsters. Monsters that are level 6 or lower than the character are not counted.
|
||||
<reward id="265" reward_id="107" name="Weekly Hunting (Lv. 61-70)" requiredCompletion="300" duration="WEEK" isOneTime="false">
|
||||
<!-- Receive it when you kill any 300 monsters. Monsters that are level 6 or lower than the character are not counted. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">61</param>
|
||||
<param name="maxLevel">70</param>
|
||||
<param name="duration">WEEK</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="29649" count="1" />
|
||||
<item id="29649" count="2" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="266" reward_id="108" name="Weekly Hunting (Lv. 71-75)" requiredCompletion="400">
|
||||
Receive it when you kill any 400 monsters. Monsters that are level 6 or lower than the character are not counted.
|
||||
<reward id="266" reward_id="108" name="Weekly Hunting (Lv. 71-75)" requiredCompletion="400" duration="WEEK" isOneTime="false">
|
||||
<!-- Receive it when you kill any 400 monsters. Monsters that are level 6 or lower than the character are not counted. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">71</param>
|
||||
<param name="maxLevel">75</param>
|
||||
<param name="duration">WEEK</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="29649" count="1" />
|
||||
<item id="29650" count="2" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="267" reward_id="109" name="Weekly Hunting (Lv. 76 or higher)" requiredCompletion="500">
|
||||
Receive it when you kill any 500 monsters. Monsters that are level 6 or lower than the character are not counted.
|
||||
<reward id="267" reward_id="109" name="Weekly Hunting (Lv. 76 or higher)" requiredCompletion="500" duration="WEEK" isOneTime="false">
|
||||
<!-- Receive it when you kill any 500 monsters. Monsters that are level 6 or lower than the character are not counted. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">76</param>
|
||||
<param name="maxLevel">99</param>
|
||||
<param name="duration">WEEK</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="29649" count="1" />
|
||||
<item id="29650" count="3" />
|
||||
</items>
|
||||
</reward>
|
||||
-->
|
||||
<reward id="1095" reward_id="110" name="Clan Raid Attack" requiredCompletion="1">
|
||||
<reward id="1095" reward_id="110" name="Clan Raid Attack" requiredCompletion="1" duration="WEEK" isOneTime="false">
|
||||
<!-- Receive it when you defeat 1 enemy on Clan Arena. The quest for this reward available only once per week. For characters that reached Lv. 40 or higher. -->
|
||||
<handler name="monster">
|
||||
<param name="ids">25794,25795,25796,25797,25798,25799,25800,25801,25802,25803,25804,25805,25806,25807,25808,25809,25810,25811,25812,25813</param>
|
||||
@@ -2205,18 +2208,17 @@
|
||||
<item id="29650" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<!-- FIXME: Add ids.
|
||||
<reward id="1102" reward_id="806" name="Special Daily Hunting (Lv. 35-50)" requiredCompletion="100">
|
||||
Receive it when you kill 100 Noses on Alligator Island.
|
||||
<reward id="1102" reward_id="806" name="Special Daily Hunting (Lv. 35-50)" requiredCompletion="100" isOneTime="false">
|
||||
<!-- Receive it when you kill 100 Noses on Alligator Island. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">35</param>
|
||||
<param name="maxLevel">50</param>
|
||||
<param name="ids">20793</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="49781" count="3" />
|
||||
</items>
|
||||
</reward>
|
||||
-->
|
||||
<reward id="1103" reward_id="807" name="Special Daily Hunting (Lv. 45-60)" requiredCompletion="30">
|
||||
<!-- Receive it when you kill 30 Earth Guardians Harits in Forest of Mirrors. -->
|
||||
<handler name="monster">
|
||||
@@ -2261,101 +2263,102 @@
|
||||
<item id="90917" count="3" />
|
||||
</items>
|
||||
</reward>
|
||||
<!-- TODO: talkwithnpc handler
|
||||
<reward id="1107" reward_id="502" name="Attribute control">
|
||||
Attribute Spirits appeared in Aden. Ask Attribute Master Svein in Aden about hem. (Only available to characters who have completed their 3rd job advancement.)
|
||||
<handler name="talkwithnpc">
|
||||
<param name="minLevel">76</param>
|
||||
<param name="maxLevel">99</param>
|
||||
<!-- Attribute Spirits appeared in Aden. Ask Attribute Master Svein in Aden about hem. (Only available to characters who have completed their 3rd job advancement.) -->
|
||||
<handler name="spirit">
|
||||
<param name="kind">LEARN</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91030" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
-->
|
||||
<!-- FIXME: Add ids.
|
||||
<reward id="1108" reward_id="504" name="Wind Hunting Guide" requiredCompletion="700">
|
||||
Go to the Wind Attribute Hinting Ground and attack monsters with Fire Attribute to deal them more damage. (Wind Attribute Hinting Ground: Land of Winds) After completion, the Hunting Guide will continue.
|
||||
<reward id="1108" reward_id="504" name="Wind Hunting Guide" requiredCompletion="700" dailyReset="false" isOneTime="true">
|
||||
<!-- Go to the Wind Attribute Hinting Ground and attack monsters with Fire Attribute to deal them more damage. (Wind Attribute Hinting Ground: Land of Winds) After completion, the Hunting Guide will continue. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">76</param>
|
||||
<param name="maxLevel">99</param>
|
||||
<param name="element">WIND</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91033" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="1109" reward_id="505" name="Earth Hunting Guide" requiredCompletion="700">
|
||||
Go to the Earth Attribute Hinting Ground and attack monsters with Wind Attribute to deal them more damage. (Earth Attribute Hinting Ground: Wall of Argos) After completion, the Hunting Guide will continue.
|
||||
<reward id="1109" reward_id="505" name="Earth Hunting Guide" requiredCompletion="700" dailyReset="false" isOneTime="true">
|
||||
<!-- Go to the Earth Attribute Hinting Ground and attack monsters with Wind Attribute to deal them more damage. (Earth Attribute Hinting Ground: Wall of Argos) After completion, the Hunting Guide will continue. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">76</param>
|
||||
<param name="maxLevel">99</param>
|
||||
<param name="element">EARTH</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91034" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="1110" reward_id="506" name="Water Hunting Guide" requiredCompletion="700">
|
||||
Go to the Water Attribute Hinting Ground and attack monsters with Earth Attribute to deal them more damage. (Water Attribute Hinting Ground: Garden of Eva) After completion, the Hunting Guide will continue.
|
||||
<reward id="1110" reward_id="506" name="Water Hunting Guide" requiredCompletion="700" dailyReset="false" isOneTime="true">
|
||||
<!-- Go to the Water Attribute Hinting Ground and attack monsters with Earth Attribute to deal them more damage. (Water Attribute Hinting Ground: Garden of Eva) After completion, the Hunting Guide will continue. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">76</param>
|
||||
<param name="maxLevel">99</param>
|
||||
<param name="element">WATER</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91031" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="1111" reward_id="507" name="Fire Hunting Guide" requiredCompletion="700">
|
||||
Go to the Fire Attribute Hinting Ground and attack monsters with water Attribute to deal them more damage. (Fire Attribute Hinting Ground: Forge of Gods) After completion, the Hunting Guide will continue.
|
||||
<reward id="1111" reward_id="507" name="Fire Hunting Guide" requiredCompletion="700" dailyReset="false" isOneTime="true">
|
||||
<!-- Go to the Fire Attribute Hinting Ground and attack monsters with water Attribute to deal them more damage. (Fire Attribute Hinting Ground: Forge of Gods) After completion, the Hunting Guide will continue. -->
|
||||
<handler name="monster">
|
||||
<param name="minLevel">76</param>
|
||||
<param name="maxLevel">99</param>
|
||||
<param name="element">FIRE</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91032" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
-->
|
||||
<!-- TODO: spiritevolve handler
|
||||
|
||||
<reward id="1112" reward_id="508" name="Flame Spirit Lv. 3" requiredCompletion="3">
|
||||
You can get a reward for evolving Flame Spirit. Evolve Flame Spirit up to Lv. 3. You can get a reward only once.
|
||||
<handler name="spiritevolve">
|
||||
<!-- You can get a reward for evolving Flame Spirit. Evolve Flame Spirit up to Lv. 3. You can get a reward only once. -->
|
||||
<handler name="spirit">
|
||||
<param name="element">FIRE</param>
|
||||
<param name="kind">EVOLVE</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91056" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="1113" reward_id="509" name="Water Spirit Lv. 3" requiredCompletion="3">
|
||||
You can get a reward for evolving Water Spirit. Evolve Water Spirit up to Lv. 3. You can get a reward only once.
|
||||
<handler name="spiritevolve">
|
||||
<!-- You can get a reward for evolving Water Spirit. Evolve Water Spirit up to Lv. 3. You can get a reward only once. -->
|
||||
<handler name="spirit">
|
||||
<param name="element">WATER</param>
|
||||
<param name="kind">EVOLVE</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91055" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="1114" reward_id="510" name="Wind Spirit Lv. 3" requiredCompletion="3">
|
||||
You can get a reward for evolving Wind Spirit. Evolve Wind Spirit up to Lv. 3. You can get a reward only once.
|
||||
<handler name="spiritevolve">
|
||||
<!-- You can get a reward for evolving Wind Spirit. Evolve Wind Spirit up to Lv. 3. You can get a reward only once. -->
|
||||
<handler name="spirit">
|
||||
<param name="element">WIND</param>
|
||||
<param name="kind">EVOLVE</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91057" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="1115" reward_id="511" name="Earth Spirit Lv. 3" requiredCompletion="3">
|
||||
You can get a reward for evolving Earth Spirit. Evolve Earth Spirit up to Lv. 3. You can get a reward only once.
|
||||
<handler name="spiritevolve">
|
||||
<!-- You can get a reward for evolving Earth Spirit. Evolve Earth Spirit up to Lv. 3. You can get a reward only once. -->
|
||||
<handler name="spirit">
|
||||
<param name="element">EARTH</param>
|
||||
<param name="kind">EVOLVE</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91058" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
-->
|
||||
<!-- TODO: Weekly monster handler
|
||||
<reward id="1116" reward_id="118" name="Attribute monsters hunting" requiredCompletion="1800">
|
||||
Receive it once a week for Attribute monster hunting.
|
||||
<reward id="1116" reward_id="118" name="Attribute monsters hunting" requiredCompletion="1800" isOneTime="false" duration="WEEK">
|
||||
<!-- Receive it once a week for Attribute monster hunting. -->
|
||||
<handler name="monster">
|
||||
<param name="ids">20792,20794,20795,20796,20797,20798,20799,20800,20801,20802,20803,20849,20995,21661,21662,21663,21664,21665,21666,21667,21668,21669,21670,21671,21672,21673,21674,21675,21676,21678,21685,21686,21761,21762,21763,21764,21765,21766,21767,21768,21769,21770,21771,21772,21773,21774,21775,21776,21777,21778,21779,21780,21781,21782,21783,21784,21785,21786,21787,21788,21789,21790,21791,21792,21793,21813,21814,21815,21816,21817,21818,21819,21820,21821,21822,21823,21824,21825,21826,21827,21828,21829,21830,21831,21832</param>
|
||||
<param name="minLevel">76</param>
|
||||
@@ -2365,8 +2368,7 @@
|
||||
<item id="91030" count="5" />
|
||||
</items>
|
||||
</reward>
|
||||
-->
|
||||
<reward id="1117" reward_id="811" name="Exploration of Giant's Cave" requiredCompletion="200" isOneTime="false" dailyReset="false">
|
||||
<reward id="1117" reward_id="811" name="Exploration of Giant's Cave" requiredCompletion="200" isOneTime="false">
|
||||
<!-- Receive it when you kill 200 monsters at the top and lower levels of the Giant's Cave ex?ept the Giant's Cave entrance. (For characters that reached Lv. 76 or higher.) -->
|
||||
<handler name="monster">
|
||||
<param name="ids">20651,20652,20654,20656,20657,20658,24015,24016,24021,24022,20655,20771</param>
|
||||
@@ -2493,69 +2495,66 @@
|
||||
<item id="91406" count="1" />
|
||||
</items>
|
||||
</reward>
|
||||
<!-- TODO: aquireitem handler
|
||||
<reward id="3000" reward_id="819" name="Hero's way I" requiredCompletion="80">
|
||||
When you reach Lv. 80, you will get 1 special token for learning certification skill.
|
||||
<handler name="aquireitem">
|
||||
<handler name="level">
|
||||
<param name="level">80</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91481" count="5" />
|
||||
<item id="91481" count="5" /> <!-- Soul Crystal -->
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="3001" reward_id="820" name="Hero's way II" requiredCompletion="81">
|
||||
When you reach Lv. 81, you will get 1 special token for learning certification skill.
|
||||
<handler name="aquireitem">
|
||||
<!-- When you reach Lv. 81, you will get 1 special token for learning certification skill. -->
|
||||
<handler name="level">
|
||||
<param name="level">81</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91481" count="10" />
|
||||
<item id="91481" count="10" /> <!-- Soul Crystal -->
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="3002" reward_id="821" name="Hero's way III" requiredCompletion="82">
|
||||
When you reach Lv. 82, you will get 1 special token for learning certification skill.
|
||||
<handler name="aquireitem">
|
||||
<!-- When you reach Lv. 82, you will get 1 special token for learning certification skill. -->
|
||||
<handler name="level">
|
||||
<param name="level">82</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91481" count="15" />
|
||||
<item id="91481" count="15" /> <!-- Soul Crystal -->
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="3003" reward_id="822" name="Hero's way IV" requiredCompletion="83">
|
||||
When you reach Lv. 83, you will get 1 special token for learning certification skill.
|
||||
<handler name="aquireitem">
|
||||
<!-- When you reach Lv. 83, you will get 1 special token for learning certification skill. -->
|
||||
<handler name="level">
|
||||
<param name="level">83</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91481" count="20" />
|
||||
<item id="91481" count="20" /> <!-- Soul Crystal -->
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="3004" reward_id="823" name="Hero's way V" requiredCompletion="84">
|
||||
When you reach Lv. 84, you will get 1 special token for learning certification skill.
|
||||
<handler name="aquireitem">
|
||||
<!-- When you reach Lv. 84, you will get 1 special token for learning certification skill. -->
|
||||
<handler name="level">
|
||||
<param name="level">84</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91481" count="40" />
|
||||
<item id="91481" count="40" /> <!-- Soul Crystal -->
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="3005" reward_id="824" name="Hero's way VI" requiredCompletion="85">
|
||||
When you reach Lv. 85, you will get 1 special token for learning certification skill.
|
||||
<handler name="aquireitem">
|
||||
<!-- When you reach Lv. 85, you will get 1 special token for learning certification skill. -->
|
||||
<handler name="level">
|
||||
<param name="level">85</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91481" count="60" />
|
||||
<item id="91481" count="60" /> <!-- Soul Crystal -->
|
||||
</items>
|
||||
</reward>
|
||||
<reward id="3006" reward_id="825" name="Hero's way VII" requiredCompletion="86">
|
||||
When you reach Lv. 86, you will get 1 special token for learning certification skill.
|
||||
<handler name="aquireitem">
|
||||
<!-- When you reach Lv. 86, you will get 1 special token for learning certification skill. -->
|
||||
<handler name="level">
|
||||
<param name="level">86</param>
|
||||
</handler>
|
||||
<items>
|
||||
<item id="91481" count="160" />
|
||||
<item id="91481" count="160" /> <!-- Soul Crystal -->
|
||||
</items>
|
||||
</reward>
|
||||
-->
|
||||
</list>
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.handler.DailyMissionHandler;
|
||||
|
||||
import handlers.dailymissionhandlers.BossDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.FishingDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.JoinClanDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.LevelDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.LoginWeekendDailyMissionHandler;
|
||||
@@ -50,6 +51,7 @@ public class DailyMissionMasterHandler
|
||||
DailyMissionHandler.getInstance().registerHandler("monster", MonsterDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("spirit", SpiritDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("joinclan", JoinClanDailyMissionHandler::new);
|
||||
LOGGER.info(DailyMissionMasterHandler.class.getSimpleName() + ": Loaded " + DailyMissionHandler.getInstance().size() + " handlers.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanCreate;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanJoin;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author kamikadzz
|
||||
*/
|
||||
public class JoinClanDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
public JoinClanDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
return (entry != null) && (entry.getStatus() == DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_PLAYER_CLAN_JOIN, (Consumer<OnPlayerClanJoin>) this::onPlayerClanJoin, this));
|
||||
Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_PLAYER_CLAN_CREATE, (Consumer<OnPlayerClanCreate>) this::onPlayerClanCreate, this));
|
||||
}
|
||||
|
||||
private void onPlayerClanJoin(OnPlayerClanJoin event)
|
||||
{
|
||||
final DailyMissionPlayerEntry missionData = getPlayerEntry(event.getClanMember().getPlayer().getObjectId(), true);
|
||||
processMission(missionData);
|
||||
}
|
||||
|
||||
private void onPlayerClanCreate(OnPlayerClanCreate event)
|
||||
{
|
||||
final DailyMissionPlayerEntry missionData = getPlayerEntry(event.getPlayer().getObjectId(), true);
|
||||
processMission(missionData);
|
||||
}
|
||||
|
||||
private void processMission(DailyMissionPlayerEntry missionData)
|
||||
{
|
||||
if (missionData.getProgress() == 1)
|
||||
{
|
||||
missionData.setStatus(DailyMissionStatus.COMPLETED);
|
||||
}
|
||||
else
|
||||
{
|
||||
missionData.setProgress(1);
|
||||
missionData.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(missionData);
|
||||
}
|
||||
}
|
||||
@@ -49,30 +49,14 @@ public class LoginMonthDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_PLAYER_LOGIN, (OnPlayerLogin event) -> onPlayerLogin(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset()
|
||||
{
|
||||
// Monthly rewards do not reset daily.
|
||||
}
|
||||
|
||||
private void onPlayerLogin(OnPlayerLogin event)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(event.getPlayer().getObjectId(), true);
|
||||
final long lastCompleted = entry.getLastCompleted();
|
||||
if (lastCompleted == 0) // Initial entry.
|
||||
{
|
||||
entry.setLastCompleted(System.currentTimeMillis());
|
||||
}
|
||||
else if ((System.currentTimeMillis() - lastCompleted) > 2506000000L) // 2506000000L (29 day) delay.
|
||||
if (entry.getStatus() != DailyMissionStatus.COMPLETED)
|
||||
{
|
||||
entry.setProgress(1);
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
entry.setProgress(0);
|
||||
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,27 +51,18 @@ public class LoginWeekendDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_PLAYER_LOGIN, (OnPlayerLogin event) -> onPlayerLogin(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset()
|
||||
{
|
||||
// Weekend rewards do not reset daily.
|
||||
}
|
||||
|
||||
private void onPlayerLogin(OnPlayerLogin event)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(event.getPlayer().getObjectId(), true);
|
||||
final int currentDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
final long lastCompleted = entry.getLastCompleted();
|
||||
if (((currentDay == Calendar.SATURDAY) || (currentDay == Calendar.SUNDAY)) // Reward only on weekend.
|
||||
&& ((lastCompleted == 0) || ((System.currentTimeMillis() - lastCompleted) > 172800000))) // Initial entry or 172800000 (2 day) delay.
|
||||
if (entry.getStatus() != DailyMissionStatus.COMPLETED)
|
||||
{
|
||||
entry.setProgress(1);
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
else if (entry.getStatus() != DailyMissionStatus.AVAILABLE) // Not waiting to be rewarded.
|
||||
{
|
||||
entry.setProgress(0);
|
||||
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
|
||||
final int currentDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
if (((currentDay == Calendar.SATURDAY) || (currentDay == Calendar.SUNDAY) || (currentDay == Calendar.MONDAY)) //
|
||||
&& (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) < 6) && (Calendar.getInstance().get(Calendar.MINUTE) < 30))
|
||||
{
|
||||
entry.setProgress(1);
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.Set;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.enums.ElementalType;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.CommandChannel;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
@@ -43,6 +44,7 @@ public class MonsterDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final Set<Integer> _ids = new HashSet<>();
|
||||
private final ElementalType _element;
|
||||
|
||||
public MonsterDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
@@ -50,6 +52,7 @@ public class MonsterDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Byte.MAX_VALUE);
|
||||
_element = holder.getParams().getEnum("element", ElementalType.class, ElementalType.NONE);
|
||||
final String ids = holder.getParams().getString("ids", "");
|
||||
if (!ids.isEmpty())
|
||||
{
|
||||
@@ -106,12 +109,14 @@ public class MonsterDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
|
||||
final Player player = event.getAttacker();
|
||||
final int monsterLevel = monster.getLevel();
|
||||
if (_minLevel > 0)
|
||||
if ((_minLevel > 0) && ((monsterLevel < _minLevel) || (monsterLevel > _maxLevel) || ((player.getLevel() - monsterLevel) > 5)))
|
||||
{
|
||||
if ((monsterLevel < _minLevel) || (monsterLevel > _maxLevel) || ((player.getLevel() - monsterLevel) > 5))
|
||||
{
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if ((_element != ElementalType.NONE) && (monster.getElementalSpiritType() != _element))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final Party party = player.getParty();
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<xs:attribute type="xs:boolean" name="isMainClassOnly" />
|
||||
<xs:attribute type="xs:boolean" name="isDualClassOnly" />
|
||||
<xs:attribute type="xs:boolean" name="isDisplayedWhenNotAvailable" />
|
||||
<xs:attribute type="xs:string" name="duration" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="listType">
|
||||
<xs:sequence>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* 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 org.l2jmobius.gameserver.enums;
|
||||
|
||||
/**
|
||||
* @author kamikadzz
|
||||
*/
|
||||
public enum MissionResetType
|
||||
{
|
||||
DAY,
|
||||
WEEK,
|
||||
MONTH,
|
||||
WEEKEND
|
||||
}
|
||||
@@ -16,11 +16,13 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ClassId;
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.enums.MissionResetType;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.handler.DailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
@@ -42,6 +44,7 @@ public class DailyMissionDataHolder
|
||||
private final boolean _isDualClassOnly;
|
||||
private final boolean _isDisplayedWhenNotAvailable;
|
||||
private final AbstractDailyMissionHandler _handler;
|
||||
private final MissionResetType _missionResetSlot;
|
||||
|
||||
public DailyMissionDataHolder(StatSet set)
|
||||
{
|
||||
@@ -57,6 +60,7 @@ public class DailyMissionDataHolder
|
||||
_isDualClassOnly = set.getBoolean("isDualClassOnly", false);
|
||||
_isDisplayedWhenNotAvailable = set.getBoolean("isDisplayedWhenNotAvailable", true);
|
||||
_handler = handler != null ? handler.apply(this) : null;
|
||||
_missionResetSlot = set.getObject("duration", MissionResetType.class, MissionResetType.DAY);
|
||||
}
|
||||
|
||||
public int getId()
|
||||
@@ -166,7 +170,22 @@ public class DailyMissionDataHolder
|
||||
{
|
||||
if (_handler != null)
|
||||
{
|
||||
_handler.reset();
|
||||
if ((_missionResetSlot == MissionResetType.WEEK) && (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY))
|
||||
{
|
||||
_handler.reset();
|
||||
}
|
||||
else if ((_missionResetSlot == MissionResetType.MONTH) && (Calendar.getInstance().get(Calendar.DAY_OF_MONTH) == 1))
|
||||
{
|
||||
_handler.reset();
|
||||
}
|
||||
else if ((_missionResetSlot == MissionResetType.WEEKEND) && (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY))
|
||||
{
|
||||
_handler.reset();
|
||||
}
|
||||
else if (_dailyReset)
|
||||
{
|
||||
_handler.reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user