Removed broken and obsolete shifter code

Set up more intellij stuff
This commit is contained in:
CoderTim 2014-05-25 19:11:58 -04:00
parent aa6b5324eb
commit 3859a42f1d
29 changed files with 111 additions and 2826 deletions

1
.gitignore vendored
View File

@ -16,6 +16,5 @@ update
Reference
/Plugins/Test
/Plugins/.idea/workspace.xml
/Plugins/out

View File

@ -0,0 +1,10 @@
<component name="ArtifactManager">
<artifact name="Mineplex.Hub:test">
<output-path>$PROJECT_DIR$/../Testing/Hub</output-path>
<root id="root">
<element id="directory" name="plugins">
<element id="artifact" artifact-name="Mineplex.Hub:jar" />
</element>
</root>
</artifact>
</component>

View File

@ -0,0 +1,10 @@
<component name="ArtifactManager">
<artifact name="Nautilus.Game.Arcade:test">
<output-path>$PROJECT_DIR$/../Testing/Arcade</output-path>
<root id="root">
<element id="directory" name="plugins">
<element id="artifact" artifact-name="Nautilus.Game.Arcade:jar" />
</element>
</root>
</artifact>
</component>

Binary file not shown.

View File

@ -1,92 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
import org.bukkit.ChatColor;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
public class ChickenForm extends FormBase
{
public ChickenForm(SkillFactory skills, String name, ClassType classType,
SkillType skillType, int cost, int levels)
{
super(skills, name, classType, skillType, cost, levels,
EntityType.CHICKEN, new String[]
{
"Flap"
});
SetDesc(new String[]
{
ChatColor.WHITE + "Passives:",
"* Slow I",
"* +10 Damage taken from Arrows",
"",
"",
ChatColor.WHITE + "Attack: " + ChatColor.GREEN + "None",
"",
"",
ChatColor.WHITE + "Sword Skill: " + ChatColor.GREEN + "Fly",
"Push Block to Flap;",
"* Velocity of 0.5 + 0.05pL",
"",
"Hold Block to Glide;",
"* Min speed of 0.3 + 0.03pL",
"* Max speed of 0.7 + 0.07pL",
"",
"Glide through enemies to pick them up.",
"Stop gliding to drop them.",
"",
"",
ChatColor.WHITE + "Axe Skill: " + ChatColor.GREEN + "Spin Web",
"Spin a temporary web;",
"* Lasts 5 + 1pL seconds",
});
}
@Override
public void UnapplyMorph(Player player)
{
Flap flap = (Flap)Factory.GetSkill("Flap");
flap.GetGrab().Release(player);
Factory.Condition().EndCondition(player, null, GetName());
}
@EventHandler(priority = EventPriority.HIGH)
public void Attack(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
return;
Player damager = event.GetDamagerPlayer(false);
if (damager == null) return;
if (!IsMorphed(damager))
return;
event.SetCancelled(GetName());
}
@EventHandler
public void Update(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (Player cur : GetMorphedUsers())
Factory.Condition().Factory().Slow(GetName(), cur, cur, 1.9, 0, false, false, false);
}
}

View File

@ -1,262 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken;
import java.util.HashMap;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.util.Vector;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilTime;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class Flap extends SkillActive
{
private HashMap<Player, Vector> _active = new HashMap<Player, Vector>();
private HashMap<Player, Long> _damaged = new HashMap<Player, Long>();
private long _damageDisableTime = 6000;
private double _flap = 0.5;
private double _min = 0.3;
private double _max = 0.7;
private FlapGrab _grab = null;
private int _tick = 0;
public Flap(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
_grab = new FlapGrab(this);
}
@Override
public boolean CustomCheck(Player player, int level)
{
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
return false;
}
//Wings Damaged
if (_damaged.containsKey(player))
{
long damageTime = _damaged.get(player);
if (!UtilTime.elapsed(damageTime, _damageDisableTime))
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " for " +
F.time(UtilTime.MakeStr(_damageDisableTime - (System.currentTimeMillis() - damageTime))) + "."));
return false;
}
}
return true;
}
@Override
public void Skill(Player player, int level)
{
//Initial Flap
Vector vel = player.getLocation().getDirection();
vel.multiply(_flap + ((_flap/10d) * level));
vel.add(new Vector(0,0.1,0));
//Clutch Penalty
if (player.getVehicle() != null)
vel.multiply(0.5 + (level * 0.05));
_active.put(player, vel);
//Apply Velocity
player.setVelocity(vel);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.BAT_TAKEOFF, 1f, 1f);
}
@EventHandler(priority = EventPriority.HIGH)
public void Damage(CustomDamageEvent event)
{
if (event.GetProjectile() == null)
return;
if (event.GetDamageePlayer() == null)
return;
if (!GetUsers().containsKey(event.GetDamageePlayer()))
return;
event.AddMod(UtilEnt.getName(event.GetDamagerEntity(true)), "Chicken Weakness", 10, false);
_damaged.put(event.GetDamageePlayer(), System.currentTimeMillis());
}
@EventHandler
public void Glide(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
_tick = (_tick + 1)%12;
for (Player cur : GetUsers())
{
if (!_active.containsKey(cur))
{
GetGrab().Release(cur);
continue;
}
if (!cur.isBlocking())
{
_active.remove(cur);
continue;
}
//Level
int level = getLevel(cur);
if (level == 0)
{
_active.remove(cur);
continue;
}
//Clutch Penalty
if (cur.getVehicle() != null)
{
//Energy
if (!Factory.Energy().Use(cur, "Glide", 1.2 - (0.02 * level), true, true))
{
_active.remove(cur);
continue;
}
}
else
{
//Energy
if (!Factory.Energy().Use(cur, "Glide", 0.6 - (0.02 * level), true, true))
{
_active.remove(cur);
continue;
}
}
//Target to apply velocity to
Entity target = cur;
if (cur.getVehicle() != null)
target = cur.getVehicle();
//Get Velocity
Vector vel = _active.get(cur);
if (UtilEnt.isGrounded(target) && vel.getY() < 0)
{
_active.remove(cur);
continue;
}
//Turn
double speed = vel.length();
Vector turn = cur.getLocation().getDirection();
turn.subtract(UtilAlg.Normalize(UtilAlg.Clone(vel)));
turn.multiply(0.1);
vel.add(turn);
UtilAlg.Normalize(vel).multiply(speed);
//Gravity
vel.setX(vel.getX() * (1 - (vel.getY() / 6)));
vel.setZ(vel.getZ() * (1 - (vel.getY() / 6)));
if (vel.getY() > 0) vel.setY(vel.getY() * (1 - (vel.getY() / 6)));
//Air Friction
vel.multiply(0.998);
double minSpeed = _min + ((_min/10d) * level);
double maxSpeed = _max + ((_max/10d) * level);
//Speed Min
if (vel.length() < minSpeed)
vel.normalize().multiply(minSpeed);
//Speed Max
if (vel.length() > maxSpeed)
vel.normalize().multiply(maxSpeed);
//Apply Velocity
target.setVelocity(vel);
//Fall Dist
target.setFallDistance(0f);
//Hit Others (only if not carrying)
if (cur.equals(target))
{
for (Player other : UtilPlayer.getNearby(cur.getLocation(), 2))
{
if (other.equals(cur))
continue;
if (!Factory.Relation().CanHurt(cur, other))
continue;
_grab.Grab(cur, other);
if (vel.getY() < 0.1)
vel.setY(0.1);
}
}
//Sound
if (_tick == 0)
cur.getWorld().playSound(cur.getLocation(), Sound.BAT_TAKEOFF, 0.4f, 1f);
}
}
@EventHandler
public void DamageRelease(CustomDamageEvent event)
{
GetGrab().DamageRelease(event);
}
public FlapGrab GetGrab()
{
return _grab;
}
@Override
public void Reset(Player player)
{
_grab.Reset(player);
_active.remove(player);
_damaged.remove(player);
}
}

