RuneHive-Game
Loading...
Searching...
No Matches
CombatSpell.java
Go to the documentation of this file.
1package com.runehive.game.world.entity.combat.magic;
2
3import com.runehive.content.skill.impl.magic.Spellbook;
4import com.runehive.game.Animation;
5import com.runehive.game.Graphic;
6import com.runehive.game.world.entity.combat.CombatImpact;
7import com.runehive.game.world.entity.combat.projectile.CombatProjectile;
8import com.runehive.game.world.entity.mob.Mob;
9import com.runehive.game.world.items.Item;
10
11import java.util.HashMap;
12import java.util.Map;
13import java.util.Optional;
14
15import static com.runehive.game.world.entity.combat.projectile.CombatProjectile.getDefinition;
16
17public enum CombatSpell {
18 WIND_STRIKE(Spellbook.MODERN, 1152, 1, 5.5f, null,
19 getDefinition("Wind Strike"),
20 new RequiredRune[]{
23 }
24 ),
25
26 WATER_STRIKE(Spellbook.MODERN, 1154, 5, 7.5f, null,
27 getDefinition("Water Strike"),
28 new RequiredRune[]{
32 }
33 ),
34
35 EARTH_STRIKE(Spellbook.MODERN, 1156, 9, 9.5f, null,
36 getDefinition("Earth Strike"),
37 new RequiredRune[]{
41 }
42 ),
43
44 FIRE_STRIKE(Spellbook.MODERN, 1158, 13, 11.5f, null,
45 getDefinition("Fire Strike"),
46 new RequiredRune[]{
50 }
51 ),
52
53 WIND_BOLT(Spellbook.MODERN, 1160, 17, 13.5f, null,
54 getDefinition("Wind Bolt"),
55 new RequiredRune[]{
58 }
59 ),
60
61 WATER_BOLT(Spellbook.MODERN, 1163, 23, 16.5f, null,
62 getDefinition("Water Bolt"),
63 new RequiredRune[]{
67 }
68 ),
69
70 EARTH_BOLT(Spellbook.MODERN, 1166, 29, 19.5f, null,
71 getDefinition("Earth Bolt"),
72 new RequiredRune[]{
76 }
77 ),
78
79 FIRE_BOLT(Spellbook.MODERN, 1169, 35, 22.5f, null,
80 getDefinition("Fire Bolt"),
81 new RequiredRune[]{
85 }
86 ),
87
88 CRUMBLE_UNDEAD(Spellbook.MODERN, 1171, 39, 24.0f, null,
89 getDefinition("Crumble Undead"),
90 new RequiredRune[]{
94 }),
95
96 WIND_BLAST(Spellbook.MODERN, 1172, 41, 25.5f, null,
97 getDefinition("Wind Blast"),
98 new RequiredRune[]{
101 }
102 ),
103
104 WATER_BLAST(Spellbook.MODERN, 1175, 47, 28.5f, null,
105 getDefinition("Water Blast"),
106 new RequiredRune[]{
110 }
111 ),
112
113 EARTH_BLAST(Spellbook.MODERN, 1177, 53, 31.5f, null,
114 getDefinition("Earth Blast"),
115 new RequiredRune[]{
119 }
120 ),
121
122 FIRE_BLAST(Spellbook.MODERN, 1181, 59, 34.5f, null,
123 getDefinition("Fire Blast"),
124 new RequiredRune[]{
128 }
129 ),
130
131 WIND_WAVE(Spellbook.MODERN, 1183, 62, 36.0f, null,
132 getDefinition("Wind Wave"),
133 new RequiredRune[]{
136 }
137 ),
138
139 WATER_WAVE(Spellbook.MODERN, 1185, 65, 37.5f, null,
140 getDefinition("Water Wave"),
141 new RequiredRune[]{
145 }
146 ),
147
148 EARTH_WAVE(Spellbook.MODERN, 1188, 70, 40.0f, null,
149 getDefinition("Earth Wave"),
150 new RequiredRune[]{
154 }
155 ),
156
157 FIRE_WAVE(Spellbook.MODERN, 1189, 75, 42.5f, null,
158 getDefinition("Fire Wave"),
159 new RequiredRune[]{
163 }
164 ),
165
166 SARADOMIN_STRIKE(Spellbook.MODERN, 1190, 60, 20.0f, null,
167 getDefinition("Saradomin Strike"),
168 new RequiredRune[]{
172 }
173 ),
174
175 CLAWS_OF_GUTHIX(Spellbook.MODERN, 1191, 60, 20.0f, null,
176 getDefinition("Claws of Guthix"),
177 new RequiredRune[]{
181 }
182 ),
183
184 FLAMES_OF_ZAMORAK(Spellbook.MODERN, 1192, 60, 20.0f, null,
185 getDefinition("Flames of Zamorak"),
186 new RequiredRune[]{
190 }
191 ),
192
193 BIND(Spellbook.MODERN, 1572, 20, 30.0f, null,
194 getDefinition("Bind"),
195 new RequiredRune[]{
199 }
200 ),
201
202 IBAN_BLAST(Spellbook.MODERN, 1539, 50, 30.0f, new Item(1409),
203 getDefinition("Iban Blast"),
204 new RequiredRune[]{
207 }
208 ),
209
210 MAGIC_DART(Spellbook.MODERN, 12037, 50, 30.0f, new Item(4170),
211 getDefinition("Magic Dart"),
212 new RequiredRune[]{
215 }
216 ),
217
218 SNARE(Spellbook.MODERN, 1582, 50, 60.0f, null,
219 getDefinition("Snare"),
220 new RequiredRune[]{
224 }
225 ),
226
227 ENTANGLE(Spellbook.MODERN, 1592, 79, 89.0f, null,
228 getDefinition("Entangle"),
229 new RequiredRune[]{
233 }
234 ),
235
236 CONFUSE(Spellbook.MODERN, 1153, 3, 13.0f, null,
237 getDefinition("Confuse"),
238 new RequiredRune[]{
242 }
243 ),
244
245 WEAKEN(Spellbook.MODERN, 1157, 11, 20.5f, null,
246 getDefinition("Weaken"),
247 new RequiredRune[]{
251 }
252 ),
253
254 CURSE(Spellbook.MODERN, 1161, 19, 29.0f, null,
255 getDefinition("Curse"),
256 new RequiredRune[]{
260 }
261 ),
262
263 VULNERABILITY(Spellbook.MODERN, 1542, 66, 76.0f, null,
264 getDefinition("Vulnerability"),
265 new RequiredRune[]{
269 }
270 ),
271
272 ENFEEBLE(Spellbook.MODERN, 1543, 73, 83.0f, null,
273 getDefinition("Enfeeble"),
274 new RequiredRune[]{
278 }
279 ),
280
281 STUN(Spellbook.MODERN, 1562, 73, 90.0f, null,
282 getDefinition("Stun"),
283 new RequiredRune[]{
287 }
288 ),
289
290 TELE_BLOCK(Spellbook.MODERN, 12445, 85, 42.5f, null,
291 getDefinition("Teleblock"),
292 new RequiredRune[]{
296 }
297 ),
298
299 WIND_SURGE(Spellbook.MODERN, 40140, 82, 44.5f, null,
300 getDefinition("Wind Surge"),
301 new RequiredRune[]{
304 }
305 ),
306
307 WATER_SURGE(Spellbook.MODERN, 40150, 85, 46.5f, null,
308 getDefinition("Water Surge"),
309 new RequiredRune[]{
313 }
314 ),
315
316 EARTH_SURGE(Spellbook.MODERN, 40170, 90, 48.5f, null,
317 getDefinition("Earth Surge"),
318 new RequiredRune[]{
322 }
323 ),
324
325 FIRE_SURGE(Spellbook.MODERN, 40190, 95, 50.5f, null,
326 getDefinition("Fire Surge"),
327 new RequiredRune[] {
331 }
332 ),
333
334 ICE_RUSH(Spellbook.ANCIENT, 12861, 58, 34.0f, null,
335 getDefinition("Ice Rush"),
336 new RequiredRune[]{
340 }
341 ),
342
343 ICE_BLITZ(Spellbook.ANCIENT, 12871, 82, 46.0f, null,
344 getDefinition("Ice Blitz"),
345 new RequiredRune[]{
349 }
350 ),
351
352 ICE_BURST(Spellbook.ANCIENT, 12881, 70, 40.0f, null,
353 getDefinition("Ice Burst"),
354 new RequiredRune[]{
358 }
359 ),
360
361 ICE_BARRAGE(Spellbook.ANCIENT, 12891, 94, 52.0f, null,
362 getDefinition("Ice Barrage"),
363 new RequiredRune[]{
367 }
368 ),
369
370 BLOOD_RUSH(Spellbook.ANCIENT, 12901, 56, 33.0f, null,
371 getDefinition("Blood Rush"),
372 new RequiredRune[]{
376 }
377 ),
378
379 BLOOD_BLITZ(Spellbook.ANCIENT, 12911, 80, 45.0f, null,
380 getDefinition("Blood Blitz"),
381 new RequiredRune[]{
384 }
385 ),
386
387 BLOOD_BURST(Spellbook.ANCIENT, 12919, 68, 39.0f, null,
388 getDefinition("Blood Burst"),
389 new RequiredRune[]{
393 }
394 ),
395
396 BLOOD_BARRAGE(Spellbook.ANCIENT, 12929, 92, 51.0f, null,
397 getDefinition("Blood Barrage"),
398 new RequiredRune[]{
402 }
403 ),
404
405 SMOKE_RUSH(Spellbook.ANCIENT, 12939, 50, 30.0f, null,
406 getDefinition("Smoke Rush"),
407 new RequiredRune[]{
412 }
413 ),
414
415 SMOKE_BLITZ(Spellbook.ANCIENT, 12951, 74, 42.0f, null,
416 getDefinition("Smoke Blitz"),
417 new RequiredRune[]{
422 }
423 ),
424
425 SMOKE_BURST(Spellbook.ANCIENT, 12963, 62, 36.0f, null,
426 getDefinition("Smoke Burst"),
427 new RequiredRune[]{
432 }
433 ),
434
435 SMOKE_BARRAGE(Spellbook.ANCIENT, 12975, 86, 48.0f, null,
436 getDefinition("Smoke Barrage"),
437 new RequiredRune[]{
442 }
443 ),
444
445 SHADOW_RUSH(Spellbook.ANCIENT, 12987, 52, 31.0f, null,
446 getDefinition("Shadow Rush"),
447 new RequiredRune[]{
452 }
453 ),
454
455 SHADOW_BLITZ(Spellbook.ANCIENT, 12999, 76, 43.0f, null,
456 getDefinition("Shadow Blitz"),
457 new RequiredRune[]{
462 }
463 ),
464
465 SHADOW_BURST(Spellbook.ANCIENT, 13011, 64, 37.0f, null,
466 getDefinition("Shadow Burst"),
467 new RequiredRune[]{
472 }
473 ),
474
475 SHADOW_BARRAGE(Spellbook.ANCIENT, 13023, 88, 49.0f, null,
476 getDefinition("Shadow Barrage"),
477 new RequiredRune[]{
482 }
483 );
484
485 private final int id;
486 private final MagicSpell spell;
488 private final Spellbook spellbook;
489
490 private final static Map<Integer, CombatSpell> SPELLS;
491
492 static {
493 CombatSpell[] spells = CombatSpell.values();
494 SPELLS = new HashMap<>(spells.length);
495
496 for (CombatSpell spell : spells) {
497 SPELLS.put(spell.id, spell);
498 }
499 }
500
501 CombatSpell(Spellbook spellbook, int id, int level, float baseExperience, Item weapon, CombatProjectile combatProjectile, RequiredRune[] runes) {
502 this.spellbook = spellbook;
503 this.id = id;
504 this.spell = new MagicSpell(level, baseExperience, runes) {
505 @Override
506 public Optional<Item[]> equipmentRequired() {
507 return weapon == null ? Optional.empty() : Optional.of(new Item[]{weapon});
508 }
509 };
510 this.combatProjectile = combatProjectile;
511 }
512
513 public int getId() {
514 return id;
515 }
516
517 public String getName() {
518 return combatProjectile.getName();
519 }
520
521 public int getLevel() {
522 return spell.level;
523 }
524
528
529 public double getBaseExperience() {
530 return spell.baseExperience;
531 }
532
533 public Optional<CombatImpact> getEffect() {
534 return combatProjectile.getEffect();
535 }
536
538 return spell.runes;
539 }
540
541 public Optional<Animation> getAnimation() {
542 return CombatProjectile.getDefinition(combatProjectile.getName()).getAnimation();//combatProjectile.getAnimation();
543 }
544
545 public Optional<Graphic> getStart() {
546 return CombatProjectile.getDefinition(combatProjectile.getName()).getStart();//combatProjectile.getStart();
547 }
548
549 public Optional<Graphic> getEnd() {
550 return CombatProjectile.getDefinition(combatProjectile.getName()).getEnd();//combatProjectile.getEnd();
551 }
552
554 return spellbook;
555 }
556
557 public int sendProjectile(Mob attacker, Mob defender) {
559 return combatProjectile == null ? 0 : combatProjectile.sendProjectile(attacker, defender);
560 }
561
562 public boolean canCast(Mob attacker, Mob defender) {
563 return spell.canCast(attacker, Optional.ofNullable(defender));
564 }
565
566 public static CombatSpell get(int id) {
567 return SPELLS.getOrDefault(id, WIND_STRIKE);
568 }
569
570}
Handles the mob class.
Definition Mob.java:66
The container class that represents an item that can be interacted with.
Definition Item.java:21
The in-game spellbooks for players.
Definition Spellbook.java:8
static final Map< Integer, CombatSpell > SPELLS
CombatSpell(Spellbook spellbook, int id, int level, float baseExperience, Item weapon, CombatProjectile combatProjectile, RequiredRune[] runes)