mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-11 11:40:40 +00:00
Rename BreathSphere to Suffocate + Other Changes
Now has a warmup of 2 seconds. During this two seconds the Bender may still move / break free.
This commit is contained in:
parent
5474536301
commit
579d4a4a1e
10 changed files with 73 additions and 61 deletions
|
@ -18,10 +18,10 @@ public enum StockAbilities {
|
|||
AvatarState,
|
||||
|
||||
// Project Korra
|
||||
Extraction, Smokescreen, Combustion, LavaSurge, BreathSphere;
|
||||
Extraction, Smokescreen, Combustion, LavaSurge, Suffocate;
|
||||
|
||||
private enum AirbendingAbilities {
|
||||
AirBlast, AirBubble, AirShield, AirSuction, AirSwipe, Tornado, AirScooter, AirSpout, AirBurst, BreathSphere;
|
||||
AirBlast, AirBubble, AirShield, AirSuction, AirSwipe, Tornado, AirScooter, AirSpout, AirBurst, Suffocate;
|
||||
}
|
||||
|
||||
private enum WaterbendingAbilities {
|
||||
|
|
|
@ -189,11 +189,11 @@ public class ConfigManager {
|
|||
config.addDefault("Abilities.Air.AirSwipe.Cooldown", 1500);
|
||||
config.addDefault("Abilities.Air.AirSwipe.ChargeFactor", 3);
|
||||
|
||||
config.addDefault("Abilities.Air.BreathSphere.Enabled", true);
|
||||
config.addDefault("Abilities.Air.BreathSphere.Description", "This ability is one of the most dangerous abilities an Airbender possesses. To use, simply look at an entity and hold shift. The entity will begin taking damage as you extract the air from their lungs. Any bender caught in this sphere will only be able to use basic moves, such as AirSwipe, WaterManipulation, FireBlast, or EarthBlast. An entity can be knocked out of the sphere by certain bending arts, and your attention will be disrupted if you are hit by bending.");
|
||||
config.addDefault("Abilities.Air.BreathSphere.CanBeUsedOnUndeadMobs", true);
|
||||
config.addDefault("Abilities.Air.BreathSphere.Range", 5);
|
||||
config.addDefault("Abilities.Air.BreathSphere.Damage", 0.5);
|
||||
config.addDefault("Abilities.Air.Suffocate.Enabled", true);
|
||||
config.addDefault("Abilities.Air.Suffocate.Description", "This ability is one of the most dangerous abilities an Airbender possesses. To use, simply look at an entity and hold shift. The entity will begin taking damage as you extract the air from their lungs. Any bender caught in this sphere will only be able to use basic moves, such as AirSwipe, WaterManipulation, FireBlast, or EarthBlast. An entity can be knocked out of the sphere by certain bending arts, and your attention will be disrupted if you are hit by bending.");
|
||||
config.addDefault("Abilities.Air.Suffocate.CanBeUsedOnUndeadMobs", true);
|
||||
config.addDefault("Abilities.Air.Suffocate.Range", 5);
|
||||
config.addDefault("Abilities.Air.Suffocate.Damage", 0.5);
|
||||
|
||||
config.addDefault("Abilities.Air.Tornado.Radius", 10);
|
||||
config.addDefault("Abilities.Air.Tornado.Height", 25);
|
||||
|
|
|
@ -81,7 +81,7 @@ import com.projectkorra.ProjectKorra.airbending.AirShield;
|
|||
import com.projectkorra.ProjectKorra.airbending.AirSpout;
|
||||
import com.projectkorra.ProjectKorra.airbending.AirSuction;
|
||||
import com.projectkorra.ProjectKorra.airbending.AirSwipe;
|
||||
import com.projectkorra.ProjectKorra.airbending.BreathSphere;
|
||||
import com.projectkorra.ProjectKorra.airbending.Suffocate;
|
||||
import com.projectkorra.ProjectKorra.airbending.Tornado;
|
||||
import com.projectkorra.ProjectKorra.chiblocking.Paralyze;
|
||||
import com.projectkorra.ProjectKorra.chiblocking.RapidPunch;
|
||||
|
@ -1896,15 +1896,15 @@ public class Methods {
|
|||
}
|
||||
|
||||
public static void breakBreathbendingHold(Entity entity) {
|
||||
if(BreathSphere.isBreathbent(entity)) {
|
||||
BreathSphere.breakBreathSphere(entity);
|
||||
if(Suffocate.isBreathbent(entity)) {
|
||||
Suffocate.breakSuffocate(entity);
|
||||
return;
|
||||
}
|
||||
|
||||
if(entity instanceof Player) {
|
||||
Player player = (Player) entity;
|
||||
if(BreathSphere.isChannelingSphere(player)) {
|
||||
BreathSphere.remove(player);
|
||||
if(Suffocate.isChannelingSphere(player)) {
|
||||
Suffocate.remove(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ import com.projectkorra.ProjectKorra.airbending.AirShield;
|
|||
import com.projectkorra.ProjectKorra.airbending.AirSpout;
|
||||
import com.projectkorra.ProjectKorra.airbending.AirSuction;
|
||||
import com.projectkorra.ProjectKorra.airbending.AirSwipe;
|
||||
import com.projectkorra.ProjectKorra.airbending.BreathSphere;
|
||||
import com.projectkorra.ProjectKorra.airbending.Suffocate;
|
||||
import com.projectkorra.ProjectKorra.airbending.Tornado;
|
||||
import com.projectkorra.ProjectKorra.chiblocking.ChiPassive;
|
||||
import com.projectkorra.ProjectKorra.chiblocking.HighJump;
|
||||
|
@ -163,7 +163,7 @@ public class PKListener implements Listener {
|
|||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || BreathSphere.isBreathbent(player)) {
|
||||
if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || Suffocate.isBreathbent(player)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
@ -239,7 +239,7 @@ public class PKListener implements Listener {
|
|||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||
Methods.cooldowns.put(player.getName(), System.currentTimeMillis());
|
||||
}
|
||||
if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || BreathSphere.isBreathbent(player)) {
|
||||
if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || Suffocate.isBreathbent(player)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ public class PKListener implements Listener {
|
|||
if (event.isCancelled()) return;
|
||||
Player player = event.getPlayer();
|
||||
Methods.cooldowns.put(player.getName(), System.currentTimeMillis());
|
||||
if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || BreathSphere.isBreathbent(player)) {
|
||||
if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || Suffocate.isBreathbent(player)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
@ -318,7 +318,7 @@ public class PKListener implements Listener {
|
|||
|
||||
if (event.isCancelled()) return;
|
||||
|
||||
if(BreathSphere.isBreathbent(player)) {
|
||||
if(Suffocate.isBreathbent(player)) {
|
||||
if(!Methods.getBoundAbility(player).equalsIgnoreCase("AirSwipe") || !Methods.getBoundAbility(player).equalsIgnoreCase("FireBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("EarthBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("WaterManipulation")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
@ -365,8 +365,8 @@ public class PKListener implements Listener {
|
|||
if (abil.equalsIgnoreCase("AirShield")) {
|
||||
new AirShield(player);
|
||||
}
|
||||
if(abil.equalsIgnoreCase("BreathSphere")) {
|
||||
new BreathSphere(player);
|
||||
if(abil.equalsIgnoreCase("Suffocate")) {
|
||||
new Suffocate(player);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -515,7 +515,7 @@ public class PKListener implements Listener {
|
|||
}
|
||||
}
|
||||
|
||||
if(BreathSphere.isBreathbent(player)) {
|
||||
if(Suffocate.isBreathbent(player)) {
|
||||
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1, 100));
|
||||
}
|
||||
}
|
||||
|
@ -545,7 +545,7 @@ public class PKListener implements Listener {
|
|||
if (event.isCancelled()) return;
|
||||
|
||||
Entity entity = event.getEntity();
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity))
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Suffocate.isBreathbent(entity))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
@ -589,7 +589,7 @@ public class PKListener implements Listener {
|
|||
Entity entity = event.getEntity();
|
||||
if (entity != null)
|
||||
if (Paralyze.isParalyzed(entity)
|
||||
|| Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity))
|
||||
|| Bloodbending.isBloodbended(entity) || Suffocate.isBreathbent(entity))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
@ -598,7 +598,7 @@ public class PKListener implements Listener {
|
|||
if (event.isCancelled()) return;
|
||||
|
||||
Entity entity = event.getEntity();
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity))
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Suffocate.isBreathbent(entity))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
@ -607,7 +607,7 @@ public class PKListener implements Listener {
|
|||
if (event.isCancelled()) return;
|
||||
|
||||
Entity entity = event.getEntity();
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity))
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Suffocate.isBreathbent(entity))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
@ -616,7 +616,7 @@ public class PKListener implements Listener {
|
|||
if (event.isCancelled()) return;
|
||||
|
||||
Entity entity = event.getEntity();
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity))
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Suffocate.isBreathbent(entity))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
@ -625,7 +625,7 @@ public class PKListener implements Listener {
|
|||
if (event.isCancelled()) return;
|
||||
|
||||
Entity entity = event.getEntity();
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity))
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Suffocate.isBreathbent(entity))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
@ -634,7 +634,7 @@ public class PKListener implements Listener {
|
|||
if (event.isCancelled()) return;
|
||||
|
||||
Entity entity = event.getEntity();
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity))
|
||||
if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Suffocate.isBreathbent(entity))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
@ -645,7 +645,7 @@ public class PKListener implements Listener {
|
|||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(BreathSphere.isBreathbent(player)) {
|
||||
if(Suffocate.isBreathbent(player)) {
|
||||
if(!Methods.getBoundAbility(player).equalsIgnoreCase("AirSwipe") || !Methods.getBoundAbility(player).equalsIgnoreCase("FireBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("EarthBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("WaterManipulation")) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
@ -856,7 +856,7 @@ public class PKListener implements Listener {
|
|||
if (event.isCancelled()) return;
|
||||
|
||||
Player p = event.getPlayer();
|
||||
if (Tornado.getPlayers().contains(p) || Bloodbending.isBloodbended(p) || BreathSphere.isBreathbent(p)
|
||||
if (Tornado.getPlayers().contains(p) || Bloodbending.isBloodbended(p) || Suffocate.isBreathbent(p)
|
||||
|| FireJet.getPlayers().contains(p)
|
||||
|| AvatarState.getPlayers().contains(p)) {
|
||||
event.setCancelled(p.getGameMode() != GameMode.CREATIVE);
|
||||
|
|
|
@ -18,7 +18,7 @@ public class AirbendingManager implements Runnable {
|
|||
AirPassive.handlePassive(Bukkit.getServer());
|
||||
AirBurst.progressAll();
|
||||
AirScooter.progressAll();
|
||||
BreathSphere.progressAll();
|
||||
Suffocate.progressAll();
|
||||
AirSpout.spoutAll();
|
||||
AirBubble.handleBubbles(Bukkit.getServer());
|
||||
AirSuction.progressAll();
|
||||
|
|
|
@ -17,19 +17,21 @@ import com.projectkorra.ProjectKorra.ProjectKorra;
|
|||
import com.projectkorra.ProjectKorra.TempPotionEffect;
|
||||
import com.projectkorra.ProjectKorra.Ability.AvatarState;
|
||||
|
||||
public class BreathSphere {
|
||||
public class Suffocate {
|
||||
|
||||
public static ConcurrentHashMap<Player, BreathSphere> instances = new ConcurrentHashMap<Player, BreathSphere>();
|
||||
public static ConcurrentHashMap<Player, Suffocate> instances = new ConcurrentHashMap<Player, Suffocate>();
|
||||
|
||||
ConcurrentHashMap<Entity, Location> targetentities = new ConcurrentHashMap<Entity, Location>();
|
||||
|
||||
private static boolean canBeUsedOnUndead = ProjectKorra.plugin.getConfig().getBoolean("Abilities.Air.BreathSphere.CanBeUsedOnUndeadMobs");
|
||||
private int range = ProjectKorra.plugin.getConfig().getInt("Abilities.Air.BreathSphere.Range");
|
||||
private double damage = ProjectKorra.plugin.getConfig().getDouble("Abilities.Air.BreathSphere.Damage");
|
||||
private static boolean canBeUsedOnUndead = ProjectKorra.plugin.getConfig().getBoolean("Abilities.Air.Suffocate.CanBeUsedOnUndeadMobs");
|
||||
private int range = ProjectKorra.plugin.getConfig().getInt("Abilities.Air.Suffocate.Range");
|
||||
private double damage = ProjectKorra.plugin.getConfig().getDouble("Abilities.Air.Suffocate.Damage");
|
||||
|
||||
private Player player;
|
||||
private long time;
|
||||
private long warmup = 2000;
|
||||
|
||||
public BreathSphere(Player player) {
|
||||
public Suffocate(Player player) {
|
||||
if (instances.containsKey(player)) {
|
||||
remove(player);
|
||||
return;
|
||||
|
@ -61,6 +63,7 @@ public class BreathSphere {
|
|||
}
|
||||
this.player = player;
|
||||
instances.put(player, this);
|
||||
time = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
private void progress() {
|
||||
|
@ -80,7 +83,7 @@ public class BreathSphere {
|
|||
}
|
||||
}
|
||||
|
||||
if (!Methods.canBend(player.getName(), "BreathSphere")) {
|
||||
if (!Methods.canBend(player.getName(), "Suffocate")) {
|
||||
remove(player);
|
||||
return;
|
||||
}
|
||||
|
@ -88,7 +91,7 @@ public class BreathSphere {
|
|||
remove(player);
|
||||
return;
|
||||
}
|
||||
if (!Methods.getBoundAbility(player).equalsIgnoreCase("BreathSphere")) {
|
||||
if (!Methods.getBoundAbility(player).equalsIgnoreCase("Suffocate")) {
|
||||
remove(player);
|
||||
return;
|
||||
}
|
||||
|
@ -96,19 +99,23 @@ public class BreathSphere {
|
|||
if (AvatarState.isAvatarState(player)) {
|
||||
ArrayList<Entity> entities = new ArrayList<Entity>();
|
||||
for (Entity entity : Methods.getEntitiesAroundPoint(player.getLocation(), range)) {
|
||||
if (Methods.isRegionProtectedFromBuild(player, "BreathSphere", entity.getLocation()))
|
||||
if (Methods.isRegionProtectedFromBuild(player, "Suffocate", entity.getLocation()))
|
||||
continue;
|
||||
if (entity.getEntityId() == player.getEntityId()) continue;
|
||||
entities.add(entity);
|
||||
if (!targetentities.containsKey(entity) && entity instanceof LivingEntity) {
|
||||
if (System.currentTimeMillis() >= time + warmup) {
|
||||
Methods.damageEntity(player, entity, 0);
|
||||
}
|
||||
targetentities.put(entity, entity.getLocation().clone());
|
||||
}
|
||||
if (entity instanceof LivingEntity) {
|
||||
if (Methods.isObstructed(player.getLocation(), entity.getLocation())) {
|
||||
breakBreathSphere(entity);
|
||||
breakSuffocate(entity);
|
||||
}
|
||||
if (System.currentTimeMillis() >= time + warmup) {
|
||||
Methods.damageEntity(player, entity, 0);
|
||||
}
|
||||
Methods.damageEntity(player, (LivingEntity) entity, damage);
|
||||
new TempPotionEffect((LivingEntity) entity, slow);
|
||||
new TempPotionEffect((LivingEntity) entity, nausea);
|
||||
entity.setFallDistance(0);
|
||||
|
@ -138,9 +145,11 @@ public class BreathSphere {
|
|||
for (Entity entity : targetentities.keySet()) {
|
||||
if(entity instanceof LivingEntity) {
|
||||
if (Methods.isObstructed(player.getLocation(), entity.getLocation())) {
|
||||
breakBreathSphere(entity);
|
||||
breakSuffocate(entity);
|
||||
}
|
||||
if (System.currentTimeMillis() >= time + warmup) {
|
||||
Methods.damageEntity(player, entity, 0);
|
||||
}
|
||||
Methods.damageEntity(player, (LivingEntity) entity, damage);
|
||||
new TempPotionEffect((LivingEntity) entity, slow);
|
||||
new TempPotionEffect((LivingEntity) entity, nausea);
|
||||
entity.setFallDistance(0);
|
||||
|
@ -177,7 +186,7 @@ public class BreathSphere {
|
|||
}
|
||||
}
|
||||
|
||||
public static void breakBreathSphere(Entity entity) {
|
||||
public static void breakSuffocate(Entity entity) {
|
||||
for (Player player : instances.keySet()) {
|
||||
if (instances.get(player).targetentities.containsKey(entity)) {
|
||||
instances.remove(player);
|
||||
|
@ -188,8 +197,11 @@ public class BreathSphere {
|
|||
public static boolean isBreathbent(Entity entity) {
|
||||
for (Player player : instances.keySet()) {
|
||||
if (instances.get(player).targetentities.containsKey(entity)) {
|
||||
if (System.currentTimeMillis() >= instances.get(player).time + instances.get(player).warmup) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -211,7 +223,7 @@ public class BreathSphere {
|
|||
return false;
|
||||
}
|
||||
|
||||
public static Location getBreathSphereLocation(Entity entity) {
|
||||
public static Location getSuffocateLocation(Entity entity) {
|
||||
for (Player player : instances.keySet()) {
|
||||
if (instances.get(player).targetentities.containsKey(entity)) {
|
||||
return instances.get(player).targetentities.get(entity);
|
|
@ -12,7 +12,7 @@ import com.projectkorra.ProjectKorra.BendingPlayer;
|
|||
import com.projectkorra.ProjectKorra.Element;
|
||||
import com.projectkorra.ProjectKorra.Methods;
|
||||
import com.projectkorra.ProjectKorra.ProjectKorra;
|
||||
import com.projectkorra.ProjectKorra.airbending.BreathSphere;
|
||||
import com.projectkorra.ProjectKorra.airbending.Suffocate;
|
||||
|
||||
public class ChiPassive {
|
||||
|
||||
|
@ -38,8 +38,8 @@ public class ChiPassive {
|
|||
}
|
||||
|
||||
public static void blockChi(final Player player) {
|
||||
if(BreathSphere.isChannelingSphere(player)) {
|
||||
BreathSphere.remove(player);
|
||||
if(Suffocate.isChannelingSphere(player)) {
|
||||
Suffocate.remove(player);
|
||||
}
|
||||
final BendingPlayer bPlayer = Methods.getBendingPlayer(player.getName());
|
||||
if (bPlayer == null) return;
|
||||
|
|
|
@ -10,7 +10,7 @@ import com.projectkorra.ProjectKorra.Element;
|
|||
import com.projectkorra.ProjectKorra.Methods;
|
||||
import com.projectkorra.ProjectKorra.ProjectKorra;
|
||||
import com.projectkorra.ProjectKorra.Ability.AvatarState;
|
||||
import com.projectkorra.ProjectKorra.airbending.BreathSphere;
|
||||
import com.projectkorra.ProjectKorra.airbending.Suffocate;
|
||||
|
||||
public class Paralyze {
|
||||
|
||||
|
@ -45,8 +45,8 @@ public class Paralyze {
|
|||
}
|
||||
|
||||
if (entity instanceof Player) {
|
||||
if(BreathSphere.isChannelingSphere((Player) entity)) {
|
||||
BreathSphere.remove((Player) entity);
|
||||
if(Suffocate.isChannelingSphere((Player) entity)) {
|
||||
Suffocate.remove((Player) entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ import org.bukkit.entity.Player;
|
|||
|
||||
import com.projectkorra.ProjectKorra.Methods;
|
||||
import com.projectkorra.ProjectKorra.ProjectKorra;
|
||||
import com.projectkorra.ProjectKorra.airbending.BreathSphere;
|
||||
import com.projectkorra.ProjectKorra.airbending.Suffocate;
|
||||
|
||||
public class RapidPunch {
|
||||
|
||||
|
@ -60,8 +60,8 @@ public class RapidPunch {
|
|||
if (ChiPassive.willChiBlock((Player) target)) {
|
||||
ChiPassive.blockChi((Player) target);
|
||||
}
|
||||
if(BreathSphere.isChannelingSphere((Player) target)) {
|
||||
BreathSphere.remove((Player) target);
|
||||
if(Suffocate.isChannelingSphere((Player) target)) {
|
||||
Suffocate.remove((Player) target);
|
||||
}
|
||||
lt.setNoDamageTicks(0);
|
||||
}
|
||||
|
|
|
@ -138,7 +138,7 @@ Abilities:
|
|||
Speed: 25
|
||||
Cooldown: 1500
|
||||
ChargeFactor: 3
|
||||
BreathSphere:
|
||||
Suffocate:
|
||||
Enabled: true
|
||||
Description: "This ability is one of the most dangerous abilities an Airbender possesses. To use, simply look at an entity and hold shift. The entity will begin taking damage as you extract the air from their lungs. Any bender caught in this sphere will only be able to use basic moves, such as AirSwipe, WaterManipulation, FireBlast, or EarthBlast. An entity can be knocked out of the sphere by certain bending arts, and your attention will be disrupted if you are hit by bending."
|
||||
CanBeUsedOnUndeadMobs: true
|
||||
|
|
Loading…
Reference in a new issue