Classic fishing quest.

This commit is contained in:
MobiusDev 2017-08-01 03:28:42 +00:00
parent c1194b585c
commit 8b083e4437
23 changed files with 268 additions and 47 deletions

View File

@ -4,41 +4,9 @@
<experienceRate min="650" max="700" />
<skillPointsRate min="40" max="45" />
<baits>
<bait itemId="45495" level="1" minPlayerLevel="85" chance="64" timeMin="45000" timeMax="45000" waitMin="15000" waitMax="15000"> <!-- Normal Bait -->
<catch itemId="45473" /> <!-- Fresh Blue Mackerel -->
<catch itemId="45474" /> <!-- Fresh Minnow -->
<catch itemId="45475" /> <!-- Fresh Flatcatch -->
<catch itemId="45476" /> <!-- Fresh Mandarin catch -->
<catch itemId="45477" /> <!-- Fresh Rockcatch -->
<catch itemId="45478" /> <!-- Fresh Goldcatch -->
<catch itemId="45479" /> <!-- Fresh Salmon -->
<catch itemId="45480" /> <!-- Fresh Eel -->
<catch itemId="45486" /> <!-- Wooden Treasure Chest -->
</bait>
<bait itemId="45496" level="2" minPlayerLevel="85" chance="64" timeMin="45000" timeMax="45000" waitMin="15000" waitMax="15000"> <!-- Special Bait -->
<catch itemId="45481" /> <!-- Fresh Marlin -->
<catch itemId="45482" /> <!-- Fresh Catcatch -->
<catch itemId="45483" /> <!-- Fresh Tuna -->
<catch itemId="45484" /> <!-- Fresh Carp -->
<catch itemId="45485" /> <!-- Fresh Whale -->
<catch itemId="45487" /> <!-- Silver Treasure Chest -->
<catch itemId="45488" /> <!-- Golden Treasure Chest -->
</bait>
<bait itemId="46084" level="3" minPlayerLevel="85" chance="30" timeMin="45000" timeMax="45000" waitMin="15000" waitMax="15000"> <!-- Player Commendation Special Bait -->
<catch itemId="46085" /> <!-- Treasure Map Piece - 1 -->
<catch itemId="46086" /> <!-- Treasure Map Piece - 2 -->
<catch itemId="46087" /> <!-- Treasure Map Piece - 3 -->
<catch itemId="46088" /> <!-- Treasure Map Piece - 4 -->
<catch itemId="46089" /> <!-- Treasure Map Piece - 5 -->
</bait>
<bait itemId="46737" level="1" minPlayerLevel="85" chance="30" timeMin="10000" timeMax="10000" waitMin="15000" waitMax="15000"> <!-- Practice Bait -->
<catch itemId="46736" /> <!-- Practice Fish -->
</bait>
<bait itemId="47547" level="1" minPlayerLevel="85" chance="10" timeMin="105000" timeMax="105000" waitMin="15000" waitMax="15000"> <!-- Bait -->
<catch itemId="47553" /> <!-- Blueish Box -->
</bait>
<bait itemId="47548" level="2" minPlayerLevel="99" chance="10" timeMin="105000" timeMax="105000" waitMin="15000" waitMax="15000"> <!-- Bait -->
<catch itemId="47554" /> <!-- Redish Box -->
<bait itemId="45495" level="1" minPlayerLevel="20" chance="64" timeMin="45000" timeMax="45000" waitMin="15000" waitMax="15000"> <!-- Normal Bait -->
<catch itemId="45473" /> <!-- Blue Mackerel -->
<catch itemId="45481" /> <!-- Fresh Blue Mackerel -->
</bait>
</baits>
</list>

View File

@ -0,0 +1,4 @@
<html><body>Baikal:<br>
I have received an urgent message from the guild and I have started to investigate the pollution of water. That is why I am here. I have to check a lot of things but I think this investigation will take a long time...<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Ferma:<br>
I was sitting there and fishing quietly... And suddenly, throwing a bait in the water once again, I understood that there is no bite.</br1>
A lot of strangers have been roaming around lately. I saw them entering this cave. Ohh, it seems that the quiet and carefree days have come to an end...<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_teleport 3 1">"Teleport me to Giran Harbor, please"</Button>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -1,4 +1,3 @@
127 Fishing Specialist's Request
374 Whisper of Dreams, Part 1
375 Whisper of Dreams, Part 2
910 Request from the Red Libra Guild - Basic

