Thread: Special Attacks

Results 1 to 2 of 2
  1. #1 Special Attacks 
    Registered Member

    Join Date
    Mar 2011
    Age
    27
    Posts
    555
    Thanks given
    168
    Thanks received
    190
    Rep Power
    0


    Dragon claws
    Code:
    			case 14484:
    			case 23695:
    				player.setNextAnimationNoPriority(new Animation(10961), player);
    				player.setNextGraphics(new Graphics(1950));
    				int[] hits = new int[] { 0, 1 };
    				int hit = getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.0, true);
    				if (hit > 100) {
    					hits = new int[] { hit, hit / 2, (hit / 2) / 2, (hit / 2) - ((hit / 2) / 2) };
    				} else {
    					hit = getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.0, true);
    					if (hit > 100) {
    						hits = new int[] { 0, hit, hit / 2, hit - (hit / 2) };
    					} else {
    						hit = getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.0, true);
    						if (hit > 100) {
    							hits = new int[] { 0, 0, hit / 2, (hit / 2) + 10 };
    						} else {
    							hit = getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.0, true);
    							if (hit > 100) {
    								hits = new int[] { 0, 0, 0, (int) (hit * 1.0) };
    							} else {
    								int[] miss = { Utils.random(10), Utils.random(10) };
    								for (int i = 0; i < miss.length; i++) {
    									delayHit(0, weaponId, attackStyle, getMeleeHit(player, miss[i]));
    								}
    							}
    						}
    					}
    				}
    				for (int i = 0; i < hits.length; i++) {
    					if (i > 1) {
    						delayHit(1, weaponId, attackStyle, getMeleeHit(player, hits[i]));
    					} else {
    						delayNormalHit(weaponId, attackStyle, getMeleeHit(player, hits[i]));
    					}
    				}
    				break;
    Dragon Dagger
    Code:
    case 1215: // dragon dagger
    			case 5698: // dds
    				player.setNextAnimationNoPriority(new Animation(1062), player);
    				player.setNextGraphics(new Graphics(252, 0, 100));
    				if (target instanceof Player) {
    					delayNormalHit(weaponId, attackStyle,
    							getMeleeHit(player,
    									getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.15, true)),
    							getMeleeHit(player,
    									getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.15, true)));
    				} else {
    					delayNormalHit(weaponId, attackStyle, getMeleeHit(player,
    							getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.15, true)));
    					delayHit(1, weaponId, attackStyle, getMeleeHit(player,
    							getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.15, true)));
    				}
    				soundId = 2537;
    				break;
    Korasi Sword
    Code:
    case 19780:
    			case 19784: // korasi sword
    				player.setNextAnimation(new Animation(14788));
    				player.setNextGraphics(new Graphics(1729));
    				final double multiplier = 0.5 + Math.random();
    				attackTarget(getMultiAttackTargets(player), new MultiAttack() {
    
    					private boolean nextTarget; // real target is firsts
    					final int weaponId = player.getEquipment().getWeaponId();
    
    					// player on array
    
    					@Override
    					public boolean attack() {
    						final Entity[] targets = getMultiAttackTargets(player);
    						int korasiDamage = getMaxHit(player, weaponId, attackStyle, false, true, 1.0);
    						korasiDamage *= multiplier;
    						max_hit = (int) (korasiDamage * 1.5);
    						Hit h = getMagicHit(player, korasiDamage / targets.length + 1);
    						h.setCriticalMark();
    						delayHit(0, weaponId, attackStyle, h);
    
    						WorldTasksManager.schedule(new WorldTask() {
    							@Override
    							public void run() {
    								for (Entity e : targets)
    									e.setNextGraphics(new Graphics(2795, 0, 100));
    								target.setNextGraphics(new Graphics(2795, 0, 100));
    							}
    						});
    						if (!nextTarget) {
    							if (korasiDamage == -1)
    								return false;
    							nextTarget = true;
    						}
    						return nextTarget;
    
    					}
    				});
    				return combatDelay;
    Statius' warhammer & Bandos godsword
    Code:
    			case 11696: // bgs
    			case 24512:
    			case 23680:
    				player.setNextAnimation(new Animation(11991));
    				player.setNextGraphics(new Graphics(2114));
    				int damage1 = getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.15, true);
    				delayNormalHit(weaponId, attackStyle, getMeleeHit(player, damage1));
    				if (target instanceof Player) {
    					Player targetPlayer = ((Player) target);
    					int amountLeft;
    					if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.DEFENCE, damage1 / 10)) > 0) {
    						if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.STRENGTH, amountLeft)) > 0) {
    							if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.PRAYER, amountLeft)) > 0) {
    								if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.ATTACK, amountLeft)) > 0) {
    									if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.MAGIC,
    											amountLeft)) > 0) {
    										if (targetPlayer.getSkills().drainLevel(Skills.RANGE, amountLeft) > 0) {
    											break;
    										}
    									}
    								}
    							}
    						}
    					}
    				} else {
    					if (damage1 > 0) {
    						NPC n = (NPC) target;
    						int npcDef = n.getBonuses()[CombatDefinitions.NPC_DEFENCE_LEVEL];
    						player.getPackets().sendGameMessage(npcDef + " current def.");
    						int drain = damage1 / 20;
    						if ((npcDef - drain) < 0)
    							npcDef = 0;
    						else
    							npcDef -= drain;
    						player.getPackets().sendGameMessage(npcDef + " last def.");
    						n.getBonuses()[CombatDefinitions.NPC_DEFENCE_LEVEL] = npcDef;
    					}
    				}
    				break;
    			case 13902: // statius hammer
    			case 13904:
    				player.setNextAnimation(new Animation(10505));
    				player.setNextGraphics(new Graphics(1840));
    				int warhammerDamage = getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.21, true);
    				delayNormalHit(weaponId, attackStyle, getMeleeHit(player, warhammerDamage));
    				if (target instanceof Player) {
    					Player targetPlayer = ((Player) target);
    					int amountLeft;
    					if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.DEFENCE, warhammerDamage / 10)) > 0) {
    						if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.STRENGTH, amountLeft)) > 0) {
    							if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.PRAYER, amountLeft)) > 0) {
    								if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.ATTACK, amountLeft)) > 0) {
    									if ((amountLeft = targetPlayer.getSkills().drainLevel(Skills.MAGIC,
    											amountLeft)) > 0) {
    										if (targetPlayer.getSkills().drainLevel(Skills.RANGE, amountLeft) > 0) {
    											break;
    										}
    									}
    								}
    							}
    						}
    					}
    				} else {
    					if (warhammerDamage > 0) {
    						NPC n = (NPC) target;
    						int npcDef = n.getBonuses()[CombatDefinitions.NPC_DEFENCE_LEVEL];
    						player.getPackets().sendGameMessage(npcDef + " current def.");
    						int drain = warhammerDamage / 20;
    						if ((npcDef - drain) < 0)
    							npcDef = 0;
    						else
    							npcDef -= drain;
    						player.getPackets().sendGameMessage(npcDef + " last def.");
    						n.getBonuses()[CombatDefinitions.NPC_DEFENCE_LEVEL] = npcDef;
    					}
    				}
    				break;

    Abyssal vine whip
    Code:
    case 21371: // Abby Vine Whip
    			case 21372:
    			case 21373:
    			case 21374:
    			case 21375:
    				processVineCall(player);
    				break;
    Code:
    public void processVineCall(final Player player) {
    		int weaponId = player.getEquipment().getWeaponId();
    		final int attackStyle = player.getCombatDefinitions().getAttackStyle();
    		final Entity finalTarget = target;
    		player.setNextAnimation(new Animation(11971));
    		if (Utils.random(1) == 0 && !target.getPoison().isPoisoned()) {
    			target.getPoison().makePoisoned(48);
    		}
    		delayNormalHit(weaponId, attackStyle,
    				getMeleeHit(player, getRandomMaxHit(player, weaponId, attackStyle, false, true, 1.0, true)));
    		if (finalTarget.getTemporaryAttributtes().get("VINEEFFECT") == Boolean.TRUE) {
    			finalTarget.vineHits = 10;
    		} else
    			finalTarget.vineHits += 10;
    		finalTarget.getTemporaryAttributtes().put("VINEEFFECT", Boolean.TRUE);
    		final WorldTile vineTile = new WorldTile(target.getX(), target.getY(), target.getPlane());
    		WorldTasksManager.schedule(new WorldTask() {
    
    			@Override
    			public void run() {
    				/*
    				 * if (player.getEquipment().getWeaponId() != 21371) { player.getPackets()
    				 * .sendGameMessage("Since you no longer wield a vine whip, the vine ignores your call"
    				 * ); finalTarget.getTemporaryAttributtes().remove("VINEEFFECT");
    				 * finalTarget.vineHits = 0; stop(); return; }
    				 */
    				if (finalTarget.isDead() || finalTarget.hasFinished() || player.isDead() || player.hasFinished()) {
    					finalTarget.getTemporaryAttributtes().remove("VINEEFFECT");
    					finalTarget.vineHits = 0;
    					stop();
    					return;
    				}
    				if (finalTarget.vineHits > 0) {
    					finalTarget.vineHits--;
    					World.sendGraphics(null, new Graphics(478), vineTile);
    				}
    				if (finalTarget.vineHits < 1) {
    					finalTarget.getTemporaryAttributtes().remove("VINEEFFECT");
    					stop();
    				}
    				int damage = 0;
    				if (player.isAtMultiArea() && target.isAtMultiArea()) {
    					if (target instanceof Player) {
    						int i = 0;
    						damage = Utils.random(80, 130);
    						if (Utils.inCircle(finalTarget, vineTile, 1))
    							finalTarget.applyHit(new Hit(player, damage, HitLook.MELEE_DAMAGE));
    						for (Player players : World.getPlayers()) {
    							if (players != null) {
    								if (Math.abs(player.getSkills().getCombatLevel()
    										- players.getSkills().getCombatLevel()) > WildernessControler
    												.getWildLevel(player)
    										&& Utils.inCircle(players, vineTile, 1)) {
    									if (i > 2)
    										continue;
    									damage = Utils.random(80, 130);
    									i++;
    									if (i > 0) {
    										addMeleeCombatXp(player, damage, weaponId, attackStyle);
    										players.applyHit(new Hit(player, damage, HitLook.MELEE_DAMAGE));
    									}
    								}
    							}
    						}
    					} else {
    						NPC t = (NPC) target;
    						int i = 0;
    						damage = Utils.random(80, 130);
    						if (Utils.inCircle(finalTarget, vineTile, t.getSize()))
    							finalTarget.applyHit(new Hit(player, damage, HitLook.MELEE_DAMAGE));
    						for (NPC npcs : World.getNPCs()) {
    							if (npcs != null && npcs != finalTarget && Utils.inCircle(npcs, vineTile, npcs.getSize())
    									&& t.getDefinitions().hasAttackOption()) {
    								if (i > 2)
    									continue;
    								damage = Utils.random(80, 130);
    								i++;
    								if (i > 0) {
    									addMeleeCombatXp(player, damage, weaponId, attackStyle);
    									npcs.applyHit(new Hit(player, damage, HitLook.MELEE_DAMAGE));
    								}
    							}
    						}
    					}
    				} else {
    					damage = Utils.random(80, 130);
    					if (Utils.inCircle(target, vineTile, 1)) {
    						addMeleeCombatXp(player, damage, weaponId, attackStyle);
    						finalTarget.applyHit(new Hit(player, damage, HitLook.MELEE_DAMAGE));
    					}
    				}
    
    			}
    		}, 4, 2);
    	}

    Hand Cannon
    Code:
    case 15241: // Hand cannon
    				player.setNextAnimation(new Animation(12175));
    				WorldTasksManager.schedule(new WorldTask() {
    					int loop = 0;
    
    					@Override
    					public void run() {
    						if ((target.isDead() || player.isDead() || loop > 6)) {
    							stop();
    							return;
    						}
    						if (loop == 2) {
    							if (player.getEquipment().getWeaponId() == 15241) {
    								player.setNextGraphics(new Graphics(2138));
    								player.setNextAnimation(new Animation(12153));
    								World.sendCannonProjectile(player, target, 2143);
    								dropAmmo(player, 1);
    								delayHit(Utils.getDistance(player, target) > 3 ? 2 : 1, weaponId, attackStyle,
    										getRangeHit(player, getRandomMaxHit(player, weaponId, attackStyle, true)));
    								player.getActionManager().setActionDelay(1);
    							} else {
    								player.getCombatDefinitions().restoreSpecialAttack(50);
    							}
    						} else if (loop == 3) {
    							stop();
    						}
    						loop++;
    					}
    				}, 0, (int) 0.25);
    				combatDelay = 9;
    				break;
    Dark bow
    Code:
    	case 11235: // dark bows
    			case 15701:
    			case 15702:
    			case 15703:
    			case 15704:
    				int ammoId = player.getEquipment().getAmmoId();
    				player.setNextAnimation(new Animation(getWeaponAttackEmote(weaponId, attackStyle)));
    				player.setNextGraphics(new Graphics(getStartArrowProjectileId(weaponId, ammoId), 0, 100));
    				boolean dragonArrows = ItemDefinitions.getItemDefinitions(player.getEquipment().getAmmoId()).getName()
    						.toLowerCase().contains("dragon arrow");
    				int damage = getRandomMaxHit(player, weaponId, attackStyle, true, true, 1.270, true);
    				int damage2 = getRandomMaxHit(player, weaponId, attackStyle, true, true, 1.270, true);
    				int minimum = dragonArrows ? 80 : 50;
    				if (damage < minimum) {
    					damage = minimum;
    				} else
    					damage += minimum;
    				if (damage2 < minimum) {
    					damage2 = minimum;
    				} else
    					damage2 += minimum;
    				World.sendSlowBowProjectile(player, target, dragonArrows ? 1099 : 1103);
    				World.sendSlowBow2Projectile(player, target, dragonArrows ? 1099 : 1103);
    				int distance = Utils.getDistance(player, target);
    				delayHit(distance >= 5 ? 2 : distance >= 3 ? 1 : 1, weaponId, attackStyle, getRangeHit(player, damage));
    				delayHit(distance >= 5 ? 4 : distance >= 3 ? 1 : 2, weaponId, attackStyle,
    						getRangeHit(player, damage2));
    				checkSwiftGlovesEffect(player, attackStyle, weaponId, damage2, getArrowProjectileId(weaponId, ammoId),
    						2);
    				WorldTasksManager.schedule(new WorldTask() {
    					@Override
    					public void run() {
    						if (player == null || target == null || player.isDead() || player.hasFinished()
    								|| target.isDead() || target.hasFinished())
    							return;
    						target.setNextGraphics(new Graphics(dragonArrows ? 1100 : 1103, 0, 100));
    						target.setNextGraphics(new Graphics(dragonArrows ? 1100 : 1103, 0, 100));
    					}
    				}, distance == 3 ? 1 : 2);
    				break;
    Zaniks crossbow
    Code:
    case 14684: // zanik cbow
    				player.setNextAnimation(new Animation(11359));
    				player.setNextGraphics(new Graphics(1714));
    				WorldTasksManager.schedule(new WorldTask() {
    					int loop = 0;
    
    					@Override
    					public void run() {
    						if ((target.isDead() || player.isDead() || loop > 3)) {
    							stop();
    							return;
    						}
    						if (loop == 1) {
    							ItemDefinitions defs = ItemDefinitions
    									.getItemDefinitions(player.getEquipment().getWeaponId());
    							World.sendCBOWProjectile(player, target, 2001);
    							delayHit(Utils.getDistance(player, target) > 3 ? 2 : 1, weaponId, attackStyle,
    									getRangeHit(player,
    											getRandomMaxHit(player, weaponId, attackStyle, true, true, 1.0, true) + 30
    													+ Utils.getRandom(120)));
    							dropAmmo(player, 1);
    							player.getActionManager().setActionDelay(defs.getAttackSpeed());
    						} else if (loop == 3)
    							stop();
    						loop++;
    					}
    				}, 0, (int) 0.25);
    				break;
    Morrigans javelin
    Code:
    case 13954:// morrigan javelin
    			case 12955:
    			case 13956:
    			case 13879:
    			case 13880:
    			case 13881:
    			case 13882:
    				player.setNextGraphics(new Graphics(1836));
    				player.setNextAnimation(new Animation(10501));
    				World.sendThrowProjectile(player, target, 1837);
    				final int hit = getRandomMaxHit(player, weaponId, attackStyle, true, true, 1.0, true);
    				delayHit(Utils.getDistance(player, target) > 3 ? 2 : 1, weaponId, attackStyle,
    						getRangeHit(player, hit));
    				processMorriganJavelins(player, hit);
    				dropAmmo(player, -1);
    				break;
    Code:
    public void processMorriganJavelins(final Player player, int hit) {
    		final Entity finalTarget = target;
    		if (finalTarget.getTemporaryAttributtes().get("MORRIGANEFFECT") == Boolean.TRUE) {
    			finalTarget.morriganHits += hit;
    			return;
    		}
    		finalTarget.getTemporaryAttributtes().put("MORRIGANEFFECT", Boolean.TRUE);
    		finalTarget.morriganHits += hit;
    		WorldTasksManager.schedule(new WorldTask() {
    
    			@Override
    			public void run() {
    				if (finalTarget.isDead() || finalTarget.hasFinished() || player.isDead() || player.hasFinished()) {
    					stop();
    					finalTarget.morriganHits = 0;
    					finalTarget.getTemporaryAttributtes().remove("MORRIGANEFFECT");
    					return;
    				}
    				if (finalTarget.morriganHits >= 50) {
    					finalTarget.morriganHits -= 50;
    					finalTarget.applyHit(new Hit(player, 50, HitLook.REGULAR_DAMAGE));
    				} else {
    					finalTarget.applyHit(new Hit(player, finalTarget.morriganHits, HitLook.REGULAR_DAMAGE));
    					finalTarget.morriganHits = 0;
    					finalTarget.getTemporaryAttributtes().remove("MORRIGANEFFECT");
    					stop();
    					return;
    				}
    			}
    		}, 2, 2);
    	}




    Avalon Developer
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    Registered Member

    Join Date
    Feb 2014
    Posts
    429
    Thanks given
    5
    Thanks received
    3
    Rep Power
    173
    10/10
    Reply With Quote  
     

  4. Thankful user:



Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. 98% Special Attacks
    By Palidino in forum Tutorials
    Replies: 198
    Last Post: 01-24-2009, 08:26 PM
  2. Simple Whip Special Attack
    By doodoohead in forum Tutorials
    Replies: 30
    Last Post: 07-20-2008, 05:13 PM
  3. Special Attacks ~Dr3am
    By Pikachu in forum Tutorials
    Replies: 43
    Last Post: 12-16-2007, 06:20 AM
  4. special attacks. Tut
    By o0x vvv x0o in forum Tutorials
    Replies: 13
    Last Post: 10-14-2007, 07:08 PM
  5. Special attacks
    By corretje in forum Tutorials
    Replies: 16
    Last Post: 08-10-2007, 11:06 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •