RuneHive-Game
Loading...
Searching...
No Matches
DragonKnife.java
Go to the documentation of this file.
1package com.runehive.game.world.entity.combat.strategy.player.special.range;
2
3import com.runehive.content.achievement.AchievementHandler;
4import com.runehive.content.achievement.AchievementKey;
5import com.runehive.game.Animation;
6import com.runehive.game.Graphic;
7import com.runehive.game.Projectile;
8import com.runehive.game.UpdatePriority;
9import com.runehive.game.world.entity.combat.hit.CombatHit;
10import com.runehive.game.world.entity.combat.hit.Hit;
11import com.runehive.game.world.entity.combat.projectile.CombatProjectile;
12import com.runehive.game.world.entity.combat.strategy.player.PlayerRangedStrategy;
13import com.runehive.game.world.entity.mob.Mob;
14import com.runehive.game.world.entity.mob.player.Player;
15import com.runehive.game.world.items.Item;
16
17import static com.runehive.game.world.items.containers.equipment.Equipment.ARROWS_SLOT;
18
19/**
20 * @author Andys1814
21 */
22public final class DragonKnife extends PlayerRangedStrategy {
23
24 private static final DragonKnife INSTANCE = new DragonKnife();
25
27
28 static {
29 try {
30 PROJECTILE = CombatProjectile.getDefinition("Dragon knife special");
31 } catch (Exception e) {
32 e.printStackTrace();
33 }
34 }
35
36 private DragonKnife() {
37 }
38
39 @Override
40 protected void sendStuff(Player attacker, Mob defender) {
41 super.sendStuff(attacker, defender);
42
43 PROJECTILE.getProjectile().ifPresent(projectile -> projectile.send(attacker, defender));
44 }
45
46 @Override
47 public void hit(Player attacker, Mob defender, Hit hit) {
48 super.hit(attacker, defender, hit);
49 }
50
51 @Override
52 public CombatHit[] getHits(Player attacker, Mob defender) {
53 CombatHit first = nextRangedHit(attacker, defender);
54 CombatHit second = nextRangedHit(attacker, defender);
55 int minimum = 5;
56
57 if (first.getDamage() < minimum) {
58 first.setDamage(minimum);
59 first.setAccurate(true);
60 }
61
62 if (second.getDamage() < minimum) {
63 second.setDamage(minimum);
64 second.setAccurate(true);
65 }
66
67 return new CombatHit[] { first, second };
68 }
69
70 @Override
71 public Animation getAttackAnimation(Player attacker, Mob defender) {
72 return new Animation(8291);
73 }
74
75 public static DragonKnife get() {
76 return INSTANCE;
77 }
78
79}
Class that models a single animation used by an entity.
A wrapper for a Hit object, adding additional variables for hit and hitsplat delays.
A Hit object holds the damage amount and hitsplat data.
Definition Hit.java:10
int getDamage()
Gets the damage amount.
Definition Hit.java:121
void setDamage(int damage)
Sets the hit damage.
Definition Hit.java:98
final CombatHit nextRangedHit(T attacker, Mob defender)
Handles the mob class.
Definition Mob.java:66
This class represents a character controlled by a player.
Definition Player.java:125