Addition of quest More Aggressive Operation (587).

Contributed by Dmitri.
This commit is contained in:
MobiusDevelopment
2020-01-22 01:32:15 +00:00
parent 83d72852b0
commit 5a198ccff5
52 changed files with 1048 additions and 153 deletions

View File

@@ -9,7 +9,6 @@
576 Special Mission: Defeat Spezion 576 Special Mission: Defeat Spezion
585 Can't Go Against the Time 585 Can't Go Against the Time
586 Mutated Creatures 586 Mutated Creatures
587 More Aggressive Operation
588 Head-on Crash 588 Head-on Crash
655 A Grand Plan for Taming Wild Beasts 655 A Grand Plan for Taming Wild Beasts
665 Basic Training for Hunter Guild Member 665 Basic Training for Hunter Guild Member

View File

@@ -0,0 +1,4 @@
<html><body>Truth Seeker Devianne:<br>
In order to take on this mission, you must first build more trust with us.<br>
<font color="LEVEL">(Only characters with faction level 5 or above with the Blackbird Clan may undertake this quest.)</font><br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-02.htm">"Sure, no problem!"</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-03.htm">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-04.htm">"Alright."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.<br>
But if you want to listen to the explanation again, I'd be happy to tell you.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Adventure Guildsman Penny:<br>
Good choice. Now, go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font> and do the mission that she gives you. When the mission is done, come back to me.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Black Wizard Lapathia:<br>
I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.<br>
<font color="LEVEL">(To do "Basic Mission: Isle of Souls," you must do "Uncover the Secret" and "More Aggressive Operation" through Black Wizard Lapathia.)</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-07.html">"Go on."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Black Wizard Lapathia:<br>
You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?<br>
Don't tell me you're going to walk all the way up there. I know a better way.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-08.html">"Go on."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Black Wizard Lapathia:<br>
When setting out for a joumey, veteran adventurers always pack <font color="LEVEL">Scrolls of Escape</font>, it teleports the user immediately to the closest village or to the check point.<br>
If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
</body></html>

View File

