Raidboss and quest 10416, 10797 improvements.

Contributed by gamelike85.
This commit is contained in:
MobiusDev
2017-12-26 15:26:49 +00:00
parent 2a26123a8d
commit d2d2c5862e
17 changed files with 2310 additions and 2149 deletions

View File

@@ -1,4 +1,4 @@
<html><body>Eye of Argos:<br>
The annoying group called <font color="LEVEL">Embryo</font> failed to get me on their side. So now they want to recruit <font color="LEVEL">Daimon</font>. If they succeed... well.<br>
The energy of the beasts in the valley around here has subsided significantly. Is it you that has slain them? ...Interesting... <br>
Give me some time to think about what to do.
</body></html>

View File

@@ -1,5 +1,5 @@
<html><body>Giant's Minion Janitt:<br>
So far, Argos isn't exactly falling all over himself to support Embryo. The problem is, he doesn't trust us either. I managed to get him to agree to give me a chance; I have to send someone brave and wise to convince him.<br>
Are you brave enough and wise enough? We're on a time limit here, so I don't know that we have the time to find out. I need you to go talk to him.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10416_InSearchOfTheEyeOfArgos 33851-04.htm">"Got it."</Button>
Yes, that's right! So far, Argos isn't exactly falling all over himself to support Embryo. The problem is, he doesn't trust us either. I managed to get him to agree to give me a chance; I have to send someone brave and wise to convince him.<br>
You may be qualified. Come on, it should be worth trying.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10416_InSearchOfTheEyeOfArgos 33851-04.htm">"Alright, I will."</Button>
</body></html>

View File

@@ -1,3 +1,4 @@
<html><body>Giant's Minion Janitt:<br>
Hurry, then. I'll mark the location of the <font color="LEVEL">Eye of Argos</font> on your map. Go talk to him right away.
Though you're a stranger to wisdom, obviously, the best way to prove your bravery would be to slay the monsters around here, correct? Slay the <font color="LEVEL">Canyon Antelope, Canyon Bandersnatch, Valley Buffalo, Valley Grendel, Canyon Antelope Slave, Canyon Bandersnatch Slave, Valley Buffalo Slave, and Valley Grendel Slave</font>. In the process, Argos may recognize your bravery. Desperate times call for desperate measures.<br>
If you feel you've done enough, teleport to where the <font color="LEVEL">Eye of Argos</font> is, and try to have a conversation.
</body></html>

View File

@@ -1,3 +1,4 @@
<html><body>Giant's Minion Janitt:<br>
Hurry, then. I'll mark the location of the <font color="LEVEL">Eye of Argos</font> on your map. Go talk to him right away.
Let's try to prove your bravery, why don't we. Slay the <font color="LEVEL">Canyon Antelope, Canyon Bandersnatch, Valley Buffalo, Valley Grendel, Canyon Antelope Slave, Canyon Bandersnatch Slave, Valley Buffalo Slave, and Valley Grendel Slave</font>. In the process, Argos may recognize your bravery. Desperate times call for desperate measures.<br>
If you feel you've done enough, teleport to where the <font color="LEVEL">Eye of Argos</font> is, and try to have a conversation.
</body></html>

View File

