v0.3.3: added char properties, starting with IMMOVABLE implementation

This commit is contained in:
Evan Debenham
2015-12-16 04:47:34 -05:00
parent 30404257df
commit e09f40378d
12 changed files with 32 additions and 16 deletions
@@ -39,7 +39,9 @@ public class Bounce extends Glyph {
int level = Math.max( 0, armor.level() );
if (Level.adjacent( attacker.pos, defender.pos ) && Random.Int( level + 5) >= 4) {
if (Level.adjacent( attacker.pos, defender.pos )
&& !defender.properties().contains(Char.Property.IMMOVABLE)
&& Random.Int( level + 5) >= 4) {
for (int i=0; i < Level.NEIGHBOURS8.length; i++) {
int ofs = Level.NEIGHBOURS8[i];
@@ -110,9 +110,12 @@ public class EtherealChains extends Artifact {
final int newMobPos = newPos;
final Char affected = Actor.findChar( chain.collisionPos );
int chargeUse = Level.distance(affected.pos, newMobPos);
if (chargeUse > charge){
if (chargeUse > charge) {
GLog.w("Your chains do not have enough charge.");
return;
} else if (affected.properties().contains(Char.Property.IMMOVABLE)) {
GLog.w("Your chains cannot pull that target");
return;
} else {
charge -= chargeUse;
updateQuickslot();
@@ -241,9 +241,7 @@ public class LloydsBeacon extends Artifact {
GLog.w(ScrollOfTeleportation.TXT_NO_TELEPORT);
//FIXME: sloppy, fix when adding mob properties
} else if (ch instanceof RotLasher || ch instanceof RotHeart
|| ch instanceof Shopkeeper || ch instanceof Wandmaker) {
} else if (ch.properties().contains(Char.Property.IMMOVABLE)) {
GLog.w("The teleportation magic fails.");
@@ -155,7 +155,7 @@ public class CursedWand {
cursedFX(user, bolt, new Callback() {
public void call() {
Char ch = Actor.findChar( bolt.collisionPos );
if (ch != null) {
if (ch != null && !ch.properties().contains(Char.Property.IMMOVABLE)) {
int count = 10;
int pos;
do {
@@ -112,7 +112,7 @@ public class WandOfBlastWave extends Wand {
if ((ch instanceof King) || (ch instanceof Golem) || (ch instanceof Yog.RottingFist))
dist /= 2;
if (dist == 0 || ch instanceof Yog || ch instanceof RotLasher || ch instanceof RotHeart) return;
if (dist == 0 || ch.properties().contains(Char.Property.IMMOVABLE)) return;
if (Actor.findChar(trajectory.path.get(dist)) != null){
dist--;