Level and kill count requirements for quests 10294 and 10295.
Contributed by gvr.
This commit is contained in:
@@ -22,6 +22,10 @@ import java.util.Set;
|
|||||||
import org.l2jmobius.gameserver.enums.QuestSound;
|
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenersContainer;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged;
|
||||||
|
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||||
@@ -102,6 +106,8 @@ public class Q10294_SporeInfestedPlace extends Quest
|
|||||||
case "30120-03.htm":
|
case "30120-03.htm":
|
||||||
{
|
{
|
||||||
qs.startQuest();
|
qs.startQuest();
|
||||||
|
final ListenersContainer container = player;
|
||||||
|
container.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LEVEL_CHANGED, (OnPlayerLevelChanged levelChange) -> onLevelUp(levelChange, qs), this));
|
||||||
htmltext = event;
|
htmltext = event;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -159,7 +165,7 @@ public class Q10294_SporeInfestedPlace extends Quest
|
|||||||
{
|
{
|
||||||
htmltext = "30857.html";
|
htmltext = "30857.html";
|
||||||
}
|
}
|
||||||
else if (qs.isCond(3) && (player.getLevel() < 43))
|
else if (qs.isCond(3) && (player.getLevel() > 43))
|
||||||
{
|
{
|
||||||
htmltext = "30857-04.html";
|
htmltext = "30857-04.html";
|
||||||
}
|
}
|
||||||
@@ -188,17 +194,15 @@ public class Q10294_SporeInfestedPlace extends Quest
|
|||||||
if ((qs != null) && qs.isCond(2))
|
if ((qs != null) && qs.isCond(2))
|
||||||
{
|
{
|
||||||
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
|
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
|
||||||
if (killCount < 200)
|
if (killCount <= 200)
|
||||||
{
|
{
|
||||||
qs.set(KILL_COUNT_VAR, killCount);
|
qs.set(KILL_COUNT_VAR, killCount);
|
||||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
sendNpcLogList(killer);
|
sendNpcLogList(killer);
|
||||||
}
|
}
|
||||||
else
|
else if (allConditionsMet(killer, qs))
|
||||||
{
|
{
|
||||||
qs.setCond(3, true);
|
prepareToFinishQuest(killer, qs);
|
||||||
giveItems(killer, SOE_HIGH_PRIEST_OVEN);
|
|
||||||
qs.unset(KILL_COUNT_VAR);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.onKill(npc, killer, isSummon);
|
return super.onKill(npc, killer, isSummon);
|
||||||
@@ -217,4 +221,34 @@ public class Q10294_SporeInfestedPlace extends Quest
|
|||||||
}
|
}
|
||||||
return super.getNpcLogList(player);
|
return super.getNpcLogList(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onQuestAborted(PlayerInstance player)
|
||||||
|
{
|
||||||
|
player.removeListenerIf(EventType.ON_PLAYER_LEVEL_CHANGED, listener -> listener.getOwner() == player);
|
||||||
|
super.onQuestAborted(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onLevelUp(OnPlayerLevelChanged event, QuestState qs)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
sendNpcLogList(player);
|
||||||
|
if (allConditionsMet(player, qs))
|
||||||
|
{
|
||||||
|
prepareToFinishQuest(player, qs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean allConditionsMet(PlayerInstance player, QuestState qs)
|
||||||
|
{
|
||||||
|
return (qs != null) && qs.isCond(2) && (player.getLevel() > 43) && (qs.getInt(KILL_COUNT_VAR) >= 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void prepareToFinishQuest(PlayerInstance killer, QuestState qs)
|
||||||
|
{
|
||||||
|
qs.setCond(3, true);
|
||||||
|
giveItems(killer, SOE_HIGH_PRIEST_OVEN);
|
||||||
|
qs.unset(KILL_COUNT_VAR);
|
||||||
|
killer.removeListenerIf(EventType.ON_PLAYER_LEVEL_CHANGED, listener -> listener.getOwner() == killer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,10 @@ import java.util.Set;
|
|||||||
import org.l2jmobius.gameserver.enums.QuestSound;
|
import org.l2jmobius.gameserver.enums.QuestSound;
|
||||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||||
|
import org.l2jmobius.gameserver.model.events.EventType;
|
||||||
|
import org.l2jmobius.gameserver.model.events.ListenersContainer;
|
||||||
|
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged;
|
||||||
|
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
import org.l2jmobius.gameserver.model.holders.NpcLogListHolder;
|
||||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||||
@@ -101,6 +105,8 @@ public class Q10295_RespectforGraves extends Quest
|
|||||||
case "30857-03.htm":
|
case "30857-03.htm":
|
||||||
{
|
{
|
||||||
qs.startQuest();
|
qs.startQuest();
|
||||||
|
final ListenersContainer container = player;
|
||||||
|
container.addListener(new ConsumerEventListener(player, EventType.ON_PLAYER_LEVEL_CHANGED, (OnPlayerLevelChanged levelChange) -> onLevelUp(levelChange, qs), this));
|
||||||
giveItems(player, SOE_CEMETERY);
|
giveItems(player, SOE_CEMETERY);
|
||||||
htmltext = event;
|
htmltext = event;
|
||||||
break;
|
break;
|
||||||
@@ -156,7 +162,7 @@ public class Q10295_RespectforGraves extends Quest
|
|||||||
if ((qs != null) && qs.isCond(1))
|
if ((qs != null) && qs.isCond(1))
|
||||||
{
|
{
|
||||||
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
|
final int killCount = qs.getInt(KILL_COUNT_VAR) + 1;
|
||||||
if (killCount < 300)
|
if (killCount <= 300)
|
||||||
{
|
{
|
||||||
qs.set(KILL_COUNT_VAR, killCount);
|
qs.set(KILL_COUNT_VAR, killCount);
|
||||||
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
|
||||||
@@ -164,9 +170,10 @@ public class Q10295_RespectforGraves extends Quest
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
qs.setCond(2, true);
|
if (allConditionsMet(killer, qs))
|
||||||
giveItems(killer, SOE_HIGH_PRIEST_OVEN);
|
{
|
||||||
qs.unset(KILL_COUNT_VAR);
|
prepareToFinishQuest(killer, qs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.onKill(npc, killer, isSummon);
|
return super.onKill(npc, killer, isSummon);
|
||||||
@@ -185,4 +192,35 @@ public class Q10295_RespectforGraves extends Quest
|
|||||||
}
|
}
|
||||||
return super.getNpcLogList(player);
|
return super.getNpcLogList(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onQuestAborted(PlayerInstance player)
|
||||||
|
{
|
||||||
|
player.removeListenerIf(EventType.ON_PLAYER_LEVEL_CHANGED, listener -> listener.getOwner() == player);
|
||||||
|
super.onQuestAborted(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onLevelUp(OnPlayerLevelChanged event, QuestState qs)
|
||||||
|
{
|
||||||
|
final PlayerInstance player = event.getPlayer();
|
||||||
|
sendNpcLogList(player);
|
||||||
|
if (allConditionsMet(player, qs))
|
||||||
|
{
|
||||||
|
prepareToFinishQuest(player, qs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean allConditionsMet(PlayerInstance player, QuestState qs)
|
||||||
|
{
|
||||||
|
return (qs != null) && qs.isCond(1) && (player.getLevel() > 51) && (qs.getInt(KILL_COUNT_VAR) >= 300);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void prepareToFinishQuest(PlayerInstance killer, QuestState qs)
|
||||||
|
{
|
||||||
|
qs.setCond(2, true);
|
||||||
|
giveItems(killer, SOE_HIGH_PRIEST_OVEN);
|
||||||
|
qs.unset(KILL_COUNT_VAR);
|
||||||
|
sendNpcLogList(killer);
|
||||||
|
killer.removeListenerIf(EventType.ON_PLAYER_LEVEL_CHANGED, listener -> listener.getOwner() == killer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user