Package lineage2.gameserver.model

Examples of lineage2.gameserver.model.Creature


   */
  @Override
  protected boolean thinkActive()
  {
    final NpcInstance actor = getActor();
    final Creature target = actor.getFollowTarget();
    int[][] coords = {};
    if ((target == null) || !(target instanceof Player))
    {
      actor.deleteMe();
      return false;
    }
    final Player player = target.getPlayer();
    final QuestState st = player.getQuestState(_10365_SeekerEscort.class);
    final int zone = st.getInt("zone");
    int saytimes = st.getInt("saytimes");
    final int cond = st.getCond();
    actor.setRunning();
    if ((saytimes == 9) || (cond == 0))
    {
      actor.deleteMe();
      st.set("seeksp", 0);
      st.set("zone", 1);
      st.unset("saytimes");
      target.sendPacket(new ExShowScreenMessage(NpcString.KING_HAS_RETURNED_TO_DEF_RETURN_TO_DEF_AND_START_AGAIN, 5500, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER));
      return false;
    }
    if ((lastSayTimer + SAY_RAFF) < System.currentTimeMillis())
    {
      lastSayTimer = System.currentTimeMillis();
      Functions.npcSay(actor, NpcString.RUFF_RUFF_RRRRRR, ChatType.NPC_SAY, 800, st.getPlayer().getName());
    }
    if (zone == 1)
    {
      coords = SMP_COORDS;
      if ((actor.getDistance(target) < 100) || (currentState >= coords.length) || (currentState == 0))
      {
        st.unset("saytimes");
        if (currentState < coords.length)
        {
          actor.moveToLocation(coords[currentState][0], coords[currentState][1], coords[currentState][2], Rnd.get(0, 50), true);
          if (actor.getDestination() == null)
          {
            ++currentState;
          }
        }
        else
        {
          actor.teleToLocation(-112776, 234072, -3097);
          st.set("zone", 2);
        }
      }
      else if (((lastSayTime + SAY_INTERVAL) < System.currentTimeMillis()) && (actor.getDestination() == null))
      {
        final int heading = actor.calcHeading(target.getX(), target.getY());
        actor.setHeading(heading);
        actor.broadcastPacket(new ExRotation(actor.getObjectId(), heading));
        lastSayTime = System.currentTimeMillis();
        target.sendPacket(new ExShowScreenMessage(NpcString.CATCH_UP_TO_KING_HES_WAITING, 1500, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER));
        st.set("saytimes", ++saytimes);
      }
    }
    else if (zone == 2)
    {
      if ((actor.getDistance(target) >= 100) && ((lastSayTime + SAY_INTERVAL) < System.currentTimeMillis()))
      {
        lastSayTime = System.currentTimeMillis();
        target.sendPacket(new ExShowScreenMessage(NpcString.YOU_MUST_MOVE_TO_EXPLORATION_AREA_5_IN_ORDER_TO_CONTINUE, 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER));
        st.set("saytimes", ++saytimes);
      }
      else if (actor.getDistance(target) < 100)
      {
        st.set("zone", 3);
      }
      st.unset("saytimes");
    }
    else if (zone == 3)
    {
      coords = SMP_COORDS2;
      if ((actor.getDistance(target) < 100) || (currentState1 >= coords.length))
      {
        if (currentState1 < coords.length)
        {
          st.unset("saytimes");
          actor.moveToLocation(coords[currentState1][0], coords[currentState1][1], coords[currentState1][2], Rnd.get(0, 50), true);
          if (actor.getDestination() == null)
          {
            ++currentState1;
          }
        }
        else
        {
          actor.deleteMe();
          st.set("seeksp", 0);
          st.set("zone", 1);
          st.setCond(2);
        }
      }
      else if (((lastSayTime + SAY_INTERVAL) < System.currentTimeMillis()) && (actor.getDestination() == null))
      {
        final int heading = actor.calcHeading(target.getX(), target.getY());
        actor.setHeading(heading);
        actor.broadcastPacket(new ExRotation(actor.getObjectId(), heading));
        lastSayTime = System.currentTimeMillis();
        target.sendPacket(new ExShowScreenMessage(NpcString.CATCH_UP_TO_KING_HES_WAITING, 1500, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER));
        st.set("saytimes", ++saytimes);
      }
    }
    return true;
  }
