v1.3.0: Added several new spell effect icons, and other small vfs tweaks

This commit is contained in:
Evan Debenham
2022-04-25 14:36:48 -04:00
parent 7e4911effe
commit ede0439ab8
24 changed files with 47 additions and 12 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 427 B

After

Width:  |  Height:  |  Size: 488 B

View File

@@ -34,7 +34,6 @@ public class Foresight extends FlavourBuff {
{
type = buffType.POSITIVE;
announced = true;
}
@Override

View File

@@ -35,7 +35,6 @@ public class MagicalSight extends FlavourBuff {
{
type = buffType.POSITIVE;
announced = true;
}
@Override

View File

@@ -34,7 +34,6 @@ public class MindVision extends FlavourBuff {
{
type = buffType.POSITIVE;
announced = true;
}
@Override

View File

@@ -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);

View File

@@ -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);
}
}
}

View File

@@ -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){

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -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 );
}

View File

@@ -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

View File

@@ -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

View File

@@ -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) {

View File

@@ -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();
}

View File

@@ -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

View File

@@ -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"));
}

View File

@@ -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();
}

View File

@@ -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);
}
}

View File

@@ -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 );

View File

@@ -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();

View File

@@ -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);

View File

@@ -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);

View File

@@ -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()){

View File

@@ -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 );
}
}