@@ -0,0 +1,223 @@
/*
* 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.Q00587_MoreAggressiveOperation;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
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;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* More Aggressive Operation (587)
* @URL https://l2wiki.com/More_Aggressive_Operation
* @author Dmitri
*/
public class Q00587_MoreAggressiveOperation extends Quest
{
// NPCs
private static final int HESET = 33780;
// Monsters
private static final int BERSERK_CONTROL_GOLEM = 24130;
private static final int CONTROL_GOLEM = 23261;
private static final int[] MOBS =
{
23254, // Yin Spicula
23246, // Spicula 1
23247, // Spicula 2
23248, // Spicula 3
23249, // Spicula 4
23250, // Spicula 5
23251, // Spicula 6
23255, // Light Golem
23257, // Twosword Golem
23259, // Broken-bodied Golem
23260, // Summoned Golem Body
23263, // Broken Golem of Repairs
23264, // Broken Drill Golem
23266, // Broken Pincer Golem
23267, // Screw Golem
};
// Items
private static final int CONTROL_MODULE = 48383;
// Misc
private static final int MIN_LEVEL = 93;
private static final int MAX_LEVEL = 103;
public Q00587_MoreAggressiveOperation()
{
super(587);
addStartNpc(HESET);
addTalkId(HESET);
addKillId(BERSERK_CONTROL_GOLEM, CONTROL_GOLEM);
addKillId(MOBS);
registerQuestItems(CONTROL_MODULE);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33780-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 "33780-02.htm":
case "33780-03.htm":
case "33780-07.html":
{
htmltext = event;
break;
}
case "33780-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "33780-08.html":
{
if (qs.isCond(2))
{
giveAdena(player, 587070, true);
addExpAndSp(player, 1193302530L, 1193280);
qs.exitQuest(QuestType.DAILY, 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() == HESET)
{
htmltext = "33780-01.htm";
}
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case HESET:
{
if (qs.isCond(1))
{
htmltext = "33780-05.html";
}
else
{
htmltext = "33780-06.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
if (qs.isNowAvailable())
{
qs.setState(State.CREATED);
htmltext = "33780-01.htm";
}
else
{
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
int killedAntelope = qs.getInt("killed_" + MOBS[0]);
if (npc.getId() == CONTROL_GOLEM)
{
if (getRandom(100) < 50)
{
final Npc mob = addSpawn(BERSERK_CONTROL_GOLEM, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, player, 5);
}
}
if ((npc.getId() == BERSERK_CONTROL_GOLEM) && (getQuestItemsCount(player, CONTROL_MODULE) < 4) && (getRandom(100) < 40))
{
giveItems(player, CONTROL_MODULE, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (CommonUtil.contains(MOBS, npc.getId()))
{
if (killedAntelope < 400)
{
killedAntelope++;
qs.set("killed_" + MOBS[0], killedAntelope);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((killedAntelope == 400) && (getQuestItemsCount(player, CONTROL_MODULE) == 4))
{
qs.setCond(2, true);
}
}
return super.onKill(npc, player, 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> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTERS_AROUND_THE_TENT, qs.getInt("killed_" + MOBS[0])));
return holder;
}
return super.getNpcLogList(player);
}
}

View File

@@ -150,6 +150,7 @@ import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual;
import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood; import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood;
import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival; import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival;
import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye; import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye;
import quests.Q00587_MoreAggressiveOperation.Q00587_MoreAggressiveOperation;
import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames; import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames;
import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame; import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame;
import quests.Q00620_FourGoblets.Q00620_FourGoblets; import quests.Q00620_FourGoblets.Q00620_FourGoblets;
@@ -651,7 +652,7 @@ public class QuestMasterHandler
Q00584_NeverSayGoodBye.class, // TODO: Not done. Q00584_NeverSayGoodBye.class, // TODO: Not done.
Q00585_CantGoAgainstTheTime.class, // TODO: Not done. Q00585_CantGoAgainstTheTime.class, // TODO: Not done.
Q00586_MutatedCreatures.class, // TODO: Not done. Q00586_MutatedCreatures.class, // TODO: Not done.
Q00587_MoreAggressiveOperation.class, // TODO: Not done. Q00587_MoreAggressiveOperation.class,
Q00588_HeadOnCrash.class, // TODO: Not done. Q00588_HeadOnCrash.class, // TODO: Not done.
Q00617_GatherTheFlames.class, Q00617_GatherTheFlames.class,
Q00618_IntoTheFlame.class, Q00618_IntoTheFlame.class,

View File

@@ -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 Q00587_MoreAggressiveOperation extends Quest
{
private static final int START_NPC = 33780;
public Q00587_MoreAggressiveOperation()
{
super(587);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@@ -15,7 +15,6 @@
577 Basic Mission: Silent Valley 577 Basic Mission: Silent Valley
585 Can't Go Against the Time 585 Can't Go Against the Time
586 Mutated Creatures 586 Mutated Creatures
587 More Aggressive Operation
588 Head-on Crash 588 Head-on Crash
591 Great Ambitions 591 Great Ambitions
599 Demons and Dimensional Energy 599 Demons and Dimensional Energy

View File

@@ -0,0 +1,4 @@
<html><body>Truth Seeker Devianne:<br>
In order to take on this mission, you must first build more trust with us.<br>
<font color="LEVEL">(Only characters with faction level 5 or above with the Blackbird Clan may undertake this quest.)</font><br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-02.htm">"Sure, no problem!"</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-03.htm">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-04.htm">"Alright."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.<br>
But if you want to listen to the explanation again, I'd be happy to tell you.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Adventure Guildsman Penny:<br>
Good choice. Now, go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font> and do the mission that she gives you. When the mission is done, come back to me.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Black Wizard Lapathia:<br>
I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.<br>
<font color="LEVEL">(To do "Basic Mission: Isle of Souls," you must do "Uncover the Secret" and "More Aggressive Operation" through Black Wizard Lapathia.)</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-07.html">"Go on."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Black Wizard Lapathia:<br>
You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?<br>
Don't tell me you're going to walk all the way up there. I know a better way.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-08.html">"Go on."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Black Wizard Lapathia:<br>
When setting out for a joumey, veteran adventurers always pack <font color="LEVEL">Scrolls of Escape</font>, it teleports the user immediately to the closest village or to the check point.<br>
If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
</body></html>

View File

@@ -0,0 +1,223 @@
/*
* 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.Q00587_MoreAggressiveOperation;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
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;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* More Aggressive Operation (587)
* @URL https://l2wiki.com/More_Aggressive_Operation
* @author Dmitri
*/
public class Q00587_MoreAggressiveOperation extends Quest
{
// NPCs
private static final int HESET = 33780;
// Monsters
private static final int BERSERK_CONTROL_GOLEM = 24130;
private static final int CONTROL_GOLEM = 23261;
private static final int[] MOBS =
{
23254, // Yin Spicula
23246, // Spicula 1
23247, // Spicula 2
23248, // Spicula 3
23249, // Spicula 4
23250, // Spicula 5
23251, // Spicula 6
23255, // Light Golem
23257, // Twosword Golem
23259, // Broken-bodied Golem
23260, // Summoned Golem Body
23263, // Broken Golem of Repairs
23264, // Broken Drill Golem
23266, // Broken Pincer Golem
23267, // Screw Golem
};
// Items
private static final int CONTROL_MODULE = 48383;
// Misc
private static final int MIN_LEVEL = 93;
private static final int MAX_LEVEL = 103;
public Q00587_MoreAggressiveOperation()
{
super(587);
addStartNpc(HESET);
addTalkId(HESET);
addKillId(BERSERK_CONTROL_GOLEM, CONTROL_GOLEM);
addKillId(MOBS);
registerQuestItems(CONTROL_MODULE);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33780-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 "33780-02.htm":
case "33780-03.htm":
case "33780-07.html":
{
htmltext = event;
break;
}
case "33780-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "33780-08.html":
{
if (qs.isCond(2))
{
giveAdena(player, 587070, true);
addExpAndSp(player, 1193302530L, 1193280);
qs.exitQuest(QuestType.DAILY, 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() == HESET)
{
htmltext = "33780-01.htm";
}
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case HESET:
{
if (qs.isCond(1))
{
htmltext = "33780-05.html";
}
else
{
htmltext = "33780-06.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
if (qs.isNowAvailable())
{
qs.setState(State.CREATED);
htmltext = "33780-01.htm";
}
else
{
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
int killedAntelope = qs.getInt("killed_" + MOBS[0]);
if (npc.getId() == CONTROL_GOLEM)
{
if (getRandom(100) < 50)
{
final Npc mob = addSpawn(BERSERK_CONTROL_GOLEM, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, player, 5);
}
}
if ((npc.getId() == BERSERK_CONTROL_GOLEM) && (getQuestItemsCount(player, CONTROL_MODULE) < 4) && (getRandom(100) < 40))
{
giveItems(player, CONTROL_MODULE, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (CommonUtil.contains(MOBS, npc.getId()))
{
if (killedAntelope < 400)
{
killedAntelope++;
qs.set("killed_" + MOBS[0], killedAntelope);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((killedAntelope == 400) && (getQuestItemsCount(player, CONTROL_MODULE) == 4))
{
qs.setCond(2, true);
}
}
return super.onKill(npc, player, 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> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTERS_AROUND_THE_TENT, qs.getInt("killed_" + MOBS[0])));
return holder;
}
return super.getNpcLogList(player);
}
}

View File

@@ -128,6 +128,7 @@ import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual;
import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood; import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood;
import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival; import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival;
import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye; import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye;
import quests.Q00587_MoreAggressiveOperation.Q00587_MoreAggressiveOperation;
import quests.Q00600_KeyToTheRefiningProcess.Q00600_KeyToTheRefiningProcess; import quests.Q00600_KeyToTheRefiningProcess.Q00600_KeyToTheRefiningProcess;
import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames; import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames;
import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame; import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame;
@@ -586,7 +587,7 @@ public class QuestMasterHandler
Q00584_NeverSayGoodBye.class, Q00584_NeverSayGoodBye.class,
Q00585_CantGoAgainstTheTime.class, // TODO: Not done. Q00585_CantGoAgainstTheTime.class, // TODO: Not done.
Q00586_MutatedCreatures.class, // TODO: Not done. Q00586_MutatedCreatures.class, // TODO: Not done.
Q00587_MoreAggressiveOperation.class, // TODO: Not done. Q00587_MoreAggressiveOperation.class,
Q00588_HeadOnCrash.class, // TODO: Not done. Q00588_HeadOnCrash.class, // TODO: Not done.
Q00589_ASecretChange.class, // FIXME: Custom. Q00589_ASecretChange.class, // FIXME: Custom.
Q00590_ToEachTheirOwn.class, // FIXME: Custom. Q00590_ToEachTheirOwn.class, // FIXME: Custom.

View File

@@ -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 Q00587_MoreAggressiveOperation extends Quest
{
private static final int START_NPC = 33780;
public Q00587_MoreAggressiveOperation()
{
super(587);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@@ -19,7 +19,6 @@
579 Basic Mission: Blazing Swamp 579 Basic Mission: Blazing Swamp
585 Can't Go Against the Time 585 Can't Go Against the Time
586 Mutated Creatures 586 Mutated Creatures
587 More Aggressive Operation
588 Head-on Crash 588 Head-on Crash
591 Great Ambitions 591 Great Ambitions
593 Basic Mission: Pagan Temple 593 Basic Mission: Pagan Temple

View File

@@ -0,0 +1,4 @@
<html><body>Truth Seeker Devianne:<br>
In order to take on this mission, you must first build more trust with us.<br>
<font color="LEVEL">(Only characters with faction level 5 or above with the Blackbird Clan may undertake this quest.)</font><br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-02.htm">"Sure, no problem!"</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-03.htm">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-04.htm">"Alright."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.<br>
But if you want to listen to the explanation again, I'd be happy to tell you.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Adventure Guildsman Penny:<br>
Good choice. Now, go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font> and do the mission that she gives you. When the mission is done, come back to me.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Black Wizard Lapathia:<br>
I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.<br>
<font color="LEVEL">(To do "Basic Mission: Isle of Souls," you must do "Uncover the Secret" and "More Aggressive Operation" through Black Wizard Lapathia.)</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-07.html">"Go on."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Black Wizard Lapathia:<br>
You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?<br>
Don't tell me you're going to walk all the way up there. I know a better way.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-08.html">"Go on."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Black Wizard Lapathia:<br>
When setting out for a joumey, veteran adventurers always pack <font color="LEVEL">Scrolls of Escape</font>, it teleports the user immediately to the closest village or to the check point.<br>
If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
</body></html>

View File

@@ -0,0 +1,223 @@
/*
* 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.Q00587_MoreAggressiveOperation;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
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;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* More Aggressive Operation (587)
* @URL https://l2wiki.com/More_Aggressive_Operation
* @author Dmitri
*/
public class Q00587_MoreAggressiveOperation extends Quest
{
// NPCs
private static final int HESET = 33780;
// Monsters
private static final int BERSERK_CONTROL_GOLEM = 24130;
private static final int CONTROL_GOLEM = 23261;
private static final int[] MOBS =
{
23254, // Yin Spicula
23246, // Spicula 1
23247, // Spicula 2
23248, // Spicula 3
23249, // Spicula 4
23250, // Spicula 5
23251, // Spicula 6
23255, // Light Golem
23257, // Twosword Golem
23259, // Broken-bodied Golem
23260, // Summoned Golem Body
23263, // Broken Golem of Repairs
23264, // Broken Drill Golem
23266, // Broken Pincer Golem
23267, // Screw Golem
};
// Items
private static final int CONTROL_MODULE = 48383;
// Misc
private static final int MIN_LEVEL = 93;
private static final int MAX_LEVEL = 103;
public Q00587_MoreAggressiveOperation()
{
super(587);
addStartNpc(HESET);
addTalkId(HESET);
addKillId(BERSERK_CONTROL_GOLEM, CONTROL_GOLEM);
addKillId(MOBS);
registerQuestItems(CONTROL_MODULE);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33780-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 "33780-02.htm":
case "33780-03.htm":
case "33780-07.html":
{
htmltext = event;
break;
}
case "33780-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "33780-08.html":
{
if (qs.isCond(2))
{
giveAdena(player, 587070, true);
addExpAndSp(player, 1193302530L, 1193280);
qs.exitQuest(QuestType.DAILY, 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() == HESET)
{
htmltext = "33780-01.htm";
}
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case HESET:
{
if (qs.isCond(1))
{
htmltext = "33780-05.html";
}
else
{
htmltext = "33780-06.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
if (qs.isNowAvailable())
{
qs.setState(State.CREATED);
htmltext = "33780-01.htm";
}
else
{
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
int killedAntelope = qs.getInt("killed_" + MOBS[0]);
if (npc.getId() == CONTROL_GOLEM)
{
if (getRandom(100) < 50)
{
final Npc mob = addSpawn(BERSERK_CONTROL_GOLEM, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, player, 5);
}
}
if ((npc.getId() == BERSERK_CONTROL_GOLEM) && (getQuestItemsCount(player, CONTROL_MODULE) < 4) && (getRandom(100) < 40))
{
giveItems(player, CONTROL_MODULE, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (CommonUtil.contains(MOBS, npc.getId()))
{
if (killedAntelope < 400)
{
killedAntelope++;
qs.set("killed_" + MOBS[0], killedAntelope);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((killedAntelope == 400) && (getQuestItemsCount(player, CONTROL_MODULE) == 4))
{
qs.setCond(2, true);
}
}
return super.onKill(npc, player, 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> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTERS_AROUND_THE_TENT, qs.getInt("killed_" + MOBS[0])));
return holder;
}
return super.getNpcLogList(player);
}
}

View File

@@ -128,6 +128,7 @@ import quests.Q00581_ThePurificationRitual.Q00581_ThePurificationRitual;
import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood; import quests.Q00582_WashBloodWithBlood.Q00582_WashBloodWithBlood;
import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival; import quests.Q00583_MeaningOfSurvival.Q00583_MeaningOfSurvival;
import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye; import quests.Q00584_NeverSayGoodBye.Q00584_NeverSayGoodBye;
import quests.Q00587_MoreAggressiveOperation.Q00587_MoreAggressiveOperation;
import quests.Q00600_KeyToTheRefiningProcess.Q00600_KeyToTheRefiningProcess; import quests.Q00600_KeyToTheRefiningProcess.Q00600_KeyToTheRefiningProcess;
import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames; import quests.Q00617_GatherTheFlames.Q00617_GatherTheFlames;
import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame; import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame;
@@ -602,7 +603,7 @@ public class QuestMasterHandler
Q00584_NeverSayGoodBye.class, Q00584_NeverSayGoodBye.class,
Q00585_CantGoAgainstTheTime.class, // TODO: Not done. Q00585_CantGoAgainstTheTime.class, // TODO: Not done.
Q00586_MutatedCreatures.class, // TODO: Not done. Q00586_MutatedCreatures.class, // TODO: Not done.
Q00587_MoreAggressiveOperation.class, // TODO: Not done. Q00587_MoreAggressiveOperation.class,
Q00588_HeadOnCrash.class, // TODO: Not done. Q00588_HeadOnCrash.class, // TODO: Not done.
Q00589_ASecretChange.class, // FIXME: Custom. Q00589_ASecretChange.class, // FIXME: Custom.
Q00590_ToEachTheirOwn.class, // FIXME: Custom. Q00590_ToEachTheirOwn.class, // FIXME: Custom.

View File

@@ -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 Q00587_MoreAggressiveOperation extends Quest
{
private static final int START_NPC = 33780;
public Q00587_MoreAggressiveOperation()
{
super(587);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}

View File

@@ -50,7 +50,6 @@
578 Basic Mission: Cemetery 578 Basic Mission: Cemetery
585 Can't Go Against the Time 585 Can't Go Against the Time
586 Mutated Creatures 586 Mutated Creatures
587 More Aggressive Operation
588 Head-on Crash 588 Head-on Crash
591 Great Ambitions 591 Great Ambitions
592 Snow's Plea - Monsters from Three Areas 592 Snow's Plea - Monsters from Three Areas

View File

@@ -0,0 +1,4 @@
<html><body>Truth Seeker Devianne:<br>
In order to take on this mission, you must first build more trust with us.<br>
<font color="LEVEL">(Only characters with faction level 5 or above with the Blackbird Clan may undertake this quest.)</font><br>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Your're the one that Hephah has sent, right? If not, you should go meet Herphah and receive a mission from her before you continue. If you think it doesn't matter, I can continue anyway. Do you want me to continue?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-02.htm">"Sure, no problem!"</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Herphah wants you to do some missions, and I'll chose an appropriate mission depending on your relationship with us at the Adventure Guild.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-03.htm">"Go on."</button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
Your mission is to assist with the task at the Altar of Evil. If successful, our Adventure Guild will give you additional rewards on top of the mission payment and your relationship with our faction will grow even stronger.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-04.htm">"Alright."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Adventure Guildsman Penny:<br>
You've already leamed everything you need to know about the mission. By that I mean, how to go to the Altar of Evil. You should be able to start the mission right away without further explanation.<br>
But if you want to listen to the explanation again, I'd be happy to tell you.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Adventure Guildsman Penny:<br>
Good choice. Now, go to <font color="LEVEL">Black Wizard Lapathia</font> at the <font color="LEVEL">Altar of Evil</font> and do the mission that she gives you. When the mission is done, come back to me.<br>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Black Wizard Lapathia:<br>
I asked the Adventure Guild to send an adventurer but didn't expect they would send you. I'd like to see how good you are.<br>
<font color="LEVEL">(To do "Basic Mission: Isle of Souls," you must do "Uncover the Secret" and "More Aggressive Operation" through Black Wizard Lapathia.)</font><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-07.html">"Go on."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Black Wizard Lapathia:<br>
You completed all the missions I gave you, meaning that you also completed those of the Adventure Guildsman. Are you going back to the Town of Aden? How?<br>
Don't tell me you're going to walk all the way up there. I know a better way.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00587_MoreAggressiveOperation 33780-08.html">"Go on."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Black Wizard Lapathia:<br>
When setting out for a joumey, veteran adventurers always pack <font color="LEVEL">Scrolls of Escape</font>, it teleports the user immediately to the closest village or to the check point.<br>
If you have these useful items, you can move easily after hunting or when you are far away from the village. Since you've been a great help to me, I'll give you the scroll that can teleport you directly to the Town of Aden.
</body></html>

View File

@@ -0,0 +1,223 @@
/*
* 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.Q00587_MoreAggressiveOperation;
import java.util.HashSet;
import java.util.Set;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.enums.QuestType;
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;
import org.l2jmobius.gameserver.network.NpcStringId;
/**
* More Aggressive Operation (587)
* @URL https://l2wiki.com/More_Aggressive_Operation
* @author Dmitri
*/
public class Q00587_MoreAggressiveOperation extends Quest
{
// NPCs
private static final int HESET = 33780;
// Monsters
private static final int BERSERK_CONTROL_GOLEM = 24130;
private static final int CONTROL_GOLEM = 23261;
private static final int[] MOBS =
{
23254, // Yin Spicula
23246, // Spicula 1
23247, // Spicula 2
23248, // Spicula 3
23249, // Spicula 4
23250, // Spicula 5
23251, // Spicula 6
23255, // Light Golem
23257, // Twosword Golem
23259, // Broken-bodied Golem
23260, // Summoned Golem Body
23263, // Broken Golem of Repairs
23264, // Broken Drill Golem
23266, // Broken Pincer Golem
23267, // Screw Golem
};
// Items
private static final int CONTROL_MODULE = 48383;
// Misc
private static final int MIN_LEVEL = 93;
private static final int MAX_LEVEL = 103;
public Q00587_MoreAggressiveOperation()
{
super(587);
addStartNpc(HESET);
addTalkId(HESET);
addKillId(BERSERK_CONTROL_GOLEM, CONTROL_GOLEM);
addKillId(MOBS);
registerQuestItems(CONTROL_MODULE);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33780-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 "33780-02.htm":
case "33780-03.htm":
case "33780-07.html":
{
htmltext = event;
break;
}
case "33780-04.htm":
{
qs.startQuest();
htmltext = event;
break;
}
case "33780-08.html":
{
if (qs.isCond(2))
{
giveAdena(player, 587070, true);
addExpAndSp(player, 1193302530L, 1193280);
qs.exitQuest(QuestType.DAILY, 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() == HESET)
{
htmltext = "33780-01.htm";
}
break;
}
case State.STARTED:
{
switch (npc.getId())
{
case HESET:
{
if (qs.isCond(1))
{
htmltext = "33780-05.html";
}
else
{
htmltext = "33780-06.html";
}
break;
}
}
break;
}
case State.COMPLETED:
{
if (qs.isNowAvailable())
{
qs.setState(State.CREATED);
htmltext = "33780-01.htm";
}
else
{
htmltext = getAlreadyCompletedMsg(player, QuestType.DAILY);
}
break;
}
}
return htmltext;
}
@Override
public String onKill(Npc npc, PlayerInstance player, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
int killedAntelope = qs.getInt("killed_" + MOBS[0]);
if (npc.getId() == CONTROL_GOLEM)
{
if (getRandom(100) < 50)
{
final Npc mob = addSpawn(BERSERK_CONTROL_GOLEM, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000);
addAttackPlayerDesire(mob, player, 5);
}
}
if ((npc.getId() == BERSERK_CONTROL_GOLEM) && (getQuestItemsCount(player, CONTROL_MODULE) < 4) && (getRandom(100) < 40))
{
giveItems(player, CONTROL_MODULE, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
else if (CommonUtil.contains(MOBS, npc.getId()))
{
if (killedAntelope < 400)
{
killedAntelope++;
qs.set("killed_" + MOBS[0], killedAntelope);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((killedAntelope == 400) && (getQuestItemsCount(player, CONTROL_MODULE) == 4))
{
qs.setCond(2, true);
}
}
return super.onKill(npc, player, 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> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_MONSTERS_AROUND_THE_TENT, qs.getInt("killed_" + MOBS[0])));
return holder;
}
return super.getNpcLogList(player);
}
}

View File

@@ -58,6 +58,7 @@ import quests.Q00564_BasicMissionKartiasLabyrinthSolo.Q00564_BasicMissionKartias
import quests.Q00567_BasicMissionIsleOfSouls.Q00567_BasicMissionIsleOfSouls; import quests.Q00567_BasicMissionIsleOfSouls.Q00567_BasicMissionIsleOfSouls;
import quests.Q00569_BasicMissionSealOfShilen.Q00569_BasicMissionSealOfShilen; import quests.Q00569_BasicMissionSealOfShilen.Q00569_BasicMissionSealOfShilen;
import quests.Q00580_BeyondTheMemories.Q00580_BeyondTheMemories; import quests.Q00580_BeyondTheMemories.Q00580_BeyondTheMemories;
import quests.Q00587_MoreAggressiveOperation.Q00587_MoreAggressiveOperation;
import quests.Q00600_KeyToTheRefiningProcess.Q00600_KeyToTheRefiningProcess; import quests.Q00600_KeyToTheRefiningProcess.Q00600_KeyToTheRefiningProcess;
import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame; import quests.Q00618_IntoTheFlame.Q00618_IntoTheFlame;
import quests.Q00620_FourGoblets.Q00620_FourGoblets; import quests.Q00620_FourGoblets.Q00620_FourGoblets;
@@ -243,7 +244,6 @@ import quests.not_done.Q00577_BasicMissionSilentValley;
import quests.not_done.Q00578_BasicMissionCemetery; import quests.not_done.Q00578_BasicMissionCemetery;
import quests.not_done.Q00585_CantGoAgainstTheTime; import quests.not_done.Q00585_CantGoAgainstTheTime;
import quests.not_done.Q00586_MutatedCreatures; import quests.not_done.Q00586_MutatedCreatures;
import quests.not_done.Q00587_MoreAggressiveOperation;
import quests.not_done.Q00588_HeadOnCrash; import quests.not_done.Q00588_HeadOnCrash;
import quests.not_done.Q00591_GreatAmbitions; import quests.not_done.Q00591_GreatAmbitions;
import quests.not_done.Q00593_BasicMissionPaganTemple; import quests.not_done.Q00593_BasicMissionPaganTemple;
@@ -392,7 +392,7 @@ public class QuestMasterHandler
Q00580_BeyondTheMemories.class, Q00580_BeyondTheMemories.class,
Q00585_CantGoAgainstTheTime.class, // TODO: Not done. Q00585_CantGoAgainstTheTime.class, // TODO: Not done.
Q00586_MutatedCreatures.class, // TODO: Not done. Q00586_MutatedCreatures.class, // TODO: Not done.
Q00587_MoreAggressiveOperation.class, // TODO: Not done. Q00587_MoreAggressiveOperation.class,
Q00588_HeadOnCrash.class, // TODO: Not done. Q00588_HeadOnCrash.class, // TODO: Not done.
Q00589_ASecretChange.class, // FIXME: Custom. Q00589_ASecretChange.class, // FIXME: Custom.
Q00590_ToEachTheirOwn.class, // FIXME: Custom. Q00590_ToEachTheirOwn.class, // FIXME: Custom.

View File

@@ -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 Q00587_MoreAggressiveOperation extends Quest
{
private static final int START_NPC = 33780;
public Q00587_MoreAggressiveOperation()
{
super(587);
addStartNpc(START_NPC);
addTalkId(START_NPC);
addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null));
}
}