View Full Code Here


   */
  @Override
  protected void thinkAttack()
  {
    final NpcInstance actor = getActor();
    final Creature topDamager = actor.getAggroList().getTopDamager();
    final Creature randomHated = actor.getAggroList().getRandomHated();
    final Creature mostHated = actor.getAggroList().getMostHated();
    if (!actor.isCastingNow() && (_eternalblizzardReuseTimer < System.currentTimeMillis()))
    {
      actor.doCast(SkillTable.getInstance().getInfo(Skill_EternalBlizzard, 1), actor, true);
      final Reflection r = getActor().getReflection();
      for (Player p : r.getPlayers())
View Full Code Here

    final Skill skill = env.skill;
    if (!skill.isOffensive())
    {
      return Rnd.chance(env.value);
    }
    final Creature caster = env.character;
    final Creature target = env.target;
    boolean debugCaster = false;
    boolean debugTarget = false;
    boolean debugGlobal = false;
    if (Config.ALT_DEBUG_ENABLED)
    {
      debugCaster = (caster.getPlayer() != null) && caster.getPlayer().isDebug();
      debugTarget = (target.getPlayer() != null) && target.getPlayer().isDebug();
      final boolean debugPvP = Config.ALT_DEBUG_PVP_ENABLED && (debugCaster && debugTarget) && (!Config.ALT_DEBUG_PVP_DUEL_ONLY || (caster.getPlayer().isInDuel() && target.getPlayer().isInDuel()));
      debugGlobal = debugPvP || (Config.ALT_DEBUG_PVE_ENABLED && ((debugCaster && target.isMonster()) || (debugTarget && caster.isMonster())));
    }
    double statMod = 1.;
    if (skill.getSaveVs() != null)
    {
      statMod = skill.getSaveVs().calcChanceMod(target);
      env.value *= statMod;
    }
    env.value = Math.max(env.value, 1);
    double mAtkMod = 1.;
    int ssMod = 0;
    if (skill.isMagic())
    {
      int mdef = Math.max(1, target.getMDef(target, skill));
      double matk = caster.getMAtk(target, skill);
      if (skill.isSSPossible())
      {
        switch (spiritshot)
        {
          case ItemInstance.CHARGED_BLESSED_SPIRITSHOT:
            ssMod = 4;
            break;
          case ItemInstance.CHARGED_SPIRITSHOT:
            ssMod = 2;
            break;
          default:
            ssMod = 1;
        }
        matk *= ssMod;
      }
      mAtkMod = (Config.SKILLS_CHANCE_MOD * Math.pow(matk, Config.SKILLS_CHANCE_POW)) / mdef;
      env.value *= mAtkMod;
      env.value = Math.max(env.value, 1);
    }
    double lvlDependMod = skill.getLevelModifier();
    if (lvlDependMod != 0)
    {
      final int attackLevel = skill.getMagicLevel() > 0 ? skill.getMagicLevel() : caster.getLevel();
      lvlDependMod = 1. + ((attackLevel - target.getLevel()) * 0.03 * lvlDependMod);
      if (lvlDependMod < 0)
      {
        lvlDependMod = 0;
      }
      else if (lvlDependMod > 2)
      {
        lvlDependMod = 2;
      }
      env.value *= lvlDependMod;
    }
    double vulnMod = 0;
    double profMod = 0;
    double resMod = 1.;
    double debuffMod = 1.;
    if (!skill.isIgnoreResists())
    {
      debuffMod = 1. - (target.calcStat(Stats.DEBUFF_RESIST, caster, skill) / 120.);
      if (debuffMod != 1)
      {
        if (debuffMod == Double.NEGATIVE_INFINITY)
        {
          if (debugGlobal)
          {
            if (debugCaster)
            {
              caster.getPlayer().sendMessage("Full debuff immunity");
            }
            if (debugTarget)
            {
              target.getPlayer().sendMessage("Full debuff immunity");
            }
          }
          return false;
        }
        if (debuffMod == Double.POSITIVE_INFINITY)
        {
          if (debugGlobal)
          {
            if (debugCaster)
            {
              caster.getPlayer().sendMessage("Full debuff vulnerability");
            }
            if (debugTarget)
            {
              target.getPlayer().sendMessage("Full debuff vulnerability");
            }
          }
          return true;
        }
        debuffMod = Math.max(debuffMod, 0);
        env.value *= debuffMod;
      }
      SkillTrait trait = skill.getTraitType();
      if (trait != null)
      {
        vulnMod = trait.calcVuln(env);
        profMod = trait.calcProf(env);
        final double maxResist = 90 + (profMod * 0.85);
        resMod = (maxResist - vulnMod) / 60.;
      }
      if (resMod != 1)
      {
        if (resMod == Double.NEGATIVE_INFINITY)
        {
          if (debugGlobal)
          {
            if (debugCaster)
            {
              caster.getPlayer().sendMessage("Full immunity");
            }
            if (debugTarget)
            {
              target.getPlayer().sendMessage("Full immunity");
            }
          }
          return false;
        }
        if (resMod == Double.POSITIVE_INFINITY)
        {
          if (debugGlobal)
          {
            if (debugCaster)
            {
              caster.getPlayer().sendMessage("Full vulnerability");
            }
            if (debugTarget)
            {
              target.getPlayer().sendMessage("Full vulnerability");
            }
          }
          return true;
        }
        resMod = Math.max(resMod, 0);
        env.value *= resMod;
      }
    }
    double elementMod = 0;
    final Element element = skill.getElement();
    if (element != Element.NONE)
    {
      elementMod = skill.getElementPower();
      Element attackElement = getAttackElement(caster, target);
      if (attackElement == element)
      {
        elementMod += caster.calcStat(element.getAttack(), 0);
      }
      elementMod -= target.calcStat(element.getDefence(), 0);
      elementMod = Math.round(elementMod / 10);
      env.value += elementMod;
    }
    env.value = Math.max(env.value, Math.min(base, Config.SKILLS_CHANCE_MIN));
    env.value = Math.max(Math.min(env.value, Config.SKILLS_CHANCE_CAP), 1);
    final boolean result = Rnd.chance((int) env.value);
    if (debugGlobal)
    {
      StringBuilder stat = new StringBuilder(100);
      if (et == null)
      {
        stat.append(skill.getName());
      }
      else
      {
        stat.append(et._effectType.name());
      }
      stat.append(" AR:");
      stat.append((int) base);
      stat.append(' ');
      if (skill.getSaveVs() != null)
      {
        stat.append(skill.getSaveVs().name());
        stat.append(':');
        stat.append(String.format("%1.1f", statMod));
      }
      if (skill.isMagic())
      {
        stat.append(' ');
        stat.append(" mAtk:");
        stat.append(String.format("%1.1f", mAtkMod));
      }
      if (skill.getTraitType() != null)
      {
        stat.append(' ');
        stat.append(skill.getTraitType().name());
      }
      stat.append(' ');
      stat.append(String.format("%1.1f", resMod));
      stat.append('(');
      stat.append(String.format("%1.1f", profMod));
      stat.append('/');
      stat.append(String.format("%1.1f", vulnMod));
      if (debuffMod != 0)
      {
        stat.append('+');
        stat.append(String.format("%1.1f", debuffMod));
      }
      stat.append(") lvl:");
      stat.append(String.format("%1.1f", lvlDependMod));
      stat.append(" elem:");
      stat.append((int) elementMod);
      stat.append(" Chance:");
      stat.append(String.format("%1.1f", env.value));
      if (!result)
      {
        stat.append(" failed");
      }
      if (debugCaster)
      {
        caster.getPlayer().sendMessage(stat.toString());
      }
      if (debugTarget)
      {
        target.getPlayer().sendMessage(stat.toString());
      }
    }
    return result;
  }
View Full Code Here

    }
    if (!first)
    {
      if (activeChar.isCastingNow())
      {
        Creature castingTarget = activeChar.getCastingTarget();
        Skill castingSkill = activeChar.getCastingSkill();
        long animationEndTime = activeChar.getAnimationEndTime();
        if ((castingSkill != null) && (castingTarget != null) && castingTarget.isCreature() && (activeChar.getAnimationEndTime() > 0))
        {
          sendPacket(new MagicSkillUse(activeChar, castingTarget, castingSkill.getId(), castingSkill.getLevel(), (int) (animationEndTime - System.currentTimeMillis()), 0));
        }
      }
      if (activeChar.isInBoat())
View Full Code Here

   * @return boolean * @see lineage2.gameserver.handler.voicecommands.IVoicedCommandHandler#useVoicedCommand(String, Player, String)
   */
  @Override
  public boolean useVoicedCommand(String command, Player player, String args)
  {
    Creature target = null;
    double hpRegen = Formulas.calcHpRegen(player);
    double cpRegen = Formulas.calcCpRegen(player);
    double mpRegen = Formulas.calcMpRegen(player);
    double hpDrain = player.calcStat(Stats.ABSORB_DAMAGE_PERCENT, 0., target, null);
    double mpDrain = player.calcStat(Stats.ABSORB_DAMAGEMP_PERCENT, 0., target, null);
View Full Code Here

   */
  @Override
  protected void thinkAttack()
  {
    final NpcInstance actor = getActor();
    final Creature topDamager = actor.getAggroList().getTopDamager();
    final Creature randomHated = actor.getAggroList().getRandomHated();
    final Creature mostHated = actor.getAggroList().getMostHated();
    if (!actor.isCastingNow() && (_eternalblizzardReuseTimer < System.currentTimeMillis()))
    {
      actor.doCast(SkillTable.getInstance().getInfo(Skill_EternalBlizzard, 1), actor, true);
      final Reflection r = getActor().getReflection();
      for (Player p : r.getPlayers())
View Full Code Here

   */
  @Override
  protected void thinkAttack()
  {
    final NpcInstance actor = getActor();
    final Creature topDamager = actor.getAggroList().getTopDamager();
    final Creature randomHated = actor.getAggroList().getRandomHated();
    final Creature mostHated = actor.getAggroList().getMostHated();
    if (!actor.isCastingNow() && (_eternalblizzardReuseTimer < System.currentTimeMillis()))
    {
      actor.doCast(SkillTable.getInstance().getInfo(Skill_EternalBlizzard, 1), actor, true);
      final Reflection r = getActor().getReflection();
      for (Player p : r.getPlayers())
View Full Code Here

   * @param targets List<Creature>
   */
  @Override
  public void useSkill(Creature activeChar, List<Creature> targets)
  {
    Creature realTarget;
    boolean reflected;
    for (Creature target : targets)
    {
      if (target != null)
      {
        if ((getSkillType() == Skill.SkillType.BUFF) && (target != activeChar))
        {
          if (target.isCursedWeaponEquipped() || activeChar.isCursedWeaponEquipped())
          {
            continue;
          }
        }
        reflected = target.checkReflectSkill(activeChar, this);
        realTarget = reflected ? activeChar : target;
        double mult = 0.01 * realTarget.calcStat(Stats.DEATH_VULNERABILITY, activeChar, this);
        double lethal1 = _lethal1 * mult;
        double lethal2 = _lethal2 * mult;
        if ((lethal1 > 0) && Rnd.chance(lethal1))
        {
          if (realTarget.isPlayer())
          {
            realTarget.reduceCurrentHp(realTarget.getCurrentCp(), 0, activeChar, this, true, true, false, true, false, false, true);
            realTarget.sendPacket(SystemMsg.LETHAL_STRIKE);
            activeChar.sendPacket(SystemMsg.YOUR_LETHAL_STRIKE_WAS_SUCCESSFUL);
          }
          else if (realTarget.isNpc() && !realTarget.isLethalImmune())
          {
            realTarget.reduceCurrentHp(realTarget.getCurrentHp() / 2, 0, activeChar, this, true, true, false, true, false, false, true);
            activeChar.sendPacket(SystemMsg.YOUR_LETHAL_STRIKE_WAS_SUCCESSFUL);
          }
        }
        else if ((lethal2 > 0) && Rnd.chance(lethal2))
        {
          if (realTarget.isPlayer())
          {
            realTarget.reduceCurrentHp((realTarget.getCurrentHp() + realTarget.getCurrentCp()) - 1, 0, activeChar, this, true, true, false, true, false, false, true);
            realTarget.sendPacket(SystemMsg.LETHAL_STRIKE);
            activeChar.sendPacket(SystemMsg.YOUR_LETHAL_STRIKE_WAS_SUCCESSFUL);
          }
          else if (realTarget.isNpc() && !realTarget.isLethalImmune())
          {
            realTarget.reduceCurrentHp(realTarget.getCurrentHp() - 1, 0, activeChar, this, true, true, false, true, false, false, true);
            activeChar.sendPacket(SystemMsg.YOUR_LETHAL_STRIKE_WAS_SUCCESSFUL);
          }
        }
        getEffects(activeChar, target, getActivateRate() > 0, false, reflected);
      }
View Full Code Here

    }
    if ((current_point > -1) || Rnd.chance(5))
    {
      if (current_point >= (_points.size() - 1))
      {
        final Creature target = GameObjectsStorage.getByNpcId(30754);
        if ((target != null) && !target.isDead())
        {
          clearTasks();
          setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
          return true;
        }
View Full Code Here

      for (int i = 0; i < 8; i++)
      {
        for (int mobId : MOBS)
        {
          NpcInstance npc = actor.getReflection().addSpawnWithoutRespawn(mobId, Location.findPointToStay(actor, 400, 1000), 0);
          Creature randomHated = actor.getAggroList().getRandomHated();
          npc.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, (randomHated != null) ? randomHated : attacker, Rnd.get(1, 100));
        }
      }
    }
    super.onEvtAttacked(attacker, damage);
View Full Code Here

TOP

Related Classes of lineage2.gameserver.model.Creature

Copyright © 2018 www.massapicom. 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.