RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
ZaryteCrossbow.java
1package com.osroyale.game.world.entity.combat.strategy.player.special.range;
2
3import com.osroyale.game.Animation;
4import com.osroyale.game.Projectile;
5import com.osroyale.game.UpdatePriority;
6import com.osroyale.game.world.entity.combat.accuracy.RangeAccuracy;
7import com.osroyale.game.world.entity.combat.hit.CombatHit;
8import com.osroyale.game.world.entity.combat.projectile.CombatProjectile;
9import com.osroyale.game.world.entity.combat.strategy.player.PlayerRangedStrategy;
10import com.osroyale.game.world.entity.mob.Mob;
11import com.osroyale.game.world.entity.mob.player.Player;
12
47
48public class ZaryteCrossbow extends PlayerRangedStrategy {
49
50 private static final ZaryteCrossbow INSTANCE = new ZaryteCrossbow();
51 private static final Animation ANIMATION = new Animation(9166, UpdatePriority.HIGH);
52 private static Projectile PROJECTILE;
53
54 static {
55 try {
56 setProjectiles(CombatProjectile.getDefinition("zaryte special"));
57 } catch (Exception e) {
58 e.printStackTrace();
59 }
60 }
61
62 private ZaryteCrossbow() {
63 }
64
65 @Override
66 protected void sendStuff(Player attacker, Mob defender) {
67 attacker.animate(ANIMATION, true);
68 PROJECTILE.send(attacker, defender);
69 }
70
71 @Override
72 public CombatHit[] getHits(Player attacker, Mob defender) {
73 return new CombatHit[]{nextRangedHit(attacker, defender)};
74 }
75
76
77 /*
78 Handles x2 accuracy https://oldschool.runescape.wiki/w/Zaryte_crossbow
79 */
80 @Override
81 public int modifyAccuracy(Player attacker, Mob defender, int roll) {
82 return (int) (2 * RangeAccuracy.getAttackRoll(attacker));
83 }
84
85 private static void setProjectiles(CombatProjectile projectile) {
86 if (!projectile.getProjectile().isPresent())
87 throw new NullPointerException("No Magic Shortbow projectile found.");
88 PROJECTILE = projectile.getProjectile().get();
89 }
90
91 public static ZaryteCrossbow get() {
92 return INSTANCE;
93 }
94
95}