View File

@ -0,0 +1,4 @@
<html><body>Fishing Specialist Pierre:<br>
For me fishing is the best way to have a rest. It helps me to relax, to forget about mortal coil, gives you peace of mind. However, it might end soon. There are some gossips that dirty water from the northwestern part of the Alligator Island kills all the fish. I'm afraid that these gossips might be true... Will you help me to deal with this problem and allay my anxiety?<br>
(Only characters Lv. 20 or above can take this quest.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Fishing Specialist Pierre:<br>
For me fishing is the best way to have a rest. It helps me to relax, to forget about mortal coil, gives you peace of mind. However, it might end soon. There are some gossips that dirty water from the northwestern part of the Alligator Island kills all the fish. I'm afraid that these gossips might be true...<br>Could you, please, hear me out?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00127_FishingSpecialistsRequest 30013-02.html">"I would like to listen to you"</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Fishing Specialist Pierre:<br>
Thank you a lot!<br>
There are some gossips that dirty water from the northwestern part of the Alligator Island kills all the fish. I'm afraid that these gossips might be true. It is of crucial importance to check everything and find out what is happening. My friend <font color="LEVEL">Farm</font> is fishing in those lands. It's far away from here, to reach the place you need to cross the sea. But I can relocate you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00127_FishingSpecialistsRequest teleport_to_ferma">"Teleport me, please"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Fishing Specialist Pierre:<br>
You haven't visited Ferma yet?! Hurry up! Bring him my <font color="LEVEL">letter</font>! There is very important information, which I heard from the fishers.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00127_FishingSpecialistsRequest teleport_to_ferma">"Teleport me, please"</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Fishing Specialist Pierre:<br>
So that was the reason of water pollution! Thank you oce again. I'll ask the guild researchers to scrutinize everything.<br>
And you... Please take it... Just to express you my gratitude...
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Ferma:<br>
Fishing Specialist Pierre from Giran Harbor asked you to come! There is something that pollutes the water and destroys the ecosystem... Our guild sent there the researcher. While he was testing the water quantity I made a <font color="LEVEL">Report about Fish</font>. Hand this report to researcher.
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Ferma:<br>
You still haven't given my report to Researcher of Waters <font color="LEVEL">Baikal</font>? He is waiting for you in the cave. This report contains very important information about fish. Please, hurry up!
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Ferma:<br>
Hand a <font color="LEVEL">Sealed Bottle</font> with polluted water to <font color="LEVEL">Fishing Specialist Pierre</font>. You need to hurry up, otherwise contamination can spread!
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Researcher of Waters Baikal:<br>
Thanks to <font color="LEVEL">Report about Fish</font>, that you brought, I could make significant progress. Actually, I wanted to stay here for a while and to continue my research. Soon the water will be completely spoiled. I poured a little bit into <font color="LEVEL">Sealed Bottle</font>. Please, give it to Fishing Specialist Pierre. Help you to stop this disaster.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Researcher of Waters Baikal:<br>
Haven't you visited Fishing Specialist Pierre yet? Hurry up. The situation is getting worse. I am really worried about the water quality as it can affect a future of the fishery.<br1>
Ferma will help you to reach Giran Harbor. You will find him outside of the cave. When you meet <font color="LEVEL">Fishing Specialist Pierre</font>, please hand him <font color="LEVEL">Sealed Bottle</font>.
</body></html>

View File

@ -0,0 +1,177 @@
/*
* 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.Q00127_FishingSpecialistsRequest;
import com.l2jmobius.gameserver.model.Location;
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;
/**
* Fishing Specialist's Request (127)
* @author Mobius
*/
public class Q00127_FishingSpecialistsRequest extends Quest
{
// NPCs
private static final int PIERRE = 30013;
private static final int FERMA = 30015;
private static final int BAIKAL = 30016;
// Items
private static final int PIERRE_LETTER = 49510;
private static final int FISH_REPORT = 49504;
private static final int SEALED_BOTTLE = 49505;
private static final int FISHING_ROD_CHEST = 49507;
// Location
private static final Location TELEPORT_LOC = new Location(105276, 162500, -3600);
// Misc
private static final int MIN_LEVEL = 20;
private static final int MAX_LEVEL = 110;
public Q00127_FishingSpecialistsRequest()
{
super(127);
addStartNpc(PIERRE);
addTalkId(PIERRE, FERMA, BAIKAL);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "30013-00.htm");
registerQuestItems(PIERRE_LETTER, FISH_REPORT, SEALED_BOTTLE);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "30013-02.html":
{
qs.startQuest();
giveItems(player, PIERRE_LETTER, 1);
htmltext = event;
break;
}
case "teleport_to_ferma":
{
player.teleToLocation(TELEPORT_LOC);
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
if (qs == null)
{
return htmltext;
}
if (qs.isCreated())
{
if (npc.getId() == PIERRE)
{
htmltext = player.getLevel() < MIN_LEVEL ? "30013-00.htm" : "30013-01.htm";
}
}
else if (qs.isStarted())
{
switch (npc.getId())
{
case PIERRE:
{
switch (qs.getCond())
{
case 1:
case 2:
{
htmltext = "30013-03.html";
break;
}
case 3:
{
takeItems(player, -1, SEALED_BOTTLE);
giveItems(player, FISHING_ROD_CHEST, 1);
qs.exitQuest(false, true);
htmltext = "30013-04.html";
break;
}
}
break;
}
case FERMA:
{
switch (qs.getCond())
{
case 1:
{
takeItems(player, -1, PIERRE_LETTER);
giveItems(player, FISH_REPORT, 1);
qs.setCond(2, true);
htmltext = "30015-01.html";
break;
}
case 2:
{
htmltext = "30015-02.html";
break;
}
case 3:
{
htmltext = "30015-03.html";
break;
}
}
break;
}
case BAIKAL:
{
switch (qs.getCond())
{
case 2:
{
takeItems(player, -1, FISH_REPORT);
giveItems(player, SEALED_BOTTLE, 1);
qs.setCond(3, true);
htmltext = "30016-01.html";
break;
}
case 3:
{
htmltext = "30016-02.html";
break;
}
}
break;
}
}
}
else if (qs.isCompleted())
{
htmltext = getAlreadyCompletedMsg(player);
}
return htmltext;
}
}

View File

@ -63,6 +63,7 @@ import quests.Q00105_SkirmishWithOrcs.Q00105_SkirmishWithOrcs;
import quests.Q00106_ForgottenTruth.Q00106_ForgottenTruth;
import quests.Q00107_MercilessPunishment.Q00107_MercilessPunishment;
import quests.Q00108_JumbleTumbleDiamondFuss.Q00108_JumbleTumbleDiamondFuss;
import quests.Q00127_FishingSpecialistsRequest.Q00127_FishingSpecialistsRequest;
import quests.Q00151_CureForFever.Q00151_CureForFever;
import quests.Q00152_ShardsOfGolem.Q00152_ShardsOfGolem;
import quests.Q00153_DeliverGoods.Q00153_DeliverGoods;
@ -230,6 +231,7 @@ public class QuestMasterHandler
Q00106_ForgottenTruth.class,
Q00107_MercilessPunishment.class,
Q00108_JumbleTumbleDiamondFuss.class,
Q00127_FishingSpecialistsRequest.class,
Q00151_CureForFever.class,
Q00152_ShardsOfGolem.class,
Q00153_DeliverGoods.class,

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/spawns.xsd">
<spawn name="23_22">
<group>
<npc id="30016" x="102247" y="155354" z="-3688" heading="3968" respawnTime="60sec" /> <!-- Baikal -->
<npc id="30015" x="105285" y="162607" z="-3600" heading="41269" respawnTime="60sec" /> <!-- Ferma -->
</group>
</spawn>
</list>

View File

@ -59,11 +59,14 @@
<item id="45495" name="Normal Bait" type="EtcItem">
<!-- Used for fishing. Can't be sold. -->
<set name="icon" val="icon.etc_huge_lure" />
<set name="bodypart" val="lhand" />
<set name="default_action" val="EQUIP" />
<set name="etcitem_type" val="LURE" />
<set name="immediate_effect" val="true" />
<set name="material" val="PAPER" />
<set name="material" val="LIQUID" />
<set name="price" val="6000" />
<set name="is_sellable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
</item>
</list>

View File

@ -44,6 +44,7 @@
<set name="is_dropable" val="false" />
<set name="is_depositable" val="false" />
<set name="is_sellable" val="false" />
<set name="is_questitem" val="true" />
</item>
<item id="49505" name="Sealed Bottle" type="EtcItem">
<!-- A bottle filled with water polluting substance. Take it to Fisher Pierre. -->
@ -53,6 +54,7 @@
<set name="is_dropable" val="false" />
<set name="is_depositable" val="false" />
<set name="is_sellable" val="false" />
<set name="is_questitem" val="true" />
</item>
<item id="49506" name="Fishing Rod" additionalName="10-day" type="Weapon">
<!-- A Fishing Rod for 10 days. Cannot be exchanged, dropped, or sold. Can be stored in a private warehouse. Float usage: 1 -->
@ -89,6 +91,11 @@
<set name="is_depositable" val="false" />
<set name="is_sellable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_premium" val="true" />
<set name="handler" val="ExtractableItems" />
<capsuled_items>
<item id="49506" min="1" max="1" chance="100" /> <!-- Fishing Rod - 10-day -->
</capsuled_items>
</item>
<item id="49508" name="Normal Bait" additionalName="Event" type="EtcItem">
<!-- Fishing bait enables to fish. Cannot be exchanged, dropped, sold, or stored in private warehouse. Can be stored in a private warehouse. -->
@ -138,6 +145,7 @@
<set name="is_dropable" val="false" />
<set name="is_depositable" val="false" />
<set name="is_sellable" val="false" />
<set name="is_questitem" val="true" />
</item>
<item id="49511" name="Sheep Gift" type="EtcItem">
<!-- You can obtain Spellbook Box, Rare Accessory Pack (15-day), Fishing kit, High Rank Scroll of Escape (Event), Quick Healing Potion, Warrior's Major Healing Potion. Cannot be exchanged, dropped or sold in a private store. Can be stored in a private warehouse. -->

View File

@ -397,9 +397,8 @@
</collision>
</npc>
<npc id="30013" level="85" type="L2Npc" name="Pierre" title="Fishing Specialist">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<race>HUMAN</race>
<sex>MALE</sex>
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" />
<speed>
@ -453,10 +452,10 @@
<height normal="22.4" />
</collision>
</npc>
<npc id="30015" level="85" type="L2Npc" name="Ferma">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ETC</race>
<sex>FEMALE</sex>
<npc id="30015" level="85" type="L2Teleporter" name="Ferma">
<race>HUMAN</race>
<sex>MALE</sex>
<equipment rhand="49465" /> <!-- Fishing Rod (for NPC) -->
<stats str="40" int="21" dex="30" wit="20" con="43" men="10">
<vitals hp="8446" hpRegen="10.5" mp="2355" mpRegen="3.6" />
<speed>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/teleporterData.xsd">
<npc id="30015"> <!-- Ferma: Quest 127 -->
<teleport type="OTHER">
<location x="48565" y="186306" z="-3480" /> <!-- Giran Harbor -->
</teleport>
</npc>
</list>

View File

@ -141,7 +141,7 @@ public class Fishing
}
final FishingBaitData baitData = getCurrentBaitData();
final int minPlayerLevel = baitData == null ? 85 : baitData.getMinPlayerLevel();
final int minPlayerLevel = baitData == null ? 20 : baitData.getMinPlayerLevel();
if (_player.getLevel() < minPlayerLevel)
{
if (minPlayerLevel == 85)

View File

@ -24,6 +24,8 @@ What is done
-Fisherman NPC updates
-Olympiad NPC updates
-Dimensional Merchant updates
-Retail gatekeeper teleports
-Quest Fishing Specialist's Request
Custom work
-Start NPC dialogs until Newbie Helper
@ -31,7 +33,6 @@ Custom work
-Newbie Helper buff support until 40 level
TODO list
-Retail gatekeeper teleports
-Parse retail monster spawns by zone
-Retail NPC dialogs
-Retail NPC buylists