RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
GraniteMaul.java
1package com.osroyale.game.world.entity.combat.strategy.player.special.melee;
2
3import com.osroyale.content.achievement.AchievementHandler;
4import com.osroyale.content.achievement.AchievementKey;
5import com.osroyale.game.Animation;
6import com.osroyale.game.Graphic;
7import com.osroyale.game.UpdatePriority;
8import com.osroyale.game.world.entity.combat.attack.FightType;
9import com.osroyale.game.world.entity.combat.hit.CombatHit;
10import com.osroyale.game.world.entity.combat.hit.Hit;
11import com.osroyale.game.world.entity.combat.strategy.player.PlayerMeleeStrategy;
12import com.osroyale.game.world.entity.mob.Mob;
13import com.osroyale.game.world.entity.mob.player.Player;
14
40
41public class GraniteMaul extends PlayerMeleeStrategy {
42 private static final Animation ANIMATION = new Animation(1667, UpdatePriority.HIGH);
43 private static final Graphic GRAPHIC = new Graphic(340);
44 private static final GraniteMaul INSTANCE = new GraniteMaul();
45
46 private GraniteMaul() { }
47
48 @Override
49 public void start(Player attacker, Mob defender, Hit[] hits) {
50 super.start(attacker, defender, hits);
51
52 if (attacker.attributes.is("granite-maul-spec")) {
53 CombatHit damage = nextMeleeHit(attacker, defender);
54 defender.damage(damage);
55 defender.getCombat().getDamageCache().add(attacker, damage);
56 attacker.getCombatSpecial().drain(attacker);
57 attacker.attributes.remove("granite-maul-spec");
58 }
59
60 attacker.graphic(GRAPHIC);
61 }
62
63 @Override
64 public CombatHit[] getHits(Player attacker, Mob defender) {
65 return new CombatHit[] { nextMeleeHit(attacker, defender) };
66 }
67
68 @Override
69 public void onKill(Player attacker, Mob defender, Hit hit) {
70 if (defender.isPlayer()) {
71 AchievementHandler.activate(attacker, AchievementKey.GMAULED_SPEC);
72 }
73 }
74
75 @Override
76 public Animation getAttackAnimation(Player attacker, Mob defender) {
77 return ANIMATION;
78 }
79
80 @Override
81 public int getAttackDelay(Player attacker, Mob defender, FightType fightType) {
82 return attacker.attributes.has("granite-maul-spec") ? 0 : 1;
83 }
84
85 public static GraniteMaul get() {
86 return INSTANCE;
87 }
88
89}
static void activate(Player player, AchievementKey achievement)
abstract Combat<? extends Mob > getCombat()