Daily Mission new handler additions and updates.
Contributed by CostyKiller.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -20,17 +20,27 @@ import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.DailyMissionHandler;
|
||||
|
||||
import handlers.dailymissionhandlers.AuctionDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.AugmentationDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.BossDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.CeremonyOfChaosDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.CombinationDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.CompoundDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.EnchantDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.EnsoulDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.ExaltedDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.FishingDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.JoinClanDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.LevelDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.LoginMonthDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.LoginWeekendDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.MentorDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.MonsterDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.NoblesseDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.OlympiadDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.QuestDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.SiegeDailyMissionHandler;
|
||||
import handlers.dailymissionhandlers.UseItemDailyMissionHandler;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
@@ -41,17 +51,27 @@ public class DailyMissionMasterHandler
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
DailyMissionHandler.getInstance().registerHandler("level", LevelDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("loginweekend", LoginWeekendDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("loginmonth", LoginMonthDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("auction", AuctionDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("augment", AugmentationDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("boss", BossDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("monster", MonsterDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("ceremonyofchaos", CeremonyOfChaosDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("combine", CombinationDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("compound", CompoundDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("enchant", EnchantDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("ensoul", EnsoulDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("exalted", ExaltedDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("fishing", FishingDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("joinclan", JoinClanDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("level", LevelDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("loginmonth", LoginMonthDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("loginweekend", LoginWeekendDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("mentor", MentorDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("monster", MonsterDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("noblesse", NoblesseDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("olympiad", OlympiadDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("quest", QuestDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("siege", SiegeDailyMissionHandler::new);
|
||||
DailyMissionHandler.getInstance().registerHandler("useitem", UseItemDailyMissionHandler::new);
|
||||
LOGGER.info(DailyMissionMasterHandler.class.getSimpleName() + ": Loaded " + DailyMissionHandler.getInstance().size() + " handlers.");
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAuctionWin;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class AuctionDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
|
||||
public AuctionDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_amount = holder.getRequiredCompletions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Players().addListener(new ConsumerEventListener(this, EventType.ON_PLAYER_AUCTION_WIN, (OnPlayerAuctionWin event) -> onPlayerAuctionWin(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onPlayerAuctionWin(OnPlayerAuctionWin event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
// Check if any condition needed here
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,133 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class AugmentationDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _missionId;
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final Set<Integer> _mineralIds = new HashSet<>();
|
||||
|
||||
public AugmentationDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_missionId = holder.getId();
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
final String mineralIds = holder.getParams().getString("mineralIds", "");
|
||||
if (!mineralIds.isEmpty())
|
||||
{
|
||||
for (String s : mineralIds.split(","))
|
||||
{
|
||||
final int id = Integer.parseInt(s);
|
||||
if (!_mineralIds.contains(id))
|
||||
{
|
||||
_mineralIds.add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_AUGMENT, (OnPlayerAugment event) -> onPlayerAugment(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onPlayerAugment(OnPlayerAugment event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Only missions with specific augment stones
|
||||
if ((_missionId == 3055) || (_missionId == 3056) || (_missionId == 3057))
|
||||
{
|
||||
for (int mineralId : _mineralIds)
|
||||
{
|
||||
// Check if used item has been augmented with specified stones
|
||||
if (player.getInventory().getItemByItemId(event.getItem().getId()).isAugmented() && (event.getItem().getAugmentation().getMineralId() == mineralId))
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_mineralIds.isEmpty())
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
@@ -32,17 +32,19 @@ import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
private final int _requiredMissionCompleteId;
|
||||
|
||||
public CeremonyOfChaosDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_requiredMissionCompleteId = holder.getRequiredMissionCompleteId();
|
||||
_amount = holder.getRequiredCompletions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this));
|
||||
Containers.Players().addListener(new ConsumerEventListener(this, EventType.ON_CEREMONY_OF_CHAOS_MATCH_RESULT, (OnCeremonyOfChaosMatchResult event) -> onCeremonyOfChaosMatchResult(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -75,15 +77,34 @@ public class CeremonyOfChaosDailyMissionHandler extends AbstractDailyMissionHand
|
||||
{
|
||||
event.getMembers().forEach(member ->
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(member.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
if (((_requiredMissionCompleteId != 0) && checkRequiredMission(member)) || (_requiredMissionCompleteId == 0))
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
processPlayerProgress(member);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkRequiredMission(Player player)
|
||||
{
|
||||
final int missionId = getPlayerEntry(player.getObjectId(), false).getRewardId();
|
||||
final int missionStatus = getStatus(player);
|
||||
if ((missionId != 0) && (_requiredMissionCompleteId != 0) && (missionId == _requiredMissionCompleteId) && (missionStatus == DailyMissionStatus.COMPLETED.getClientId()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCombination;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class CombinationDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _requiredMissionCompleteId;
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final Set<Integer> _itemIds = new HashSet<>();
|
||||
private final int _itemId;
|
||||
|
||||
public CombinationDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_requiredMissionCompleteId = holder.getRequiredMissionCompleteId();
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
_itemId = holder.getParams().getInt("itemId", 0);
|
||||
final String itemIds = holder.getParams().getString("itemIds", "");
|
||||
if (!itemIds.isEmpty())
|
||||
{
|
||||
for (String s : itemIds.split(","))
|
||||
{
|
||||
final int id = Integer.parseInt(s);
|
||||
if (!_itemIds.contains(id))
|
||||
{
|
||||
_itemIds.add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_itemId != 0)
|
||||
{
|
||||
_itemIds.add(holder.getParams().getInt("itemId"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_COMBINATION, (OnItemCombination event) -> onItemCombination(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onItemCombination(OnItemCombination event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (((_requiredMissionCompleteId != 0) && checkRequiredMission(player)) || (_requiredMissionCompleteId == 0))
|
||||
{
|
||||
if (!_itemIds.isEmpty())
|
||||
{
|
||||
for (int item : _itemIds)
|
||||
{
|
||||
// Check if used item has been obtained from item combination or alchemy
|
||||
if (event.getItem().getId() == item)
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkRequiredMission(Player player)
|
||||
{
|
||||
final int missionId = getPlayerEntry(player.getObjectId(), false).getRewardId();
|
||||
final int missionStatus = getStatus(player);
|
||||
if ((missionId != 0) && (_requiredMissionCompleteId != 0) && (missionId == _requiredMissionCompleteId) && (missionStatus == DailyMissionStatus.COMPLETED.getClientId()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCompound;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class CompoundDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _requiredMissionCompleteId;
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final Set<Integer> _itemIds = new HashSet<>();
|
||||
private final int _itemId;
|
||||
|
||||
public CompoundDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_requiredMissionCompleteId = holder.getRequiredMissionCompleteId();
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
_itemId = holder.getParams().getInt("itemId", 0);
|
||||
final String itemIds = holder.getParams().getString("itemIds", "");
|
||||
if (!itemIds.isEmpty())
|
||||
{
|
||||
for (String s : itemIds.split(","))
|
||||
{
|
||||
final int id = Integer.parseInt(s);
|
||||
if (!_itemIds.contains(id))
|
||||
{
|
||||
_itemIds.add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_itemId != 0)
|
||||
{
|
||||
_itemIds.add(holder.getParams().getInt("itemId"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_COMPOUND, (OnItemCompound event) -> onItemCompound(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onItemCompound(OnItemCompound event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (((_requiredMissionCompleteId != 0) && checkRequiredMission(player)) || (_requiredMissionCompleteId == 0))
|
||||
{
|
||||
if (!_itemIds.isEmpty())
|
||||
{
|
||||
for (int item : _itemIds)
|
||||
{
|
||||
// Check if used item has been obtained from item combination or alchemy
|
||||
if (event.getItem().getId() == item)
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkRequiredMission(Player player)
|
||||
{
|
||||
final int missionId = getPlayerEntry(player.getObjectId(), false).getRewardId();
|
||||
final int missionStatus = getStatus(player);
|
||||
if ((missionId != 0) && (_requiredMissionCompleteId != 0) && (missionId == _requiredMissionCompleteId) && (missionStatus == DailyMissionStatus.COMPLETED.getClientId()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@@ -0,0 +1,137 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemEnchantAdd;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class EnchantDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _requiredMissionCompleteId;
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final int _targetValue;
|
||||
private final Set<Integer> _itemIds = new HashSet<>();
|
||||
|
||||
public EnchantDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_requiredMissionCompleteId = holder.getRequiredMissionCompleteId();
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
_targetValue = holder.getParams().getInt("targetValue", 0);
|
||||
final String itemIds = holder.getParams().getString("itemIds", "");
|
||||
if (!itemIds.isEmpty())
|
||||
{
|
||||
for (String s : itemIds.split(","))
|
||||
{
|
||||
final int id = Integer.parseInt(s);
|
||||
if (!_itemIds.contains(id))
|
||||
{
|
||||
_itemIds.add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_ENCHANT_ADD, (OnItemEnchantAdd event) -> onItemEnchantAdd(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onItemEnchantAdd(OnItemEnchantAdd event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (((_requiredMissionCompleteId != 0) && checkRequiredMission(player)) || (_requiredMissionCompleteId == 0))
|
||||
{
|
||||
if (_itemIds.contains(event.getItem().getId()) && (player.getInventory().getItemByObjectId(event.getItem().getObjectId()).getEnchantLevel() >= _targetValue))
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkRequiredMission(Player player)
|
||||
{
|
||||
final int missionId = getPlayerEntry(player.getObjectId(), false).getRewardId();
|
||||
final int missionStatus = getStatus(player);
|
||||
if ((missionId != 0) && (_requiredMissionCompleteId != 0) && (missionId == _requiredMissionCompleteId) && (missionStatus == DailyMissionStatus.COMPLETED.getClientId()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class EnsoulDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final Set<Integer> _crystalIds = new HashSet<>();
|
||||
|
||||
public EnsoulDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
final String crystalIds = holder.getParams().getString("crystalIds", "");
|
||||
if (!crystalIds.isEmpty())
|
||||
{
|
||||
for (String s : crystalIds.split(","))
|
||||
{
|
||||
final int id = Integer.parseInt(s);
|
||||
if (!_crystalIds.contains(id))
|
||||
{
|
||||
_crystalIds.add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_SOUL_CRYSTAL_ADD, (OnItemSoulCrystalAdd event) -> onItemSoulCrystalAdd(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onItemSoulCrystalAdd(OnItemSoulCrystalAdd event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (_crystalIds.contains(event.getEnsoulStone().getId()))
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBecomeExalted;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class ExaltedDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
|
||||
public ExaltedDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_BECOME_EXALTED, (OnPlayerBecomeExalted event) -> onPlayerBecomeExalted(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onPlayerBecomeExalted(OnPlayerBecomeExalted event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Check if player is belonging to a clan and is exalted
|
||||
if ((player.getClan() != null) && (player.getNobleLevel() > 0))
|
||||
{
|
||||
if (player.getNobleLevel() == 2)
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
@@ -47,7 +47,7 @@ public class FishingDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Players().addListener(new ConsumerEventListener(this, EventType.ON_PLAYER_FISHING, (OnPlayerFishing event) -> onPlayerFishing(event), this));
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_FISHING, (OnPlayerFishing event) -> onPlayerFishing(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.instancemanager.MentorManager;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.Mentee;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeTrainingComplete;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class MentorDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
|
||||
public MentorDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_MENTEE_TRAINING_COMPLETE, (OnPlayerMenteeTrainingComplete event) -> onPlayerMenteeTrainingComplete(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onPlayerMenteeTrainingComplete(OnPlayerMenteeTrainingComplete event)
|
||||
{
|
||||
final Player player = event.getMentor();
|
||||
final Mentee mentor = MentorManager.getInstance().getMentor(event.getMentee().getObjectId());
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// TODO: Check mentor for mentee training complete
|
||||
if (player == mentor.getPlayer())
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,6 +16,9 @@
|
||||
*/
|
||||
package handlers.dailymissionhandlers;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -39,14 +42,18 @@ import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
*/
|
||||
public class MonsterDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _requiredMissionCompleteId;
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final Set<Integer> _ids = new HashSet<>();
|
||||
private final String _startHour;
|
||||
private final String _endHour;
|
||||
|
||||
public MonsterDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_requiredMissionCompleteId = holder.getRequiredMissionCompleteId();
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
@@ -62,6 +69,8 @@ public class MonsterDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
}
|
||||
}
|
||||
}
|
||||
_startHour = holder.getParams().getString("startHour", "");
|
||||
_endHour = holder.getParams().getString("endHour", "");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -110,24 +119,29 @@ public class MonsterDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final Party party = player.getParty();
|
||||
if (party != null)
|
||||
if (((_requiredMissionCompleteId != 0) && checkRequiredMission(player)) || (_requiredMissionCompleteId == 0))
|
||||
{
|
||||
final CommandChannel channel = party.getCommandChannel();
|
||||
final List<Player> members = channel != null ? channel.getMembers() : party.getMembers();
|
||||
for (Player member : members)
|
||||
if (checkTimeInterval() || ((_startHour == "") && (_endHour == "")))
|
||||
{
|
||||
if ((member.getLevel() >= (monsterLevel - 5)) && (member.calculateDistance3D(monster) <= Config.ALT_PARTY_RANGE))
|
||||
final Party party = player.getParty();
|
||||
if (party != null)
|
||||
{
|
||||
processPlayerProgress(member);
|
||||
final CommandChannel channel = party.getCommandChannel();
|
||||
final List<Player> members = channel != null ? channel.getMembers() : party.getMembers();
|
||||
for (Player member : members)
|
||||
{
|
||||
if ((member.getLevel() >= (monsterLevel - 5)) && (member.calculateDistance3D(monster) <= Config.ALT_PARTY_RANGE))
|
||||
{
|
||||
processPlayerProgress(member);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
@@ -142,4 +156,39 @@ public class MonsterDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkTimeInterval()
|
||||
{
|
||||
if ((_startHour != "") && (_endHour != ""))
|
||||
{
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
|
||||
dateFormat.format(date);
|
||||
|
||||
try
|
||||
{
|
||||
// Check param hours
|
||||
if (dateFormat.parse(dateFormat.format(date)).after(dateFormat.parse(_startHour)) && dateFormat.parse(dateFormat.format(date)).before(dateFormat.parse(_endHour)))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (ParseException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean checkRequiredMission(Player player)
|
||||
{
|
||||
final int missionId = getPlayerEntry(player.getObjectId(), false).getRewardId();
|
||||
final int missionStatus = getStatus(player);
|
||||
if ((missionId != 0) && (_requiredMissionCompleteId != 0) && (missionId == _requiredMissionCompleteId) && (missionStatus == DailyMissionStatus.COMPLETED.getClientId()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBecomeNoblesse;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class NoblesseDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
|
||||
public NoblesseDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_PLAYER_BECOME_NOBLESSE, (OnPlayerBecomeNoblesse event) -> onPlayerBecomeNoblesse(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onPlayerBecomeNoblesse(OnPlayerBecomeNoblesse event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Check if player is belonging to a clan and is noble
|
||||
if ((player.getClan() != null) && (player.getNobleLevel() > 0))
|
||||
{
|
||||
if (player.getNobleLevel() == 1)
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
@@ -33,10 +33,12 @@ public class OlympiadDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
private final boolean _winOnly;
|
||||
private final int _requiredMissionCompleteId;
|
||||
|
||||
public OlympiadDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_requiredMissionCompleteId = holder.getRequiredMissionCompleteId();
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_winOnly = holder.getParams().getBoolean("winOnly", false);
|
||||
}
|
||||
@@ -78,27 +80,44 @@ public class OlympiadDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
if (event.getWinner() != null)
|
||||
{
|
||||
final DailyMissionPlayerEntry winnerEntry = getPlayerEntry(event.getWinner().getObjectId(), true);
|
||||
if (winnerEntry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
if (((_requiredMissionCompleteId != 0) && checkRequiredMission(event.getWinner().getPlayer())) || (_requiredMissionCompleteId == 0))
|
||||
{
|
||||
if (winnerEntry.increaseProgress() >= _amount)
|
||||
if (winnerEntry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
winnerEntry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
if (winnerEntry.increaseProgress() >= _amount)
|
||||
{
|
||||
winnerEntry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(winnerEntry);
|
||||
}
|
||||
storePlayerEntry(winnerEntry);
|
||||
}
|
||||
}
|
||||
|
||||
if (!_winOnly && (event.getLoser() != null))
|
||||
{
|
||||
final DailyMissionPlayerEntry loseEntry = getPlayerEntry(event.getLoser().getObjectId(), true);
|
||||
if (loseEntry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
if (((_requiredMissionCompleteId != 0) && checkRequiredMission(event.getLoser().getPlayer())) || (_requiredMissionCompleteId == 0))
|
||||
{
|
||||
if (loseEntry.increaseProgress() >= _amount)
|
||||
if (loseEntry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
loseEntry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
if (loseEntry.increaseProgress() >= _amount)
|
||||
{
|
||||
loseEntry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(loseEntry);
|
||||
}
|
||||
storePlayerEntry(loseEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkRequiredMission(Player player)
|
||||
{
|
||||
final int missionId = getPlayerEntry(player.getObjectId(), false).getRewardId();
|
||||
final int missionStatus = getStatus(player);
|
||||
if ((missionId != 0) && (_requiredMissionCompleteId != 0) && (missionId == _requiredMissionCompleteId) && (missionStatus == DailyMissionStatus.COMPLETED.getClientId()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,6 @@
|
||||
package handlers.dailymissionhandlers;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.enums.QuestType;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
@@ -33,11 +32,13 @@ import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
public class QuestDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
private final int _questId;
|
||||
|
||||
public QuestDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_questId = holder.getParams().getInt("questId", 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -75,17 +76,23 @@ public class QuestDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
private void onQuestComplete(OnPlayerQuestComplete event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if (event.getQuestType() == QuestType.DAILY)
|
||||
// Check if player has active quest the quest id specified
|
||||
if ((_questId == event.getQuestId()) && player.getQuestState(event.getQuestName()).isCompleted())
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* 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 handlers.dailymissionhandlers;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.DailyMissionStatus;
|
||||
import org.l2jmobius.gameserver.handler.AbstractDailyMissionHandler;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
|
||||
import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.Containers;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemUse;
|
||||
import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class UseItemDailyMissionHandler extends AbstractDailyMissionHandler
|
||||
{
|
||||
private final int _amount;
|
||||
private final int _minLevel;
|
||||
private final int _maxLevel;
|
||||
private final Set<Integer> _itemIds = new HashSet<>();
|
||||
|
||||
public UseItemDailyMissionHandler(DailyMissionDataHolder holder)
|
||||
{
|
||||
super(holder);
|
||||
_amount = holder.getRequiredCompletions();
|
||||
_minLevel = holder.getParams().getInt("minLevel", 0);
|
||||
_maxLevel = holder.getParams().getInt("maxLevel", Integer.MAX_VALUE);
|
||||
final String itemIds = holder.getParams().getString("itemIds", "");
|
||||
if (!itemIds.isEmpty())
|
||||
{
|
||||
for (String s : itemIds.split(","))
|
||||
{
|
||||
final int id = Integer.parseInt(s);
|
||||
if (!_itemIds.contains(id))
|
||||
{
|
||||
_itemIds.add(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
Containers.Global().addListener(new ConsumerEventListener(Containers.Global(), EventType.ON_ITEM_USE, (OnItemUse event) -> onItemUse(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
|
||||
if (entry != null)
|
||||
{
|
||||
switch (entry.getStatus())
|
||||
{
|
||||
case NOT_AVAILABLE: // Initial state
|
||||
{
|
||||
if (entry.getProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AVAILABLE:
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void onItemUse(OnItemUse event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
if (_minLevel > 0)
|
||||
{
|
||||
if ((player.getLevel() < _minLevel) || (player.getLevel() > _maxLevel) || _itemIds.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (_itemIds.contains(event.getItem().getId()))
|
||||
{
|
||||
processPlayerProgress(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processPlayerProgress(Player player)
|
||||
{
|
||||
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
|
||||
if (entry.getStatus() == DailyMissionStatus.NOT_AVAILABLE)
|
||||
{
|
||||
if (entry.increaseProgress() >= _amount)
|
||||
{
|
||||
entry.setStatus(DailyMissionStatus.AVAILABLE);
|
||||
}
|
||||
storePlayerEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
@@ -36,6 +36,7 @@
|
||||
<xs:attribute type="xs:short" name="id" />
|
||||
<xs:attribute type="xs:short" name="reward_id" />
|
||||
<xs:attribute type="xs:string" name="name" />
|
||||
<xs:attribute type="xs:int" name="requiredMissionCompleteId" />
|
||||
<xs:attribute type="xs:int" name="requiredCompletion" />
|
||||
<xs:attribute type="xs:boolean" name="dailyReset" />
|
||||
<xs:attribute type="xs:boolean" name="isOneTime" />
|
||||
|
@@ -2086,6 +2086,7 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="damageModifier" type="xs:decimal" />
|
||||
<xs:element name="abnormalPower" type="xs:unsignedShort" />
|
||||
<xs:element name="animationSpeed" type="xs:unsignedShort" />
|
||||
<xs:element name="pAtkMod">
|
||||
<xs:complexType mixed="true">
|
||||
@@ -2094,7 +2095,9 @@
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:decimal">
|
||||
<xs:attribute name="level" type="xs:unsignedByte" use="required" />
|
||||
<xs:attribute name="level" type="xs:unsignedByte" use="optional" />
|
||||
<xs:attribute name="fromLevel" type="xs:unsignedByte" use="optional" />
|
||||
<xs:attribute name="toLevel" type="xs:unsignedByte" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
@@ -2842,6 +2845,8 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="slot" type="xs:string" />
|
||||
<xs:element name="rate" type="xs:unsignedByte" />
|
||||
<xs:element name="dispel" type="xs:string" />
|
||||
<xs:element name="attribute" type="xs:string" />
|
||||
<xs:element name="mode" type="xs:string" />
|
||||
<xs:element name="model" type="xs:string" />
|
||||
|
@@ -36,6 +36,7 @@ public class DailyMissionDataHolder
|
||||
private final int _id;
|
||||
private final List<ItemHolder> _rewardsItems;
|
||||
private final List<ClassId> _classRestriction;
|
||||
private final int _requiredMissionCompleteId;
|
||||
private final int _requiredCompletions;
|
||||
private final StatSet _params;
|
||||
private final boolean _dailyReset;
|
||||
@@ -50,6 +51,7 @@ public class DailyMissionDataHolder
|
||||
{
|
||||
final Function<DailyMissionDataHolder, AbstractDailyMissionHandler> handler = DailyMissionHandler.getInstance().getHandler(set.getString("handler"));
|
||||
_id = set.getInt("id");
|
||||
_requiredMissionCompleteId = set.getInt("requiredMissionCompleteId", 0);
|
||||
_requiredCompletions = set.getInt("requiredCompletion", 0);
|
||||
_rewardsItems = set.getList("items", ItemHolder.class);
|
||||
_classRestriction = set.getList("classRestriction", ClassId.class);
|
||||
@@ -78,6 +80,11 @@ public class DailyMissionDataHolder
|
||||
return _rewardsItems;
|
||||
}
|
||||
|
||||
public int getRequiredMissionCompleteId()
|
||||
{
|
||||
return _requiredMissionCompleteId;
|
||||
}
|
||||
|
||||
public int getRequiredCompletions()
|
||||
{
|
||||
return _requiredCompletions;
|
||||
|
@@ -59,7 +59,10 @@ import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleport;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.npc.OnNpcTeleportRequest;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayableExpChanged;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAbilityPointsChanged;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAuctionWin;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerAugment;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBecomeExalted;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBecomeNoblesse;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCallToChangeClass;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerChangeToAwakenedClass;
|
||||
@@ -94,6 +97,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMentee
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeLeft;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeRemove;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeStatus;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMenteeTrainingComplete;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMentorStatus;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerMoveRequest;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerPKChanged;
|
||||
@@ -124,6 +128,8 @@ import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceLeave;
|
||||
import org.l2jmobius.gameserver.model.events.impl.instance.OnInstanceStatusChange;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemAttributeAdd;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemBypassEvent;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCombination;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCompound;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemEnchantAdd;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
|
||||
@@ -189,6 +195,8 @@ public enum EventType
|
||||
ON_ITEM_ATTRIBUTE_ADD(OnItemAttributeAdd.class, void.class),
|
||||
ON_ITEM_SOUL_CRYSTAL_ADD(OnItemSoulCrystalAdd.class, void.class),
|
||||
ON_ITEM_ENCHANT_ADD(OnItemEnchantAdd.class, void.class),
|
||||
ON_ITEM_COMBINATION(OnItemCombination.class, void.class),
|
||||
ON_ITEM_COMPOUND(OnItemCompound.class, void.class),
|
||||
|
||||
// NPC events
|
||||
ON_NPC_CAN_BE_SEEN(OnNpcCanBeSeen.class, void.class, TerminateReturn.class),
|
||||
@@ -219,9 +227,12 @@ public enum EventType
|
||||
ON_PLAYABLE_EXP_CHANGED(OnPlayableExpChanged.class, void.class, TerminateReturn.class),
|
||||
|
||||
// Player events
|
||||
ON_PLAYER_AUCTION_WIN(OnPlayerAuctionWin.class, void.class),
|
||||
ON_PLAYER_AUGMENT(OnPlayerAugment.class, void.class),
|
||||
ON_PLAYER_BYPASS(OnPlayerBypass.class, void.class, TerminateReturn.class),
|
||||
ON_PLAYER_CALL_TO_CHANGE_CLASS(OnPlayerCallToChangeClass.class, void.class),
|
||||
ON_PLAYER_BECOME_NOBLESSE(OnPlayerBecomeNoblesse.class, void.class),
|
||||
ON_PLAYER_BECOME_EXALTED(OnPlayerBecomeExalted.class, void.class),
|
||||
ON_PLAYER_CHAT(OnPlayerChat.class, void.class, ChatFilterReturn.class),
|
||||
ON_PLAYER_ABILITY_POINTS_CHANGED(OnPlayerAbilityPointsChanged.class, void.class),
|
||||
// Clan events
|
||||
@@ -256,6 +267,7 @@ public enum EventType
|
||||
ON_PLAYER_MENTEE_LEFT(OnPlayerMenteeLeft.class, void.class),
|
||||
ON_PLAYER_MENTEE_REMOVE(OnPlayerMenteeRemove.class, void.class),
|
||||
ON_PLAYER_MENTEE_STATUS(OnPlayerMenteeStatus.class, void.class),
|
||||
ON_PLAYER_MENTEE_TRAINING_COMPLETE(OnPlayerMenteeTrainingComplete.class, void.class),
|
||||
ON_PLAYER_MENTOR_STATUS(OnPlayerMentorStatus.class, void.class),
|
||||
// Other player events
|
||||
ON_PLAYER_REPUTATION_CHANGED(OnPlayerReputationChanged.class, void.class),
|
||||
|
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* 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 org.l2jmobius.gameserver.model.events.impl.creature.player;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class OnPlayerAuctionWin implements IBaseEvent
|
||||
{
|
||||
private final Player _player;
|
||||
private final Item _item;
|
||||
|
||||
public OnPlayerAuctionWin(Player player, Item item)
|
||||
{
|
||||
_player = player;
|
||||
_item = item;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
public Item getItem()
|
||||
{
|
||||
return _item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventType getType()
|
||||
{
|
||||
return EventType.ON_PLAYER_AUCTION_WIN;
|
||||
}
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* 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 org.l2jmobius.gameserver.model.events.impl.creature.player;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class OnPlayerBecomeExalted implements IBaseEvent
|
||||
{
|
||||
private final Player _player;
|
||||
|
||||
public OnPlayerBecomeExalted(Player player)
|
||||
{
|
||||
_player = player;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventType getType()
|
||||
{
|
||||
return EventType.ON_PLAYER_BECOME_EXALTED;
|
||||
}
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* 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 org.l2jmobius.gameserver.model.events.impl.creature.player;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class OnPlayerBecomeNoblesse implements IBaseEvent
|
||||
{
|
||||
private final Player _player;
|
||||
|
||||
public OnPlayerBecomeNoblesse(Player player)
|
||||
{
|
||||
_player = player;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventType getType()
|
||||
{
|
||||
return EventType.ON_PLAYER_BECOME_NOBLESSE;
|
||||
}
|
||||
}
|
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* 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 org.l2jmobius.gameserver.model.events.impl.creature.player;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class OnPlayerMenteeTrainingComplete implements IBaseEvent
|
||||
{
|
||||
private final Player _mentor;
|
||||
private final Player _mentee;
|
||||
|
||||
public OnPlayerMenteeTrainingComplete(Player mentor, Player mentee)
|
||||
{
|
||||
_mentor = mentor;
|
||||
_mentee = mentee;
|
||||
}
|
||||
|
||||
public Player getMentor()
|
||||
{
|
||||
return _mentor;
|
||||
}
|
||||
|
||||
public Player getMentee()
|
||||
{
|
||||
return _mentee;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventType getType()
|
||||
{
|
||||
return EventType.ON_PLAYER_MENTEE_TRAINING_COMPLETE;
|
||||
}
|
||||
}
|
@@ -28,12 +28,14 @@ public class OnPlayerQuestComplete implements IBaseEvent
|
||||
{
|
||||
private final Player _player;
|
||||
private final int _questId;
|
||||
private final String _questName;
|
||||
private final QuestType _questType;
|
||||
|
||||
public OnPlayerQuestComplete(Player player, int questId, QuestType questType)
|
||||
public OnPlayerQuestComplete(Player player, int questId, String questName, QuestType questType)
|
||||
{
|
||||
_player = player;
|
||||
_questId = questId;
|
||||
_questName = questName;
|
||||
_questType = questType;
|
||||
}
|
||||
|
||||
@@ -47,6 +49,11 @@ public class OnPlayerQuestComplete implements IBaseEvent
|
||||
return _questId;
|
||||
}
|
||||
|
||||
public String getQuestName()
|
||||
{
|
||||
return _questName;
|
||||
}
|
||||
|
||||
public QuestType getQuestType()
|
||||
{
|
||||
return _questType;
|
||||
|
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* 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 org.l2jmobius.gameserver.model.events.impl.item;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class OnItemCombination implements IBaseEvent
|
||||
{
|
||||
private final Player _player;
|
||||
private final Item _item;
|
||||
|
||||
public OnItemCombination(Player player, Item item)
|
||||
{
|
||||
_player = player;
|
||||
_item = item;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
public Item getItem()
|
||||
{
|
||||
return _item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventType getType()
|
||||
{
|
||||
return EventType.ON_ITEM_COMBINATION;
|
||||
}
|
||||
}
|
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* 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 org.l2jmobius.gameserver.model.events.impl.item;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
|
||||
/**
|
||||
* @author CostyKiller
|
||||
*/
|
||||
public class OnItemCompound implements IBaseEvent
|
||||
{
|
||||
private final Player _player;
|
||||
private final Item _item;
|
||||
|
||||
public OnItemCompound(Player player, Item item)
|
||||
{
|
||||
_player = player;
|
||||
_item = item;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
return _player;
|
||||
}
|
||||
|
||||
public Item getItem()
|
||||
{
|
||||
return _item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventType getType()
|
||||
{
|
||||
return EventType.ON_ITEM_COMPOUND;
|
||||
}
|
||||
}
|
@@ -17,6 +17,7 @@
|
||||
package org.l2jmobius.gameserver.model.events.impl.item;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.ensoul.EnsoulStone;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.IBaseEvent;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
@@ -28,11 +29,13 @@ public class OnItemSoulCrystalAdd implements IBaseEvent
|
||||
{
|
||||
private final Player _player;
|
||||
private final Item _item;
|
||||
private final EnsoulStone _stone;
|
||||
|
||||
public OnItemSoulCrystalAdd(Player player, Item item)
|
||||
public OnItemSoulCrystalAdd(Player player, Item item, EnsoulStone stone)
|
||||
{
|
||||
_player = player;
|
||||
_item = item;
|
||||
_stone = stone;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
@@ -45,6 +48,11 @@ public class OnItemSoulCrystalAdd implements IBaseEvent
|
||||
return _item;
|
||||
}
|
||||
|
||||
public EnsoulStone getEnsoulStone()
|
||||
{
|
||||
return _stone;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventType getType()
|
||||
{
|
||||
|
@@ -71,7 +71,6 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemPi
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemAttributeAdd;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemBypassEvent;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemEnchantAdd;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemTalk;
|
||||
import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
@@ -2250,12 +2249,6 @@ public class Item extends WorldObject
|
||||
{
|
||||
updateSpecialAbilities();
|
||||
}
|
||||
|
||||
// Notify to Scripts
|
||||
if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD))
|
||||
{
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(getActingPlayer(), this));
|
||||
}
|
||||
}
|
||||
|
||||
public void removeSpecialAbility(int position, int type)
|
||||
|
@@ -729,7 +729,7 @@ public class QuestState
|
||||
// Notify to scripts
|
||||
if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player))
|
||||
{
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), type), _player);
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), getQuestName(), type), _player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -819,7 +819,7 @@ public class QuestState
|
||||
// Notify to scripts
|
||||
if (EventDispatcher.getInstance().hasListener(EventType.ON_PLAYER_QUEST_COMPLETE, _player))
|
||||
{
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player);
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerQuestComplete(_player, getQuest().getId(), getQuestName(), repeatable ? QuestType.REPEATABLE : QuestType.ONE_TIME), _player);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -25,6 +25,9 @@ import org.l2jmobius.gameserver.data.xml.ItemCrystallizationData;
|
||||
import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.enums.Race;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCombination;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemChanceHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.item.type.CrystalType;
|
||||
@@ -249,7 +252,11 @@ public class RequestCrystallizeItem implements ClientPacket
|
||||
sm = new SystemMessage(SystemMessageId.S1_HAS_BEEN_CRYSTALLIZED);
|
||||
sm.addItemName(removedItem);
|
||||
player.sendPacket(sm);
|
||||
|
||||
// Notify to scripts.
|
||||
if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_COMBINATION))
|
||||
{
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnItemCombination(player, removedItem));
|
||||
}
|
||||
player.broadcastUserInfo();
|
||||
|
||||
player.setInCrystallize(false);
|
||||
|
@@ -24,6 +24,9 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.enums.Race;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.alchemy.AlchemyCraftData;
|
||||
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCombination;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
@@ -197,6 +200,16 @@ public class RequestAlchemyConversion implements ClientPacket
|
||||
player.getInventory().addItem("Alchemy", data.getProductionFailure().getId(), data.getProductionFailure().getCount() * failureCount, player, null);
|
||||
}
|
||||
|
||||
// Notify to scripts.
|
||||
if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_COMBINATION))
|
||||
{
|
||||
for (ItemHolder ingredient : data.getIngredients())
|
||||
{
|
||||
final Item item = player.getInventory().getItemByItemId(ingredient.getId());
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnItemCombination(player, item));
|
||||
}
|
||||
}
|
||||
|
||||
player.sendPacket(new ExAlchemyConversion(successCount, failureCount));
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,9 @@ import org.l2jmobius.commons.util.Rnd;
|
||||
import org.l2jmobius.gameserver.data.xml.CombinationItemsData;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.request.CompoundRequest;
|
||||
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemCompound;
|
||||
import org.l2jmobius.gameserver.model.item.combination.CombinationItem;
|
||||
import org.l2jmobius.gameserver.model.item.combination.CombinationItemReward;
|
||||
import org.l2jmobius.gameserver.model.item.combination.CombinationItemType;
|
||||
@@ -118,6 +121,11 @@ public class RequestNewEnchantTry implements ClientPacket
|
||||
{
|
||||
player.sendPacket(new ExEnchantFail(itemOne.getId(), itemTwo.getId()));
|
||||
}
|
||||
// Notify to scripts.
|
||||
if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_COMPOUND))
|
||||
{
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnItemCompound(player, success ? item : itemOne));
|
||||
}
|
||||
}
|
||||
|
||||
final InventoryUpdate iu = new InventoryUpdate();
|
||||
|
@@ -22,6 +22,9 @@ import org.l2jmobius.gameserver.enums.PrivateStoreType;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.ensoul.EnsoulOption;
|
||||
import org.l2jmobius.gameserver.model.ensoul.EnsoulStone;
|
||||
import org.l2jmobius.gameserver.model.events.EventDispatcher;
|
||||
import org.l2jmobius.gameserver.model.events.EventType;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.skill.AbnormalType;
|
||||
@@ -60,7 +63,6 @@ public class RequestItemEnsoul implements ClientPacket
|
||||
_options[i] = new EnsoulItemOption(type, position, soulCrystalObjectId, soulCrystalOption);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,6 +219,12 @@ public class RequestItemEnsoul implements ClientPacket
|
||||
{
|
||||
item.addSpecialAbility(option, position, stone.getSlotType(), true);
|
||||
success = 1;
|
||||
|
||||
// Notify to Scripts
|
||||
if (EventDispatcher.getInstance().hasListener(EventType.ON_ITEM_SOUL_CRYSTAL_ADD))
|
||||
{
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnItemSoulCrystalAdd(player, item, stone));
|
||||
}
|
||||
}
|
||||
|
||||
if (soulCrystal.isStackable() && (soulCrystal.getCount() > 0))
|
||||
|
Reference in New Issue
Block a user