View File

@ -1,99 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken;
import java.util.HashMap;
import org.bukkit.EntityEffect;
import org.bukkit.Sound;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
public class FlapGrab
{
public Flap Host;
private HashMap<Player, LivingEntity> _clutch = new HashMap<Player, LivingEntity>();
public FlapGrab(Flap host)
{
Host = host;
}
public void Grab(Player player, LivingEntity ent)
{
if (_clutch.containsKey(player))
return;
if (ent == null)
return;
//Ent already has LE passenger
if (ent.getPassenger() != null)
if (ent.getPassenger() instanceof LivingEntity)
return;
//Player on something
if (player.getVehicle() != null)
return;
//Condition Indicators
Host.Factory.Condition().SetIndicatorVisibility((LivingEntity)ent, false);
//Action
player.leaveVehicle();
ent.eject();
ent.setPassenger(player);
_clutch.put(player, (LivingEntity)ent);
//Inform
UtilPlayer.message(player, F.main(Host.GetClassType().name(), "You picked up " + F.name(UtilEnt.getName(ent)) + "."));
UtilPlayer.message(ent, F.main(Host.GetClassType().name(), F.name(player.getName()) + " picked you up."));
//Effect
ent.playEffect(EntityEffect.HURT);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_HURT, 2f, 1.5f);
}
public void Release(Player player)
{
LivingEntity ent = _clutch.remove(player);
if (ent == null) return;
player.leaveVehicle();
ent.eject();
//Condition Indicators
Host.Factory.Condition().SetIndicatorVisibility(ent, true);
//Inform
UtilPlayer.message(player, F.main(Host.GetClassType().name(), "You released " + F.name(UtilEnt.getName(ent)) + "."));
UtilPlayer.message(ent, F.main(Host.GetClassType().name(), F.name(player.getName()) + " released you."));
//Effect
ent.playEffect(EntityEffect.HURT);
}
public void DamageRelease(CustomDamageEvent event)
{
Player damagee = event.GetDamageePlayer();
if (damagee == null) return;
Release(damagee);
}
public void Reset(Player player)
{
LivingEntity ent = _clutch.remove(player);
if (ent != null)
{
ent.eject();
Host.Factory.Condition().SetIndicatorVisibility(ent, true);
}
}
}

View File

@ -1,5 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Creeper;
public class CreeperForm {
}

View File

@ -1,186 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;
import mineplex.minecraft.game.classcombat.Class.ClientClass;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.minecraft.game.classcombat.Skill.ISkill;
import mineplex.minecraft.game.classcombat.Skill.Skill;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerDropItemEvent;
public abstract class FormBase extends Skill
{
private EntityType _type;
private ArrayList<ISkill> _formSkills = new ArrayList<ISkill>();
private String[] _formSkillNames;
private HashMap<Player, HashMap<ISkill, Integer>> _savedSkills = new HashMap<Player, HashMap<ISkill, Integer>>();
public FormBase(SkillFactory skills, String name, ClassType classType,
SkillType skillType, int cost, int levels, EntityType type, String[] formSkillNames)
{
super(skills, name, classType, skillType, cost, levels);
_type = type;
_formSkillNames = formSkillNames;
}
@EventHandler
public void Use(PlayerDropItemEvent event)
{
Player player = event.getPlayer();
int level = getLevel(player);
if (level == 0) return;
if (!UtilGear.isWeapon(event.getItemDrop().getItemStack()))
return;
//Shift/Non-Shift for A/B
if (!IsMorphed(player))
{
if (this.GetSkillType() == SkillType.PassiveA)
if (player.isSneaking())
return;
if (this.GetSkillType() == SkillType.PassiveB)
if (!player.isSneaking())
return;
}
event.setCancelled(true);
if (_savedSkills.containsKey(player))
Unmorph(player);
else
Morph(player);
}
public EntityType GetType()
{
return _type;
}
public void Morph(Player player)
{
SaveHumanSkills(player);
//Set Skills
ClientClass cc = Factory.ClassManager().Get(player);
for (ISkill skill : GetFormSkills())
cc.AddSkill(skill, getLevel(player));
//Inform
UtilPlayer.message(player, F.main(GetClassType().name(), "You shapeshifted into " + F.skill(GetName() + " " + getLevel(player))));
}
public void Unmorph(Player player)
{
//Reset Skills
for (ISkill skill : GetFormSkills())
skill.Reset(player);
UnapplyMorph(player);
RestoreHumanSkills(player);
//Inform
UtilPlayer.message(player, F.main(GetClassType().name(), "You returned to " + F.skill("Human Form")));
}
public boolean IsMorphed(Player player)
{
return _savedSkills.containsKey(player);
}
public Collection<Player> GetMorphedUsers()
{
return _savedSkills.keySet();
}
public ArrayList<ISkill> GetFormSkills()
{
if (_formSkills.isEmpty())
for (String name : _formSkillNames)
{
ISkill skill = Factory.GetSkill(name);
if (skill != null)
_formSkills.add(skill);
else
System.out.println("Invalid Skill [" + name + "] for [" + GetName() + "].");
}
return _formSkills;
}
public abstract void UnapplyMorph(Player player);
private void SaveHumanSkills(Player player)
{
ClientClass cc = Factory.ClassManager().Get(player);
//Save Current
_savedSkills.put(player, new HashMap<ISkill, Integer>());
for (Entry<ISkill, Integer> skill : cc.GetSkills())
{
//Save Sword/Axe
if (skill.getKey().GetSkillType() == SkillType.Sword ||
skill.getKey().GetSkillType() == SkillType.Axe ||
skill.getKey().GetSkillType() == SkillType.Class)
_savedSkills.get(player).put(skill.getKey(), skill.getValue());
//Save OTHER Morph
if (this.GetSkillType() == SkillType.PassiveA)
if (skill.getKey().GetSkillType() == SkillType.PassiveB)
_savedSkills.get(player).put(skill.getKey(), skill.getValue());
if (this.GetSkillType() == SkillType.PassiveB)
if (skill.getKey().GetSkillType() == SkillType.PassiveA)
_savedSkills.get(player).put(skill.getKey(), skill.getValue());
}
//Remove Saved
for (ISkill skill : _savedSkills.get(player).keySet())
cc.RemoveSkill(cc.GetSkillByType(skill.GetSkillType()));
}
private void RestoreHumanSkills(Player player)
{
ClientClass cc = Factory.ClassManager().Get(player);
//Remove Morph Skills
cc.RemoveSkill(cc.GetSkillByType(SkillType.Sword));
cc.RemoveSkill(cc.GetSkillByType(SkillType.Axe));
//Restore Old
if (!_savedSkills.containsKey(player))
return;
for (ISkill skill : _savedSkills.get(player).keySet())
cc.AddSkill(skill, _savedSkills.get(player).get(skill));
_savedSkills.remove(player);
}
@Override
public void Reset(Player player)
{
_savedSkills.remove(player);
}
}

