Package quests

Source Code of quests._10331_StartOfFate

  package quests;

import java.util.List;

import lineage2.commons.util.Rnd;
import lineage2.gameserver.ai.CtrlEvent;
import lineage2.gameserver.ai.CtrlIntention;
import lineage2.gameserver.data.htm.HtmCache;
import lineage2.gameserver.data.xml.holder.MultiSellHolder;
import lineage2.gameserver.model.Player;
import lineage2.gameserver.model.base.ClassId;
import lineage2.gameserver.model.base.ClassLevel;
import lineage2.gameserver.model.base.Race;
import lineage2.gameserver.model.entity.Reflection;
import lineage2.gameserver.model.instances.NpcInstance;
import lineage2.gameserver.model.quest.Quest;
import lineage2.gameserver.model.quest.QuestState;
import lineage2.gameserver.network.serverpackets.ExShowScreenMessage;
import lineage2.gameserver.network.serverpackets.TutorialShowHtml;
import lineage2.gameserver.network.serverpackets.ExShowScreenMessage.ScreenMessageAlign;
import lineage2.gameserver.network.serverpackets.MagicSkillUse;
import lineage2.gameserver.network.serverpackets.components.NpcString;
import lineage2.gameserver.network.serverpackets.components.SceneMovie;
import lineage2.gameserver.network.serverpackets.components.SystemMsg;
import lineage2.gameserver.scripts.Functions;
import lineage2.gameserver.scripts.ScriptFile;
import lineage2.gameserver.utils.HtmlUtils;
import lineage2.gameserver.utils.Location;

/**
* @author Bonux
*/
public class _10331_StartOfFate extends Quest implements ScriptFile
{
  // NPC.
  private static final int INFILTRATION_OFFICER = 19155//ok
  private static final int VALFAR = 32146//ok
  private static final int RIVIAN = 32147//ok
  private static final int TOOK = 32150//ok
  private static final int FRANCO = 32153//ok
  private static final int MOKA = 32157//ok
  private static final int DEVON = 32160//ok
  private static final int PANTHEON = 32972;
  private static final int LAKCIS = 32977//ok
  private static final int SEBION = 32978//ok
  private static final int BELIS_VERIFICATION_SYSTEM = 33215;
  private static final int ELECTRICITY_GENERATOR = 33216;

  private static final int NEMERTESS = 22984//ok
  private static final int HANDYMAN = 22997//ok
  private static final int OPERATIVE = 22998//ok

  private static final int SARILS_NECKLACE = 17580;
  private static final int BELIS_MARK = 17615;
  private static final int PROOF_OF_COURAGE = 17821;

  private static final Location ESAGIRA_5_AREA = new Location(-111774, 231933, -3160);

  private static final int INSTANCED_ZONE_ID = 178;
  private static final int NEED_BELIS_MARKS_COUNT = 3;
  private static final int NEED_OPERATIVES_KILLS_COUNT = 6;
  private static final int NEED_DEFENDERS_KILLS_COUNT = 6;
  private static final int BELISE_MARK_DROP_CHANCE = 45;
  private static final int PROOF_OF_COURAGE_MULTISELL_ID = 717;

  public _10331_StartOfFate()
  {
    super(false);
    addStartNpc(FRANCO, RIVIAN, DEVON, TOOK, MOKA, VALFAR);
    addTalkId(FRANCO, RIVIAN, DEVON, TOOK, MOKA, VALFAR, LAKCIS, SEBION, INFILTRATION_OFFICER, PANTHEON);
    addFirstTalkId(INFILTRATION_OFFICER, BELIS_VERIFICATION_SYSTEM, ELECTRICITY_GENERATOR);
    addKillId(HANDYMAN, OPERATIVE, NEMERTESS);
    addQuestItem(BELIS_MARK, SARILS_NECKLACE);
  }

