Merged with released L2J-Unity files.

This commit is contained in:
mobiusdev
2016-06-12 01:34:09 +00:00
parent e003e87887
commit 635557f5da
18352 changed files with 3245113 additions and 2892959 deletions

View File

@@ -0,0 +1,6 @@
<html><body>Adventure Guildsman:<br>
Have you heard the news?<br>
The hunt for <font color="LEVEL">Sakum</font> is coming to an end. After the escape from Ye Sagira, Sakum has been chased from Windmill Hill and Ruins of Agony. It is running out of places to run!<br>
Hahaha!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10337_SakumsImpact 31795-02.htm">"Can it be captured?"</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Adventure Guildsman:<br>
In all things, you must keep a positive outlook... tell yourself that we CAN do this.<br>
Capturing Sakum isn't an easy task. All we have so far are rumors and conflicting information on what the creature looks like now. Anyone who has actually seen the beast can't give us an accurate sketch of the creature that doesn't look like it was done by a 4-year-old child with a broken hand. So we haven't been able to make accurate wanted posters for the thing.<br>
It would be helpful if you can find me anything we can use to get an accurate image of the beast. Think you can do this?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10337_SakumsImpact 31795-03.htm">Agree to help.</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman:<br>
I'm glad to hear you will help us. I hear that Guard Silvan has seen <font color="LEVEL">Sakum</font> near the <font color="LEVEL">Ruins of Despair</font> which seems to have caused the monsters in the area to rage out of control.<br>
Travel to the Ruins of Despair and speak with <font color="LEVEL">Guard Silvan</font>.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Adventure Guildsman:<br>
Why are you still here? Go to the <font color="LEVEL">Ruins of Despair</font>.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman:<br>
The Ruins of Desprai is a lonely place. But an adventurer must overcome such difficulties!<br>
(This quest is already completed)
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Guard Silvan:<br>
I remember when the sky used to be clear<br1>
but now it is cloudy and never rains...<br1>
I wonder what it means...?<br>
Sorry, I tend to ramble when I haven't slept for days. What brings you to this dismal place?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10337_SakumsImpact 33178-02.htm">"A sketch of Sakum."</Button>
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Guard Silvan:<br>
Sakum? Yes, that creature has been sighted in the Ruins of Despair.<br>
Why do you think I haven't been able to sleep in days? I'm afraid I can't help you with your task... I can barely swing my sword properly.<br>
Additionally, my guards need to defend this location so I can't send anyone to assist you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10337_SakumsImpact 33178-03.htm">"Don't worry about it."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guard Silvan:<br>
Tell you what, if all you need is a sketch of Sakum, Guard Lef is a little bit of an artist and has already drawn a pretty good sketch of the creature.<br>
But you need to do a favor for us first. I need you to eliminate some of the creatures around the Ruins of Despair for us. About <font color="LEVEL">15 Skeleton Warriors</font>,<font color="LEVEL">20 Ruin Imps</font>, and <font color="LEVEL">25 Bats</font> should do it.<br>
Once you are done, go see <font color="LEVEL">Guard Lef</font> about getting that sketch.
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Guard Silvan:<br>
Are you still here?<br>
You better plan to head out soon. I'm going to, as soon as I'm off duty. I'm good at this game, so you might want get a head start catching <font color="LEVEL">Skeletal Warriors, Ruin Imps and Bats</font>.<br>
If by some weird quirk of fate, you do manage to catch them all before I do, go check in with <font color="LEVEL">Guard Lef</font>. I bet I'll already have caught a full set of those beasts and be be there with Lef, kicking back, shoot'n the breeze.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Guard Silvan:<br>
I'm sure you've got something interesting to report, but whatever it is, you should go and tell it to <font color="LEVEL">Guard Lef</font>. You're not my responsibility any more.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guard Silvan:<br>
Hey, you're the one who started all this. If you hadn't been rude, I would never have missed you.<br>
(You have already completed this quest.)
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Guard Lef:<br>
No, I don't have anything for you. You could talk to <font color="LEVEL">Guard Silvan</font>.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Guard Lef:<br>
Did you forget your mission or something?
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guard Lef:<br>
Ha! Silvan tricked you into doing his work... classic. What did he say he would give you in return? Hmm... by the looks of it he said that I was supposed to give you something. What was it?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10337_SakumsImpact 33510-04.htm">"A sketch of Sakum."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guard Lef:<br>
I'm getting tired of Silvan getting others to do his work. I understand that he hasn't slept in days, but still... bad form.<br>
I do have a <font color="LEVEL">sketch of Sakum</font> but I'm afraid that I can't just hand it over to you just for doing Silvan's task. You will need to do something for me first.
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Guard Lef:<br>
Although Silvan sometimes acts oddly, his hearth is in the right place.<br>
(You have already completed this quest.)
</body></html>

View File

