Changes: Paralyze, WaterArms, AirBubble, Illumination (#564)

* Fix/Improvement to WaterArms Grapple, WaterArms FastSwim, Paralyze

* Fixed Illumination as passive, Fixed AirBubble taking Nightfactor
This commit is contained in:
Sobki 2016-08-29 07:23:43 +10:00 committed by OmniCypher
parent beec447bb1
commit 384b5662b8
9 changed files with 59 additions and 43 deletions

View file

@ -46,6 +46,7 @@ public class BendingPlayer {
private boolean permaRemoved;
private boolean toggled;
private boolean tremorSense;
private boolean illumination;
private boolean chiBlocked;
private long slowTime;
private Player player;
@ -78,6 +79,7 @@ public class BendingPlayer {
this.player = Bukkit.getPlayer(uuid);
this.toggled = true;
this.tremorSense = true;
this.illumination = true;
this.chiBlocked = false;
cooldowns = new ConcurrentHashMap<String, Long>();
toggledElements = new ConcurrentHashMap<Element, Boolean>();
@ -612,6 +614,15 @@ public class BendingPlayer {
return this.tremorSense;
}
/**
* Checks if the {@link BendingPlayer} is using illumination.
*
* @return true if player is using illumination
*/
public boolean isIlluminating() {
return this.illumination;
}
public void removeCooldown(CoreAbility ability) {
if (ability != null) {
removeCooldown(ability.getName());
@ -715,6 +726,13 @@ public class BendingPlayer {
tremorSense = !tremorSense;
}
/**
* Toggles the {@link BendingPlayer}'s illumination.
*/
public void toggleIllumination() {
illumination = !illumination;
}
/**
* Sets the {@link BendingPlayer}'s chi blocked to false.
*/

View file

@ -1615,7 +1615,7 @@ public class PKListener implements Listener {
new HeatControlExtinguish(player);
}
if (abil.equalsIgnoreCase("Illumination")) {
new Illumination(player);
bPlayer.toggleIllumination();
}
if (abil.equalsIgnoreCase("FireBurst")) {
FireBurst.coneBurst(player);

View file

@ -95,9 +95,6 @@ public class AirBubble extends AirAbility {
radius = waterRadius;
}
if (bPlayer.hasElement(Element.WATER) && isNight(player.getWorld())) {
radius = WaterAbility.getNightFactor(waterRadius, player.getWorld());
}
if (airRadius > radius && bPlayer.hasElement(Element.AIR)) {
radius = airRadius;
}

View file

@ -1,22 +1,21 @@
package com.projectkorra.projectkorra.chiblocking;
import com.projectkorra.projectkorra.BendingPlayer;
import com.projectkorra.projectkorra.ability.ChiAbility;
import com.projectkorra.projectkorra.airbending.Suffocate;
import com.projectkorra.projectkorra.command.Commands;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.Location;
import org.bukkit.entity.Creature;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.projectkorra.projectkorra.BendingPlayer;
import com.projectkorra.projectkorra.ability.ChiAbility;
import com.projectkorra.projectkorra.airbending.Suffocate;
import com.projectkorra.projectkorra.command.Commands;
public class Paralyze extends ChiAbility {
private static final Map<Entity, Long> ENTITIES = new ConcurrentHashMap<>();
private static final Map<Entity, Long> COOLDOWNS = new ConcurrentHashMap<>();
private long cooldown;
private Entity target;
@ -33,14 +32,7 @@ public class Paralyze extends ChiAbility {
@Override
public void progress() {
if (bPlayer.canBendIgnoreCooldowns(this)) {
if (COOLDOWNS.containsKey(target)) {
if (System.currentTimeMillis() < COOLDOWNS.get(target) + cooldown) {
return;
} else {
COOLDOWNS.remove(target);
}
}
if (bPlayer.canBend(this)) {
if (target instanceof Player) {
if (Commands.invincible.contains(((Player) target).getName())) {
remove();
@ -48,7 +40,7 @@ public class Paralyze extends ChiAbility {
}
}
paralyze(target);
COOLDOWNS.put(target, System.currentTimeMillis());
bPlayer.addCooldown(this);
} else {
remove();
}
@ -126,12 +118,4 @@ public class Paralyze extends ChiAbility {
return ENTITIES;
}
public static Map<Entity, Long> getCooldowns() {
return COOLDOWNS;
}
public void setCooldown(long cooldown) {
this.cooldown = cooldown;
}
}

View file

@ -1,13 +1,14 @@
package com.projectkorra.projectkorra.firebending;
import com.projectkorra.projectkorra.BendingPlayer;
import com.projectkorra.projectkorra.Element;
import com.projectkorra.projectkorra.command.Commands;
import com.projectkorra.projectkorra.configuration.ConfigManager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.projectkorra.projectkorra.BendingPlayer;
import com.projectkorra.projectkorra.Element;
import com.projectkorra.projectkorra.ability.CoreAbility;
import com.projectkorra.projectkorra.command.Commands;
import com.projectkorra.projectkorra.configuration.ConfigManager;
public class FirePassive {
public static void handlePassive() {
@ -20,6 +21,10 @@ public class FirePassive {
if (player.getFireTicks() > 80) {
player.setFireTicks(80);
}
if (CoreAbility.getAbility(player, Illumination.class) == null) {
new Illumination(player);
}
}
}
}

View file

@ -31,6 +31,11 @@ public class Illumination extends FireAbility {
return;
}
if (!bPlayer.isIlluminating()) {
remove();
return;
}
this.range = getConfig().getDouble("Abilities.Fire.Illumination.Range");
this.cooldown = getConfig().getLong("Abilities.Fire.Illumination.Cooldown");
@ -51,6 +56,12 @@ public class Illumination extends FireAbility {
remove();
return;
}
if (!bPlayer.isIlluminating()) {
remove();
return;
}
set();
}

View file

@ -221,7 +221,6 @@ public class WaterArmsWhip extends WaterAbility {
useArm();
dragEntity(end);
grapplePlayer(end);
}
private boolean canPlaceBlock(Block block) {

View file

@ -53,6 +53,8 @@ public class WaterPassive {
if (bPlayer.canBendPassive(Element.WATER)) {
if (CoreAbility.hasAbility(player, WaterSpout.class) || CoreAbility.hasAbility(player, EarthArmor.class)) {
continue;
} else if (CoreAbility.getAbility(player, WaterArms.class) != null) {
continue;
} else if (coreAbil == null || (coreAbil != null && !coreAbil.isSneakAbility())) {
if (player.isSneaking() && WaterAbility.isWater(player.getLocation().getBlock())) {
player.setVelocity(player.getEyeLocation().getDirection().clone().normalize().multiply(swimSpeed));