v3.1.0: added unlock logic for hazard badge (debug only atm)
This commit is contained in:
@@ -533,6 +533,14 @@ public class Badges {
|
||||
|
||||
displayBadge( badge );
|
||||
}
|
||||
|
||||
public static void validateHazardAssists() {
|
||||
if (!DeviceCompat.isDebug()) return;
|
||||
if (!local.contains( Badge.PIRANHAS ) && Statistics.hazardAssistedKills >= 10) {
|
||||
local.add( Badge.ENEMY_HAZARDS );
|
||||
displayBadge( Badge.ENEMY_HAZARDS );
|
||||
}
|
||||
}
|
||||
|
||||
public static void validatePiranhasKilled() {
|
||||
Badge badge = null;
|
||||
|
||||
@@ -36,6 +36,7 @@ public class Statistics {
|
||||
public static int foodEaten;
|
||||
public static int itemsCrafted;
|
||||
public static int piranhasKilled;
|
||||
public static int hazardAssistedKills;
|
||||
public static int ankhsUsed;
|
||||
//tracks every item type 'seen' this run (i.e. would be added to catalogs)
|
||||
public static HashSet<Class> itemTypesDiscovered = new HashSet<>();
|
||||
@@ -82,6 +83,7 @@ public class Statistics {
|
||||
foodEaten = 0;
|
||||
itemsCrafted = 0;
|
||||
piranhasKilled = 0;
|
||||
hazardAssistedKills = 0;
|
||||
ankhsUsed = 0;
|
||||
itemTypesDiscovered.clear();
|
||||
|
||||
@@ -123,6 +125,7 @@ public class Statistics {
|
||||
private static final String FOOD = "foodEaten";
|
||||
private static final String ALCHEMY = "potionsCooked";
|
||||
private static final String PIRANHAS = "priranhas";
|
||||
private static final String HAZARD_ASSISTS = "hazard_assists";
|
||||
private static final String ANKHS = "ankhsUsed";
|
||||
|
||||
private static final String PROG_SCORE = "prog_score";
|
||||
@@ -164,6 +167,7 @@ public class Statistics {
|
||||
bundle.put( FOOD, foodEaten );
|
||||
bundle.put( ALCHEMY, itemsCrafted );
|
||||
bundle.put( PIRANHAS, piranhasKilled );
|
||||
bundle.put(HAZARD_ASSISTS, hazardAssistedKills);
|
||||
bundle.put( ANKHS, ankhsUsed );
|
||||
bundle.put( ITEM_TYPES_DISCOVERED, itemTypesDiscovered.toArray(new Class<?>[0]) );
|
||||
|
||||
@@ -209,6 +213,7 @@ public class Statistics {
|
||||
foodEaten = bundle.getInt( FOOD );
|
||||
itemsCrafted = bundle.getInt( ALCHEMY );
|
||||
piranhasKilled = bundle.getInt( PIRANHAS );
|
||||
hazardAssistedKills = bundle.getInt( HAZARD_ASSISTS );
|
||||
ankhsUsed = bundle.getInt( ANKHS );
|
||||
|
||||
if (bundle.contains( ITEM_TYPES_DISCOVERED )) {
|
||||
|
||||
@@ -84,6 +84,7 @@ import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.plants.Swiftthistle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
@@ -875,6 +876,11 @@ public abstract class Mob extends Char {
|
||||
}
|
||||
|
||||
if (alignment == Alignment.ENEMY){
|
||||
if (buff(Trap.HazardAssistTracker.class) != null){
|
||||
Statistics.hazardAssistedKills++;
|
||||
Badges.validateHazardAssists();
|
||||
}
|
||||
|
||||
rollToDropLoot();
|
||||
|
||||
if (cause == Dungeon.hero || cause instanceof Weapon || cause instanceof Weapon.Enchantment){
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM300;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Pylon;
|
||||
@@ -43,6 +44,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.LevelTransition;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.CavesPainter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
||||
@@ -841,6 +843,11 @@ public class CavesBossLevel extends Level {
|
||||
|
||||
Char ch = Actor.findChar(cell);
|
||||
if (ch != null && !(ch instanceof DM300) && !ch.flying) {
|
||||
if (ch instanceof Mob){
|
||||
//incredibly specific but I'll 100% get a bug report in a year if I don't add this
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, Trap.HazardAssistTracker.DURATION);
|
||||
}
|
||||
|
||||
Sample.INSTANCE.play( Assets.Sounds.LIGHTNING );
|
||||
ch.damage( Random.NormalIntRange(6, 12), new Electricity());
|
||||
ch.sprite.flash();
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.WeakFloorRoom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
|
||||
@@ -151,7 +152,10 @@ public class Chasm implements Hero.Doom {
|
||||
}
|
||||
|
||||
public static void mobFall( Mob mob ) {
|
||||
if (mob.isAlive()) mob.die( Chasm.class );
|
||||
if (mob.isAlive()) {
|
||||
Buff.prolong(mob, Trap.HazardAssistTracker.class, Trap.HazardAssistTracker.DURATION);
|
||||
mob.die( Chasm.class );
|
||||
}
|
||||
|
||||
if (mob.sprite != null) ((MobSprite)mob.sprite).fall();
|
||||
}
|
||||
|
||||
@@ -23,8 +23,11 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
@@ -45,11 +48,15 @@ public class BlazingTrap extends Trap {
|
||||
PathFinder.buildDistanceMap( pos, BArray.not( Dungeon.level.solid, null ), 2 );
|
||||
for (int i = 0; i < PathFinder.distance.length; i++) {
|
||||
if (PathFinder.distance[i] < Integer.MAX_VALUE) {
|
||||
if (Dungeon.level.pit[i] || Dungeon.level.water[i])
|
||||
if (Dungeon.level.pit[i] || Dungeon.level.water[i]) {
|
||||
GameScene.add(Blob.seed(i, 1, Fire.class));
|
||||
else
|
||||
} else {
|
||||
GameScene.add(Blob.seed(i, 5, Fire.class));
|
||||
}
|
||||
CellEmitter.get(i).burst(FlameParticle.FACTORY, 5);
|
||||
if (Actor.findChar(i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
Sample.INSTANCE.play(Assets.Sounds.BURNING);
|
||||
|
||||
@@ -23,8 +23,11 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
@@ -45,6 +48,9 @@ public class BurningTrap extends Trap {
|
||||
if (!Dungeon.level.solid[pos + i]) {
|
||||
GameScene.add( Blob.seed( pos+i, 2, Fire.class ) );
|
||||
CellEmitter.get( pos+i ).burst( FlameParticle.FACTORY, 5 );
|
||||
if (Actor.findChar(pos+i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(pos+i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
Sample.INSTANCE.play(Assets.Sounds.BURNING);
|
||||
|
||||
@@ -23,8 +23,11 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Freezing;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
@@ -47,6 +50,9 @@ public class ChillingTrap extends Trap{
|
||||
for( int i : PathFinder.NEIGHBOURS9) {
|
||||
if (!Dungeon.level.solid[pos + i]) {
|
||||
GameScene.add(Blob.seed(pos + i, 10, Freezing.class));
|
||||
if (Actor.findChar(pos+i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(pos+i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,10 +22,14 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ConfusionGas;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
import com.watabou.utils.PathFinder;
|
||||
|
||||
public class ConfusionTrap extends Trap {
|
||||
|
||||
@@ -40,5 +44,11 @@ public class ConfusionTrap extends Trap {
|
||||
GameScene.add(Blob.seed(pos, 300 + 20 * scalingDepth(), ConfusionGas.class));
|
||||
Sample.INSTANCE.play(Assets.Sounds.GAS);
|
||||
|
||||
for( int i : PathFinder.NEIGHBOURS9) {
|
||||
if (Actor.findChar(pos+i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(pos+i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,10 +22,14 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
import com.watabou.utils.PathFinder;
|
||||
|
||||
public class CorrosionTrap extends Trap {
|
||||
|
||||
@@ -42,6 +46,12 @@ public class CorrosionTrap extends Trap {
|
||||
|
||||
corrosiveGas.setStrength(1+scalingDepth()/4);
|
||||
|
||||
for( int i : PathFinder.NEIGHBOURS9) {
|
||||
if (Actor.findChar(pos+i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(pos+i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
|
||||
GameScene.add(corrosiveGas);
|
||||
|
||||
}
|
||||
|
||||
@@ -27,7 +27,9 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Beam;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||
@@ -77,6 +79,9 @@ public class DisintegrationTrap extends Trap {
|
||||
if (heap != null) heap.explode();
|
||||
|
||||
if (target != null) {
|
||||
if (target instanceof Mob){
|
||||
Buff.prolong(target, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
if (Dungeon.level.heroFOV[pos] || Dungeon.level.heroFOV[target.pos]) {
|
||||
Sample.INSTANCE.play(Assets.Sounds.RAY);
|
||||
ShatteredPixelDungeon.scene().add(new Beam.DeathRay(DungeonTilemap.tileCenterToWorld(pos), target.sprite.center()));
|
||||
|
||||
@@ -23,7 +23,11 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb;
|
||||
import com.watabou.utils.PathFinder;
|
||||
|
||||
public class ExplosiveTrap extends Trap {
|
||||
|
||||
@@ -34,6 +38,13 @@ public class ExplosiveTrap extends Trap {
|
||||
|
||||
@Override
|
||||
public void activate() {
|
||||
|
||||
for( int i : PathFinder.NEIGHBOURS9) {
|
||||
if (Actor.findChar(pos+i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(pos+i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
|
||||
new Bomb().explode(pos);
|
||||
if (reclaimed && !Dungeon.hero.isAlive()) {
|
||||
Badges.validateDeathFromFriendlyMagic();
|
||||
|
||||
@@ -55,6 +55,7 @@ public class FlashingTrap extends Trap {
|
||||
Buff.prolong( c, Cripple.class, Cripple.DURATION*2f );
|
||||
|
||||
if (c instanceof Mob) {
|
||||
Buff.prolong(c, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
if (((Mob)c).state == ((Mob)c).HUNTING) ((Mob)c).state = ((Mob)c).WANDERING;
|
||||
((Mob)c).beckon( Dungeon.level.randomDestination( c ) );
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Sheep;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
@@ -72,6 +74,8 @@ public class FlockTrap extends Trap {
|
||||
t.activate();
|
||||
}
|
||||
Dungeon.level.occupyCell(sheep);
|
||||
} else if (Actor.findChar(i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
Sample.INSTANCE.play(Assets.Sounds.PUFF);
|
||||
|
||||
@@ -23,8 +23,11 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Freezing;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.watabou.utils.BArray;
|
||||
@@ -50,6 +53,9 @@ public class FrostTrap extends Trap {
|
||||
for (int i = 0; i < PathFinder.distance.length; i++) {
|
||||
if (PathFinder.distance[i] < Integer.MAX_VALUE) {
|
||||
GameScene.add(Blob.seed(i, 20, Freezing.class));
|
||||
if (Actor.findChar(i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
@@ -61,6 +62,7 @@ public class GatewayTrap extends Trap {
|
||||
if (ScrollOfTeleportation.teleportChar(ch)) {
|
||||
if (ch instanceof Mob && ((Mob) ch).state == ((Mob) ch).HUNTING) {
|
||||
((Mob) ch).state = ((Mob) ch).WANDERING;
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
telePos = ch.pos;
|
||||
break;
|
||||
|
||||
@@ -26,7 +26,9 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||
@@ -74,6 +76,10 @@ public class GeyserTrap extends Trap {
|
||||
Char ch = Actor.findChar(pos + i);
|
||||
if (ch != null){
|
||||
|
||||
if (source == this && ch instanceof Mob){
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
|
||||
//does the equivalent of a bomb's damage against fiery enemies.
|
||||
if (Char.hasProp(ch, Char.Property.FIERY)){
|
||||
int dmg = Random.NormalIntRange(5 + scalingDepth(), 10 + scalingDepth()*2);
|
||||
@@ -100,6 +106,9 @@ public class GeyserTrap extends Trap {
|
||||
|
||||
Char ch = Actor.findChar(pos);
|
||||
if (ch != null){
|
||||
if (source == this && ch instanceof Mob){
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
int targetpos = -1;
|
||||
if (centerKnockBackDirection != -1){
|
||||
targetpos = centerKnockBackDirection;
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.GnollGeomancer;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.GnollGuard;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
@@ -81,6 +82,10 @@ public class GnollRockfallTrap extends RockfallTrap {
|
||||
Char ch = Actor.findChar( cell );
|
||||
|
||||
if (ch != null && ch.isAlive() && !(ch instanceof GnollGeomancer)){
|
||||
if (ch instanceof Mob){
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
|
||||
//deals notably less damage than a regular rockfall trap, but ignores armor
|
||||
int damage = Random.NormalIntRange(6, 12);
|
||||
ch.damage( Math.max(damage, 0) , this);
|
||||
|
||||
@@ -26,7 +26,9 @@ import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
|
||||
@@ -85,6 +87,9 @@ public class GrimTrap extends Trap {
|
||||
}
|
||||
|
||||
if (target != null) {
|
||||
if (target instanceof Mob){
|
||||
Buff.prolong(target, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
final Char finalTarget = target;
|
||||
//instant kill, use a mix of current HP and max HP, just like psi blast (for resistances)
|
||||
int damage = Math.round(finalTarget.HT/2f + finalTarget.HP/2f);
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Wound;
|
||||
|
||||
public class GrippingTrap extends Trap {
|
||||
@@ -44,6 +45,9 @@ public class GrippingTrap extends Trap {
|
||||
Char c = Actor.findChar( pos );
|
||||
|
||||
if (c != null && !c.flying) {
|
||||
if (c instanceof Mob) {
|
||||
Buff.prolong(c, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
int damage = Math.max( 0, (2 + scalingDepth()/2) - c.drRoll()/2 );
|
||||
Buff.affect( c, Bleeding.class ).set( damage );
|
||||
Buff.prolong( c, Cripple.class, Cripple.DURATION);
|
||||
|
||||
@@ -26,6 +26,7 @@ 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.Ooze;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
||||
import com.watabou.utils.PathFinder;
|
||||
|
||||
@@ -45,6 +46,9 @@ public class OozeTrap extends Trap {
|
||||
Char ch = Actor.findChar( pos + i );
|
||||
if (ch != null && !ch.flying){
|
||||
Buff.affect(ch, Ooze.class).set( Ooze.DURATION );
|
||||
if (ch instanceof Mob){
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.PoisonDart;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
@@ -100,6 +101,9 @@ public class PoisonDartTrap extends Trap {
|
||||
}
|
||||
|
||||
if (target != null) {
|
||||
if (target instanceof Mob){
|
||||
Buff.prolong(target, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
final Char finalTarget = target;
|
||||
if (Dungeon.level.heroFOV[pos] || Dungeon.level.heroFOV[target.pos]) {
|
||||
((MissileSprite) ShatteredPixelDungeon.scene().recycle(MissileSprite.class)).
|
||||
|
||||
@@ -28,6 +28,7 @@ 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.Paralysis;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
|
||||
@@ -95,6 +96,9 @@ public class RockfallTrap extends Trap {
|
||||
Char ch = Actor.findChar( cell );
|
||||
|
||||
if (ch != null && ch.isAlive()){
|
||||
if (ch instanceof Mob) {
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
int damage = Random.NormalIntRange(5+scalingDepth(), 10+scalingDepth()*2);
|
||||
damage -= ch.drRoll();
|
||||
ch.damage( Math.max(damage, 0) , this);
|
||||
|
||||
@@ -23,8 +23,11 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
import com.watabou.utils.PathFinder;
|
||||
@@ -47,6 +50,9 @@ public class ShockingTrap extends Trap {
|
||||
if (!Dungeon.level.solid[pos + i]) {
|
||||
GameScene.add(Blob.seed(pos + i, 10, Electricity.class));
|
||||
}
|
||||
if (Actor.findChar(pos+i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(pos+i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,8 +23,11 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.watabou.utils.BArray;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
@@ -48,6 +51,9 @@ public class StormTrap extends Trap {
|
||||
for (int i = 0; i < PathFinder.distance.length; i++) {
|
||||
if (PathFinder.distance[i] < Integer.MAX_VALUE) {
|
||||
GameScene.add(Blob.seed(i, 20, Electricity.class));
|
||||
if (Actor.findChar(i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
@@ -51,6 +52,7 @@ public class TeleportationTrap extends Trap {
|
||||
if (ScrollOfTeleportation.teleportChar(ch)) {
|
||||
if (ch instanceof Mob && ((Mob) ch).state == ((Mob) ch).HUNTING) {
|
||||
((Mob) ch).state = ((Mob) ch).WANDERING;
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,10 +22,14 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
import com.watabou.utils.PathFinder;
|
||||
|
||||
public class ToxicTrap extends Trap{
|
||||
|
||||
@@ -40,5 +44,11 @@ public class ToxicTrap extends Trap{
|
||||
GameScene.add( Blob.seed( pos, 300 + 20 * scalingDepth(), ToxicGas.class ) );
|
||||
Sample.INSTANCE.play(Assets.Sounds.GAS);
|
||||
|
||||
for( int i : PathFinder.NEIGHBOURS9) {
|
||||
if (Actor.findChar(pos+i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(pos+i), Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
@@ -142,4 +143,9 @@ public abstract class Trap implements Bundlable {
|
||||
bundle.put( VISIBLE, visible );
|
||||
bundle.put( ACTIVE, active );
|
||||
}
|
||||
|
||||
//this buff is used to keep track of hazards recently affecting a character
|
||||
public static class HazardAssistTracker extends FlavourBuff{
|
||||
public static final float DURATION = 50f;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ 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.Weakness;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
|
||||
|
||||
@@ -49,6 +50,9 @@ public class WeakeningTrap extends Trap{
|
||||
Buff.prolong( ch, Weakness.class, Weakness.DURATION/2f );
|
||||
}
|
||||
Buff.prolong( ch, Weakness.class, Weakness.DURATION*3f );
|
||||
if (ch instanceof Mob){
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,9 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
@@ -85,6 +87,9 @@ public class WornDartTrap extends Trap {
|
||||
}
|
||||
|
||||
if (target != null) {
|
||||
if (target instanceof Mob){
|
||||
Buff.prolong(target, Trap.HazardAssistTracker.class, HazardAssistTracker.DURATION);
|
||||
}
|
||||
final Char finalTarget = target;
|
||||
if (Dungeon.level.heroFOV[pos] || Dungeon.level.heroFOV[target.pos]) {
|
||||
((MissileSprite) ShatteredPixelDungeon.scene().recycle(MissileSprite.class)).
|
||||
|
||||
@@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
public class Blindweed extends Plant {
|
||||
@@ -51,6 +52,7 @@ public class Blindweed extends Plant {
|
||||
Buff.prolong(ch, Blindness.class, Blindness.DURATION);
|
||||
Buff.prolong(ch, Cripple.class, Cripple.DURATION);
|
||||
if (ch instanceof Mob) {
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, Trap.HazardAssistTracker.DURATION);
|
||||
if (((Mob) ch).state == ((Mob) ch).HUNTING) ((Mob) ch).state = ((Mob) ch).WANDERING;
|
||||
((Mob) ch).beckon(Dungeon.level.randomDestination( ch ));
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.plants;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
@@ -30,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.watabou.noosa.Game;
|
||||
@@ -63,6 +65,7 @@ public class Fadeleaf extends Plant {
|
||||
|
||||
} else if (ch instanceof Mob && !ch.properties().contains(Char.Property.IMMOVABLE)) {
|
||||
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, Trap.HazardAssistTracker.DURATION);
|
||||
ScrollOfTeleportation.teleportChar(ch, Fadeleaf.class);
|
||||
|
||||
}
|
||||
|
||||
@@ -29,8 +29,10 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
@@ -47,6 +49,10 @@ public class Firebloom extends Plant {
|
||||
if (ch instanceof Hero && ((Hero) ch).subClass == HeroSubClass.WARDEN){
|
||||
Buff.affect(ch, FireImbue.class).set( FireImbue.DURATION*0.3f );
|
||||
}
|
||||
|
||||
if (ch instanceof Mob){
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, Trap.HazardAssistTracker.DURATION);
|
||||
}
|
||||
|
||||
GameScene.add( Blob.seed( pos, 2, Fire.class ) );
|
||||
|
||||
|
||||
@@ -22,12 +22,15 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.plants;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Freezing;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FrostImbue;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.watabou.utils.PathFinder;
|
||||
|
||||
@@ -48,6 +51,9 @@ public class Icecap extends Plant {
|
||||
for (int i : PathFinder.NEIGHBOURS9){
|
||||
if (!Dungeon.level.solid[pos+i]) {
|
||||
Freezing.affect( pos+i );
|
||||
if (Actor.findChar(pos+i) instanceof Mob){
|
||||
Buff.prolong(Actor.findChar(pos+i), Trap.HazardAssistTracker.class, Trap.HazardAssistTracker.DURATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,8 +28,10 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ToxicImbue;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.PoisonParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
public class Sorrowmoss extends Plant {
|
||||
@@ -46,6 +48,9 @@ public class Sorrowmoss extends Plant {
|
||||
}
|
||||
|
||||
if (ch != null) {
|
||||
if (ch instanceof Mob){
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, Trap.HazardAssistTracker.DURATION);
|
||||
}
|
||||
Buff.affect( ch, Poison.class ).set( 5 + Math.round(2*Dungeon.scalingDepth() / 3f) );
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Levitation;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vertigo;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
public class Stormvine extends Plant {
|
||||
@@ -43,6 +45,9 @@ public class Stormvine extends Plant {
|
||||
if (ch instanceof Hero && ((Hero) ch).subClass == HeroSubClass.WARDEN){
|
||||
Buff.affect(ch, Levitation.class, Levitation.DURATION/2f);
|
||||
} else {
|
||||
if (ch instanceof Mob){
|
||||
Buff.prolong(ch, Trap.HazardAssistTracker.class, Trap.HazardAssistTracker.DURATION);
|
||||
}
|
||||
Buff.affect(ch, Vertigo.class, Vertigo.DURATION);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user