  @Override
  public String onEvent(String event, QuestState st, NpcInstance npc)
  {
    String htmltext = event;
    if(npc != null && event.equalsIgnoreCase(getStartNpcPrefix(npc.getNpcId()) + "_q10331_3.htm"))
    {
      st.setCond(1);
      st.setState(STARTED);
      st.playSound(SOUND_ACCEPT);
    }
    else if(event.equalsIgnoreCase("lakcis_q10331_2.htm"))
    {
      st.setCond(2);
      st.playSound(SOUND_MIDDLE);
    }
    else if(event.equalsIgnoreCase("teleport_to_5_area"))
    {
      st.getPlayer().teleToLocation(ESAGIRA_5_AREA);
      return null;
    }
    else if(event.equalsIgnoreCase("sebion_q10331_3.htm"))
    {
      st.setCond(3);
      st.playSound(SOUND_MIDDLE);
    }
    else if(event.equalsIgnoreCase("enter_to_labyrinth"))
    {
      enterInstance(st, INSTANCED_ZONE_ID);
      return null;
    }
    else if(event.equalsIgnoreCase("start_stage_1"))
    {
      Player p = st.getPlayer();
      Reflection reflect = p.getReflection();
      NpcInstance officer = getNpcFromReflection(INFILTRATION_OFFICER, reflect);
      if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
      {
        st.set("stage", 1);
        reflect.openDoor(16240002);
        officer.setRunning();
        officer.setFollowTarget(st.getPlayer());
        officer.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, st.getPlayer(), 150);
      }
      return null;
    }
    else if(event.equalsIgnoreCase("start_stage_3"))
    {
      Player p = st.getPlayer();
      Reflection reflect = p.getReflection();
      NpcInstance officer = getNpcFromReflection(INFILTRATION_OFFICER, reflect);
      if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
      {
        st.set("stage", 3);
        reflect.openDoor(16240004);
        officer.setRunning();
        officer.setFollowTarget(st.getPlayer());
        officer.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, st.getPlayer(), 150);
        st.getPlayer().sendPacket(new ExShowScreenMessage(NpcString.MARK_OF_BELIS_CAN_BE_ACQUIRED_FROM_ENEMIES, 7000, ScreenMessageAlign.TOP_CENTER));
        st.startQuestTimer("belise_mark_msg_timer", 10000);
      }
      return null;
    }
    else if(event.equalsIgnoreCase("drop_belise_mark"))
    {
      npc.dropItem(st.getPlayer(), BELIS_MARK, 1);
      return null;
    }
    else if(event.equalsIgnoreCase("belise_mark_msg_timer"))
    {
      Player player = st.getPlayer();
      Reflection reflection = player.getActiveReflection();
      if(reflection!= null && reflection.getInstancedZoneId() == INSTANCED_ZONE_ID && st.getInt("stage") == 3)
      {
        player.sendPacket(new ExShowScreenMessage(NpcString.MARK_OF_BELIS_CAN_BE_ACQUIRED_FROM_ENEMIES, 7000, ScreenMessageAlign.TOP_CENTER));
        st.startQuestTimer("belise_mark_msg_timer", 10000);
      }
      return null;
    }
    else if(event.equalsIgnoreCase("use_belise_mark"))
    {
      if(st.getInt("stage") == 3)
      {
        if(st.takeItems(BELIS_MARK, 1) == 1)
        {
          int marksLeft = NEED_BELIS_MARKS_COUNT - st.getInt("belise_marks_left") - 1;
          if(marksLeft > 0)
          {
            htmltext = HtmCache.getInstance().getNotNull("quests/_10331_StartOfFate/belis_verification_system_q10331_2.htm", st.getPlayer());
            htmltext = htmltext.replace("<?BELISE_MARKS_LEFT?>", String.valueOf(marksLeft));
          }
          else
          {
            Player player = st.getPlayer();
            Reflection reflect = player.getActiveReflection();
            if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
            {
              st.set("stage", 4);
              reflect.openDoor(16240005);
              NpcInstance officer = getNpcFromReflection(INFILTRATION_OFFICER, reflect);
              if(officer != null)
                officerMoveToLocation(officer, new Location(-117896, 214248, -8617, 49151));
            }
            htmltext = "belis_verification_system_q10331_3.htm";
          }
          st.set("belise_marks_left", NEED_BELIS_MARKS_COUNT - marksLeft);
        }
        else
          htmltext = "belis_verification_system_q10331_no.htm";
      }
      else
        htmltext = "belis_verification_system_q10331_4.htm";
    }
    else if(event.equalsIgnoreCase("start_stage_5"))
    {
      Player p = st.getPlayer();
      Reflection reflect = p.getReflection();
      NpcInstance officer = getNpcFromReflection(INFILTRATION_OFFICER, reflect);
      if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
      {
        st.set("stage", 5);
        reflect.openDoor(16240006);
        officer.setRunning();
        NpcInstance generator = getNpcFromReflection(ELECTRICITY_GENERATOR, reflect);
        if(generator != null)
        {
          generator.setNpcState(1);
          officer.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, generator, 1000);
          Functions.npcSay(officer, NpcString.DONT_COME_BACK_HERE);
          st.startQuestTimer("stage_5_phrases_timer", 5000, officer);
          st.startQuestTimer("stage_5_spawn_timer", 5000, officer);
        }
      }
      return null;
    }
    else if(event.equalsIgnoreCase("stage_5_phrases_timer"))
    {
      if(st.getInt("stage") == 5)
      {
        Functions.npcSay(npc, NpcString.DONT_COME_BACK_HERE);
        Player player = st.getPlayer();
        Reflection reflection = player.getActiveReflection();
        if(reflection!= null && reflection.getInstancedZoneId() == INSTANCED_ZONE_ID)
        {
          NpcString screenMsg = NpcString.BEHIND_YOU_THE_ENEMY_IS_AMBUSING_YOU;
          if(Rnd.chance(50))
            screenMsg = NpcString.IF_TERAIN_DIES_MISSION_WILL_FAIL;
          player.sendPacket(new ExShowScreenMessage(screenMsg, 7000, ScreenMessageAlign.TOP_CENTER, true, true));
        }
        st.startQuestTimer("stage_5_phrases_timer", 10000, npc);
      }
      return null;
    }
    else if(event.equalsIgnoreCase("stage_5_spawn_timer"))
    {
      if(st.getInt("stage") == 5)
      {
        int defendersCount = st.getInt("spawned_defenders");
        if(defendersCount < NEED_DEFENDERS_KILLS_COUNT)
        {
          int defenderNpcId = (defendersCount == 0 || defendersCount % 2 == 0) ? HANDYMAN : OPERATIVE;
          Reflection reflect = npc.getReflection();
          NpcInstance defender = addSpawnToInstance(defenderNpcId, new Location(-116600, 213080, -8615, 21220), 0, reflect.getId());

          /*
          NpcString defenderPhrase = NpcString.FOCUS_ON_ATTACKING_THE_GUY_IN_THE_ROOM;
          if(Rnd.chance(50))
            defenderPhrase = NpcString.KILL_THE_GUY_MESSING_WITH_THE_ELECTRIC_DEVICE;
          Functions.npcSay(defender, defenderPhrase);
          */
         
          NpcInstance officer = getNpcFromReflection(INFILTRATION_OFFICER, reflect);
          if(officer != null)
          {
            defender.setSpawnedLoc(officer.getLoc());
            defender.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, officer, 10);
          }
          st.set("spawned_defenders", defendersCount + 1);
          String defendersIds = st.get("defenders_ids");
          if(defendersIds == null)
            defendersIds = "";
          st.set("defenders_ids", st.get("defenders_ids") + "-" + defender.getObjectId() + "-");
        }

        st.startQuestTimer("stage_5_spawn_timer", 20000, npc);
      }
      return null;
    }
    else if(event.equalsIgnoreCase("process_stage_5"))
    {
      Player player = st.getPlayer();
      Reflection reflect = player.getActiveReflection();
      if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
      {
        int defenderKills = st.getInt("defender_kills");
        if(defenderKills >= NEED_DEFENDERS_KILLS_COUNT)
        {
          st.set("stage", 6);
          st.getPlayer().sendPacket(new ExShowScreenMessage(NpcString.ELECTRONIC_DEVICE_HAS_BEEN_DESTROYED, 5000, ScreenMessageAlign.TOP_CENTER));
          reflect.openDoor(16240007);
          reflect.getZone("[belise_labyrinth_03_1]").setActive(true);
          reflect.getZone("[belise_labyrinth_03_2]").setActive(false);

          NpcInstance officer = getNpcFromReflection(INFILTRATION_OFFICER, reflect);
          if(officer != null)
            officerMoveToLocation(officer, new Location(-119112, 213672, -8617, 8191));

          NpcInstance generator = getNpcFromReflection(ELECTRICITY_GENERATOR, reflect);
          if(generator != null)
            generator.deleteMe();
        }
      }
      return null;
    }
    else if(event.equalsIgnoreCase("start_stage_7"))
    {
      Player player = st.getPlayer();
      Reflection reflect = player.getActiveReflection();
      if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
      {
        st.set("stage", 7);
        reflect.openDoor(16240008);
        SceneMovie scene = SceneMovie.sc_talking_island_boss_opening;
        st.getPlayer().showQuestMovie(scene);
        st.startQuestTimer("spawn_nemertess", scene.getDuration(), npc);
      }
      return null;
    }
    else if(event.equalsIgnoreCase("spawn_nemertess"))
    {
      if(st.getInt("stage") == 7)
      {
        Player player = st.getPlayer();
        Reflection reflect = player.getActiveReflection();
        if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
        {
          addSpawnToInstance(NEMERTESS, new Location(-118328, 212968, -8705, 24575), 0, reflect.getId());
        }
      }
      return null;
    }
    else if(event.equalsIgnoreCase("kill_nemertess"))
    {
      if(st.getInt("stage") == 7)
      {
        Player player = st.getPlayer();
        Reflection reflect = player.getActiveReflection();
        if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
        {
          clearInstanceVariables(st);
          st.setCond(4);
          st.giveItems(SARILS_NECKLACE, 1);
          NpcInstance officer = getNpcFromReflection(INFILTRATION_OFFICER, reflect);
          if(officer != null)
            officerMoveToLocation(officer, new Location(-118328, 212968, -8705, 24575));
        }
      }
      return null;
    }
    else if(event.equalsIgnoreCase("pantheon_q10331_2.htm"))
    {
      int cond = st.getPlayer().getRace().ordinal() + 6;
      st.setCond(cond);
    }
    else if(event.startsWith("class_transfer"))
    {
      String[] params = event.split(" ");
      if(params.length < 3)
        return null;

      int classId = Integer.parseInt(params[1]);
      String html = params[2];
      htmltext = HtmCache.getInstance().getNotNull("quests/_10331_StartOfFate/" + html, st.getPlayer());
      htmltext = htmltext.replace("<?CLASS_NAME?>", HtmlUtils.htmlClassName(classId));

      Player player = st.getPlayer();
      player.setClassId(classId, false, false);
      player.sendPacket(SystemMsg.CONGRATULATIONS__YOUVE_COMPLETED_A_CLASS_TRANSFER);
      player.broadcastPacket(new MagicSkillUse(player, player, 5103, 1, 1000, 0));

      MultiSellHolder.getInstance().SeparateAndSend(PROOF_OF_COURAGE_MULTISELL_ID, st.getPlayer(), 0);
      st.showTutorialHTML(TutorialShowHtml.QT_009, TutorialShowHtml.TYPE_WINDOW);
      st.giveItems(ADENA_ID, 80000);
      st.giveItems(PROOF_OF_COURAGE, 40);
      st.addExpAndSp(200000, 40000);
      st.setState(COMPLETED);
      st.exitCurrentQuest(false);
      st.playSound(SOUND_FANFARE2);
      //st.playSound(SOUND_FINISH);
    }
    return htmltext;
  }

  @Override
  public String onTalk(NpcInstance npc, QuestState st)
  {
    String htmltext = "noquest";
    int npcId = npc.getNpcId();
    int cond = st.getCond();
    if(npcId == FRANCO || npcId == RIVIAN || npcId == DEVON || npcId == TOOK || npcId == MOKA || npcId == VALFAR)
    {
      String prefix = getStartNpcPrefix(npcId);
      if(cond == 0)
      {
        if(checkStartCondition(st.getPlayer()))
          htmltext = prefix + "_q10331_1.htm";
        else
          htmltext = prefix + "_q10331_0.htm";
      }
      else if(cond == 1)
        htmltext = prefix + "_q10331_4.htm";
      else if(cond >= 6)
        htmltext = getAvailableClassList(st.getPlayer(), prefix + "_q10331_5.htm", prefix + "_q10331_6.htm");
    }
    else if(npcId == LAKCIS)
    {
      if(cond == 1)
        htmltext = "lakcis_q10331_1.htm";
      else if(cond == 2)
        htmltext = "lakcis_q10331_3.htm";
    }
    else if(npcId == SEBION)
    {
      if(cond == 2)
        htmltext = "sebion_q10331_1.htm";
      else if(cond == 3)
        htmltext = "sebion_q10331_4.htm";
      else if(cond == 4)
      {
        htmltext = "sebion_q10331_5.htm";
        st.setCond(5);
      }
      else if(cond == 5)
        htmltext = "sebion_q10331_6.htm";
    }
    else if(npcId == PANTHEON)
    {
      if(cond == 5)
        htmltext = "pantheon_q10331_1.htm";
      else if(cond >= 6)
        htmltext = "pantheon_q10331_3.htm";
    }
    return htmltext;
  }

  @Override
  public String onFirstTalk(NpcInstance npc, Player player)
  {
    QuestState st = player.getQuestState(getClass());
    if(st == null)
      return "";

    Reflection reflect = npc.getReflection();
    if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
    {
      int npcId = npc.getNpcId();
      if(npcId == INFILTRATION_OFFICER)
      {
        int cond = st.getCond();
        if(cond == 3)
        {
          if(npc.isMoving || npc.isFollow || npc.getAI().getIntention() != CtrlIntention.AI_INTENTION_ACTIVE)
            return "infiltration_officer_q10331_no.htm";

          int stage = st.getInt("stage");

          player.sendMessage("npc:" + npc.getNpcId());

          if(stage == 0)
            return "infiltration_officer_q10331_1.htm";
          else if(stage == 2)
            return "infiltration_officer_q10331_2.htm";
          else if(stage == 4)
            return "infiltration_officer_q10331_3.htm";
          else if(stage == 6)
            return "infiltration_officer_q10331_4.htm";

          return "infiltration_officer_q10331_no.htm";
        }
        else if(cond == 4)
        {
          if(npc.isMoving || npc.isFollow || npc.getAI().getIntention() != CtrlIntention.AI_INTENTION_ACTIVE)
            return "infiltration_officer_q10331_no.htm";

          return "infiltration_officer_q10331_5.htm";
        }
      }
      else if(npcId == BELIS_VERIFICATION_SYSTEM)
      {
        int cond = st.getCond();
        if(cond == 3 || cond == 4)
        {
          String htmltext = HtmCache.getInstance().getNotNull("quests/_10331_StartOfFate/belis_verification_system_q10331_1.htm", st.getPlayer());
          htmltext = htmltext.replace("<?BELISE_MARK_COUNT?>", String.valueOf(NEED_BELIS_MARKS_COUNT));
          return htmltext;
        }
      }
      else if(npcId == ELECTRICITY_GENERATOR)
      {
        int cond = st.getCond();
        if(cond == 3 || cond == 4)
          return "electricity_generator_q10331_1.htm";
      }
    }
    return null;
  }

  @Override
  public String onKill(NpcInstance npc, QuestState st)
  {
    Reflection reflect = npc.getReflection();
    if(reflect.getInstancedZoneId() == INSTANCED_ZONE_ID)
    {
      int npcId = npc.getNpcId();
      if(npcId == OPERATIVE)
      {
        if(st.getCond() == 3)
        {
          if(st.getInt("stage") == 1)
          {
            int killsCount = st.getInt("operative_kills") + 1;
            if(killsCount >= NEED_OPERATIVES_KILLS_COUNT)
            {
              st.set("stage", 2);
              reflect.openDoor(16240003);
              NpcInstance officer = getNpcFromReflection(INFILTRATION_OFFICER, reflect);
              if(officer != null)
                officerMoveToLocation(officer, new Location(-117037, 212504, -8592, 39479));
            }
            else
              st.set("operative_kills", killsCount);
          }
          else if(st.getInt("stage") == 5)
          {
            st.set("defender_kills", st.getInt("defender_kills") + 1);
            st.startQuestTimer("process_stage_5", 3000, npc);
          }
        }
      }
      else if(npcId == HANDYMAN)
      {
        if(st.getCond() == 3)
        {
          if(st.getInt("stage") == 3)
          {
            if(Rnd.chance(BELISE_MARK_DROP_CHANCE))
              st.startQuestTimer("drop_belise_mark", 3000, npc);
          }
          else if(st.getInt("stage") == 5)
          {
            String defendersIds = st.get("defenders_ids");
            if(defendersIds != null && defendersIds.contains("-" + npc.getObjectId() + "-"))
            {
              st.set("defender_kills", st.getInt("defender_kills") + 1);
              st.startQuestTimer("process_stage_5", 3000, npc);
            }
          }
        }
      }
      else if(npcId == NEMERTESS)
      {
        if(st.getCond() == 3)
        {
          if(st.getInt("stage") == 7)
          {
            npc.deleteMe();
            SceneMovie scene = SceneMovie.sc_talking_island_boss_ending;
            st.getPlayer().showQuestMovie(scene);
            st.startQuestTimer("kill_nemertess", scene.getDuration(), npc);
          }
        }
      }
    }
    return null;
  }

  @Override
  public void onEnterInstance(QuestState st, Reflection reflection)
  {
    clearInstanceVariables(st);
  }

  public boolean checkStartCondition(Player player)
  {
    return player.getLevel() >= 18 && player.getClassLevel() <= 1;
  }

  public boolean checkStartNpc(NpcInstance npc, Player player)
  {
    int npcId = npc.getNpcId();
    Race race = player.getRace();
    switch(npcId)
    {
      case FRANCO:
        if(race == Race.human)
          return true;
        return false;
      case RIVIAN:
        if(race == Race.elf)
          return true;
        return false;
      case DEVON:
        if(race == Race.darkelf)
          return true;
        return false;
      case TOOK:
        if(race == Race.orc)
          return true;
        return false;
      case MOKA:
        if(race == Race.dwarf)
          return true;
        return false;
      case VALFAR:
        if(race == Race.kamael)
          return true;
        return false;
    }
    return true;
  }

  public boolean checkTalkNpc(NpcInstance npc, QuestState st)
  {
    return checkStartNpc(npc, st.getPlayer());
  }

  @Override
  public void onLoad()
  {
  }

  @Override
  public void onReload()
  {
  }

  @Override
  public void onShutdown()
  {
  }

  private static String getStartNpcPrefix(int npcId)
  {
    String prefix = "high_priest_franco";
    if(npcId == RIVIAN)
      prefix = "grand_master_rivian";
    else if(npcId == DEVON)
      prefix = "grand_magister_devon";
    else if(npcId == TOOK)
      prefix = "high_prefect_took";
    else if(npcId == MOKA)
      prefix = "head_blacksmith_moka";
    else if(npcId == VALFAR)
      prefix = "grand_master_valfar";
    return prefix;
  }

  private static void clearInstanceVariables(QuestState st)
  {
    st.unset("belise_marks_left");
    st.unset("operative_kills");
    st.unset("stage");
    st.unset("defender_kills");
    st.unset("spawned_defenders");
    st.unset("defenders_ids");
  }

  private static NpcInstance getNpcFromReflection(int npcId, Reflection reflect)
  {
    List<NpcInstance> npc = reflect.getAllByNpcId(npcId, true);
    if(!npc.isEmpty())
      return npc.get(0);
    return null;
  }

  private static void officerMoveToLocation(NpcInstance officer, Location loc)
  {
    officer.abortAttack(true, true);
    officer.abortCast(true, true);
    officer.setTarget(null);
    officer.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
    officer.setRunning();
    officer.setSpawnedLoc(loc);
    if(!officer.moveToLocation(loc, 0, true))
    {
      officer.getAI().clientStopMoving();
      officer.teleToLocation(loc);
    }
    officer.setHeading(loc.h);
  }

  private static String getAvailableClassList(Player player, String html, String html2)
  {
    String htmltext = HtmCache.getInstance().getNotNull("quests/_10331_StartOfFate/" + html, player);
    ClassId classId = player.getClassId();
    StringBuilder classList = new StringBuilder();
    for(ClassId firstClassId : ClassId.VALUES)
    {
      if(!firstClassId.isOfLevel(ClassLevel.Second))
        continue;

      if(!firstClassId.childOf(classId))
        continue;

      int firstClsId = firstClassId.getId();
      classList.append("<a action=\"bypass -h Quest _10331_StartOfFate class_transfer " + firstClsId + " " + html2 + "\">" + HtmlUtils.htmlClassName(firstClsId) + "</a><br>");
    }
   
    htmltext = htmltext.replace("<?AVAILABLE_CLASS_LIST?>", classList.toString());
    return htmltext;
  }
}
TOP

Related Classes of quests._10331_StartOfFate

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.