v1.4.0: wild magic and flurry now work properly with pushing effects
This commit is contained in:
+23
-1
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.mage;
|
|||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||||
@@ -126,6 +127,8 @@ public class WildMagic extends ArmorAbility {
|
|||||||
|
|
||||||
public static class WildMagicTracker extends FlavourBuff{};
|
public static class WildMagicTracker extends FlavourBuff{};
|
||||||
|
|
||||||
|
Actor wildMagicActor = null;
|
||||||
|
|
||||||
private void zapWand( ArrayList<Wand> wands, Hero hero, int cell){
|
private void zapWand( ArrayList<Wand> wands, Hero hero, int cell){
|
||||||
Wand cur = wands.remove(0);
|
Wand cur = wands.remove(0);
|
||||||
|
|
||||||
@@ -179,8 +182,27 @@ public class WildMagic extends ArmorAbility {
|
|||||||
cur.partialCharge++;
|
cur.partialCharge++;
|
||||||
cur.curCharges--;
|
cur.curCharges--;
|
||||||
}
|
}
|
||||||
|
if (wildMagicActor != null){
|
||||||
|
wildMagicActor.next();
|
||||||
|
wildMagicActor = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Char ch = Actor.findChar(target);
|
||||||
if (!wands.isEmpty() && hero.isAlive()) {
|
if (!wands.isEmpty() && hero.isAlive()) {
|
||||||
zapWand(wands, hero, target);
|
Actor.add(new Actor() {
|
||||||
|
{
|
||||||
|
actPriority = VFX_PRIO-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean act() {
|
||||||
|
wildMagicActor = this;
|
||||||
|
zapWand(wands, hero, ch == null ? target : ch.pos);
|
||||||
|
Actor.remove(this);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
hero.next();
|
||||||
} else {
|
} else {
|
||||||
if (hero.buff(WildMagicTracker.class) != null) {
|
if (hero.buff(WildMagicTracker.class) != null) {
|
||||||
hero.buff(WildMagicTracker.class).detach();
|
hero.buff(WildMagicTracker.class).detach();
|
||||||
|
|||||||
+22
-2
@@ -362,6 +362,7 @@ public class SpiritBow extends Weapon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int flurryCount = -1;
|
int flurryCount = -1;
|
||||||
|
Actor flurryActor = null;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cast(final Hero user, final int dst) {
|
public void cast(final Hero user, final int dst) {
|
||||||
@@ -388,7 +389,7 @@ public class SpiritBow extends Weapon {
|
|||||||
|
|
||||||
((MissileSprite) user.sprite.parent.recycle(MissileSprite.class)).
|
((MissileSprite) user.sprite.parent.recycle(MissileSprite.class)).
|
||||||
reset(user.sprite,
|
reset(user.sprite,
|
||||||
cell,
|
enemy.pos,
|
||||||
this,
|
this,
|
||||||
new Callback() {
|
new Callback() {
|
||||||
@Override
|
@Override
|
||||||
@@ -403,6 +404,11 @@ public class SpiritBow extends Weapon {
|
|||||||
sniperSpecial = false;
|
sniperSpecial = false;
|
||||||
flurryCount = -1;
|
flurryCount = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (flurryActor != null){
|
||||||
|
flurryActor.next();
|
||||||
|
flurryActor = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -411,7 +417,21 @@ public class SpiritBow extends Weapon {
|
|||||||
public void call() {
|
public void call() {
|
||||||
flurryCount--;
|
flurryCount--;
|
||||||
if (flurryCount > 0){
|
if (flurryCount > 0){
|
||||||
cast(user, dst);
|
Actor.add(new Actor() {
|
||||||
|
|
||||||
|
{
|
||||||
|
actPriority = VFX_PRIO-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean act() {
|
||||||
|
flurryActor = this;
|
||||||
|
cast(user, enemy.pos);
|
||||||
|
Actor.remove(this);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
curUser.next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user