package org.reunionemu.jreunion.game.items.etc; import org.reunionemu.jreunion.dao.QuestDao; import org.reunionemu.jreunion.game.Item; import org.reunionemu.jreunion.game.ItemPosition; import org.reunionemu.jreunion.game.LivingObject; import org.reunionemu.jreunion.game.Player; import org.reunionemu.jreunion.game.QuickSlotPosition; import org.reunionemu.jreunion.game.Usable; import org.reunionemu.jreunion.model.Quest; import org.reunionemu.jreunion.server.Client; import org.reunionemu.jreunion.server.DatabaseUtils; import org.reunionemu.jreunion.server.PacketFactory.Type; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Configurable; @Configurable public class MissionReceiver extends Etc implements Usable{ @Autowired private QuestDao questDao; public MissionReceiver(int id) { super(id); } @Override public Item<?> create() { Item<?> item = super.create(); item.setExtraStats(10); return item; } @Override public boolean use(Item<?> item, LivingObject user, int quickSlotPosition, int unknown) { if(user instanceof Player){ Player player = (Player)user; //player.getClient().sendPacket(Type.SAY, "Quests are temporarily disabled."); //check if player have the correct level to use this item. if(player.getLevel() >= 100){ player.getClient().sendPacket(Type.SAY, "Your level is to high to use this item.\n" + "Please use the Advanced Mission Receiver."); return false; } //check if the MR has run out of quests. if(item.getExtraStats() <= 0){ player.getClient().sendPacket(Type.SAY, "Mission Reciever run out of available quests."); return false; } Quest quest = questDao.getRandomQuest(player); //check if a quest for the player level have been found. if(quest == null){ player.getClient().sendPacket(Type.SAY, "No quests available for character level."); return false; } item.setExtraStats(item.getExtraStats()-1); DatabaseUtils.getDinamicInstance().saveItem(item); player.setQuest(quest); return true; } else { LoggerFactory.getLogger(MissionReceiver.class).warn(this.getName() + " not implemented for " + user.getName()); } return false; } @Override public void setExtraStats(Item<?> item) { super.setExtraStats(item); ItemPosition position = item.getPosition(); if(position instanceof QuickSlotPosition){ QuickSlotPosition quickSlotPosition = (QuickSlotPosition)position; Client client = quickSlotPosition.getQuickSlotBar().getPlayer().getClient(); client.sendPacket(Type.QT, "quick " + quickSlotPosition.getSlot() + " " + item.getExtraStats()); } } }