v1.3.0: Added several new spell effect icons, and other small vfs tweaks
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 427 B After Width: | Height: | Size: 488 B |
@@ -34,7 +34,6 @@ public class Foresight extends FlavourBuff {
|
||||
|
||||
{
|
||||
type = buffType.POSITIVE;
|
||||
announced = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,7 +35,6 @@ public class MagicalSight extends FlavourBuff {
|
||||
|
||||
{
|
||||
type = buffType.POSITIVE;
|
||||
announced = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -34,7 +34,6 @@ public class MindVision extends FlavourBuff {
|
||||
|
||||
{
|
||||
type = buffType.POSITIVE;
|
||||
announced = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.ActionIndicator;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIcon;
|
||||
@@ -211,6 +212,7 @@ public class Momentum extends Buff implements ActionIndicator.Action {
|
||||
freerunCooldown = 10 + 4*momentumStacks;
|
||||
Sample.INSTANCE.play(Assets.Sounds.MISS, 1f, 0.8f);
|
||||
target.sprite.emitter().burst(Speck.factory(Speck.JET), 5+ momentumStacks);
|
||||
SpellSprite.show(target, SpellSprite.HASTE, 1, 1, 0);
|
||||
momentumStacks = 0;
|
||||
BuffIndicator.refreshHero();
|
||||
ActionIndicator.clearAction(this);
|
||||
|
||||
@@ -346,6 +346,7 @@ public enum Talent {
|
||||
//5/8 turns of recharging
|
||||
Buff.prolong( hero, Recharging.class, 2 + 3*(hero.pointsInTalent(ENERGIZING_MEAL)) );
|
||||
ScrollOfRecharging.charge( hero );
|
||||
SpellSprite.show(hero, SpellSprite.CHARGE);
|
||||
}
|
||||
if (hero.hasTalent(MYSTICAL_MEAL)){
|
||||
//3/5 turns of recharging
|
||||
@@ -354,6 +355,7 @@ public enum Talent {
|
||||
Buff.affect( hero, ArtifactRecharge.class).set(1 + 2*(hero.pointsInTalent(MYSTICAL_MEAL))).ignoreHornOfPlenty = foodSource instanceof HornOfPlenty;
|
||||
}
|
||||
ScrollOfRecharging.charge( hero );
|
||||
SpellSprite.show(hero, SpellSprite.CHARGE, 0, 1, 1);
|
||||
}
|
||||
if (hero.hasTalent(INVIGORATING_MEAL)){
|
||||
//effectively 1/2 turns of haste
|
||||
@@ -453,10 +455,12 @@ public enum Talent {
|
||||
if (cloak != null) {
|
||||
cloak.overCharge(1 + hero.pointsInTalent(MYSTICAL_UPGRADE));
|
||||
ScrollOfRecharging.charge(Dungeon.hero);
|
||||
SpellSprite.show(hero, SpellSprite.CHARGE);
|
||||
SpellSprite.show(hero, SpellSprite.CHARGE, 0, 1, 1);
|
||||
}
|
||||
} else {
|
||||
Buff.affect(hero, ArtifactRecharge.class).set( 2 + 4*hero.pointsInTalent(MYSTICAL_UPGRADE) ).ignoreHornOfPlenty = false;
|
||||
ScrollOfRecharging.charge(Dungeon.hero);
|
||||
SpellSprite.show(hero, SpellSprite.CHARGE, 0, 1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.ArmorAbili
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor;
|
||||
@@ -366,6 +367,7 @@ public class ElementalBlast extends ArmorAbility {
|
||||
//*** Wand of Magic Missile ***
|
||||
if (finalWandCls == WandOfMagicMissile.class) {
|
||||
Buff.affect(hero, Recharging.class, effectMulti* Recharging.DURATION / 2f);
|
||||
SpellSprite.show( hero, SpellSprite.CHARGE );
|
||||
|
||||
//*** Wand of Living Earth ***
|
||||
} else if (finalWandCls == WandOfLivingEarth.class && charsHit > 0){
|
||||
|
||||
@@ -149,6 +149,7 @@ public class Endure extends ArmorAbility {
|
||||
if (damageBonus > 0) {
|
||||
target.sprite.centerEmitter().start( Speck.factory( Speck.SCREAM ), 0.3f, 3 );
|
||||
Sample.INSTANCE.play(Assets.Sounds.CHALLENGE);
|
||||
SpellSprite.show(target, SpellSprite.BERSERK);
|
||||
} else {
|
||||
detach();
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ShieldBuff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Gold;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
@@ -93,7 +94,7 @@ public class Brute extends Mob {
|
||||
protected void triggerEnrage(){
|
||||
Buff.affect(this, BruteRage.class).setShield(HT/2 + 4);
|
||||
if (Dungeon.level.heroFOV[pos]) {
|
||||
sprite.showStatus( CharSprite.NEGATIVE, Messages.get(this, "enraged") );
|
||||
SpellSprite.show( this, SpellSprite.BERSERK);
|
||||
}
|
||||
spend( TICK );
|
||||
hasRaged = true;
|
||||
|
||||
@@ -36,9 +36,11 @@ public class SpellSprite extends Image {
|
||||
public static final int FOOD = 0;
|
||||
public static final int MAP = 1;
|
||||
public static final int CHARGE = 2;
|
||||
public static final int MASTERY = 3;
|
||||
public static final int BERSERK = 4;
|
||||
public static final int ANKH = 5;
|
||||
public static final int BERSERK = 3;
|
||||
public static final int ANKH = 4;
|
||||
public static final int HASTE = 5;
|
||||
public static final int VISION = 6;
|
||||
public static final int PURITY = 7;
|
||||
|
||||
private static final int SIZE = 16;
|
||||
|
||||
@@ -129,6 +131,10 @@ public class SpellSprite extends Image {
|
||||
}
|
||||
|
||||
public static void show( Char ch, int index ) {
|
||||
show(ch, index, 1, 1, 1);
|
||||
}
|
||||
|
||||
public static void show( Char ch, int index, float r, float g, float b ) {
|
||||
|
||||
if (!ch.sprite.visible) {
|
||||
return;
|
||||
@@ -142,6 +148,7 @@ public class SpellSprite extends Image {
|
||||
SpellSprite sprite = GameScene.spellSprite();
|
||||
sprite.target = ch;
|
||||
sprite.reset( index );
|
||||
sprite.hardlight(r, g, b);
|
||||
sprite.revive();
|
||||
all.put( ch, sprite );
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.items.potions;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Flare;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
public class PotionOfExperience extends Potion {
|
||||
@@ -36,6 +37,7 @@ public class PotionOfExperience extends Potion {
|
||||
public void apply( Hero hero ) {
|
||||
identify();
|
||||
hero.earnExp( hero.maxExp(), getClass() );
|
||||
new Flare( 6, 32 ).color(0xFFFF00, true).show( curUser.sprite, 2f );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.potions;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
@@ -40,6 +41,7 @@ public class PotionOfHaste extends Potion {
|
||||
|
||||
GLog.w( Messages.get(this, "energetic") );
|
||||
Buff.prolong( hero, Haste.class, Haste.DURATION);
|
||||
SpellSprite.show(hero, SpellSprite.HASTE, 1, 1, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
@@ -39,6 +40,7 @@ public class PotionOfMindVision extends Potion {
|
||||
public void apply( Hero hero ) {
|
||||
identify();
|
||||
Buff.affect( hero, MindVision.class, MindVision.DURATION );
|
||||
SpellSprite.show(hero, SpellSprite.VISION, 1, 0.77f, 0.9f);
|
||||
Dungeon.observe();
|
||||
|
||||
if (Dungeon.level.mobs.size() > 0) {
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.BArray;
|
||||
@@ -92,6 +93,7 @@ public class PotionOfPurity extends Potion {
|
||||
public void apply( Hero hero ) {
|
||||
GLog.w( Messages.get(this, "protected") );
|
||||
Buff.prolong( hero, BlobImmunity.class, BlobImmunity.DURATION );
|
||||
SpellSprite.show(hero, SpellSprite.PURITY);
|
||||
identify();
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LostInventory;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Flare;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||
@@ -48,6 +49,7 @@ public class PotionOfCleansing extends ExoticPotion {
|
||||
identify();
|
||||
|
||||
cleanse( hero );
|
||||
new Flare( 6, 32 ).color(0xFF4CD2, true).show( curUser.sprite, 2f );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Flare;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
||||
@@ -122,6 +123,7 @@ public class PotionOfDivineInspiration extends ExoticPotion {
|
||||
Sample.INSTANCE.play( Assets.Sounds.DRINK );
|
||||
Sample.INSTANCE.playDelayed(Assets.Sounds.LEVELUP, 0.3f, 0.7f, 1.2f);
|
||||
Sample.INSTANCE.playDelayed(Assets.Sounds.LEVELUP, 0.6f, 0.7f, 1.2f);
|
||||
new Flare( 6, 32 ).color(0xFFFF00, true).show( curUser.sprite, 2f );
|
||||
GLog.p(Messages.get(PotionOfDivineInspiration.class, "bonus"));
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSight;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
public class PotionOfMagicalSight extends ExoticPotion {
|
||||
@@ -37,6 +38,7 @@ public class PotionOfMagicalSight extends ExoticPotion {
|
||||
public void apply(Hero hero) {
|
||||
identify();
|
||||
Buff.affect(hero, MagicalSight.class, MagicalSight.DURATION);
|
||||
SpellSprite.show(hero, SpellSprite.VISION);
|
||||
Dungeon.observe();
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Stamina;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
public class PotionOfStamina extends ExoticPotion {
|
||||
@@ -37,6 +38,7 @@ public class PotionOfStamina extends ExoticPotion {
|
||||
identify();
|
||||
|
||||
Buff.affect(hero, Stamina.class, Stamina.DURATION);
|
||||
SpellSprite.show(hero, SpellSprite.HASTE, 0.5f, 1, 0.5f);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ public class ScrollOfRemoveCurse extends InventoryScroll {
|
||||
|
||||
@Override
|
||||
protected void onItemSelected(Item item) {
|
||||
new Flare( 6, 32 ).show( curUser.sprite, 2f ) ;
|
||||
new Flare( 6, 32 ).show( curUser.sprite, 2f );
|
||||
|
||||
boolean procced = uncurse( curUser, item );
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ public class ScrollOfAntiMagic extends ExoticScroll {
|
||||
public void doRead() {
|
||||
|
||||
Buff.affect( curUser, MagicImmune.class, MagicImmune.DURATION );
|
||||
new Flare( 5, 32 ).color( 0xFF0000, true ).show( curUser.sprite, 2f );
|
||||
new Flare( 5, 32 ).color( 0x00FF00, true ).show( curUser.sprite, 2f );
|
||||
|
||||
identify();
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@ public class ScrollOfForesight extends ExoticScroll {
|
||||
|
||||
@Override
|
||||
public void doRead() {
|
||||
SpellSprite.show( curUser, SpellSprite.MAP );
|
||||
Sample.INSTANCE.play( Assets.Sounds.READ );
|
||||
|
||||
Buff.affect(curUser, Foresight.class, Foresight.DURATION);
|
||||
|
||||
@@ -44,7 +44,7 @@ public class ScrollOfMysticalEnergy extends ExoticScroll {
|
||||
Sample.INSTANCE.play( Assets.Sounds.READ );
|
||||
Sample.INSTANCE.play( Assets.Sounds.CHARGEUP );
|
||||
|
||||
SpellSprite.show( curUser, SpellSprite.CHARGE );
|
||||
SpellSprite.show( curUser, SpellSprite.CHARGE, 0, 1, 1 );
|
||||
identify();
|
||||
ScrollOfRecharging.charge(curUser);
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ArtifactRecharge;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging;
|
||||
@@ -54,6 +55,7 @@ public class WildEnergy extends TargetedSpell {
|
||||
Sample.INSTANCE.play( Assets.Sounds.LIGHTNING );
|
||||
Sample.INSTANCE.play( Assets.Sounds.CHARGEUP );
|
||||
ScrollOfRecharging.charge(hero);
|
||||
SpellSprite.show(hero, SpellSprite.CHARGE);
|
||||
|
||||
hero.belongings.charge(1f);
|
||||
for (Buff b : hero.buffs()){
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Flare;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
public class Starflower extends Plant {
|
||||
@@ -41,8 +43,10 @@ public class Starflower extends Plant {
|
||||
|
||||
if (ch != null) {
|
||||
Buff.prolong(ch, Bless.class, Bless.DURATION);
|
||||
new Flare( 6, 32 ).color(0xFFFF00, true).show( ch.sprite, 2f );
|
||||
if (ch instanceof Hero && ((Hero) ch).subClass == HeroSubClass.WARDEN){
|
||||
Buff.prolong(ch, Recharging.class, Recharging.DURATION);
|
||||
SpellSprite.show( ch, SpellSprite.CHARGE );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user