Modify Barrage perk to support setting levels to indicate arrows

This commit is contained in:
libraryaddict 2014-11-29 16:38:54 +13:00
parent 6439fc93c2
commit e3b0843b2c
1 changed files with 214 additions and 192 deletions

View File

@ -40,14 +40,20 @@ public class PerkBarrage extends Perk
private long _tick;
private boolean _remove;
private boolean _noDelay;
private boolean _useExp;
public PerkBarrage(int max, long tick, boolean remove, boolean noDelay)
{
this(max, tick, remove, noDelay, false);
}
public PerkBarrage(int max, long tick, boolean remove, boolean noDelay, boolean useExpAndBar)
{
super("Barrage", new String[]
{
C.cYellow + "Charge" + C.cGray + " your Bow to use " + C.cGreen + "Barrage"
});
_useExp = useExpAndBar;
_max = max;
_tick = tick;
_remove = remove;
@ -115,6 +121,10 @@ public class PerkBarrage extends Perk
// No Longer Holding Bow
if (cur.getItemInHand() == null || cur.getItemInHand().getType() != Material.BOW)
{
if (_useExp)
{
cur.setLevel(_charge.get(cur));
}
_charge.remove(cur);
_chargeLast.remove(cur);
continue;
@ -122,6 +132,11 @@ public class PerkBarrage extends Perk
// Increase Charge
_charge.put(cur, _charge.get(cur) + 1);
if (_useExp)
{
cur.setLevel(_charge.get(cur));
}
_chargeLast.put(cur, System.currentTimeMillis());
// Effect
@ -184,6 +199,10 @@ public class PerkBarrage extends Perk
}
_charge.put(cur, arrows - 1);
if (_useExp)
{
cur.setLevel(_charge.get(cur));
}
// Fire Arrow
Vector random = new Vector((Math.random() - 0.5) / 10, (Math.random() - 0.5) / 10, (Math.random() - 0.5) / 10);
@ -195,6 +214,10 @@ public class PerkBarrage extends Perk
for (Player cur : remove)
{
if (_useExp)
{
cur.setLevel(0);
}
_charge.remove(cur);
_chargeLast.remove(cur);
_firing.remove(cur);
@ -226,9 +249,8 @@ public class PerkBarrage extends Perk
event.GetProjectile().remove();
// Damage Event
Manager.GetDamage().NewDamageEvent(event.GetDamageeEntity(), damager, null,
DamageCause.THORNS, event.GetDamage(), true, true, false,
damager.getName(), GetName());
Manager.GetDamage().NewDamageEvent(event.GetDamageeEntity(), damager, null, DamageCause.THORNS, event.GetDamage(), true,
true, false, damager.getName(), GetName());
}
@EventHandler