Package dynamic_quests

Source Code of dynamic_quests.BatCountry$OnUseItemListenerImpl

package dynamic_quests;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import lineage2.commons.util.Rnd;
import lineage2.gameserver.listener.actor.player.OnSocialActionListener;
import lineage2.gameserver.listener.actor.player.OnUseItemListener;
import lineage2.gameserver.model.GameObject;
import lineage2.gameserver.model.GameObjectsStorage;
import lineage2.gameserver.model.Player;
import lineage2.gameserver.model.instances.NpcInstance;
import lineage2.gameserver.model.items.ItemInstance;
import lineage2.gameserver.model.quest.dynamic.DynamicQuest;
import lineage2.gameserver.network.clientpackets.RequestActionUse;
import lineage2.gameserver.network.serverpackets.ExShowScreenMessage;
import lineage2.gameserver.network.serverpackets.ExShowScreenMessage.ScreenMessageAlign;
import lineage2.gameserver.network.serverpackets.SocialAction;
import lineage2.gameserver.network.serverpackets.components.NpcString;
import lineage2.gameserver.scripts.Functions;
import lineage2.gameserver.scripts.ScriptFile;
import lineage2.gameserver.utils.ItemFunctions;

public class BatCountry extends DynamicQuest implements ScriptFile
{
  public static final Logger _log = LoggerFactory.getLogger(BatCountry.class);
  private static final int QUEST_ID = 14;
  private static final int DURATION = 1800; // 30 minutes duration
  private static final String START_TIME = "00 14,18 * * Wed,Sat"; // Start days: Wednesday, Saturday - time: 2.00 p.m., 6.00 p.m. 
  private static final String SPAWN_GROUP = "bat_country_mobs"; //xml spawn
 
  private final OnSocialActionListener _action = new OnSocialActionListenerImpl();
  private final OnUseItemListener _onUseItem = new OnUseItemListenerImpl();
 
  private static final int MIN_LEVEL = 40;
  private static final int MAX_LEVEL = 99;
  // NPC
  private static final int NPC_1 = 33651; // Bear Doll
  private static final int NPC_2 = 33652; // Pumpkin Ghost
  private static final int NPC_3 = 33656; // Makeshift Bat
  private static final int BAT_COLONY = 33658; // mob to kill
  private static final int KILL_BAT_MOBS = 1401; // 1401 task id
  private static final int MAX_TASK_POINT = 100;
  // Items
  private static final int FIRECRACKER = 34761; // Firecracker of Fear - Campaign
  private static final int REWARD_1 = 33500; // Mark of a Lord
  private static final int REWARD_2 = 33501; // Mark of the King
 
  public BatCountry()
  {
    super(QUEST_ID, DURATION);
    addSpawns(SPAWN_GROUP);
    addTask(KILL_BAT_MOBS, MAX_TASK_POINT, TASK_INCREASE_MODE_NO_LIMIT);
    addReward(REWARD_1, 1);
    addEliteReward(REWARD_2, 2, 2);
    addLevelCheck(MIN_LEVEL, MAX_LEVEL);
    initSchedulingPattern(START_TIME);
  }

  @Override
  protected boolean isZoneQuest()
  {
    return false;
  }
 
  @Override
  public void onLoad()
  {
    _log.info("Dynamic Quest: Loaded quest ID "+QUEST_ID+". Name: Bat Country - Campaign");
  }

  @Override
  public void onReload() {
  }

  @Override
  public void onShutdown() {
  }

  @Override
  protected void onStart()
  {
    _log.info("Dynamic Quest: "+QUEST_ID+". Name: Bat Country - Campaign [STARTED]");
  }

  @Override
  protected void onStop(boolean success)
  {
    for (int objectId : getParticipants())
    {
      Player player = GameObjectsStorage.getPlayer(objectId);
      if (player != null)
        removeParticipant(player);
    }
  }

  @Override
  protected void onFinish() {
}

  @Override
  protected String onRequestHtml(Player player, boolean participant)
  {
    if (getCurrentStep() == 1)
    {
      if (isStarted())
      {
        if (!participant)
        {
          return "dc0014_start001.htm";
        }
        return "dc0014_context001.htm";
      }
      else if (isSuccessed())
      {
        boolean rewardReceived = rewardReceived(player);
        if (rewardReceived)
          return "dc0014_reward_received001.htm";
        return "dc0014_reward001.htm";
      }
      else
      {
        return "dc0014_failed001.htm";
      }
    }
    return null;
  }