View File

@ -1,127 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.common.util.UtilGear;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
public class GolemForm extends FormBase
{
public GolemForm(SkillFactory skills, String name, ClassType classType,
SkillType skillType, int cost, int levels)
{
super(skills, name, classType, skillType, cost, levels,
EntityType.IRON_GOLEM, new String[]
{
"Magnetic Pull",
"Magnetic Repel"
});
SetDesc(new String[]
{
ChatColor.WHITE + "Passives:",
"* Slow II",
"* Protection III",
"* -4 Damage Dealt",
"",
ChatColor.WHITE + "Sword Attack: " + ChatColor.GREEN + "Iron Crush",
"* No Knockback",
"* Slow V for 0.5 seconds",
"",
"",
ChatColor.WHITE + "Axe Attack: " + ChatColor.GREEN + "Iron Smash",
"* Strong Knockback",
"",
"",
ChatColor.WHITE + "Sword Skill: " + ChatColor.GREEN + "Magnetic Pull",
"Pull in enemies infront of you;",
"* Range of 4 + 2pL",
"* Radius of 2 + 0.5pL",
"",
"",
ChatColor.WHITE + "Axe Skill: " + ChatColor.GREEN + "Magnetic Repel",
"Repel all nearby enemies;",
"* Range of 4 + 2pL",
"* Velocity of 1.2 + 0.2pL"
});
}
@Override
public void UnapplyMorph(Player player)
{
Factory.Condition().EndCondition(player, null, GetName());
}
@EventHandler
public void Update(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (Player cur : GetMorphedUsers())
{
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 2, false, false);
Factory.Condition().Factory().Slow(GetName(), cur, cur, 1.9, 1, false, false, false);
}
}
@EventHandler(priority = EventPriority.HIGH)
public void KnockbackTaken(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
return;
Player damagee = event.GetDamageePlayer();
if (damagee == null) return;
if (!IsMorphed(damagee))
return;
event.SetKnockback(false);
damagee.getWorld().playSound(damagee.getLocation(), Sound.ZOMBIE_METAL, 0.8f, 1.8f);
}
@EventHandler(priority = EventPriority.HIGH)
public void KnockbackGiven(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
return;
Player damager = event.GetDamagerPlayer(false);
if (damager == null) return;
if (!IsMorphed(damager))
return;
event.AddMod(damager.getName(), GetName(), -4, false);
if (UtilGear.isSword(damager.getItemInHand()))
{
damager.getWorld().playSound(damager.getLocation(), Sound.IRONGOLEM_HIT, 1f, 1.6f);
Factory.Condition().Factory().Slow(GetName(), event.GetDamageeEntity(), damager, 0.5, 4, false, false, true);
event.SetKnockback(false);
}
else if (UtilGear.isAxe(damager.getItemInHand()))
{
damager.getWorld().playSound(damager.getLocation(), Sound.IRONGOLEM_HIT, 1f, 0.8f);
event.AddKnockback(GetName(), 4d);
}
}
}

View File

@ -1,142 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem;
import java.util.HashSet;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilMath;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class MagneticPull extends SkillActive
{
private HashSet<Player> _active = new HashSet<Player>();
public MagneticPull(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
}
@Override
public String GetEnergyString()
{
return "Energy: 16 per Second";
}
@Override
public boolean CustomCheck(Player player, int level)
{
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
return false;
}
return true;
}
@Override
public void Skill(Player player, int level)
{
_active.add(player);
player.getWorld().playSound(player.getLocation(), Sound.IRONGOLEM_DEATH, 0.6f, 0.6f);
}
@EventHandler
public void Energy(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
for (Player cur : GetUsers())
{
if (!_active.contains(cur))
continue;
if (!cur.isBlocking())
{
_active.remove(cur);
continue;
}
//Level
int level = getLevel(cur);
if (level == 0)
{
_active.remove(cur);
continue;
}
if (!Factory.Energy().Use(cur, GetName(), 2 - (level * 0.1), true, true))
{
_active.remove(cur);
continue;
}
//Effect
cur.getWorld().playEffect(cur.getLocation(), Effect.STEP_SOUND, 42);
//Pull
for (int i=0 ; i<=4 + (2*level) ; i++)
Pull(cur, cur.getEyeLocation().add(cur.getLocation().getDirection().multiply(i)));
}
}
public void Pull(Player player, Location loc)
{
for (Entity other : player.getWorld().getEntities())
{
if (!(other instanceof LivingEntity) && !(other instanceof Item))
continue;
if (player.equals(other))
continue;
if (UtilMath.offset(player, other) < 2 || UtilMath.offset(loc, other.getLocation()) > 2 + ((getLevel(player) * 0.5)))
continue;
if (other instanceof Player)
{
if (!Factory.Relation().CanHurt(player, (Player)other))
continue;
}
UtilAction.velocity(other, UtilAlg.getTrajectory2d(other, player),
0.2, false, 0, 0, 1, true);
}
}
@Override
public void Reset(Player player)
{
_active.remove(player);
}
}

View File

