v1.4.0: fixed inconsistencies and honeypot errors in teleport trap logic
This commit is contained in:
@@ -189,6 +189,12 @@ public class Honeypot extends Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void movePot( int oldpos, int movePos){
|
||||||
|
for (Bee bee : findBees(oldpos)){
|
||||||
|
updateBee(bee, movePos, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void destroyPot( int potPos ){
|
public void destroyPot( int potPos ){
|
||||||
for (Bee bee : findBees(potPos)){
|
for (Bee bee : findBees(potPos)){
|
||||||
updateBee(bee, -1, null);
|
updateBee(bee, -1, null);
|
||||||
|
|||||||
+7
-5
@@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Statue;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.KindOfWeapon;
|
import com.shatteredpixel.shatteredpixeldungeon.items.KindOfWeapon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
@@ -48,18 +49,19 @@ public class DisarmingTrap extends Trap{
|
|||||||
public void activate() {
|
public void activate() {
|
||||||
Heap heap = Dungeon.level.heaps.get( pos );
|
Heap heap = Dungeon.level.heaps.get( pos );
|
||||||
|
|
||||||
if (heap != null){
|
if (heap != null && heap.type == Heap.Type.HEAP){
|
||||||
int cell = Dungeon.level.randomRespawnCell( null );
|
int cell = Dungeon.level.randomRespawnCell( null );
|
||||||
|
|
||||||
|
Item item = heap.pickUp();
|
||||||
|
|
||||||
if (cell != -1) {
|
if (cell != -1) {
|
||||||
Item item = heap.pickUp();
|
|
||||||
Heap dropped = Dungeon.level.drop( item, cell );
|
Heap dropped = Dungeon.level.drop( item, cell );
|
||||||
dropped.type = heap.type;
|
|
||||||
dropped.sprite.view( dropped );
|
|
||||||
dropped.seen = true;
|
dropped.seen = true;
|
||||||
|
if (item instanceof Honeypot.ShatteredPot){
|
||||||
|
((Honeypot.ShatteredPot)item).movePot(pos, cell);
|
||||||
|
}
|
||||||
for (int i : PathFinder.NEIGHBOURS9) Dungeon.level.visited[cell+i] = true;
|
for (int i : PathFinder.NEIGHBOURS9) Dungeon.level.visited[cell+i] = true;
|
||||||
GameScene.updateFog();
|
GameScene.updateFog();
|
||||||
|
|
||||||
Sample.INSTANCE.play(Assets.Sounds.TELEPORT);
|
Sample.INSTANCE.play(Assets.Sounds.TELEPORT);
|
||||||
CellEmitter.get(pos).burst(Speck.factory(Speck.LIGHT), 4);
|
CellEmitter.get(pos).burst(Speck.factory(Speck.LIGHT), 4);
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-3
@@ -21,13 +21,18 @@
|
|||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
package com.shatteredpixel.shatteredpixeldungeon.levels.traps;
|
||||||
|
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
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.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
||||||
|
import com.watabou.noosa.audio.Sample;
|
||||||
import com.watabou.utils.Bundle;
|
import com.watabou.utils.Bundle;
|
||||||
import com.watabou.utils.PathFinder;
|
import com.watabou.utils.PathFinder;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
@@ -129,9 +134,12 @@ public class GatewayTrap extends Trap {
|
|||||||
Heap heap = Dungeon.level.heaps.get(pos + i);
|
Heap heap = Dungeon.level.heaps.get(pos + i);
|
||||||
if (heap != null && heap.type == Heap.Type.HEAP){
|
if (heap != null && heap.type == Heap.Type.HEAP){
|
||||||
Item item = heap.pickUp();
|
Item item = heap.pickUp();
|
||||||
Heap dropped = Dungeon.level.drop( item, telePos );
|
Dungeon.level.drop( item, telePos );
|
||||||
dropped.type = heap.type;
|
if (item instanceof Honeypot.ShatteredPot){
|
||||||
dropped.sprite.view( dropped );
|
((Honeypot.ShatteredPot)item).movePot(pos, telePos);
|
||||||
|
}
|
||||||
|
Sample.INSTANCE.play(Assets.Sounds.TELEPORT);
|
||||||
|
CellEmitter.get(pos).burst(Speck.factory(Speck.LIGHT), 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
@@ -64,6 +65,11 @@ public class TeleportationTrap extends Trap {
|
|||||||
|
|
||||||
if (cell != -1) {
|
if (cell != -1) {
|
||||||
Dungeon.level.drop( item, cell );
|
Dungeon.level.drop( item, cell );
|
||||||
|
if (item instanceof Honeypot.ShatteredPot){
|
||||||
|
((Honeypot.ShatteredPot)item).movePot(pos, cell);
|
||||||
|
}
|
||||||
|
Sample.INSTANCE.play(Assets.Sounds.TELEPORT);
|
||||||
|
CellEmitter.get(pos).burst(Speck.factory(Speck.LIGHT), 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user