v0.6.2: adjusted a few trap mechanics

- slightly boosted the damage of gripping and flashing traps
- cursing traps now always prefer to curse weapons and armor
- pitfall traps now check for walls specifically, not just solid terrain
This commit is contained in:
Evan Debenham 2017-10-12 01:05:03 -04:00
parent f3eab8a148
commit 4368408c79
4 changed files with 7 additions and 7 deletions

View File

@ -93,12 +93,12 @@ public class CursingTrap extends Trap {
KindofMisc misc1 = hero.belongings.misc1; KindofMisc misc1 = hero.belongings.misc1;
if (misc1 != null){ if (misc1 != null){
priorityCurse.add(misc1); canCurse.add(misc1);
} }
KindofMisc misc2 = hero.belongings.misc2; KindofMisc misc2 = hero.belongings.misc2;
if (misc2 != null){ if (misc2 != null){
priorityCurse.add(misc2); canCurse.add(misc2);
} }
Collections.shuffle(priorityCurse); Collections.shuffle(priorityCurse);

View File

@ -59,7 +59,7 @@ public class FlashingTrap extends Trap {
Char c = Actor.findChar( pos ); Char c = Actor.findChar( pos );
if (c != null) { if (c != null) {
int damage = Math.max( 0, (Dungeon.depth) - c.drRoll() ); int damage = Math.max( 0, (4 + Dungeon.depth) - c.drRoll() );
Buff.affect( c, Bleeding.class ).set( damage ); Buff.affect( c, Bleeding.class ).set( damage );
Buff.prolong( c, Blindness.class, 10f ); Buff.prolong( c, Blindness.class, 10f );
Buff.prolong( c, Cripple.class, 20f ); Buff.prolong( c, Cripple.class, 20f );

View File

@ -57,7 +57,7 @@ public class GrippingTrap extends Trap {
Char c = Actor.findChar( pos ); Char c = Actor.findChar( pos );
if (c != null) { if (c != null) {
int damage = Math.max( 0, (Dungeon.depth) - c.drRoll() ); int damage = Math.max( 0, (2 + Dungeon.depth) - c.drRoll() );
Buff.affect( c, Bleeding.class ).set( damage ); Buff.affect( c, Bleeding.class ).set( damage );
Buff.prolong( c, Cripple.class, Cripple.DURATION); Buff.prolong( c, Cripple.class, Cripple.DURATION);
Wound.hit( c ); Wound.hit( c );

View File

@ -67,11 +67,11 @@ public class PitfallTrap extends Trap {
super.disarm(); super.disarm();
int stateChanges = 0; int stateChanges = 0;
boolean curPassable = Dungeon.level.passable[pos + PathFinder.CIRCLE8[PathFinder.CIRCLE8.length-1]]; boolean curWall = Dungeon.level.map[pos + PathFinder.CIRCLE8[PathFinder.CIRCLE8.length-1]] == Terrain.WALL;
for (int i : PathFinder.CIRCLE8){ for (int i : PathFinder.CIRCLE8){
if (curPassable != Dungeon.level.passable[pos + i]){ if (curWall != (Dungeon.level.map[pos + i] == Terrain.WALL)){
stateChanges++; stateChanges++;
curPassable = Dungeon.level.passable[pos + i]; curWall = Dungeon.level.map[pos + i] == Terrain.WALL;
} }
} }