@ -1,142 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem;
import java.util.HashSet;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilMath;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class MagneticPull extends SkillActive
{
private HashSet<Player> _active = new HashSet<Player>();
public MagneticPull(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
}
@Override
public String GetEnergyString()
{
return "Energy: 16 per Second";
}
@Override
public boolean CustomCheck(Player player, int level)
{
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
return false;
}
return true;
}
@Override
public void Skill(Player player, int level)
{
_active.add(player);
player.getWorld().playSound(player.getLocation(), Sound.IRONGOLEM_DEATH, 0.6f, 0.6f);
}
@EventHandler
public void Energy(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
for (Player cur : GetUsers())
{
if (!_active.contains(cur))
continue;
if (!cur.isBlocking())
{
_active.remove(cur);
continue;
}
//Level
int level = GetLevel(cur);
if (level == 0)
{
_active.remove(cur);
continue;
}
if (!Factory.Energy().use(cur, GetName(), 2 - (level * 0.1), true, true))
{
_active.remove(cur);
continue;
}
//Effect
cur.getWorld().playEffect(cur.getLocation(), Effect.STEP_SOUND, 42);
//Pull
for (int i=0 ; i<=4 + (2*level) ; i++)
Pull(cur, cur.getEyeLocation().add(cur.getLocation().getDirection().multiply(i)));
}
}
public void Pull(Player player, Location loc)
{
for (Entity other : player.getWorld().getEntities())
{
if (!(other instanceof LivingEntity) && !(other instanceof Item))
continue;
if (player.equals(other))
continue;
if (UtilMath.offset(player, other) < 2 || UtilMath.offset(loc, other.getLocation()) > 2 + ((GetLevel(player) * 0.5)))
continue;
if (other instanceof Player)
{
if (!Factory.Relation().CanHurt(player, (Player)other))
continue;
}
UtilAction.velocity(other, UtilAlg.getTrajectory2d(other, player),
0.2, false, 0, 0, 1, true);
}
}
@Override
public void Reset(Player player)
{
_active.remove(player);
}
}

View File

@ -1,98 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.block.Action;
import org.bukkit.util.Vector;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilMath;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class MagneticRepel extends SkillActive
{
public MagneticRepel(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
}
@Override
public boolean CustomCheck(Player player, int level)
{
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
return false;
}
return true;
}
@Override
public void Skill(Player player, int level)
{
//Repel
for (Entity other : player.getWorld().getEntities())
{
if (!(other instanceof LivingEntity))
continue;
if (player.equals(other))
continue;
double offset = UtilMath.offset(player, other);
double maxOffset = 6 + (level * 2);
if (offset > maxOffset)
continue;
if (other instanceof Player)
{
if (!Factory.Relation().CanHurt(player, (Player)other))
continue;
}
double power = 0.5 + (0.5 *((maxOffset - offset) / maxOffset));
Vector vel = UtilAlg.getTrajectory(player, other);
vel.setY(Math.min(0.3, vel.getY()));
vel.normalize();
UtilAction.velocity(other, vel,
power * (2 + (level * 0.5)), false, 0, 0.8, 0.8, true);
}
//Inform
UtilPlayer.message(player, F.main(GetClassType().name(), "You used " + F.skill(GetName(level)) + "."));
//Sound
for (int i=0 ; i<3 ; i++)
player.getWorld().playSound(player.getLocation(), Sound.FIZZ, 2f, 0.6f);
player.getWorld().playSound(player.getLocation(), Sound.IRONGOLEM_DEATH, 2f, 2f);
}
@Override
public void Reset(Player player)
{
}
}

View File

