RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
CorporealBeast.java
1package com.osroyale.game.world.entity.combat.strategy.npc.boss;
2
3import com.osroyale.game.Animation;
4import com.osroyale.game.UpdatePriority;
5import com.osroyale.game.world.entity.combat.CombatType;
6import com.osroyale.game.world.entity.combat.attack.FightType;
7import com.osroyale.game.world.entity.combat.hit.CombatHit;
8import com.osroyale.game.world.entity.combat.hit.Hit;
9import com.osroyale.game.world.entity.combat.projectile.CombatProjectile;
10import com.osroyale.game.world.entity.combat.strategy.CombatStrategy;
11import com.osroyale.game.world.entity.combat.strategy.npc.MultiStrategy;
12import com.osroyale.game.world.entity.combat.strategy.npc.NpcMagicStrategy;
13import com.osroyale.game.world.entity.combat.strategy.npc.NpcMeleeStrategy;
14import com.osroyale.game.world.entity.mob.Mob;
15import com.osroyale.game.world.entity.mob.npc.Npc;
16import com.osroyale.util.Items;
17
18import static com.osroyale.game.world.entity.combat.CombatUtil.createStrategyArray;
19import static com.osroyale.game.world.entity.combat.CombatUtil.randomStrategy;
20
52
53public class CorporealBeast extends MultiStrategy {
54 private static final MagicAttack MAGIC = new MagicAttack();
55 private static final CrushMelee MELEE = new CrushMelee();
56 private static final CombatStrategy<Npc>[] STRATEGIES = createStrategyArray(MAGIC, MELEE);
57 public static final int weaponsAllowed [] = {Items.BRONZE_SPEAR, Items.IRON_SPEAR, Items.STEEL_SPEAR, Items.BLACK_SPEAR,
58 Items.MITHRIL_SPEAR, Items.ADAMANT_SPEAR, Items.RUNE_SPEAR, Items.DRAGON_SPEAR,
59 Items.GUTHANS_WARSPEAR, Items.ZAMORAKIAN_SPEAR, Items.ZAMORAKIAN_HASTA, 26219, 27246};
60
61
62
63 public CorporealBeast() {
64 currentStrategy = randomStrategy(STRATEGIES);
65 }
66
67 @Override
68 public boolean canAttack(Npc attacker, Mob defender) {
69 return currentStrategy.canAttack(attacker, defender);
70 }
71
72 @Override
73 public void finishOutgoing(Npc attacker, Mob defender) {
74 currentStrategy.finishOutgoing(attacker, defender);
75 currentStrategy = randomStrategy(STRATEGIES);
76 }
77
78 @Override
79 public void block(Mob attacker, Npc defender, Hit hit, CombatType combatType) {
80 //TODO: 1/8 chance that the dark core will spawn
81 defender.getCombat().attack(attacker);
82 super.block(attacker, defender, hit, combatType);
83 }
84
85 @Override
86 public int getAttackDelay(Npc attacker, Mob defender, FightType fightType) {
87 return attacker.definition.getAttackDelay();
88 }
89
90 @Override
91 public int modifyAccuracy(Npc attacker, Mob defender, int roll) {
92 return (int) (roll * 5.05);
93 }
94
95 private static final class CrushMelee extends NpcMeleeStrategy {
96 private static final Animation ANIMATION = new Animation(1682, UpdatePriority.HIGH);
97
98 @Override
99 public int getAttackDistance(Npc attacker, FightType fightType) {
100 return 2;
101 }
102
103 @Override
104 public Animation getAttackAnimation(Npc attacker, Mob defender) {
105 return ANIMATION;
106 }
107
108 @Override
109 public CombatHit[] getHits(Npc attacker, Mob defender) {
110 return new CombatHit[]{nextMeleeHit(attacker, defender)};
111 }
112 }
113
114 private static class MagicAttack extends NpcMagicStrategy {
115 private static final Animation ANIMATION = new Animation(1679, UpdatePriority.HIGH);
116
117 private MagicAttack() {
118 super(CombatProjectile.getDefinition("Corporeal Beast Magic"));
119 }
120
121 @Override
122 public void start(Npc attacker, Mob defender, Hit[] hits) {
123 super.start(attacker, defender, hits);
124 }
125
126 @Override
127 public void hit(Npc attacker, Mob defender, Hit hit) {
128 super.hit(attacker, defender, hit);
129 }
130
131 @Override
132 public CombatHit[] getHits(Npc attacker, Mob defender) {
133 return new CombatHit[] { nextMagicHit(attacker, defender, 65) };
134 }
135
136 @Override
137 public Animation getAttackAnimation(Npc attacker, Mob defender) {
138 return ANIMATION;
139 }
140
141 @Override
142 public int getAttackDistance(Npc attacker, FightType fightType) {
143 return 10;
144 }
145 }
146}
abstract Combat<? extends Mob > getCombat()