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
|
||||
10889 Savior's Path - Fallen Emperor's Throne
|
||||
10890 Savior's Path - Fall of Etina
|
||||
10892 Revenge, One Step at a Time
|
||||
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.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
||||
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
||||
import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime;
|
||||
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||
import quests.custom.Q00590_ToEachTheirOwn.Q00590_ToEachTheirOwn;
|
||||
import quests.not_done.*;
|
||||
@ -1005,7 +1006,7 @@ public class QuestMasterHandler
|
||||
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
||||
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
||||
Q10891_AtANewPlace.class,
|
||||
Q10892_RevengeOneStepAtATime.class, // TODO: Not done.
|
||||
Q10892_RevengeOneStepAtATime.class,
|
||||
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
|
||||
10889 Savior's Path - Fallen Emperor's Throne
|
||||
10890 Savior's Path - Fall of Etina
|
||||
10892 Revenge, One Step at a Time
|
||||
10893 End of Twisted Fate
|
||||
10895 Restrain Queen Krosha
|
||||
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.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
||||
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
||||
import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime;
|
||||
import quests.custom.Q00529_RegularBarrierMaintenance.Q00529_RegularBarrierMaintenance;
|
||||
import quests.custom.Q00560_HowToOvercomeFear.Q00560_HowToOvercomeFear;
|
||||
import quests.custom.Q00589_ASecretChange.Q00589_ASecretChange;
|
||||
@ -1027,7 +1028,7 @@ public class QuestMasterHandler
|
||||
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
||||
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
||||
Q10891_AtANewPlace.class,
|
||||
Q10892_RevengeOneStepAtATime.class, // TODO: Not done.
|
||||
Q10892_RevengeOneStepAtATime.class,
|
||||
Q10893_EndOfTwistedFate.class, // TODO: Not done.
|
||||
Q10895_RestrainQueenKrosha.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
|
||||
10889 Savior's Path - Fallen Emperor's Throne
|
||||
10890 Savior's Path - Fall of Etina
|
||||
10892 Revenge, One Step at a Time
|
||||
10893 End of Twisted Fate
|
||||
10896 Visit the Adventure Guild
|
||||
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.Q10857_SecretTeleport.Q10857_SecretTeleport;
|
||||
import quests.Q10891_AtANewPlace.Q10891_AtANewPlace;
|
||||
import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime;
|
||||
import quests.Q11025_PathOfDestinyProving.Q11025_PathOfDestinyProving;
|
||||
import quests.Q11026_PathOfDestinyConviction.Q11026_PathOfDestinyConviction;
|
||||
import quests.Q11027_PathOfDestinyOvercome.Q11027_PathOfDestinyOvercome;
|
||||
@ -517,7 +518,7 @@ public class QuestMasterHandler
|
||||
Q10889_SaviorsPathFallenEmperorsThrone.class, // TODO: Not done.
|
||||
Q10890_SaviorsPathFallOfEtina.class, // TODO: Not done.
|
||||
Q10891_AtANewPlace.class,
|
||||
Q10892_RevengeOneStepAtATime.class, // TODO: Not done.
|
||||
Q10892_RevengeOneStepAtATime.class,
|
||||
Q10893_EndOfTwistedFate.class, // TODO: Not done.
|
||||
Q10896_VisitTheAdventureGuild.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