@ -1,211 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilTime;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class Needler extends SkillActive
{
private HashMap<Player, Integer> _stored = new HashMap<Player, Integer>();
private HashMap<Player, Long> _fired = new HashMap<Player, Long>();
private HashSet<Arrow> _arrows = new HashSet<Arrow>();
private boolean _tick = false;
public Needler(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
}
@Override
public boolean CustomCheck(Player player, int level)
{
return true;
}
@Override
public void Skill(Player player, int level)
{
}
@EventHandler
public void Update(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
_tick = !_tick;
if (_tick)
return;
for (Player cur : GetUsers())
{
if (!cur.isBlocking())
continue;
//Level
int level = getLevel(cur);
if (level == 0)
continue;
//Water
if (cur.getLocation().getBlock().isLiquid())
{
UtilPlayer.message(cur, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in liquids."));
continue;
}
//Use Charge
if (!UseCharge(cur))
continue;
//Use Energy
Factory.Energy().Use(cur, GetName(), 3 - (0.2 * level), true, false);
Arrow arrow = cur.getWorld().spawnArrow(cur.getEyeLocation().add(cur.getLocation().getDirection()),
cur.getLocation().getDirection(), 1.6f + (level * 0.4f), 2);
arrow.setShooter(cur);
_arrows.add(arrow);
//Set Fired
_fired.put(cur, System.currentTimeMillis());
//Sound
cur.getWorld().playSound(cur.getLocation(), Sound.SPIDER_IDLE, 0.8f, 2f);
}
}
@EventHandler(priority = EventPriority.LOW)
public void Damage(CustomDamageEvent event)
{
if (event.GetCause() != DamageCause.PROJECTILE)
return;
Projectile projectile = event.GetProjectile();
if (projectile == null) return;
if (!_arrows.remove(projectile))
return;
Player damager = event.GetDamagerPlayer(true);
if (damager == null) return;
LivingEntity damagee = event.GetDamageeEntity();
if (damagee == null) return;
event.SetCancelled(GetName());
//Damage Event
Factory.Damage().NewDamageEvent(damagee, damager, null,
DamageCause.THORNS, 2, true, true, false,
damager.getName(), GetName());
Factory.Condition().Factory().Poison(GetName(), damagee, damager, 2, 0, false, true);
}
public boolean UseCharge(Player player)
{
if (!_stored.containsKey(player))
return false;
int charges = _stored.get(player);
if (charges <= 0)
return false;
_stored.put(player, charges-1);
player.setLevel(charges-1);
return true;
}
@EventHandler
public void Recharge(UpdateEvent event)
{
for (Player cur : GetUsers())
if (!_stored.containsKey(cur))
{
_stored.put(cur, 0);
}
else
{
//Dont recharge while firing
if (_fired.containsKey(cur))
if (!UtilTime.elapsed(_fired.get(cur), 1000 - (getLevel(cur) * 50)))
continue;
int charges = _stored.get(cur);
if (charges >= 3 + (1 * getLevel(cur)))
continue;
if (!Recharge.Instance.use(cur, GetName() + " Recharge", 100 - (getLevel(cur) * 10), false))
continue;
charges += 1;
_stored.put(cur, charges);
cur.setLevel(charges);
}
}
@EventHandler
public void Clean(UpdateEvent event)
{
if (event.getType() != UpdateType.SEC)
return;
for (Iterator<Arrow> arrowIterator = _arrows.iterator(); arrowIterator.hasNext();)
{
Arrow arrow = arrowIterator.next();
if (arrow.isDead() || !arrow.isValid() || arrow.getTicksLived() > 300)
{
arrowIterator.remove();
arrow.remove();
}
}
}
@Override
public void Reset(Player player)
{
_stored.remove(player);
_fired.remove(player);
}
}

View File

@ -1,211 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilTime;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class Needler extends SkillActive
{
private HashMap<Player, Integer> _stored = new HashMap<Player, Integer>();
private HashMap<Player, Long> _fired = new HashMap<Player, Long>();
private HashSet<Arrow> _arrows = new HashSet<Arrow>();
private boolean _tick = false;
public Needler(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
}
@Override
public boolean CustomCheck(Player player, int level)
{
return true;
}
@Override
public void Skill(Player player, int level)
{
}
@EventHandler
public void Update(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
_tick = !_tick;
if (_tick)
return;
for (Player cur : GetUsers())
{
if (!cur.isBlocking())
continue;
//Level
int level = GetLevel(cur);
if (level == 0)
continue;
//Water
if (cur.getLocation().getBlock().isLiquid())
{
UtilPlayer.message(cur, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in liquids."));
continue;
}
//Use Charge
if (!UseCharge(cur))
continue;
//Use Energy
Factory.Energy().use(cur, GetName(), 3 - (0.2 * level), true, false);
Arrow arrow = cur.getWorld().spawnArrow(cur.getEyeLocation().add(cur.getLocation().getDirection()),
cur.getLocation().getDirection(), 1.6f + (level * 0.4f), 2);
arrow.setShooter(cur);
_arrows.add(arrow);
//Set Fired
_fired.put(cur, System.currentTimeMillis());
//Sound
cur.getWorld().playSound(cur.getLocation(), Sound.SPIDER_IDLE, 0.8f, 2f);
}
}
@EventHandler(priority = EventPriority.LOW)
public void Damage(CustomDamageEvent event)
{
if (event.GetCause() != DamageCause.PROJECTILE)
return;
Projectile projectile = event.GetProjectile();
if (projectile == null) return;
if (!_arrows.remove(projectile))
return;
Player damager = event.GetDamagerPlayer(true);
if (damager == null) return;
LivingEntity damagee = event.GetDamageeEntity();
if (damagee == null) return;
event.SetCancelled(GetName());
//Damage Event
Factory.Damage().NewDamageEvent(damagee, damager, null,
DamageCause.THORNS, 2, true, true, false,
damager.getName(), GetName());
Factory.Condition().Factory().Poison(GetName(), damagee, damager, 2, 0, false, true);
}
public boolean UseCharge(Player player)
{
if (!_stored.containsKey(player))
return false;
int charges = _stored.get(player);
if (charges <= 0)
return false;
_stored.put(player, charges-1);
player.setLevel(charges-1);
return true;
}
@EventHandler
public void Recharge(UpdateEvent event)
{
for (Player cur : GetUsers())
if (!_stored.containsKey(cur))
{
_stored.put(cur, 0);
}
else
{
//Dont recharge while firing
if (_fired.containsKey(cur))
if (!UtilTime.elapsed(_fired.get(cur), 1000 - (GetLevel(cur) * 50)))
continue;
int charges = _stored.get(cur);
if (charges >= 3 + (1 * GetLevel(cur)))
continue;
if (!Recharge.Instance.use(cur, GetName() + " Recharge", 100 - (GetLevel(cur) * 10), false))
continue;
charges += 1;
_stored.put(cur, charges);
cur.setLevel(charges);
}
}
@EventHandler
public void Clean(UpdateEvent event)
{
if (event.getType() != UpdateType.SEC)
return;
for (Iterator<Arrow> arrowIterator = _arrows.iterator(); arrowIterator.hasNext();)
{
Arrow arrow = arrowIterator.next();
if (arrow.isDead() || !arrow.isValid() || arrow.getTicksLived() > 300)
{
arrowIterator.remove();
arrow.remove();
}
}
}
@Override
public void Reset(Player player)
{
_stored.remove(player);
_fired.remove(player);
}
}

View File

@ -1,89 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilTime;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class Pounce extends SkillActive
{
public Pounce(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
}
@Override
public boolean CustomCheck(Player player, int level)
{
return true;
}
@EventHandler(priority = EventPriority.LOW)
public void EndDamager(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
return;
Player damager = event.GetDamagerPlayer(true);
if (damager == null) return;
int level = getLevel(damager);
if (level == 0) return;
event.SetCancelled(GetName());
Skill(damager, level);
}
@Override
public void Skill(Player player, int level)
{
if (player.getLocation().getBlock().isLiquid())
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in liquids."));
return;
}
if (UtilTime.elapsed(Factory.Movement().Get(player).LastGrounded, 1000))
{
UtilPlayer.message(player, F.main(GetClassType().name(), "You cannot use " + F.skill(GetName()) + " while airborne."));
}
//Action
UtilAction.velocity(player, 0.7 + (0.1 * level), 0.2, 0.8, true);
//Effect
player.getWorld().playSound(player.getLocation(), Sound.SPIDER_DEATH, 0.5f, 2f);
}
@Override
public void Reset(Player player)
{
}
}

View File

@ -1,66 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
import org.bukkit.ChatColor;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
public class SpiderForm extends FormBase
{
public SpiderForm(SkillFactory skills, String name, ClassType classType,
SkillType skillType, int cost, int levels)
{
super(skills, name, classType, skillType, cost, levels,
EntityType.SPIDER, new String[]
{
"Venomous Spines",
"Spin Web",
"Pounce"
});
SetDesc(new String[]
{
ChatColor.WHITE + "Passives:",
"* Slow II",
"",
"",
ChatColor.WHITE + "Attack: " + ChatColor.GREEN + "Pounce",
"Pounce with 0.7 + 0.1pL Velocity",
"",
"",
ChatColor.WHITE + "Sword Skill: " + ChatColor.GREEN + "Needler",
"Spit out a flurry of needles;",
"* Capacity of 3 + 1pL",
"",
"",
ChatColor.WHITE + "Axe Skill: " + ChatColor.GREEN + "Spin Web",
"Spin a temporary web;",
"* Lasts 5 + 1pL seconds"
});
}
@Override
public void UnapplyMorph(Player player)
{
Factory.Condition().EndCondition(player, null, GetName());
}
@EventHandler
public void Update(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (Player cur : GetMorphedUsers())
{
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 0, false, false);
Factory.Condition().Factory().Slow(GetName(), cur, cur, 1.9, 0, false, false, false);
}
}
}

View File

@ -1,110 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider;
import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilBlock;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class SpinWeb extends SkillActive
{
public SpinWeb(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
}
@Override
@EventHandler(priority = EventPriority.LOW)
public void Interact(PlayerInteractEvent event)
{
Player player = event.getPlayer();
//Check Block
if (UtilBlock.usable(event.getClickedBlock()))
return;
//Check Action
if (!_actionSet.contains(event.getAction()))
return;
//Check Material
if (!_itemSet.contains(player.getItemInHand().getType()))
return;
//Level
int level = getLevel(player);
if (level <= 0) return;
if (!CustomCheck(player, level))
return;
//Unique Weapon
if (player.getItemInHand().getEnchantments().containsKey(Enchantment.ARROW_DAMAGE))
return;
//Block
Block block = event.getClickedBlock();
if (block == null) return;
block = block.getRelative(event.getBlockFace());
//Check Energy
if (!Factory.Energy().Use(player, GetName(), 20 - (level * 2), true, true))
return;
//Block
Factory.BlockRestore().Add(block, 30, (byte)0, 5000 + (1000 * level));
//Effect
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, 30);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.SPIDER_IDLE, 1f, 0.3f);
}
@Override
public boolean CustomCheck(Player player, int level)
{
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
return false;
}
return true;
}
@Override
public void Skill(Player player, int level)
{
}
@Override
public void Reset(Player player)
{
}
}

