Package community.career

Source Code of community.career.Career

package community.career;

import community.Community;
import community.mGeneratePage;
import javolution.text.TextBuilder;
import l2p.Config;
import l2p.gameserver.cache.Msg;
import l2p.gameserver.model.L2ObjectsStorage;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.L2Skill;
import l2p.gameserver.model.L2SkillLearn;
import l2p.gameserver.model.base.ClassId;
import l2p.gameserver.modules.community.mCommunityHandler;
import l2p.gameserver.modules.community.mICommunityHandler;
import l2p.gameserver.modules.option.mOption;
import l2p.gameserver.serverpackets.SkillList;
import l2p.gameserver.skills.Calculator;
import l2p.gameserver.skills.Env;
import l2p.gameserver.skills.funcs.Func;
import l2p.gameserver.tables.ItemTable;
import l2p.gameserver.tables.SkillTable;
import l2p.gameserver.tables.SkillTreeTable;
import l2p.gameserver.templates.L2Item;
import l2p.util.GArray;
import l2p.util.Util;

import java.util.StringTokenizer;

/**
* User: Shaitan
* Date: 08.11.2010
* Time: 10:19:55
*/
public class Career implements mICommunityHandler
{
  public void onLoad()
  {
    if(!Config.communityCareer)
    {
      return;
    }
    mCommunityHandler.getInstance().addHandler(this);
  }

  public void useHandler(int objectId, String command)
  {
    L2Player player = L2ObjectsStorage.getPlayer(objectId);
    if(command.equals("_bbscareer"))
    {
      Community.getInstance().show(objectId, mGeneratePage.addToTemplate(showCareer(objectId)));
    }
    else if(command.startsWith("_bbscareerclass"))
    {
      StringTokenizer st = new StringTokenizer(command, " ");
      st.nextToken();
      short val = Short.parseShort(st.nextToken());
      int price = Integer.parseInt(st.nextToken());
      if(mOption.price(player, Config.CLASS_MASTERS_PRICE_ITEM, price))
      {
        changeClass(objectId, val);
        Community.getInstance().show(objectId, mGeneratePage.addToTemplate(showCareer(objectId)));
      }
    }
  }

  public String[] getHandlerList()
  {
    String[] s =
      {
        "_bbscareer",
        "_bbscareerclass"
      };
    return s;
  }

  private String showCareer(int objectId)
  {
    L2Player player = L2ObjectsStorage.getPlayer(objectId);
    ClassId classId = player.getClassId();
    int jobLevel = classId.getLevel();
    int level = player.getLevel();
    TextBuilder html = new TextBuilder("");
    html.append("<br>");
    html.append("<table width=600>");
    html.append("<tr><td>");
    if(Config.ALLOW_CLASS_MASTERS_LIST.isEmpty() || !Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel))
    {
      jobLevel = 4;
    }
    if((level >= 20 && jobLevel == 1 || level >= 40 && jobLevel == 2 || level >= 76 && jobLevel == 3) && Config.ALLOW_CLASS_MASTERS_LIST.contains(jobLevel))
    {
      L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEM);
      html.append("Вы должны заплатить: <font color=\"LEVEL\">");
      html.append(Util.formatAdena(Config.CLASS_MASTERS_PRICE_LIST[jobLevel])).append("</font> <font color=\"LEVEL\">").append(item.getName()).append("</font> для смены профессии<br>");
      html.append("<center><table width=600><tr>");
      for(ClassId cid : ClassId.values())
      {
        if(cid == ClassId.inspector)
        {
          continue;
        }
        if(cid.childOf(classId) && cid.level() == classId.level() + 1)
        {
          html.append("<td><center><button value=\"").append(cid.name()).append("\" action=\"bypass -h _bbscareerclass ").append(cid.getId()).append(" ").append(Config.CLASS_MASTERS_PRICE_LIST[jobLevel]).append("\" width=150 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></center></td>");
        }
      }
      html.append("</tr></table></center>");
      html.append("</td>");
      html.append("</tr>");
      html.append("</table>");
    }
    else
    {
      switch(jobLevel)
      {
        case 1:
          html.append("Приветствую <font color=F2C202>" + player.getName() + "</font> ваша текущая профессия <font color=F2C202>" + player.getClassId().name() + "</font><br>");
          html.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>20-го уровня</font><br>");
          break;
        case 2:
          html.append("Приветствую <font color=F2C202>" + player.getName() + "</font> ваша текущая профессия <font color=F2C202>" + player.getClassId().name() + "</font><br>");
          html.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>40-го уровня</font><br>");
          break;
        case 3:
          html.append("Приветствую <font color=F2C202>" + player.getName() + "</font> ваша текущая профессия <font color=F2C202>" + player.getClassId().name() + "</font><br>");
          html.append("Для того чтобы сменить вашу профессию вы должны достичь: <font color=F2C202>76-го уровня</font><br>");
          break;
        case 4:
          html.append("Приветствую <font color=F2C202>" + player.getName() + "</font> ваша текущая профессия <font color=F2C202>" + player.getClassId().name() + "</font><br>");
          html.append("Для вас больше нет доступных профессий, либо Класс мастер в данный момент недоступен.<br>");
          if(level >= 76)
          {
            html.append("Вы достигли <font color=F2C202>76-го уровня</font> активация сабклассов теперь доступна<br>");
          }
          break;
      }
    }
    return html.toString();
  }

  public static void changeClass(int objectId, int val)
  {
    L2Player player = L2ObjectsStorage.getPlayer(objectId);
    if(player.getClassId().getLevel() == 3)
    {
      player.sendPacket(Msg.YOU_HAVE_COMPLETED_THE_QUEST_FOR_3RD_OCCUPATION_CHANGE_AND_MOVED_TO_ANOTHER_CLASS_CONGRATULATIONS); // для 3 профы
    }
    else
    {
      player.sendPacket(Msg.CONGRATULATIONS_YOU_HAVE_TRANSFERRED_TO_A_NEW_CLASS);
    }
    player.setClassId(val, false);
    int unLearnable = 0;
    int skillCounter = 0;
    GArray<L2SkillLearn> skills = SkillTreeTable.getInstance().getAvailableSkills(player, player.getClassId());
    while(skills.size() > unLearnable)
    {
      unLearnable = 0;
      for(L2SkillLearn s : skills)
      {
        L2Skill sk = SkillTable.getInstance().getInfo(s.id, s.skillLevel);
        if(sk == null || !sk.getCanLearn(player.getClassId()))
        {
          unLearnable++;
          continue;
        }
        if(player.getSkillLevel(sk.getId()) == -1)
        {
          skillCounter++;
        }
        player.addSkill(sk, true);
      }
      skills = SkillTreeTable.getInstance().getAvailableSkills(player, player.getClassId());
    }
    player.sendPacket(new SkillList(player));
    player.broadcastUserInfo(true);
  }
}
TOP

Related Classes of community.career.Career

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.