RuneHive-Game
Loading...
Searching...
No Matches
DuelArenaListener.java
Go to the documentation of this file.
1package com.runehive.content.activity.impl.duelarena;
2
3import com.runehive.content.activity.ActivityListener;
4import com.runehive.game.world.entity.combat.CombatType;
5import com.runehive.game.world.entity.combat.hit.Hit;
6import com.runehive.game.world.entity.mob.Mob;
7import com.runehive.game.world.entity.mob.player.Player;
8import com.runehive.game.world.items.Item;
9import com.runehive.net.packet.out.SendMessage;
10
11public class DuelArenaListener extends ActivityListener<DuelArenaActivity> {
12
16
17 @Override
18 public void start(Mob attacker, Mob defender, Hit[] hits) {
19 System.out.println(defender);
20 if (activity.hasLoser) {
21 return;
22 }
23
24 super.start(attacker, defender, hits);
25 }
26
27 @Override
28 public void onDamage(Mob defender, Hit hit) {
29 if (activity.hasLoser) {
30 hit.setDamage(0);
31 }
32 }
33
34 @Override
35 public void preKill(Mob attacker, Mob defender, Hit hit) {
36 activity.hasLoser = true;
37 attacker.damageImmunity.reset();
38 }
39
40 @Override
41 public boolean canAttack(Mob attacker, Mob defender) {
42 Player player = activity.player;
43 Player opponent = activity.opponent;
44
45 if (player == null || opponent == null || !attacker.isPlayer() || !defender.isPlayer()) {
46 return false;
47 }
48
49 if (!attacker.equals(player) && !attacker.equals(opponent)) {
50 attacker.getPlayer().send(new SendMessage("You are not in this duel."));
51 return false;
52 }
53
54 if (!defender.equals(player) && !defender.equals(opponent)) {
55 attacker.getPlayer().send(new SendMessage(defender.getName() + " is not your opponent!"));
56 return false;
57 }
58
59 if (!activity.started) {
60 attacker.getPlayer().send(new SendMessage("The duel hasn't started yet!"));
61 return false;
62 }
63
64 if (activity.rules.contains(DuelRule.ONLY_FUN_WEAPONS) && !DuelUtils.hasFunWeapon(attacker.getPlayer(), attacker.getPlayer().equipment.getWeapon())) {
65 attacker.getPlayer().send(new SendMessage("You can only use fun weapons!"));
66 return false;
67 }
68
69 if (activity.rules.contains(DuelRule.ONLY_WHIP_DDS)) {
70 if (attacker.getPlayer().equipment.hasWeapon()) {
71 Item weapon = attacker.getPlayer().equipment.getWeapon();
72 String name = weapon.getName().toLowerCase();
73
74 if (!name.contains("dragon dagger") && !name.contains("abyssal whip") && !name.contains("abyssal tentacle")) {
75 attacker.getPlayer().send(new SendMessage("You can only use a whip or dragon dagger!"));
76 return false;
77 }
78 }
79 }
80
81 CombatType combatType = attacker.getPlayer().getStrategy().getCombatType();
82
83 if (combatType == CombatType.MELEE && activity.rules.contains(DuelRule.NO_MELEE)) {
84 attacker.getPlayer().send(new SendMessage("You cannot use melee in the duel arena."));
85 return false;
86 }
87
88 if (combatType == CombatType.RANGED && activity.rules.contains(DuelRule.NO_RANGED)) {
89 attacker.getPlayer().send(new SendMessage("You cannot use ranged in the duel arena."));
90 return false;
91 }
92
93 if (combatType == CombatType.MAGIC && activity.rules.contains(DuelRule.NO_MAGIC)) {
94 attacker.getPlayer().send(new SendMessage("You cannot use magic in the duel arena."));
95 return false;
96 }
97
98 return super.canAttack(attacker, defender);
99 }
100}
void hit(Mob attacker, Mob defender, Hit hit)
ActivityListener(T activity)
Constructs a new ActivityListener for a activity.
void preKill(Mob attacker, Mob defender, Hit hit)
Called before attacker killed defender.
static boolean hasFunWeapon(Player player, Item item)
abstract String getName()
Gets the name of this entity.
abstract boolean equals(Object obj)
A Hit object holds the damage amount and hitsplat data.
Definition Hit.java:10
Handles the mob class.
Definition Mob.java:66
final boolean isPlayer()
Check if an entity is a player.
Definition Mob.java:564
This class represents a character controlled by a player.
Definition Player.java:125
CombatStrategy< Player > getStrategy()
The combat strategy of the mob.
Definition Player.java:764
The container class that represents an item that can be interacted with.
Definition Item.java:21
The OutgoingPacket that sends a message to a Players chatbox in the client.