Addition of quest Revenge, One Step at a Time (10892).
Contributed by Dmitri.
This commit is contained in:
parent
c9ff92f395
commit
dd8abd6252
@ -201,5 +201,4 @@
|
|||||||
10888 Savior's Path - Defeat the Embryo
|
10888 Savior's Path - Defeat the Embryo
|
||||||
10889 Savior's Path - Fallen Emperor's Throne
|
10889 Savior's Path - Fallen Emperor's Throne
|
||||||
10890 Savior's Path - Fall of Etina
|
10890 Savior's Path - Fall of Etina
|
||||||
10892 Revenge, One Step at a Time
|
|
||||||
10893 End of Twisted Fate
|
10893 End of Twisted Fate
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Hey, this place is dangerous! You shouldn't be here.<br>
|
||||||
|
(Only characters above Lv. 103 and Blackbird Clan amity level 10 and above faction.)
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
That seal is something that only a few people can have. You must have been recognized by a member of the Blackbird clan.<br>
|
||||||
|
Am I right?<br><Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-02.htm">"I've met Elikia."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Oh, Elikia? Then I know I can trust you.<br>
|
||||||
|
But... Did Elikia send you to bring me back? I can't just leave...<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-04.htm">"What's the problem?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
A problem? Well, it might not be a problem really. I was captured by the Embryo, and was saved by the Aden Vanguard member, Eliyah. <br>
|
||||||
|
After I was recued, I've been trying to carry out Leona's mission. But it's been hard since the Embryo are getting stronger by the day. I haven't been able to recover fully.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-05.htm">"Go on."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
I know that Elikia is worried, but I must carry out Leona's mission. To do that, I have to recover as soon as possible and find out what the Embryo are up to. <br>
|
||||||
|
Can you buy me some time to recover and go kill <font color="LEVEL">250 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Priests, Fortress Archons, and Atelia Flame Masters</font>?<br>
|
||||||
|
We should be able to keep the stronghold safe and I'll have more time to recover. I'm counting on you.
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
This isn't enough. I need more time to recover. Can you kill <font color="LEVEL">250 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Priests, Fortress Dark Wizards, Fortress Archons, and Atelia Flame Masters</font>? We need to make sure that they don't threaten the stronghold.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Did you carry out my request?<br>
|
||||||
|
I think I'm recovering well.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-08.html">"Yes."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Thank you. I haven't recovered completely, but I will have no problem carrying out Leona's mission.<br>
|
||||||
|
Did Elikia tell you to bring me back? I'm sorry, but I can't do that. I'll give you this letter though, so please take it to Elikia. I'm doing just fine. Thanks.
|
||||||
|
</body></html>
|
@ -0,0 +1,215 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10892_RevengeOneStepAtATime;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.enums.Faction;
|
||||||
|
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Revenge, One Step at a Time (10892)
|
||||||
|
* @URL https://l2wiki.com/Revenge,_One_Step_at_a_Time
|
||||||
|
* @author Dmitri
|
||||||
|
*/
|
||||||
|
public class Q10892_RevengeOneStepAtATime extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int LEONA = 34425; // Blackbird Clan Lord: Leona Blackbird
|
||||||
|
private static final int[] MONSTERS =
|
||||||
|
{
|
||||||
|
24144, // Death Rogue
|
||||||
|
24145, // Death Shooter
|
||||||
|
24146, // Death Warrior
|
||||||
|
24147, // Death Sorcerer
|
||||||
|
24148, // Death Pondus
|
||||||
|
24149, // Devil Nightmare
|
||||||
|
24150, // Devil Warrior
|
||||||
|
24151, // Devil Guardian
|
||||||
|
24152, // Devil Sinist
|
||||||
|
24153, // Devil Varos
|
||||||
|
24154, // Demonic Wizard
|
||||||
|
24155, // Demonic Warrior
|
||||||
|
24156, // Demonic Archer
|
||||||
|
24157, // Demonic Keras
|
||||||
|
24158, // Demonic Weiss
|
||||||
|
24159, // Atelia Yuyurina
|
||||||
|
24160 // Atelia Popobena
|
||||||
|
};
|
||||||
|
private static final int[] GUARDIAN =
|
||||||
|
{
|
||||||
|
24161, // Harke
|
||||||
|
24162, // Ergalion
|
||||||
|
24163 // Spira
|
||||||
|
};
|
||||||
|
// Reward
|
||||||
|
private static final int RUNE_STONE = 39738;
|
||||||
|
private static final int ELCYUM_CRYSTAL = 36514;
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 103;
|
||||||
|
|
||||||
|
public Q10892_RevengeOneStepAtATime()
|
||||||
|
{
|
||||||
|
super(10892);
|
||||||
|
addStartNpc(LEONA);
|
||||||
|
addTalkId(LEONA);
|
||||||
|
addKillId(MONSTERS);
|
||||||
|
addKillId(GUARDIAN);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "34425-00.htm");
|
||||||
|
addFactionLevel(Faction.BLACKBIRD_CLAN, 10, "34425-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "34425-02.htm":
|
||||||
|
case "34425-04.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "34425-05.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "34425-08.html":
|
||||||
|
{
|
||||||
|
giveItems(player, ELCYUM_CRYSTAL, 3);
|
||||||
|
giveItems(player, RUNE_STONE, 1);
|
||||||
|
addExpAndSp(player, 543832495200L, 543832200);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(Npc npc, PlayerInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
if (npc.getId() == LEONA)
|
||||||
|
{
|
||||||
|
htmltext = "34425-01.htm";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
switch (npc.getId())
|
||||||
|
{
|
||||||
|
case LEONA:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "34425-06.html";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = "34425-07.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
|
||||||
|
int killedMonsters = qs.getInt("killed_" + MONSTERS[0]);
|
||||||
|
int killedGuardian = qs.getInt("killed_" + GUARDIAN[0]);
|
||||||
|
|
||||||
|
if (CommonUtil.contains(MONSTERS, npc.getId()))
|
||||||
|
{
|
||||||
|
if (killedMonsters < 1000)
|
||||||
|
{
|
||||||
|
killedMonsters++;
|
||||||
|
qs.set("killed_" + MONSTERS[0], killedMonsters);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (CommonUtil.contains(GUARDIAN, npc.getId()))
|
||||||
|
{
|
||||||
|
if (killedGuardian < 1)
|
||||||
|
{
|
||||||
|
killedGuardian++;
|
||||||
|
qs.set("killed_" + GUARDIAN[0], killedGuardian);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((killedMonsters == 1000) && (killedGuardian == 1))
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isStarted() && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
|
||||||
|
npcLogList.add(new NpcLogListHolder(MONSTERS[0], false, qs.getInt("killed_" + MONSTERS[0])));
|
||||||
|
npcLogList.add(new NpcLogListHolder(GUARDIAN[0], false, qs.getInt("killed_" + GUARDIAN[0])));
|
||||||
|
return npcLogList;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -448,6 +448,7 @@ import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProj
|
|||||||
import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
|
import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
|
||||||
import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
||||||
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
||||||
|
import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime;
|
||||||
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||||
import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
|
import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
|
||||||
import quests.not_done.*;
|
import quests.not_done.*;
|
||||||
@ -1005,7 +1006,7 @@ public class QuestMasterHandler
|
|||||||
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
||||||
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
||||||
Q10891_AtANewPlace.class,
|
Q10891_AtANewPlace.class,
|
||||||
Q10892_RevengeOneStepAtATime.class, // TODO: Not done.
|
Q10892_RevengeOneStepAtATime.class,
|
||||||
Q10893_EndOfTwistedFate.class, // TODO: Not done.
|
Q10893_EndOfTwistedFate.class, // TODO: Not done.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,36 +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.not_done;
|
|
||||||
|
|
||||||
import org.l2jmobius.Config;
|
|
||||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Mobius
|
|
||||||
*/
|
|
||||||
public class Q10892_RevengeOneStepAtATime extends Quest
|
|
||||||
{
|
|
||||||
private static final int START_NPC = 34425;
|
|
||||||
|
|
||||||
public Q10892_RevengeOneStepAtATime()
|
|
||||||
{
|
|
||||||
super(10892);
|
|
||||||
addStartNpc(START_NPC);
|
|
||||||
addTalkId(START_NPC);
|
|
||||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
|
||||||
}
|
|
||||||
}
|
|
@ -209,7 +209,6 @@
|
|||||||
10888 Savior's Path - Defeat the Embryo
|
10888 Savior's Path - Defeat the Embryo
|
||||||
10889 Savior's Path - Fallen Emperor's Throne
|
10889 Savior's Path - Fallen Emperor's Throne
|
||||||
10890 Savior's Path - Fall of Etina
|
10890 Savior's Path - Fall of Etina
|
||||||
10892 Revenge, One Step at a Time
|
|
||||||
10893 End of Twisted Fate
|
10893 End of Twisted Fate
|
||||||
10895 Restrain Queen Krosha
|
10895 Restrain Queen Krosha
|
||||||
10896 Visit the Adventure Guild
|
10896 Visit the Adventure Guild
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Hey, this place is dangerous! You shouldn't be here.<br>
|
||||||
|
(Only characters above Lv. 103 and Blackbird Clan amity level 10 and above faction.)
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
That seal is something that only a few people can have. You must have been recognized by a member of the Blackbird clan.<br>
|
||||||
|
Am I right?<br><Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-02.htm">"I've met Elikia."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Oh, Elikia? Then I know I can trust you.<br>
|
||||||
|
But... Did Elikia send you to bring me back? I can't just leave...<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-04.htm">"What's the problem?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
A problem? Well, it might not be a problem really. I was captured by the Embryo, and was saved by the Aden Vanguard member, Eliyah. <br>
|
||||||
|
After I was recued, I've been trying to carry out Leona's mission. But it's been hard since the Embryo are getting stronger by the day. I haven't been able to recover fully.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-05.htm">"Go on."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
I know that Elikia is worried, but I must carry out Leona's mission. To do that, I have to recover as soon as possible and find out what the Embryo are up to. <br>
|
||||||
|
Can you buy me some time to recover and go kill <font color="LEVEL">250 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Priests, Fortress Archons, and Atelia Flame Masters</font>?<br>
|
||||||
|
We should be able to keep the stronghold safe and I'll have more time to recover. I'm counting on you.
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
This isn't enough. I need more time to recover. Can you kill <font color="LEVEL">250 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Priests, Fortress Dark Wizards, Fortress Archons, and Atelia Flame Masters</font>? We need to make sure that they don't threaten the stronghold.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Did you carry out my request?<br>
|
||||||
|
I think I'm recovering well.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-08.html">"Yes."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Thank you. I haven't recovered completely, but I will have no problem carrying out Leona's mission.<br>
|
||||||
|
Did Elikia tell you to bring me back? I'm sorry, but I can't do that. I'll give you this letter though, so please take it to Elikia. I'm doing just fine. Thanks.
|
||||||
|
</body></html>
|
@ -0,0 +1,215 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10892_RevengeOneStepAtATime;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.enums.Faction;
|
||||||
|
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Revenge, One Step at a Time (10892)
|
||||||
|
* @URL https://l2wiki.com/Revenge,_One_Step_at_a_Time
|
||||||
|
* @author Dmitri
|
||||||
|
*/
|
||||||
|
public class Q10892_RevengeOneStepAtATime extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int LEONA = 34425; // Blackbird Clan Lord: Leona Blackbird
|
||||||
|
private static final int[] MONSTERS =
|
||||||
|
{
|
||||||
|
24144, // Death Rogue
|
||||||
|
24145, // Death Shooter
|
||||||
|
24146, // Death Warrior
|
||||||
|
24147, // Death Sorcerer
|
||||||
|
24148, // Death Pondus
|
||||||
|
24149, // Devil Nightmare
|
||||||
|
24150, // Devil Warrior
|
||||||
|
24151, // Devil Guardian
|
||||||
|
24152, // Devil Sinist
|
||||||
|
24153, // Devil Varos
|
||||||
|
24154, // Demonic Wizard
|
||||||
|
24155, // Demonic Warrior
|
||||||
|
24156, // Demonic Archer
|
||||||
|
24157, // Demonic Keras
|
||||||
|
24158, // Demonic Weiss
|
||||||
|
24159, // Atelia Yuyurina
|
||||||
|
24160 // Atelia Popobena
|
||||||
|
};
|
||||||
|
private static final int[] GUARDIAN =
|
||||||
|
{
|
||||||
|
24161, // Harke
|
||||||
|
24162, // Ergalion
|
||||||
|
24163 // Spira
|
||||||
|
};
|
||||||
|
// Reward
|
||||||
|
private static final int RUNE_STONE = 39738;
|
||||||
|
private static final int ELCYUM_CRYSTAL = 36514;
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 103;
|
||||||
|
|
||||||
|
public Q10892_RevengeOneStepAtATime()
|
||||||
|
{
|
||||||
|
super(10892);
|
||||||
|
addStartNpc(LEONA);
|
||||||
|
addTalkId(LEONA);
|
||||||
|
addKillId(MONSTERS);
|
||||||
|
addKillId(GUARDIAN);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "34425-00.htm");
|
||||||
|
addFactionLevel(Faction.BLACKBIRD_CLAN, 10, "34425-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "34425-02.htm":
|
||||||
|
case "34425-04.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "34425-05.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "34425-08.html":
|
||||||
|
{
|
||||||
|
giveItems(player, ELCYUM_CRYSTAL, 3);
|
||||||
|
giveItems(player, RUNE_STONE, 1);
|
||||||
|
addExpAndSp(player, 543832495200L, 543832200);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(Npc npc, PlayerInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
if (npc.getId() == LEONA)
|
||||||
|
{
|
||||||
|
htmltext = "34425-01.htm";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
switch (npc.getId())
|
||||||
|
{
|
||||||
|
case LEONA:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "34425-06.html";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = "34425-07.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
|
||||||
|
int killedMonsters = qs.getInt("killed_" + MONSTERS[0]);
|
||||||
|
int killedGuardian = qs.getInt("killed_" + GUARDIAN[0]);
|
||||||
|
|
||||||
|
if (CommonUtil.contains(MONSTERS, npc.getId()))
|
||||||
|
{
|
||||||
|
if (killedMonsters < 1000)
|
||||||
|
{
|
||||||
|
killedMonsters++;
|
||||||
|
qs.set("killed_" + MONSTERS[0], killedMonsters);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (CommonUtil.contains(GUARDIAN, npc.getId()))
|
||||||
|
{
|
||||||
|
if (killedGuardian < 1)
|
||||||
|
{
|
||||||
|
killedGuardian++;
|
||||||
|
qs.set("killed_" + GUARDIAN[0], killedGuardian);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((killedMonsters == 1000) && (killedGuardian == 1))
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isStarted() && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
|
||||||
|
npcLogList.add(new NpcLogListHolder(MONSTERS[0], false, qs.getInt("killed_" + MONSTERS[0])));
|
||||||
|
npcLogList.add(new NpcLogListHolder(GUARDIAN[0], false, qs.getInt("killed_" + GUARDIAN[0])));
|
||||||
|
return npcLogList;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -447,6 +447,7 @@ import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProj
|
|||||||
import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
|
import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
|
||||||
import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
||||||
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
||||||
|
import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime;
|
||||||
import quests.custom.Q00529_RegularBarrierMaintenance.Q00529_RegularBarrierMaintenance;
|
import quests.custom.Q00529_RegularBarrierMaintenance.Q00529_RegularBarrierMaintenance;
|
||||||
import quests.custom.Q00560_HowToOvercomeFear.Q00560_HowToOvercomeFear;
|
import quests.custom.Q00560_HowToOvercomeFear.Q00560_HowToOvercomeFear;
|
||||||
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||||
@ -1027,7 +1028,7 @@ public class QuestMasterHandler
|
|||||||
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
||||||
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
||||||
Q10891_AtANewPlace.class,
|
Q10891_AtANewPlace.class,
|
||||||
Q10892_RevengeOneStepAtATime.class, // TODO: Not done.
|
Q10892_RevengeOneStepAtATime.class,
|
||||||
Q10893_EndOfTwistedFate.class, // TODO: Not done.
|
Q10893_EndOfTwistedFate.class, // TODO: Not done.
|
||||||
Q10895_RestrainQueenKrosha.class, // TODO: Not done.
|
Q10895_RestrainQueenKrosha.class, // TODO: Not done.
|
||||||
Q10896_VisitTheAdventureGuild.class, // TODO: Not done.
|
Q10896_VisitTheAdventureGuild.class, // TODO: Not done.
|
||||||
|
@ -1,36 +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.not_done;
|
|
||||||
|
|
||||||
import org.l2jmobius.Config;
|
|
||||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Mobius
|
|
||||||
*/
|
|
||||||
public class Q10892_RevengeOneStepAtATime extends Quest
|
|
||||||
{
|
|
||||||
private static final int START_NPC = 34425;
|
|
||||||
|
|
||||||
public Q10892_RevengeOneStepAtATime()
|
|
||||||
{
|
|
||||||
super(10892);
|
|
||||||
addStartNpc(START_NPC);
|
|
||||||
addTalkId(START_NPC);
|
|
||||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
|
||||||
}
|
|
||||||
}
|
|
@ -195,7 +195,6 @@
|
|||||||
10888 Savior's Path - Defeat the Embryo
|
10888 Savior's Path - Defeat the Embryo
|
||||||
10889 Savior's Path - Fallen Emperor's Throne
|
10889 Savior's Path - Fallen Emperor's Throne
|
||||||
10890 Savior's Path - Fall of Etina
|
10890 Savior's Path - Fall of Etina
|
||||||
10892 Revenge, One Step at a Time
|
|
||||||
10893 End of Twisted Fate
|
10893 End of Twisted Fate
|
||||||
10896 Visit the Adventure Guild
|
10896 Visit the Adventure Guild
|
||||||
10897 Show Your Ability
|
10897 Show Your Ability
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Hey, this place is dangerous! You shouldn't be here.<br>
|
||||||
|
(Only characters above Lv. 103 and Blackbird Clan amity level 10 and above faction.)
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
That seal is something that only a few people can have. You must have been recognized by a member of the Blackbird clan.<br>
|
||||||
|
Am I right?<br><Button ALIGN=LEFT ICON="Normal" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-02.htm">"I've met Elikia."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Oh, Elikia? Then I know I can trust you.<br>
|
||||||
|
But... Did Elikia send you to bring me back? I can't just leave...<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-04.htm">"What's the problem?"</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
A problem? Well, it might not be a problem really. I was captured by the Embryo, and was saved by the Aden Vanguard member, Eliyah. <br>
|
||||||
|
After I was recued, I've been trying to carry out Leona's mission. But it's been hard since the Embryo are getting stronger by the day. I haven't been able to recover fully.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-05.htm">"Go on."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
I know that Elikia is worried, but I must carry out Leona's mission. To do that, I have to recover as soon as possible and find out what the Embryo are up to. <br>
|
||||||
|
Can you buy me some time to recover and go kill <font color="LEVEL">250 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Priests, Fortress Archons, and Atelia Flame Masters</font>?<br>
|
||||||
|
We should be able to keep the stronghold safe and I'll have more time to recover. I'm counting on you.
|
||||||
|
</body></html>
|
@ -0,0 +1,3 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
This isn't enough. I need more time to recover. Can you kill <font color="LEVEL">250 Atelia Passionate Soldiers, Atelia Elite Captains, Atelia High Priests, Fortress Dark Wizards, Fortress Archons, and Atelia Flame Masters</font>? We need to make sure that they don't threaten the stronghold.
|
||||||
|
</body></html>
|
@ -0,0 +1,5 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Did you carry out my request?<br>
|
||||||
|
I think I'm recovering well.<br>
|
||||||
|
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10892_RevengeOneStepAtATime 34425-08.html">"Yes."</Button>
|
||||||
|
</body></html>
|
@ -0,0 +1,4 @@
|
|||||||
|
<html><body>Leona Blackbird:<br>
|
||||||
|
Thank you. I haven't recovered completely, but I will have no problem carrying out Leona's mission.<br>
|
||||||
|
Did Elikia tell you to bring me back? I'm sorry, but I can't do that. I'll give you this letter though, so please take it to Elikia. I'm doing just fine. Thanks.
|
||||||
|
</body></html>
|
@ -0,0 +1,215 @@
|
|||||||
|
/*
|
||||||
|
* 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.Q10892_RevengeOneStepAtATime;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.util.CommonUtil;
|
||||||
|
import org.l2jmobius.gameserver.enums.Faction;
|
||||||
|
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||||
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.QuestState;
|
||||||
|
import org.l2jmobius.gameserver.model.quest.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Revenge, One Step at a Time (10892)
|
||||||
|
* @URL https://l2wiki.com/Revenge,_One_Step_at_a_Time
|
||||||
|
* @author Dmitri
|
||||||
|
*/
|
||||||
|
public class Q10892_RevengeOneStepAtATime extends Quest
|
||||||
|
{
|
||||||
|
// NPCs
|
||||||
|
private static final int LEONA = 34425; // Blackbird Clan Lord: Leona Blackbird
|
||||||
|
private static final int[] MONSTERS =
|
||||||
|
{
|
||||||
|
24144, // Death Rogue
|
||||||
|
24145, // Death Shooter
|
||||||
|
24146, // Death Warrior
|
||||||
|
24147, // Death Sorcerer
|
||||||
|
24148, // Death Pondus
|
||||||
|
24149, // Devil Nightmare
|
||||||
|
24150, // Devil Warrior
|
||||||
|
24151, // Devil Guardian
|
||||||
|
24152, // Devil Sinist
|
||||||
|
24153, // Devil Varos
|
||||||
|
24154, // Demonic Wizard
|
||||||
|
24155, // Demonic Warrior
|
||||||
|
24156, // Demonic Archer
|
||||||
|
24157, // Demonic Keras
|
||||||
|
24158, // Demonic Weiss
|
||||||
|
24159, // Atelia Yuyurina
|
||||||
|
24160 // Atelia Popobena
|
||||||
|
};
|
||||||
|
private static final int[] GUARDIAN =
|
||||||
|
{
|
||||||
|
24161, // Harke
|
||||||
|
24162, // Ergalion
|
||||||
|
24163 // Spira
|
||||||
|
};
|
||||||
|
// Reward
|
||||||
|
private static final int RUNE_STONE = 39738;
|
||||||
|
private static final int ELCYUM_CRYSTAL = 36514;
|
||||||
|
// Misc
|
||||||
|
private static final int MIN_LEVEL = 103;
|
||||||
|
|
||||||
|
public Q10892_RevengeOneStepAtATime()
|
||||||
|
{
|
||||||
|
super(10892);
|
||||||
|
addStartNpc(LEONA);
|
||||||
|
addTalkId(LEONA);
|
||||||
|
addKillId(MONSTERS);
|
||||||
|
addKillId(GUARDIAN);
|
||||||
|
addCondMinLevel(MIN_LEVEL, "34425-00.htm");
|
||||||
|
addFactionLevel(Faction.BLACKBIRD_CLAN, 10, "34425-00.htm");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||||
|
{
|
||||||
|
String htmltext = null;
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if (qs == null)
|
||||||
|
{
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (event)
|
||||||
|
{
|
||||||
|
case "34425-02.htm":
|
||||||
|
case "34425-04.htm":
|
||||||
|
{
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "34425-05.htm":
|
||||||
|
{
|
||||||
|
qs.startQuest();
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "34425-08.html":
|
||||||
|
{
|
||||||
|
giveItems(player, ELCYUM_CRYSTAL, 3);
|
||||||
|
giveItems(player, RUNE_STONE, 1);
|
||||||
|
addExpAndSp(player, 543832495200L, 543832200);
|
||||||
|
qs.exitQuest(false, true);
|
||||||
|
htmltext = event;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onTalk(Npc npc, PlayerInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, true);
|
||||||
|
String htmltext = getNoQuestMsg(player);
|
||||||
|
|
||||||
|
switch (qs.getState())
|
||||||
|
{
|
||||||
|
case State.CREATED:
|
||||||
|
{
|
||||||
|
if (npc.getId() == LEONA)
|
||||||
|
{
|
||||||
|
htmltext = "34425-01.htm";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.STARTED:
|
||||||
|
{
|
||||||
|
switch (npc.getId())
|
||||||
|
{
|
||||||
|
case LEONA:
|
||||||
|
{
|
||||||
|
if (qs.isCond(1))
|
||||||
|
{
|
||||||
|
htmltext = "34425-06.html";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmltext = "34425-07.html";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case State.COMPLETED:
|
||||||
|
{
|
||||||
|
htmltext = getAlreadyCompletedMsg(player);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return htmltext;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(killer, false);
|
||||||
|
if ((qs != null) && qs.isCond(1))
|
||||||
|
{
|
||||||
|
|
||||||
|
int killedMonsters = qs.getInt("killed_" + MONSTERS[0]);
|
||||||
|
int killedGuardian = qs.getInt("killed_" + GUARDIAN[0]);
|
||||||
|
|
||||||
|
if (CommonUtil.contains(MONSTERS, npc.getId()))
|
||||||
|
{
|
||||||
|
if (killedMonsters < 1000)
|
||||||
|
{
|
||||||
|
killedMonsters++;
|
||||||
|
qs.set("killed_" + MONSTERS[0], killedMonsters);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (CommonUtil.contains(GUARDIAN, npc.getId()))
|
||||||
|
{
|
||||||
|
if (killedGuardian < 1)
|
||||||
|
{
|
||||||
|
killedGuardian++;
|
||||||
|
qs.set("killed_" + GUARDIAN[0], killedGuardian);
|
||||||
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((killedMonsters == 1000) && (killedGuardian == 1))
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.onKill(npc, killer, isSummon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<NpcLogListHolder> getNpcLogList(PlayerInstance player)
|
||||||
|
{
|
||||||
|
final QuestState qs = getQuestState(player, false);
|
||||||
|
if ((qs != null) && qs.isStarted() && qs.isCond(1))
|
||||||
|
{
|
||||||
|
final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
|
||||||
|
npcLogList.add(new NpcLogListHolder(MONSTERS[0], false, qs.getInt("killed_" + MONSTERS[0])));
|
||||||
|
npcLogList.add(new NpcLogListHolder(GUARDIAN[0], false, qs.getInt("killed_" + GUARDIAN[0])));
|
||||||
|
return npcLogList;
|
||||||
|
}
|
||||||
|
return super.getNpcLogList(player);
|
||||||
|
}
|
||||||
|
}
|
@ -192,6 +192,7 @@ import quests.Q10852_TheMotherTreeRevivalProject.Q10852_TheMotherTreeRevivalProj
|
|||||||
import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
|
import quests.Q10856_SuperionAppears.Q10856_SuperionAppears;
|
||||||
import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
import quests.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
||||||
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
||||||
|
import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime;
|
||||||
import quests.Q11025_PathOfDestinyProving.Q11025_PathOfDestinyProving;
|
import quests.Q11025_PathOfDestinyProving.Q11025_PathOfDestinyProving;
|
||||||
import quests.Q11026_PathOfDestinyConviction.Q11026_PathOfDestinyConviction;
|
import quests.Q11026_PathOfDestinyConviction.Q11026_PathOfDestinyConviction;
|
||||||
import quests.Q11027_PathOfDestinyOvercome.Q11027_PathOfDestinyOvercome;
|
import quests.Q11027_PathOfDestinyOvercome.Q11027_PathOfDestinyOvercome;
|
||||||
@ -517,7 +518,7 @@ public class QuestMasterHandler
|
|||||||
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
||||||
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
||||||
Q10891_AtANewPlace.class,
|
Q10891_AtANewPlace.class,
|
||||||
Q10892_RevengeOneStepAtATime.class, // TODO: Not done.
|
Q10892_RevengeOneStepAtATime.class,
|
||||||
Q10893_EndOfTwistedFate.class, // TODO: Not done.
|
Q10893_EndOfTwistedFate.class, // TODO: Not done.
|
||||||
Q10896_VisitTheAdventureGuild.class, // TODO: Not done.
|
Q10896_VisitTheAdventureGuild.class, // TODO: Not done.
|
||||||
Q10897_ShowYourAbility.class, // TODO: Not done.
|
Q10897_ShowYourAbility.class, // TODO: Not done.
|
||||||
|
@ -1,36 +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.not_done;
|
|
||||||
|
|
||||||
import org.l2jmobius.Config;
|
|
||||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Mobius
|
|
||||||
*/
|
|
||||||
public class Q10892_RevengeOneStepAtATime extends Quest
|
|
||||||
{
|
|
||||||
private static final int START_NPC = 34425;
|
|
||||||
|
|
||||||
public Q10892_RevengeOneStepAtATime()
|
|
||||||
{
|
|
||||||
super(10892);
|
|
||||||
addStartNpc(START_NPC);
|
|
||||||
addTalkId(START_NPC);
|
|
||||||
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user