View File

@ -1,119 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid;
import org.bukkit.Effect;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.common.util.UtilBlock;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class Construction extends SkillActive
{
public Construction(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
}
@Override
@EventHandler(priority = EventPriority.LOW)
public void Interact(PlayerInteractEvent event)
{
Player player = event.getPlayer();
//Check Block
if (UtilBlock.usable(event.getClickedBlock()))
return;
//Check Action
if (!_actionSet.contains(event.getAction()))
return;
//Check Material
if (!_itemSet.contains(player.getItemInHand().getType()))
return;
//Level
int level = getLevel(player);
if (level <= 0) return;
if (!CustomCheck(player, level))
return;
//Unique Weapon
if (player.getItemInHand().getEnchantments().containsKey(Enchantment.ARROW_DAMAGE))
return;
//Block
Block block = event.getClickedBlock();
if (block == null) return;
if (event.getAction() == Action.RIGHT_CLICK_BLOCK)
block = block.getRelative(event.getBlockFace());
if (block.getTypeId() != 8 && block.getTypeId() != 9 && event.getAction() == Action.RIGHT_CLICK_BLOCK)
return;
if (block.getTypeId() != 79 && event.getAction() == Action.LEFT_CLICK_BLOCK)
return;
//Check Energy
if (!Factory.Energy().Use(player, GetName(), 12 - (level * 2), true, true))
return;
//Block
if (block.getTypeId() == 79)
{
block.setTypeId(8);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.SPLASH, 0.5f, 0.5f);
}
else
{
block.setTypeId(79);
//Sound
player.getWorld().playSound(player.getLocation(), Sound.ORB_PICKUP, 0.5f, 3f);
}
//Effect
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, 80);
}
@Override
public boolean CustomCheck(Player player, int level)
{
return true;
}
@Override
public void Skill(Player player, int level)
{
}
@Override
public void Reset(Player player)
{
}
}

View File

@ -1,118 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid;
import java.util.HashMap;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilTime;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class Propel extends SkillActive
{
private HashMap<Player, Long> _active = new HashMap<Player, Long>();
public Propel(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
SetDesc(new String[]
{
""
});
}
@Override
public boolean CustomCheck(Player player, int level)
{
if (!player.getLocation().getBlock().isLiquid())
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " out of water."));
return false;
}
return true;
}
@Override
public void Skill(Player player, int level)
{
//Velocity
UtilAction.velocity(player, 0.6 + (0.2 * level), 0.2, 2, false);
//Store
_active.put(player, System.currentTimeMillis());
//Sound
player.getWorld().playSound(player.getLocation(), Sound.SPLASH2, 1.5f, 1.5f);
}
@EventHandler
public void Reuse(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
for (Player cur : GetUsers())
{
if (!_active.containsKey(cur))
continue;
if (!cur.isBlocking())
{
_active.remove(cur);
continue;
}
//Level
int level = getLevel(cur);
if (level == 0)
{
_active.remove(cur);
continue;
}
//Time
if (!UtilTime.elapsed(_active.get(cur), 400))
continue;
if (!cur.getLocation().getBlock().isLiquid())
continue;
//Thrust
UtilAction.velocity(cur, 0.3 + (0.1 * level), 0.1, 2, false);
//Store
_active.put(cur, System.currentTimeMillis());
//Sound
cur.getWorld().playSound(cur.getLocation(), Sound.SPLASH2, 0.5f, 1f);
}
}
@Override
public void Reset(Player player)
{
_active.remove(player);
}
}

View File

@ -1,115 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilServer;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
import org.bukkit.ChatColor;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.util.Vector;
public class SquidForm extends FormBase
{
public SquidForm(SkillFactory skills, String name, ClassType classType,
SkillType skillType, int cost, int levels)
{
super(skills, name, classType, skillType, cost, levels,
EntityType.SQUID, new String[]
{
"Propel",
"Ice Construction"
});
SetDesc(new String[]
{
ChatColor.WHITE + "Passives:",
"* Unlimited Air",
"* Protection II",
"",
"",
ChatColor.WHITE + "Attack: " + ChatColor.GREEN + "Suffocate",
"* Target has 1.5 second of air removed",
"* Target is pushed downward slightly",
"",
"",
ChatColor.WHITE + "Sword Skill: " + ChatColor.GREEN + "Swim",
"Push Block to thrust forwards;",
"* Velocity of 0.6 + 0.2pL",
"",
"Hold Block to swim;",
"* Velocity of 0.3 + 0.1pL",
"",
"",
ChatColor.WHITE + "Axe Skill: " + ChatColor.GREEN + "Ice Construction",
"Right-Click to freeze water",
"Left-Click to melt ice"
});
}
@EventHandler
public void Unmorph(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
for (Player cur : UtilServer.getPlayers())
{
if (!IsMorphed(cur))
continue;
if (UtilEnt.isGrounded(cur) && !cur.getLocation().getBlock().isLiquid())
Unmorph(cur);
}
}
@Override
public void UnapplyMorph(Player player)
{
Factory.Condition().EndCondition(player, null, GetName());
}
@EventHandler(priority = EventPriority.HIGH)
public void Attack(CustomDamageEvent event)
{
if (event.IsCancelled())
return;
if (event.GetCause() != DamageCause.ENTITY_ATTACK)
return;
Player damager = event.GetDamagerPlayer(false);
if (damager == null) return;
if (!IsMorphed(damager))
return;
event.SetKnockback(false);
//Attack
event.GetDamageeEntity().setRemainingAir(Math.max(0, event.GetDamageeEntity().getRemainingAir() - 30));
event.GetDamageeEntity().setVelocity(new Vector(0, -0.5, 0));
}
@EventHandler
public void Update(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (Player cur : GetMorphedUsers())
{
cur.setRemainingAir(cur.getMaximumAir());
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 1, false, false);
}
}
}

View File

