Package org.moparscape.msc.gs.model.definition.skill

Examples of org.moparscape.msc.gs.model.definition.skill.SpellDef


              return;
            }
            player.resetFollowing();
            owner.resetPath();

            SpellDef spell = EntityHandler.getSpellDef(spellID);
            if (!canCast(owner) || affectedMob.getHits() <= 0
                || !owner.checkAttack(affectedMob, true)
                || owner.getStatus() != Action.CASTING_MOB) {
              player.resetPath();
              return;
            }
            owner.resetAllExceptDueling();
            switch (spellID) {
            case 1: // Confuse

            case 5: // Weaken
            case 9: // Curse

              if (affectedMob instanceof Npc) {
                Npc np = (Npc) affectedMob;
                if (spellID == 1) {
                  if (np.confused) {
                    owner.getActionSender()
                        .sendMessage(
                            "Your oponent is already confused");
                    return;
                  }
                }
                if (spellID == 5) {
                  if (np.weakend) {
                    owner.getActionSender()
                        .sendMessage(
                            "Your oponent is already weakend");
                    return;
                  }
                }
                if (spellID == 9) {
                  if (np.cursed) {
                    owner.getActionSender()
                        .sendMessage(
                            "Your oponent is already cursed");
                    return;
                  }
                }
              } /*
               * else { player.getActionSender().sendMessage(
               * "Currently Unavaliable"); return; }
               */

              if (affectedMob instanceof Player
                  && !owner.isDueling()) {
                Player affectedPlayer = (Player) affectedMob;
                owner.setSkulledOn(affectedPlayer);
              }
              int stat = -1;
              if (spellID == 1)
                stat = 0;
              else if (spellID == 5)
                stat = 2;
              else if (spellID == 9)
                stat = 1;

              int statLv = -1;
              if (affectedMob instanceof Player) {
                Player affectedPlayer = (Player) affectedMob;
                statLv = affectedPlayer.getCurStat(stat);

              } else if (affectedMob instanceof Npc) {
                Npc n = (Npc) affectedMob;
                if (stat == 0)
                  statLv = n.getAttack();
                else if (stat == 1)
                  statLv = n.getDefense();
                else if (stat == 2)
                  statLv = n.getStrength();
              }
              if (statLv == -1 || stat == -1)
                return;

              if (affectedMob instanceof Player) {
                Player affectedPlayer = (Player) affectedMob;
                if (affectedPlayer.getCurStat(stat) < affectedPlayer
                    .getMaxStat(stat)
                    - (affectedPlayer.getMaxStat(stat) / 20)) {
                  owner.getActionSender().sendMessage(
                      "Your opponent is already stunned");
                  return;
                } else {
                  affectedPlayer.setCurStat(
                      stat,
                      affectedPlayer.getCurStat(stat)
                          - (affectedPlayer
                              .getMaxStat(stat) / 20));
                  affectedPlayer.getActionSender()
                      .sendStats();
                  affectedPlayer
                      .getActionSender()
                      .sendMessage(
                          owner.getUsername()
                              + " has stunned you");
                }

              } else if (affectedMob instanceof Npc) {
                Npc n = (Npc) affectedMob;
                if (spellID == 1)
                  n.confused = true;
                else if (spellID == 5)
                  n.weakend = true;
                else if (spellID == 9)
                  n.cursed = true;

              }
              if (!checkAndRemoveRunes(owner, spell)) {
                return;
              }

              Projectile projectilez = new Projectile(owner,
                  affectedMob, 1);
              ArrayList<Player> playersToInformm = new ArrayList<Player>();
              playersToInformm.addAll(owner.getViewArea()
                  .getPlayersInView());
              playersToInformm.addAll(affectedMob.getViewArea()
                  .getPlayersInView());
              for (Player p : playersToInformm) {
                p.informOfProjectile(projectilez);
                p.informOfModifiedHits(affectedMob);
              }

              finalizeSpell(owner, spell);

              owner.getActionSender().sendInventory();
              owner.getActionSender().sendStat(6);
              return;
            case 19: // Crumble undead

              if (affectedMob instanceof Player) {
                owner.getActionSender()
                    .sendMessage(
                        "You can not use this spell on a Player");
                return;
              }
              if (!checkAndRemoveRunes(owner, spell)) {
                return;
              }
              Npc n = (Npc) affectedMob;
              int damaga = Formulae.Rand(1, 5);
              boolean foundd = false;
              if (n.undead) {
                foundd = true;
                damaga = Formulae
                    .Rand(3,
                        Constants.GameServer.CRUMBLE_UNDEAD_MAX);
              }

              if (!foundd) {
                owner.getActionSender()
                    .sendMessage(
                        "You must use this spell on undead monsters only");
                return;
              }
              if (Formulae.Rand(0, 8) == 2)
                damaga = 0;

              Projectile projectilee = new Projectile(owner,
                  affectedMob, 1);
              affectedMob.setLastDamage(damaga);
              int newp = affectedMob.getHits() - damaga;
              affectedMob.setHits(newp);
              ArrayList<Player> playersToInforms = new ArrayList<Player>();
              playersToInforms.addAll(owner.getViewArea()
                  .getPlayersInView());
              playersToInforms.addAll(affectedMob.getViewArea()
                  .getPlayersInView());
              for (Player p : playersToInforms) {
                p.informOfProjectile(projectilee);
                p.informOfModifiedHits(affectedMob);
              }
              if (newp <= 0) {
                affectedMob.killedBy(owner, owner.isDueling());
                if (owner instanceof Player
                    && affectedMob instanceof Npc) {
                  ((Npc) affectedMob).getSyndicate()
                      .distributeExp((Npc) affectedMob);
                }
              }
              finalizeSpell(owner, spell);

              owner.getActionSender().sendInventory();
              owner.getActionSender().sendStat(6);
              return;
            case 42: // vulnerability
            case 45: // Enfeeble
            case 47: // Stun
              owner.getActionSender().sendMessage(
                  "@or1@This spell is not yet implemented.");
              break;
            case 25:
              if (owner.getLocation().inWilderness()) {
                owner.getActionSender().sendMessage(
                    "Can not use this spell in wilderness");
                return;
              }
              if (affectedMob instanceof Npc) {
                if (((Npc) affectedMob).getID() == 477) {
                  player.getActionSender()
                      .sendMessage(
                          "The dragon seems immune to this spell");
                  return;
                }
              }
              boolean flagispro = false;
              ListIterator<InvItem> iterator22 = owner
                  .getInventory().getItems().listIterator();
              while (iterator22.hasNext()) {
                InvItem cape = (InvItem) iterator22.next();
                if (cape.id == 1000 && cape.wielded) {
                  flagispro = flagispro || true;
                }
                // else {flag = false;}
              }
              if (flagispro) {
                if (!owner.isCharged()) {
                  owner.getActionSender().sendMessage(
                      "@red@You are not charged!");
                }

                if (!checkAndRemoveRunes(owner, spell)) {
                  return;
                }
                if (affectedMob instanceof Player
                    && !owner.isDueling()) {
                  Player affectedPlayer = (Player) affectedMob;
                  owner.setSkulledOn(affectedPlayer);
                }
                int damag = Formulae.calcSpellHit(20,
                    owner.getMagicPoints());
                if (affectedMob instanceof Player) {
                  Player affectedPlayer = (Player) affectedMob;
                  affectedPlayer
                      .getActionSender()
                      .sendMessage(
                          owner.getUsername()
                              + " is shooting at you!");
                }
                Projectile projectil = new Projectile(owner,
                    affectedMob, 1);
                // godSpellObject(affectedMob, 33);
                affectedMob.setLastDamage(damag);
                int newhp = affectedMob.getHits() - damag;
                affectedMob.setHits(newhp);
                ArrayList<Player> playersToInfor = new ArrayList<Player>();
                playersToInfor.addAll(owner.getViewArea()
                    .getPlayersInView());
                playersToInfor.addAll(affectedMob.getViewArea()
                    .getPlayersInView());
                for (Player p : playersToInfor) {
                  p.informOfProjectile(projectil);
                  p.informOfModifiedHits(affectedMob);
                }
                if (affectedMob instanceof Player) {
                  Player affectedPlayer = (Player) affectedMob;
                  affectedPlayer.getActionSender()
                      .sendStat(3);
                }
                if (newhp <= 0) {
                  affectedMob.killedBy(owner,
                      owner.isDueling());
                }
                owner.getActionSender().sendInventory();
                owner.getActionSender().sendStat(6);
                finalizeSpell(owner, spell);
                break;
              } else {
                owner.getActionSender()
                    .sendMessage(
                        "You need to be wearing the Iban Staff to cast this spell!");
                return;
              }
            case 33:
              if (owner.getLocation().inWilderness()) {
                owner.getActionSender().sendMessage(
                    "Can not use this spell in wilderness");
                return;
              }
              if (affectedMob instanceof Npc) {
                if (((Npc) affectedMob).getID() == 477) {
                  player.getActionSender()
                      .sendMessage(
                          "The dragon seems immune to this spell");
                  return;
                }
              }
              boolean flag = false;
              ListIterator<InvItem> iterator = owner
                  .getInventory().getItems().listIterator();
              while (iterator.hasNext()) {
                InvItem cape = iterator.next();
                if (cape.id == 1217 && cape.wielded) {
                  flag = true;
                }
                // else {flag = false;}
              }
              if (flag) {
                if (!owner.isCharged()) {
                  owner.getActionSender().sendMessage(
                      "@red@You are not charged!");
                }

                if (!checkAndRemoveRunes(owner, spell)) {
                  return;
                }
                if (affectedMob instanceof Player
                    && !owner.isDueling()) {
                  Player affectedPlayer = (Player) affectedMob;
                  owner.setSkulledOn(affectedPlayer);
                }
                int damag = Formulae.calcGodSpells(owner,
                    affectedMob);
                // int damag = Formulae.calcSpellHit(max,
                // owner.getMagicPoints());
                if (affectedMob instanceof Player) {
                  Player affectedPlayer = (Player) affectedMob;
                  affectedPlayer
                      .getActionSender()
                      .sendMessage(
                          owner.getUsername()
                              + " is shooting at you!");
                }
                Projectile projectil = new Projectile(owner,
                    affectedMob, 1);
                godSpellObject(affectedMob, 33);
                affectedMob.setLastDamage(damag);
                int newhp = affectedMob.getHits() - damag;
                affectedMob.setHits(newhp);
                ArrayList<Player> playersToInfor = new ArrayList<Player>();
                playersToInfor.addAll(owner.getViewArea()
                    .getPlayersInView());
                playersToInfor.addAll(affectedMob.getViewArea()
                    .getPlayersInView());
                for (Player p : playersToInfor) {
                  p.informOfProjectile(projectil);
                  p.informOfModifiedHits(affectedMob);
                }
                if (affectedMob instanceof Player) {
                  Player affectedPlayer = (Player) affectedMob;
                  affectedPlayer.getActionSender()
                      .sendStat(3);
                }
                if (newhp <= 0) {
                  affectedMob.killedBy(owner,
                      owner.isDueling());
                }
                owner.getActionSender().sendInventory();
                owner.getActionSender().sendStat(6);
                finalizeSpell(owner, spell);
                break;
              } else {
                owner.getActionSender()
                    .sendMessage(
                        "You need to be wearing the Staff of Guthix to cast this spell!");
                return;
              }
            case 34:
              if (affectedMob instanceof Npc) {
                if (((Npc) affectedMob).getID() == 477) {
                  player.getActionSender()
                      .sendMessage(
                          "The dragon seems immune to this spell");
                  return;
                }
              }
              if (owner.getLocation().inWilderness()) {
                owner.getActionSender().sendMessage(
                    "Can not use this spell in wilderness");
                return;
              }
              boolean bool = false;
              ListIterator<InvItem> iterat = owner.getInventory()
                  .getItems().listIterator();
              while (iterat.hasNext()) {
                InvItem cape = iterat.next();
                if (cape.id == 1218 && cape.wielded) {
                  bool = bool || true;
                }
                // else {flag = false;}
              }
              if (bool) {
                if (!owner.isCharged()) {
                  owner.getActionSender().sendMessage(
                      "@red@You are not charged!");
                }

                if (!checkAndRemoveRunes(owner, spell)) {
                  return;
                }
                if (affectedMob instanceof Player
                    && !owner.isDueling()) {
                  Player affectedPlayer = (Player) affectedMob;
                  owner.setSkulledOn(affectedPlayer);
                }
                // int damag = Rand(0, 25);
                int damag = Formulae.calcGodSpells(owner,
                    affectedMob);
                if (affectedMob instanceof Player) {
                  Player affectedPlayer = (Player) affectedMob;
                  affectedPlayer
                      .getActionSender()
                      .sendMessage(
                          owner.getUsername()
                              + " is shooting at you!");
                }
                Projectile projectil = new Projectile(owner,
                    affectedMob, 1);
                godSpellObject(affectedMob, 34);
                affectedMob.setLastDamage(damag);
                int newhp = affectedMob.getHits() - damag;
                affectedMob.setHits(newhp);
                ArrayList<Player> playersToInfor = new ArrayList<Player>();
                playersToInfor.addAll(owner.getViewArea()
                    .getPlayersInView());
                playersToInfor.addAll(affectedMob.getViewArea()
                    .getPlayersInView());
                for (Player p : playersToInfor) {
                  p.informOfProjectile(projectil);
                  p.informOfModifiedHits(affectedMob);
                }
                if (affectedMob instanceof Player) {
                  Player affectedPlayer = (Player) affectedMob;
                  affectedPlayer.getActionSender()
                      .sendStat(3);
                }
                if (newhp <= 0) {
                  affectedMob.killedBy(owner,
                      owner.isDueling());
                }
                owner.getActionSender().sendInventory();
                owner.getActionSender().sendStat(6);
                finalizeSpell(owner, spell);
                break;
              } else {
                owner.getActionSender()
                    .sendMessage(
                        "You need to be wearing the Staff of Saradomin to cast this spell!");
                return;
              }
            case 35:
              if (affectedMob instanceof Npc) {
                if (((Npc) affectedMob).getID() == 477) {
                  player.getActionSender()
                      .sendMessage(
                          "The dragon seems immune to this spell");
                  return;
                }
              }
              if (owner.getLocation().inWilderness()) {
                owner.getActionSender().sendMessage(
                    "Can not use this spell in wilderness");
                return;
              }
              boolean flag2 = false;
              ListIterator<InvItem> iterato = owner
                  .getInventory().getItems().listIterator();
              while (iterato.hasNext()) {
                InvItem cape = iterato.next();
                if (cape.id == 1216 && cape.wielded) {
                  flag2 = flag2 || true;
                }
                // else {flag = false;}
              }
              if (flag2) {
                if (!owner.isCharged()) {
                  owner.getActionSender().sendMessage(
                      "@red@You are not charged!");
                }

                if (!checkAndRemoveRunes(owner, spell)) {
                  return;
                }
                if (affectedMob instanceof Player
                    && !owner.isDueling()) {
                  Player affectedPlayer = (Player) affectedMob;
                  owner.setSkulledOn(affectedPlayer);
                }
                // int damag = Rand(0, 25);
                int damag = Formulae.calcGodSpells(owner,
                    affectedMob);
                if (affectedMob instanceof Player) {
                  Player affectedPlayer = (Player) affectedMob;
                  affectedPlayer
                      .getActionSender()
                      .sendMessage(
                          owner.getUsername()
                              + " is shooting at you!");
                }
                Projectile projectil = new Projectile(owner,
                    affectedMob, 1);
                godSpellObject(affectedMob, 35);
                affectedMob.setLastDamage(damag);
                int newhp = affectedMob.getHits() - damag;
                affectedMob.setHits(newhp);
                ArrayList<Player> playersToInfor = new ArrayList<Player>();
                playersToInfor.addAll(owner.getViewArea()
                    .getPlayersInView());
                playersToInfor.addAll(affectedMob.getViewArea()
                    .getPlayersInView());
                for (Player p : playersToInfor) {
                  p.informOfProjectile(projectil);
                  p.informOfModifiedHits(affectedMob);
                }
                if (affectedMob instanceof Player) {
                  Player affectedPlayer = (Player) affectedMob;
                  affectedPlayer.getActionSender()
                      .sendStat(3);
                }
                if (newhp <= 0) {
                  affectedMob.killedBy(owner,
                      owner.isDueling());
                }
                owner.getActionSender().sendInventory();
                owner.getActionSender().sendStat(6);
                finalizeSpell(owner, spell);
                break;
              } else {
                owner.getActionSender()
                    .sendMessage(
                        "You need to be wearing the Staff of Zaramorak to cast this spell");
                return;
              }

            default:
              if (spell.getReqLevel() == 62
                  || spell.getReqLevel() == 65
                  || spell.getReqLevel() == 70
                  || spell.getReqLevel() == 75) {
                if (!Config.members) {
                  player.getActionSender()
                      .sendMessage(
                          "Must be on a members server to use this");
                  return;
                }
                if (player.getLocation().inWilderness()
                    && Config.f2pWildy) {
                  player.getActionSender()
                      .sendMessage(
                          "You can not cast this Members spell in F2P Wilderness");
                  return;
                }
              }
              if (!checkAndRemoveRunes(owner, spell)) {
                return;
              }

              int max = -1;
              for (int i = 0; i < Constants.GameServer.SPELLS.length; i++) {
                if (spell.getReqLevel() == Constants.GameServer.SPELLS[i][0])
                  max = Constants.GameServer.SPELLS[i][1];
              }
              if (player.getMagicPoints() > 30)
                max += 1;
              int damage = Formulae.calcSpellHit(max,
View Full Code Here


        + " tried to cast spell ("
        + 49
        + "): "
        + player.getX() + "/" + player.getY()));

    SpellDef spell = EntityHandler.getSpellDef(idx);
    if (player.getCurStat(6) < spell.getReqLevel()) {
      player.setSuspiciousPlayer(true);
      player.getActionSender().sendMessage(
          "Your magic ability is not high enough for this spell.");
      player.resetPath();
      return;
    }
    if (!Formulae.castSpell(spell, player.getCurStat(6),
        player.getMagicPoints())) {
      player.getActionSender().sendMessage(
          "The spell fails, you may try again in 20 seconds.");
      player.getActionSender().sendSound("spellfail");
      player.setSpellFail();
      player.resetPath();
      return;
    }
    switch (pID) {
    case 206: // Cast on self
      if (player.isDueling()) {
        player.getActionSender().sendMessage(
            "This type of spell cannot be used in a duel.");
        return;
      }

      if (spell.getSpellType() == 0) {

        handleTeleport(player, spell, idx);
        return;
      }
      // if(spell.getSpellType() == 6) {
      handleGroundCast(player, spell, idx);
      // }
      break;
    case 55: // Cast on player
      if (spell.getSpellType() == 1 || spell.getSpellType() == 2) {
        Player affectedPlayer = world.getPlayer(p.readShort());
        if (affectedPlayer == null) { // This shouldn't happen
          player.resetPath();
          return;
        }
        if (player.withinRange(affectedPlayer, 5)) {
          player.resetPath();
        }
        handleMobCast(player, affectedPlayer, idx);
      }
      // if(spell.getSpellType() == 6) {
      // handleGroundCast(player, spell);
      // }
      break;
    case 71: // Cast on npc
      if (player.isDueling()) {
        return;
      }
      if (spell.getSpellType() == 2) {
        Npc affectedNpc = world.getNpc(p.readShort());
        if (affectedNpc == null) { // This shouldn't happen
          player.resetPath();
          return;
        }

        if (affectedNpc.getID() == 35) {
          player.getActionSender()
              .sendMessage(
                  "Delrith can not be attacked without the Silverlight sword");
          return;
        }
        if (player.withinRange(affectedNpc, 5)) {
          player.resetPath();
        }
        handleMobCast(player, affectedNpc, idx);
      }
      // if(spell.getSpellType() == 6) {
      // handleGroundCast(player, spell);
      // }
      break;
    case 49: // Cast on inventory item
      if (player.isDueling()) {
        player.getActionSender().sendMessage(
            "This type of spell cannot be used in a duel.");
        return;
      }
      if (spell.getSpellType() == 3) {
        int slot = p.readShort();
        InvItem item = player.getInventory().getSlot(slot);
        if (item == null) { // This shoudln't happen
          player.resetPath();
          return;
View Full Code Here

TOP

Related Classes of org.moparscape.msc.gs.model.definition.skill.SpellDef

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.