@@ -16,12 +16,19 @@
*/
package quests.Q10416_InSearchOfTheEyeOfArgos;
import java.util.HashSet;
import java.util.Set;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.NpcStringId;
/**
* In Search of the Eye of Argos (10416)
@@ -32,17 +39,29 @@ public final class Q10416_InSearchOfTheEyeOfArgos extends Quest
// NPCs
private static final int JANITT = 33851;
private static final int EYE_OF_ARGOS = 31683;
// Items
private static final int EAA = 730; // Scroll: Enchant Armor (A-grade)
// Monsters
private static final int[] MONSTERS =
{
21294, // Canyon Antelope
21296, // Canyon Bandersnatch
23311, // Valley Buffalo
23312, // Valley Grendel
21295, // Canyon Antelope Slave
21297, // Canyon Bandersnatch Slave
21299, // Valley Buffalo Slave
21304 // Valley Grendel Slave
};
// Misc
private static final int MIN_LEVEL = 70;
private static final int MAX_LEVEL = 75;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10416_InSearchOfTheEyeOfArgos()
{
super(10416);
addStartNpc(JANITT);
addTalkId(JANITT, EYE_OF_ARGOS);
addKillId(MONSTERS);
addCondNotRace(Race.ERTHEIA, "33851-06.html");
addCondLevel(MIN_LEVEL, MAX_LEVEL, "33851-07.htm");
}
@@ -73,16 +92,19 @@ public final class Q10416_InSearchOfTheEyeOfArgos extends Quest
}
case "31683-02.html":
{
if (st.isCond(1))
if (st.isCond(2))
{
st.exitQuest(false, true);
giveItems(player, EAA, 2);
giveStoryQuestReward(npc, player);
if (player.getLevel() > MIN_LEVEL)
if (player.getLevel() >= MIN_LEVEL)
{
addExpAndSp(player, 1_088_640, 261);
addExpAndSp(player, 178_732_196, 261);
giveStoryQuestReward(npc, player);
st.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
htmltext = event;
}
break;
}
@@ -108,9 +130,13 @@ public final class Q10416_InSearchOfTheEyeOfArgos extends Quest
}
case State.STARTED:
{
if (st.isCond(1))
if (st.isCond(1) && (npc.getId() == JANITT))
{
htmltext = npc.getId() == JANITT ? "33851-05.html" : "31683-01.html";
htmltext = "33851-05.html";
}
if (st.isCond(2) && (npc.getId() == EYE_OF_ARGOS))
{
htmltext = "31683-01.html";
}
break;
}
@@ -125,4 +151,42 @@ public final class Q10416_InSearchOfTheEyeOfArgos extends Quest
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1))
{
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 200)
{
qs.setCond(2, true);
}
else
{
sendNpcLogList(killer);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_THE_BEASTS_OF_THE_VALLEY, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}

View File

@@ -16,12 +16,19 @@
*/
package quests.Q10797_CrossingFate;
import java.util.HashSet;
import java.util.Set;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.NpcLogListHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.util.Util;
import com.l2jmobius.gameserver.network.NpcStringId;
import quests.Q10796_TheEyeThatDefiedTheGods.Q10796_TheEyeThatDefiedTheGods;
@@ -35,11 +42,21 @@ public class Q10797_CrossingFate extends Quest
// NPCs
private static final int EYE_OF_ARGOS = 31683;
private static final int DAIMON_THE_WHITE_EYED = 27499;
// Items
private static final int EAA = 730;
private static final int[] MONSTERS =
{
21294, // Canyon Antelope
21296, // Canyon Bandersnatch
23311, // Valley Buffalo
23312, // Valley Grendel
21295, // Canyon Antelope Slave
21297, // Canyon Bandersnatch Slave
21299, // Valley Buffalo Slave
21304 // Valley Grendel Slave
};
// Misc
private static final int MIN_LEVEL = 70;
private static final int MAX_LEVEL = 75;
private static final String KILL_COUNT_VAR = "KillCount";
public Q10797_CrossingFate()
{
@@ -47,8 +64,9 @@ public class Q10797_CrossingFate extends Quest
addStartNpc(EYE_OF_ARGOS);
addTalkId(EYE_OF_ARGOS);
addKillId(DAIMON_THE_WHITE_EYED);
addKillId(MONSTERS);
addCondLevel(MIN_LEVEL, MAX_LEVEL, "no_level.html");
addCondRace(Race.ERTHEIA, "noErtheya.html");
addCondRace(Race.ERTHEIA, "noErtheia.html");
addCondCompletedQuest(Q10796_TheEyeThatDefiedTheGods.class.getSimpleName(), "restriction.html");
}
@@ -75,14 +93,21 @@ public class Q10797_CrossingFate extends Quest
}
case "31683-07.html":
{
if (qs.isCond(2))
if (qs.isCond(3))
{
addExpAndSp(player, 2721600, 653);
giveStoryQuestReward(npc, player);
giveItems(player, EAA, 5);
qs.exitQuest(false, true);
break;
if (player.getLevel() >= MIN_LEVEL)
{
addExpAndSp(player, 306_167_814, 653);
giveStoryQuestReward(npc, player);
qs.exitQuest(QuestType.ONE_TIME, true);
htmltext = event;
}
else
{
htmltext = getNoQuestLevelRewardMsg(player);
}
}
break;
}
}
return htmltext;
@@ -97,11 +122,11 @@ public class Q10797_CrossingFate extends Quest
{
htmltext = "31683-01.htm";
}
else if (qs.isCond(1))
else if (qs.isCond(1) || qs.isCond(2))
{
htmltext = "31683-05.html";
}
else if (qs.isCond(2))
else if (qs.isCond(3))
{
htmltext = "31683-06.html";
}
@@ -116,10 +141,41 @@ public class Q10797_CrossingFate extends Quest
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && qs.isCond(1) && Util.checkIfInRange(1500, npc, qs.getPlayer(), false))
if ((qs != null) && qs.isCond(1) && CommonUtil.contains(MONSTERS, npc.getId()))
{
qs.setCond(2, true);
int count = qs.getInt(KILL_COUNT_VAR);
qs.set(KILL_COUNT_VAR, ++count);
if (count >= 100)
{
qs.setCond(2, true);
}
else
{
sendNpcLogList(killer);
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
}
if ((qs != null) && qs.isCond(2) && (npc.getId() == DAIMON_THE_WHITE_EYED))
{
qs.setCond(3, true);
}
return super.onKill(npc, killer, isSummon);
}
@Override
public Set<NpcLogListHolder> getNpcLogList(L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isCond(1))
{
final int killCount = qs.getInt(KILL_COUNT_VAR);
if (killCount > 0)
{
final Set<NpcLogListHolder> holder = new HashSet<>();
holder.add(new NpcLogListHolder(NpcStringId.DEFEAT_THE_BEASTS_OF_THE_VALLEY4, killCount));
return holder;
}
}
return super.getNpcLogList(player);
}
}