  @Override
  protected boolean onPlayerEnter(Player player)
  {
    if (getParticipants().contains(player.getObjectId()))
    {
      addParticipant(player);
      return true;
    }
    return false;
  }

  @Override
  protected void onTaskCompleted(int taskId) {
  }

  @Override
  protected String onDialogEvent(String event, Player player)
  {
    String response = null;
    if (event.equals("Accept"))
    {
      addParticipant(player);
      response = "dc0014_context001.htm";
    }
    else if (event.equals("Reward"))
    {
      tryReward(player);
      response = "dc0014_reward_received001.htm";
    }
    else if (event.endsWith(".htm"))
    {
      response = event;
    }
    return response;
  }

  @Override
  protected void onAddParticipant(Player player)
  {
    player.getListeners().add(_onUseItem);
    player.getListeners().add(_action);
  }

  @Override
  protected void onRemoveParticipant(Player player)
  {
    player.getListeners().remove(_onUseItem);
    player.getListeners().remove(_action);
  }

  @Override
  protected boolean onStartCondition()
  {
    return true;
  }
 
  private final class OnSocialActionListenerImpl implements OnSocialActionListener
  {
    public OnSocialActionListenerImpl()
    {
      // TODO Auto-generated constructor stub
    }

    @Override
    public void onSocialAction(Player player, GameObject target, RequestActionUse.Action action)
    {
      if (target != null && target.isNpc())
      {
        NpcInstance npc = (NpcInstance) target;
        double dist = player.getDistance(npc);
        switch (npc.getNpcId())
        {
          case NPC_1:
            if ((action.value == SocialAction.APPLAUD) && (dist < 50) && !npc.isDead())
            {
              player.sendPacket(new ExShowScreenMessage(NpcString.USE_THE_FIRECRACKER_OF_FEAR_ON_THE_BAT_COLONY, 4500, ScreenMessageAlign.TOP_CENTER));
              ItemFunctions.addItem(player, FIRECRACKER, Rnd.get(1,3), true);
              npc.doDie(player);
            }
            break;
          case NPC_2:
            if ((action.value == SocialAction.APPLAUD) && (dist < 50) && !npc.isDead())
            {
              player.sendPacket(new ExShowScreenMessage(NpcString.USE_THE_FIRECRACKER_OF_FEAR_ON_THE_BAT_COLONY, 4500, ScreenMessageAlign.TOP_CENTER));
              ItemFunctions.addItem(player, FIRECRACKER, Rnd.get(1,3), true);
              npc.doDie(player);
            }
            break;
          case NPC_3:
            if ((action.value == SocialAction.APPLAUD) && (dist < 50) && !npc.isDead())
            {
              player.sendPacket(new ExShowScreenMessage(NpcString.USE_THE_FIRECRACKER_OF_FEAR_ON_THE_BAT_COLONY, 4500, ScreenMessageAlign.TOP_CENTER));
              ItemFunctions.addItem(player, FIRECRACKER, Rnd.get(1,3), true);
              npc.doDie(player);
            }
            break;
        }
      }
    }
  }
 
  private final class OnUseItemListenerImpl extends Functions implements OnUseItemListener
  {

    public OnUseItemListenerImpl()
    {
      // TODO Auto-generated constructor stub
    }

    @Override
    public void onUseItem(Player player, GameObject target, ItemInstance item)
    {
      if (target != null && target.isNpc())
      {
        NpcInstance npc = (NpcInstance) target;
        double dist = player.getDistance(npc);
        item = player.getInventory().getItemByItemId(FIRECRACKER);
        if ((item != null) && (dist < 70) && (npc.getNpcId() == BAT_COLONY) && !npc.isDead())
        {
          increaseTaskPoint(KILL_BAT_MOBS, player, 1);
          npc.doDie(player);
        }
      }
    }
  }
}
TOP

Related Classes of dynamic_quests.BatCountry$OnUseItemListenerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.
d', 'pageview');