@@ -0,0 +1,267 @@
/*
* 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.Q10337_SakumsImpact;
import java.util.HashSet;
import java.util.Set;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
/**
* Sakum's Impact (10337)
* @author St3eT
*/
public final class Q10337_SakumsImpact extends Quest
{
// NPCs
private static final int ADVENTURE_GUILDSMAN = 31795;
private static final int SILVAN = 33178;
private static final int LEF = 33510;
private static final int SKELETON_WARRIOR = 23022;
private static final int RUIN_IMP = 20506;
private static final int RUIN_BAT = 23023;
private static final int BAT = 20411;
// Misc
private static final int MIN_LEVEL = 28;
private static final int MAX_LEVEL = 40;
public Q10337_SakumsImpact()
{
super(10337);
addStartNpc(ADVENTURE_GUILDSMAN);
addTalkId(ADVENTURE_GUILDSMAN, SILVAN, LEF);
addKillId(SKELETON_WARRIOR, RUIN_IMP, BAT, RUIN_BAT);
addCondNotRace(Race.ERTHEIA, "");
addCondLevel(MIN_LEVEL, MAX_LEVEL, "");
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState st = getQuestState(player, false);
if (st == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "31795-02.htm":
case "33178-02.htm":
{
htmltext = event;
break;
}
case "31795-03.htm":
{
st.startQuest();
htmltext = event;
break;
}
case "33178-03.htm":
{
if (st.isCond(1))
{
st.setCond(2);
htmltext = event;
}
break;
}
case "33510-04.htm":
{
if (st.isCond(3))
{
giveAdena(player, 1030, true);
addExpAndSp(player, 650000, 156);
st.exitQuest(false, true);
htmltext = event;
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState st = getQuestState(player, true);
switch (st.getState())
{
case State.CREATED:
{
if (npc.getId() == ADVENTURE_GUILDSMAN)
{
htmltext = "31795-01.htm";
}
break;
}
case State.STARTED:
{
switch (st.getCond())
{
case 1:
{
switch (npc.getId())
{
case ADVENTURE_GUILDSMAN:
htmltext = "31795-04.htm";
break;
case SILVAN:
htmltext = "33178-01.htm";
break;
case LEF:
htmltext = "33510-01.htm";
break;
}
break;
}
case 2:
{
switch (npc.getId())
{
case ADVENTURE_GUILDSMAN:
htmltext = "31795-04.htm";
break;
case SILVAN:
htmltext = "33178-04.htm";
break;
case LEF:
htmltext = "33510-02.htm";
break;
}
break;
}
case 3:
{
switch (npc.getId())
{
case ADVENTURE_GUILDSMAN:
htmltext = "31795-04.htm";
break;
case SILVAN:
htmltext = "33178-05.htm";
break;
case LEF:
htmltext = "33510-03.htm";
break;
}
break;
}
}
break;
}
case State.COMPLETED:
{
switch (npc.getId())
{
case ADVENTURE_GUILDSMAN:
htmltext = "31795-05.htm";
break;
case SILVAN:
htmltext = "33178-06.htm";
break;
case LEF:
htmltext = "33510-05.htm";
break;
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState st = getQuestState(killer, false);
if ((st != null) && st.isStarted() && st.isCond(2))
{
int killedWarriors = st.getInt("killed_" + SKELETON_WARRIOR);
int killedImps = st.getInt("killed_" + RUIN_IMP);
int killedBats = st.getInt("killed_" + BAT);
switch (npc.getId())
{
case SKELETON_WARRIOR:
{
if (killedWarriors < 15)
{
killedWarriors++;
st.set("killed_" + SKELETON_WARRIOR, killedWarriors);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
case RUIN_IMP:
{
if (killedImps < 20)
{
killedImps++;
st.set("killed_" + RUIN_IMP, killedImps);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
case RUIN_BAT:
case BAT:
{
if (killedBats < 25)
{
killedBats++;
st.set("killed_" + BAT, killedBats);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
break;
}
}
if ((killedWarriors == 15) && (killedImps == 20) && (killedBats == 25))
{
st.setCond(3, true);
}
sendNpcLogList(killer);
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance activeChar)
{
final QuestState st = getQuestState(activeChar, false);
if ((st != null) && st.isStarted() && st.isCond(2))
{
final Set<NpcLogListHolder> npcLogList = new HashSet<>(3);
npcLogList.add(new NpcLogListHolder(SKELETON_WARRIOR, false, st.getInt("killed_" + SKELETON_WARRIOR)));
npcLogList.add(new NpcLogListHolder(RUIN_IMP, false, st.getInt("killed_" + RUIN_IMP)));
npcLogList.add(new NpcLogListHolder(27458, false, st.getInt("killed_" + BAT))); // NOTE: Somehow quest log react on bad ID, maybe client bug
return npcLogList;
}
return super.getNpcLogList(activeChar);
}
}