From 28c63c0e80ef0977f3039b1cf5548aa0ae73a47a Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 10 Oct 2020 01:05:42 +0000 Subject: [PATCH] Exalted quest rewards for Ceremony of Chaos and Olympiad. Contributed by CostyKiller. --- .../ceremonyofchaos/CeremonyOfChaosEvent.java | 42 +++++++++++++++++++ .../model/olympiad/AbstractOlympiadGame.java | 31 ++++++++++++++ .../model/olympiad/OlympiadGameNormal.java | 6 +++ .../ceremonyofchaos/CeremonyOfChaosEvent.java | 42 +++++++++++++++++++ .../model/olympiad/AbstractOlympiadGame.java | 31 ++++++++++++++ .../model/olympiad/OlympiadGameNormal.java | 6 +++ .../ceremonyofchaos/CeremonyOfChaosEvent.java | 42 +++++++++++++++++++ .../model/olympiad/AbstractOlympiadGame.java | 31 ++++++++++++++ .../model/olympiad/OlympiadGameNormal.java | 6 +++ .../ceremonyofchaos/CeremonyOfChaosEvent.java | 42 +++++++++++++++++++ .../model/olympiad/AbstractOlympiadGame.java | 31 ++++++++++++++ .../model/olympiad/OlympiadGameNormal.java | 6 +++ .../ceremonyofchaos/CeremonyOfChaosEvent.java | 42 +++++++++++++++++++ .../model/olympiad/AbstractOlympiadGame.java | 31 ++++++++++++++ .../model/olympiad/OlympiadGameNormal.java | 6 +++ .../ceremonyofchaos/CeremonyOfChaosEvent.java | 42 +++++++++++++++++++ .../model/olympiad/AbstractOlympiadGame.java | 31 ++++++++++++++ .../model/olympiad/OlympiadGameNormal.java | 6 +++ .../ceremonyofchaos/CeremonyOfChaosEvent.java | 42 +++++++++++++++++++ .../model/olympiad/AbstractOlympiadGame.java | 42 +++++++++++++++++++ .../model/olympiad/OlympiadGameNormal.java | 6 +++ 21 files changed, 564 insertions(+) diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java index d7eea51ced..84300e92a0 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager; @@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; @@ -51,6 +53,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -74,6 +77,10 @@ public class CeremonyOfChaosEvent extends AbstractEvent { private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + private static final int PROOF_OF_SETTLEMENT = 80825; + private final int _id; private final Instance _instance; private final Set _monsters = ConcurrentHashMap.newKeySet(); @@ -408,6 +415,41 @@ public class CeremonyOfChaosEvent extends AbstractEvent params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, members)); + + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + for (CeremonyOfChaosMember member : getMembers().values()) + { + final QuestState qs = member.getPlayer().getQuestState("Q10813_ForGlory"); + final QuestState qs1 = member.getPlayer().getQuestState("Q10819_ForHonor"); + final QuestState qs2 = member.getPlayer().getQuestState("Q10825_ForVictory"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_SETTLEMENT, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_SETTLEMENT) >= 30) + { + qs2.setCond(4, true); + } + } + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index 1a62d6495f..6b13dc9d26 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; @@ -31,9 +32,11 @@ import org.l2jmobius.gameserver.model.Party.MessageType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMode; @@ -60,6 +63,9 @@ public abstract class AbstractOlympiadGame protected static final String COMP_DONE_WEEK_NON_CLASSED = "competitions_done_week_non_classed"; protected static final String COMP_DONE_WEEK_TEAM = "competitions_done_week_team"; + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + protected long _startTime = 0; protected boolean _aborted = false; protected final int _stadiumId; @@ -408,6 +414,31 @@ public abstract class AbstractOlympiadGame } } + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + public static void rewardQuests(PlayerInstance player) + { + final QuestState qs = player.getQuestState("Q10813_ForGlory"); + final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + } + public static void rewardParticipant(PlayerInstance player, List list) { if ((player == null) || !player.isOnline() || (list == null)) diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 53b9c7ff31..2d8b17878c 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -458,6 +458,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 1; rewardParticipant(_playerOne.getPlayer(), getReward()); + rewardQuests(_playerOne.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -484,6 +485,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 2; rewardParticipant(_playerTwo.getPlayer(), getReward()); + rewardQuests(_playerTwo.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -600,6 +602,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame // Save Fight Result saveResults(_playerOne, _playerTwo, 1, _startTime, _fightTime, getType()); rewardParticipant(_playerOne.getPlayer(), getReward()); + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); @@ -625,6 +629,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame // Save Fight Result saveResults(_playerOne, _playerTwo, 2, _startTime, _fightTime, getType()); rewardParticipant(_playerTwo.getPlayer(), getReward()); + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java index d7eea51ced..84300e92a0 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager; @@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; @@ -51,6 +53,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -74,6 +77,10 @@ public class CeremonyOfChaosEvent extends AbstractEvent { private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + private static final int PROOF_OF_SETTLEMENT = 80825; + private final int _id; private final Instance _instance; private final Set _monsters = ConcurrentHashMap.newKeySet(); @@ -408,6 +415,41 @@ public class CeremonyOfChaosEvent extends AbstractEvent params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, members)); + + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + for (CeremonyOfChaosMember member : getMembers().values()) + { + final QuestState qs = member.getPlayer().getQuestState("Q10813_ForGlory"); + final QuestState qs1 = member.getPlayer().getQuestState("Q10819_ForHonor"); + final QuestState qs2 = member.getPlayer().getQuestState("Q10825_ForVictory"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_SETTLEMENT, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_SETTLEMENT) >= 30) + { + qs2.setCond(4, true); + } + } + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index 1a62d6495f..6b13dc9d26 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; @@ -31,9 +32,11 @@ import org.l2jmobius.gameserver.model.Party.MessageType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMode; @@ -60,6 +63,9 @@ public abstract class AbstractOlympiadGame protected static final String COMP_DONE_WEEK_NON_CLASSED = "competitions_done_week_non_classed"; protected static final String COMP_DONE_WEEK_TEAM = "competitions_done_week_team"; + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + protected long _startTime = 0; protected boolean _aborted = false; protected final int _stadiumId; @@ -408,6 +414,31 @@ public abstract class AbstractOlympiadGame } } + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + public static void rewardQuests(PlayerInstance player) + { + final QuestState qs = player.getQuestState("Q10813_ForGlory"); + final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + } + public static void rewardParticipant(PlayerInstance player, List list) { if ((player == null) || !player.isOnline() || (list == null)) diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 53b9c7ff31..2d8b17878c 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -458,6 +458,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 1; rewardParticipant(_playerOne.getPlayer(), getReward()); + rewardQuests(_playerOne.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -484,6 +485,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 2; rewardParticipant(_playerTwo.getPlayer(), getReward()); + rewardQuests(_playerTwo.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -600,6 +602,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame // Save Fight Result saveResults(_playerOne, _playerTwo, 1, _startTime, _fightTime, getType()); rewardParticipant(_playerOne.getPlayer(), getReward()); + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); @@ -625,6 +629,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame // Save Fight Result saveResults(_playerOne, _playerTwo, 2, _startTime, _fightTime, getType()); rewardParticipant(_playerTwo.getPlayer(), getReward()); + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java index d7eea51ced..84300e92a0 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager; @@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; @@ -51,6 +53,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -74,6 +77,10 @@ public class CeremonyOfChaosEvent extends AbstractEvent { private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + private static final int PROOF_OF_SETTLEMENT = 80825; + private final int _id; private final Instance _instance; private final Set _monsters = ConcurrentHashMap.newKeySet(); @@ -408,6 +415,41 @@ public class CeremonyOfChaosEvent extends AbstractEvent params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, members)); + + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + for (CeremonyOfChaosMember member : getMembers().values()) + { + final QuestState qs = member.getPlayer().getQuestState("Q10813_ForGlory"); + final QuestState qs1 = member.getPlayer().getQuestState("Q10819_ForHonor"); + final QuestState qs2 = member.getPlayer().getQuestState("Q10825_ForVictory"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_SETTLEMENT, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_SETTLEMENT) >= 30) + { + qs2.setCond(4, true); + } + } + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index b403cf63c7..ab81b096b4 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; @@ -31,9 +32,11 @@ import org.l2jmobius.gameserver.model.Party.MessageType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMode; @@ -60,6 +63,9 @@ public abstract class AbstractOlympiadGame protected static final String COMP_DONE_WEEK_NON_CLASSED = "competitions_done_week_non_classed"; protected static final String COMP_DONE_WEEK_TEAM = "competitions_done_week_team"; + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + protected long _startTime = 0; protected boolean _aborted = false; protected final int _stadiumId; @@ -408,6 +414,31 @@ public abstract class AbstractOlympiadGame } } + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + public static void rewardQuests(PlayerInstance player) + { + final QuestState qs = player.getQuestState("Q10813_ForGlory"); + final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + } + public static void rewardParticipant(PlayerInstance player, List list) { if ((player == null) || !player.isOnline() || (list == null)) diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 1567ce6ca5..e600f07db7 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -458,6 +458,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 1; rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerOne.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -484,6 +485,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 2; rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerTwo.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -600,6 +602,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); @@ -627,6 +631,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java index 7abf4cab8a..13c2c54550 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager; @@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; @@ -51,6 +53,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -74,6 +77,10 @@ public class CeremonyOfChaosEvent extends AbstractEvent { private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + private static final int PROOF_OF_SETTLEMENT = 80825; + private final int _id; private final Instance _instance; private final Set _monsters = ConcurrentHashMap.newKeySet(); @@ -408,6 +415,41 @@ public class CeremonyOfChaosEvent extends AbstractEvent params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, members)); + + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + for (CeremonyOfChaosMember member : getMembers().values()) + { + final QuestState qs = member.getPlayer().getQuestState("Q10813_ForGlory"); + final QuestState qs1 = member.getPlayer().getQuestState("Q10819_ForHonor"); + final QuestState qs2 = member.getPlayer().getQuestState("Q10825_ForVictory"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_SETTLEMENT, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_SETTLEMENT) >= 30) + { + qs2.setCond(4, true); + } + } + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index b403cf63c7..ab81b096b4 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; @@ -31,9 +32,11 @@ import org.l2jmobius.gameserver.model.Party.MessageType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMode; @@ -60,6 +63,9 @@ public abstract class AbstractOlympiadGame protected static final String COMP_DONE_WEEK_NON_CLASSED = "competitions_done_week_non_classed"; protected static final String COMP_DONE_WEEK_TEAM = "competitions_done_week_team"; + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + protected long _startTime = 0; protected boolean _aborted = false; protected final int _stadiumId; @@ -408,6 +414,31 @@ public abstract class AbstractOlympiadGame } } + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + public static void rewardQuests(PlayerInstance player) + { + final QuestState qs = player.getQuestState("Q10813_ForGlory"); + final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + } + public static void rewardParticipant(PlayerInstance player, List list) { if ((player == null) || !player.isOnline() || (list == null)) diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 1567ce6ca5..e600f07db7 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -458,6 +458,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 1; rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerOne.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -484,6 +485,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 2; rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerTwo.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -600,6 +602,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); @@ -627,6 +631,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java index d7eea51ced..84300e92a0 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager; @@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; @@ -51,6 +53,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -74,6 +77,10 @@ public class CeremonyOfChaosEvent extends AbstractEvent { private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + private static final int PROOF_OF_SETTLEMENT = 80825; + private final int _id; private final Instance _instance; private final Set _monsters = ConcurrentHashMap.newKeySet(); @@ -408,6 +415,41 @@ public class CeremonyOfChaosEvent extends AbstractEvent params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, members)); + + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + for (CeremonyOfChaosMember member : getMembers().values()) + { + final QuestState qs = member.getPlayer().getQuestState("Q10813_ForGlory"); + final QuestState qs1 = member.getPlayer().getQuestState("Q10819_ForHonor"); + final QuestState qs2 = member.getPlayer().getQuestState("Q10825_ForVictory"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_SETTLEMENT, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_SETTLEMENT) >= 30) + { + qs2.setCond(4, true); + } + } + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index b403cf63c7..ab81b096b4 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; @@ -31,9 +32,11 @@ import org.l2jmobius.gameserver.model.Party.MessageType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMode; @@ -60,6 +63,9 @@ public abstract class AbstractOlympiadGame protected static final String COMP_DONE_WEEK_NON_CLASSED = "competitions_done_week_non_classed"; protected static final String COMP_DONE_WEEK_TEAM = "competitions_done_week_team"; + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + protected long _startTime = 0; protected boolean _aborted = false; protected final int _stadiumId; @@ -408,6 +414,31 @@ public abstract class AbstractOlympiadGame } } + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + public static void rewardQuests(PlayerInstance player) + { + final QuestState qs = player.getQuestState("Q10813_ForGlory"); + final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + } + public static void rewardParticipant(PlayerInstance player, List list) { if ((player == null) || !player.isOnline() || (list == null)) diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 1567ce6ca5..e600f07db7 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -458,6 +458,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 1; rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerOne.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -484,6 +485,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 2; rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerTwo.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -600,6 +602,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); @@ -627,6 +631,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java index d7eea51ced..84300e92a0 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager; @@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; @@ -51,6 +53,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -74,6 +77,10 @@ public class CeremonyOfChaosEvent extends AbstractEvent { private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + private static final int PROOF_OF_SETTLEMENT = 80825; + private final int _id; private final Instance _instance; private final Set _monsters = ConcurrentHashMap.newKeySet(); @@ -408,6 +415,41 @@ public class CeremonyOfChaosEvent extends AbstractEvent params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, members)); + + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + for (CeremonyOfChaosMember member : getMembers().values()) + { + final QuestState qs = member.getPlayer().getQuestState("Q10813_ForGlory"); + final QuestState qs1 = member.getPlayer().getQuestState("Q10819_ForHonor"); + final QuestState qs2 = member.getPlayer().getQuestState("Q10825_ForVictory"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_SETTLEMENT, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_SETTLEMENT) >= 30) + { + qs2.setCond(4, true); + } + } + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index b403cf63c7..ab81b096b4 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; @@ -31,9 +32,11 @@ import org.l2jmobius.gameserver.model.Party.MessageType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMode; @@ -60,6 +63,9 @@ public abstract class AbstractOlympiadGame protected static final String COMP_DONE_WEEK_NON_CLASSED = "competitions_done_week_non_classed"; protected static final String COMP_DONE_WEEK_TEAM = "competitions_done_week_team"; + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + protected long _startTime = 0; protected boolean _aborted = false; protected final int _stadiumId; @@ -408,6 +414,31 @@ public abstract class AbstractOlympiadGame } } + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + public static void rewardQuests(PlayerInstance player) + { + final QuestState qs = player.getQuestState("Q10813_ForGlory"); + final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + } + public static void rewardParticipant(PlayerInstance player, List list) { if ((player == null) || !player.isOnline() || (list == null)) diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 1567ce6ca5..e600f07db7 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -458,6 +458,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 1; rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerOne.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -484,6 +485,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 2; rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerTwo.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -600,6 +602,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); @@ -627,6 +631,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance()); diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java index d7eea51ced..84300e92a0 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/ceremonyofchaos/CeremonyOfChaosEvent.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.enums.CeremonyOfChaosResult; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.CeremonyOfChaosManager; import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager; @@ -40,6 +41,7 @@ import org.l2jmobius.gameserver.model.actor.appearance.PlayerAppearance; import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.eventengine.AbstractEvent; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventType; import org.l2jmobius.gameserver.model.events.ListenerRegisterType; @@ -51,6 +53,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.InstanceTemplate; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.network.SystemMessageId; @@ -74,6 +77,10 @@ public class CeremonyOfChaosEvent extends AbstractEvent { private static final Logger LOGGER = Logger.getLogger(CeremonyOfChaosEvent.class.getName()); + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + private static final int PROOF_OF_SETTLEMENT = 80825; + private final int _id; private final Instance _instance; private final Set _monsters = ConcurrentHashMap.newKeySet(); @@ -408,6 +415,41 @@ public class CeremonyOfChaosEvent extends AbstractEvent params.set("time", 30); getTimers().addTimer("match_end_countdown", params, 30 * 1000, null, null); EventDispatcher.getInstance().notifyEvent(new OnCeremonyOfChaosMatchResult(winners, members)); + + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + for (CeremonyOfChaosMember member : getMembers().values()) + { + final QuestState qs = member.getPlayer().getQuestState("Q10813_ForGlory"); + final QuestState qs1 = member.getPlayer().getQuestState("Q10819_ForHonor"); + final QuestState qs2 = member.getPlayer().getQuestState("Q10825_ForVictory"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) + { + AbstractScript.giveItems(member.getPlayer(), PROOF_OF_SETTLEMENT, 1); + AbstractScript.playSound(member.getPlayer(), QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(member.getPlayer(), PROOF_OF_SETTLEMENT) >= 30) + { + qs2.setCond(4, true); + } + } + } } private void teleportPlayersOut() diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java index b403cf63c7..0d9521e0de 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/AbstractOlympiadGame.java @@ -22,6 +22,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.gameserver.ai.CtrlIntention; +import org.l2jmobius.gameserver.enums.QuestSound; import org.l2jmobius.gameserver.instancemanager.AntiFeedManager; import org.l2jmobius.gameserver.instancemanager.CastleManager; import org.l2jmobius.gameserver.instancemanager.FortManager; @@ -31,9 +32,11 @@ import org.l2jmobius.gameserver.model.Party.MessageType; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.events.AbstractScript; import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance; +import org.l2jmobius.gameserver.model.quest.QuestState; import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.ExOlympiadMode; @@ -60,6 +63,10 @@ public abstract class AbstractOlympiadGame protected static final String COMP_DONE_WEEK_NON_CLASSED = "competitions_done_week_non_classed"; protected static final String COMP_DONE_WEEK_TEAM = "competitions_done_week_team"; + private static final int PROOF_OF_BATTLE_1 = 45872; + private static final int PROOF_OF_BATTLE_2 = 45873; + private static final int PROOF_OF_SETTLEMENT = 80825; + protected long _startTime = 0; protected boolean _aborted = false; protected final int _stadiumId; @@ -408,6 +415,41 @@ public abstract class AbstractOlympiadGame } } + // XXX: ML2 Rewards ForGlory, ForHonor and ForVictory quests + public static void rewardQuests(PlayerInstance player) + { + final QuestState qs = player.getQuestState("Q10813_ForGlory"); + final QuestState qs1 = player.getQuestState("Q10819_ForHonor"); + final QuestState qs2 = player.getQuestState("Q10825_ForVictory"); + if ((qs != null) && !qs.isCompleted() && qs.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_1, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_1) >= 10) + { + qs.setCond(2, true); + } + } + else if ((qs1 != null) && !qs1.isCompleted() && qs1.isCond(1)) + { + AbstractScript.giveItems(player, PROOF_OF_BATTLE_2, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_BATTLE_2) >= 20) + { + qs1.setCond(2, true); + } + } + else if ((qs2 != null) && !qs2.isCompleted() && qs2.isCond(3)) + { + AbstractScript.giveItems(player, PROOF_OF_SETTLEMENT, 1); + AbstractScript.playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + if (AbstractScript.getQuestItemsCount(player, PROOF_OF_SETTLEMENT) >= 30) + { + qs2.setCond(4, true); + } + } + } + public static void rewardParticipant(PlayerInstance player, List list) { if ((player == null) || !player.isOnline() || (list == null)) diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java index 1567ce6ca5..e600f07db7 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/olympiad/OlympiadGameNormal.java @@ -458,6 +458,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 1; rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerOne.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -484,6 +485,7 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame winside = 2; rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner + rewardQuests(_playerTwo.getPlayer()); if (Config.ALT_OLY_LOG_FIGHTS) { @@ -600,6 +602,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerOne, _playerTwo, getType()), Olympiad.getInstance()); @@ -627,6 +631,8 @@ public abstract class OlympiadGameNormal extends AbstractOlympiadGame rewardParticipant(_playerTwo.getPlayer(), Config.ALT_OLY_WINNER_REWARD); // Winner rewardParticipant(_playerOne.getPlayer(), Config.ALT_OLY_LOSER_REWARD); // Loser + rewardQuests(_playerOne.getPlayer()); + rewardQuests(_playerTwo.getPlayer()); // Notify to scripts EventDispatcher.getInstance().notifyEventAsync(new OnOlympiadMatchResult(_playerTwo, _playerOne, getType()), Olympiad.getInstance());