@ -1,64 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Wolf;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.FormBase;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
public class WolfForm extends FormBase
{
public WolfForm(SkillFactory skills, String name, ClassType classType,
SkillType skillType, int cost, int levels)
{
super(skills, name, classType, skillType, cost, levels,
EntityType.WOLF, new String[]
{
//skills.GetSkill("Magnetic Pull"),
//skills.GetSkill("Magnetic Repel")
});
SetDesc(new String[]
{
"Dire Wolf Form (Harass / Ganking);",
"* Speed I",
"* Protection I",
"* Regeneration I",
"",
"",
"Axe Skill: Howl",
"Nearby allies receive;",
"* Speed III for 3 + 1pL seconds",
"",
"",
"Sword Skill: Bite",
"Hold Block to bite target;",
"* Slow IV for 2 seconds",
"* You are pulled along with target"
});
}
@Override
public void UnapplyMorph(Player player)
{
Factory.Condition().EndCondition(player, null, GetName());
}
@EventHandler
public void Update(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (Player cur : GetMorphedUsers())
{
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 0, false, false);
Factory.Condition().Factory().Speed(GetName(), cur, cur, 1.9, 0, false, false);
Factory.Condition().Factory().Regen(GetName(), cur, cur, 1.9, 0, false, false);
}
}
}

View File

@ -1,146 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter;
import java.util.HashSet;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.common.util.F;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
public class Polysmash extends SkillActive
{
private HashSet<Player> _used = new HashSet<Player>();
public Polysmash(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
SetDesc(new String[]
{
"Turn target enemy into a sheep",
"for 6 seconds. While in sheep form,",
"players have Slow and Silence."
});
}
@Override
public boolean CustomCheck(Player player, int level)
{
if (_used.contains(player))
return false;
return true;
}
@Override
public void Skill(Player player, int level)
{
//Inform
UtilPlayer.message(player, F.main(GetClassType().name(), "You missed " + F.skill(GetName()) + "."));
}
@EventHandler
public void Miss(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
_used.clear();
}
public boolean CanUse(Player player)
{
int level = getLevel(player);
if (level == 0)
return false;
//Check Material
if (!_itemSet.contains(player.getItemInHand().getType()))
return false;
//Check Allowed
SkillTriggerEvent trigger = new SkillTriggerEvent(player, GetName(), GetClassType());
UtilServer.getServer().getPluginManager().callEvent(trigger);
if (trigger.IsCancelled())
return false;
//Check Energy/Recharge
if (!EnergyRechargeCheck(player, level))
return false;
//Allow
return true;
}
@EventHandler
public void Hit(PlayerInteractEntityEvent event)
{
Player player = event.getPlayer();
//Level
int level = getLevel(player);
if (level == 0) return;
if (!CanUse(player))
return;
if (event.getRightClicked() == null)
return;
if (!(event.getRightClicked() instanceof LivingEntity))
return;
LivingEntity ent = (LivingEntity)event.getRightClicked();
if (UtilMath.offset(player, ent) > 3)
{
UtilPlayer.message(player, F.main(GetClassType().name(), "You missed " + F.skill(GetName()) + "."));
return;
}
//Set Used
_used.add(player);
//Condition
Factory.Condition().Factory().Slow(GetName(), ent, player, 5, 0, false, true, false, false);
Factory.Condition().Factory().Silence(GetName(), ent, player, 5, false, true);
//Effect
ent.getWorld().playSound(ent.getLocation(), Sound.SHEEP_IDLE, 2f, 1f);
ent.getWorld().playSound(ent.getLocation(), Sound.SHEEP_IDLE, 2f, 1f);
//Inform
UtilPlayer.message(player, F.main(GetClassType().name(), "You used " + F.skill(GetName()) + "."));
UtilPlayer.message(ent, F.main(GetClassType().name(), F.name(player.getName()) + " hit you with " + F.skill(GetName(level)) + "."));
}
@Override
public void Reset(Player player)
{
_used.remove(player);
}
}

View File

@ -1,56 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.PlayerInventory;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.minecraft.game.classcombat.Skill.Skill;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class Shifter extends Skill
{
public Shifter(SkillFactory skills, String name, ClassType classType, SkillType skillType, int cost, int levels)
{
super(skills, name, classType, skillType, cost, levels);
SetDesc(new String[]
{
"Permanent Protection II."
});
}
@EventHandler
public void Update(UpdateEvent event)
{
if (event.getType() == UpdateType.FAST)
for (Player cur : GetUsers())
Factory.Condition().Factory().Protection(GetName(), cur, cur, 1.9, 1, false, false, false);
if (event.getType() == UpdateType.SLOWER)
for (Player cur : GetUsers())
{
PlayerInventory inv = cur.getInventory();
if (inv.getHelmet() != null && inv.getHelmet().getDurability() > 0)
inv.getHelmet().setDurability((short) (inv.getHelmet().getDurability()-1));
if (inv.getChestplate() != null && inv.getChestplate().getDurability() > 0)
inv.getChestplate().setDurability((short) (inv.getChestplate().getDurability()-1));
if (inv.getLeggings() != null && inv.getLeggings().getDurability() > 0)
inv.getLeggings().setDurability((short) (inv.getLeggings().getDurability()-1));
if (inv.getBoots() != null && inv.getBoots().getDurability() > 0)
inv.getBoots().setDurability((short) (inv.getBoots().getDurability()-1));
}
}
@Override
public void Reset(Player player)
{
}
}

View File

@ -1,170 +0,0 @@
package mineplex.minecraft.game.classcombat.Skill.Shifter;
import java.util.HashMap;
import java.util.HashSet;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import mineplex.minecraft.game.classcombat.Class.IPvpClass.ClassType;
import mineplex.core.common.util.F;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilMath;
import mineplex.minecraft.game.classcombat.Skill.SkillActive;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
public class TreeShift extends SkillActive
{
private HashMap<Location, Long> trees = new HashMap<Location, Long>();
public TreeShift(SkillFactory skills, String name, ClassType classType, SkillType skillType,
int cost, int levels,
int energy, int energyMod,
long recharge, long rechargeMod, boolean rechargeInform,
Material[] itemArray,
Action[] actionArray)
{
super(skills, name, classType, skillType,
cost, levels,
energy, energyMod,
recharge, rechargeMod, rechargeInform,
itemArray,
actionArray);
SetDesc(new String[]
{
"Creates an illusionary tree at target location.",
"Other players cannot attack or see through it.",
"You view it as a sapling, and can attack over it.",
"Lasts 2 + 2pL seconds."
});
}
@Override
public boolean CustomCheck(Player player, int level)
{
if (player.getLocation().getBlock().getTypeId() == 8 || player.getLocation().getBlock().getTypeId() == 9)
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " in water."));
return false;
}
Block block = player.getTargetBlock(null, 0);
if (UtilMath.offset(block.getLocation().add(0.5, 0.5, 0.5), player.getLocation()) > 8 + level)
{
UtilPlayer.message(player, F.main("Skill", "You cannot use " + F.skill(GetName()) + " so far away."));
return false;
}
return true;
}
@Override
public void Skill(Player player, int level)
{
HashMap<Location, Material> tree = new HashMap<Location, Material>();
Block block = player.getTargetBlock(null, 0);
//Show to Player
final Player fPlayer = player;
final Location fLoc = block.getLocation().add(0, 1, 0);
UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Factory.GetPlugin(), new Runnable()
{
public void run()
{
fPlayer.sendBlockChange(fLoc, 6, (byte)0);
}
}, 0);
//Generate Tree
for (int i=0 ; i<6 ; i++)
{
block = block.getRelative(BlockFace.UP);
if (block.getTypeId() != 0)
{
block = block.getRelative(BlockFace.DOWN);
break;
}
tree.put(block.getLocation(), Material.LOG);
}
if (tree.size() > 5)
{
for (Block leaf : UtilBlock.getInRadius(block.getLocation(), 2.5d).keySet())
{
if (!tree.containsKey(leaf.getLocation()) && leaf.getTypeId() == 0)
{
tree.put(leaf.getLocation(), Material.LEAVES);
}
}
}
//Show Tree
for (Location loc : tree.keySet())
{
trees.put(loc, System.currentTimeMillis() + (2000 + (2000 * level)));
for (Player other : player.getWorld().getPlayers())
{
if (other.equals(player))
continue;
other.sendBlockChange(loc, tree.get(loc), (byte)0);
if (tree.get(loc) == Material.LOG)
other.playEffect(loc, Effect.STEP_SOUND, 17);
}
}
//Inform
UtilPlayer.message(player, F.main(GetClassType().name(), "You used " + F.skill(GetName(level)) + "."));
}
@EventHandler
public void Detree(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
if (trees.isEmpty())
return;
HashSet<Location> remove = new HashSet<Location>();
for (Location loc : trees.keySet())
{
if (System.currentTimeMillis() > trees.get(loc))
remove.add(loc);
}
for (Location loc : remove)
{
for (Player player : loc.getWorld().getPlayers())
player.sendBlockChange(loc, 0, (byte)0);
trees.remove(loc);
}
}
@Override
public void Reset(Player player)
{
}
}

View File

@ -23,19 +23,6 @@ import mineplex.minecraft.game.classcombat.Skill.Knight.*;
import mineplex.minecraft.game.classcombat.Skill.Mage.*;
import mineplex.minecraft.game.classcombat.Skill.Mage.Void;
import mineplex.minecraft.game.classcombat.Skill.Ranger.*;
import mineplex.minecraft.game.classcombat.Skill.Shifter.*;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken.ChickenForm;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Chicken.Flap;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem.GolemForm;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem.MagneticPull;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Golem.MagneticRepel;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider.Needler;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider.Pounce;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider.SpiderForm;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Spider.SpinWeb;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid.Construction;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid.Propel;
import mineplex.minecraft.game.classcombat.Skill.Shifter.Forms.Squid.SquidForm;
import mineplex.minecraft.game.classcombat.Skill.repository.SkillRepository;
import mineplex.minecraft.game.classcombat.Skill.repository.token.SkillToken;
import mineplex.minecraft.game.core.IRelation;
@ -509,99 +496,6 @@ public class SkillFactory extends MiniPlugin implements ISkillFactory
//AddSkill(new Fletcher(this, "Fletcher", ClassType.Ranger, SkillType.PassiveB, 5, 3));
}
public void AddShifter()
{
AddSkill(new Shifter(this, "Shifter Class", ClassType.Shifter, SkillType.Class, 0, 1));
//Axe
AddSkill(new TreeShift(this, "Tree Shift", ClassType.Shifter, SkillType.Axe,
0, 1,
40, 0,
4000, 0, true,
new Material[] {Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
//Sword
AddSkill(new Polysmash(this, "Polysmash", ClassType.Shifter, SkillType.Sword,
0, 1,
30, 0,
16000, 0, true,
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
//CHICKEN=========================================================================================
AddSkill(new ChickenForm(this, "Chicken Form", ClassType.Shifter, SkillType.PassiveB, 0, 5));
AddSkill(new Flap(this, "Flap", ClassType.Shifter, SkillType.Sword,
0, 1,
5, 0,
0, 0, true,
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
//SQUID=========================================================================================
AddSkill(new SquidForm(this, "Squid Form", ClassType.Shifter, SkillType.PassiveB, 0, 5));
AddSkill(new Propel(this, "Propel", ClassType.Shifter, SkillType.Sword,
0, 1,
12, 0,
250, 0, false,
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
AddSkill(new Construction(this, "Ice Construction", ClassType.Shifter, SkillType.Axe,
0, 1,
8, 0,
0, 0, true,
new Material[] {Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
new Action[] {Action.LEFT_CLICK_BLOCK, Action.RIGHT_CLICK_BLOCK}));
//GOLEM=========================================================================================
AddSkill(new GolemForm(this, "Magnetic Golem Form", ClassType.Shifter, SkillType.PassiveA, 0, 5));
AddSkill(new MagneticPull(this, "Magnetic Pull", ClassType.Shifter, SkillType.Sword,
0, 1,
0, 0,
0, 0, true,
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
AddSkill(new MagneticRepel(this, "Magnetic Repel", ClassType.Shifter, SkillType.Axe,
0, 1,
60, 0,
30000, -3000, true,
new Material[] {Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
//SPIDER=========================================================================================
AddSkill(new SpiderForm(this, "Spitting Spider Form", ClassType.Shifter, SkillType.PassiveA, 0, 5));
AddSkill(new Needler(this, "Needler", ClassType.Shifter, SkillType.Sword,
0, 1,
0, 0,
0, 0, true,
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD},
new Action[] {Action.RIGHT_CLICK_AIR, Action.RIGHT_CLICK_BLOCK}));
AddSkill(new SpinWeb(this, "Spin Web", ClassType.Shifter, SkillType.Axe,
0, 1,
20, -1,
0, 0, true,
new Material[] {Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
new Action[] {Action.RIGHT_CLICK_BLOCK}));
AddSkill(new Pounce(this, "Pounce", ClassType.Shifter, SkillType.PassiveB,
0, 1,
20, 0,
6000, 0, true,
new Material[] {Material.IRON_SWORD, Material.GOLD_SWORD, Material.DIAMOND_SWORD, Material.IRON_AXE, Material.GOLD_AXE, Material.DIAMOND_AXE},
new Action[] {Action.LEFT_CLICK_AIR, Action.LEFT_CLICK_BLOCK}));
}
public ISkill GetSkillBySalesPackageId(int id)
{
return _skillSalesPackageMap.get(id);

View File

@ -9,8 +9,8 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="Mineplex.Core" />
<orderEntry type="module" module-name="Mineplex.Core.Common" />
<orderEntry type="module" module-name="Mineplex.Minecraft.Game.ClassCombat" />
<orderEntry type="module" module-name="Mineplex.Minecraft.Game.Core" />
<orderEntry type="module" module-name="Mineplex.Minecraft.Game.ClassCombat" />
<orderEntry type="module" module-name="Nautilus.Core.CraftBukkit" />
<orderEntry type="library" name="craftbukkit" level="project" />
</component>