From 55292399737aa29f0ab9b07a0a33ecf0a29a3017 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 27 Jan 2018 21:03:03 -0500 Subject: [PATCH] v0.6.3: moved many resistances and immunities to character properties --- .../shatteredpixeldungeon/actors/Char.java | 58 +++++++++++++++++-- .../actors/blobs/ConfusionGas.java | 5 +- .../actors/blobs/Electricity.java | 2 +- .../actors/blobs/Fire.java | 2 +- .../actors/blobs/Freezing.java | 2 +- .../actors/blobs/ParalyticGas.java | 2 +- .../actors/blobs/Regrowth.java | 2 +- .../actors/blobs/StenchGas.java | 2 +- .../actors/blobs/ToxicGas.java | 2 +- .../actors/blobs/VenomGas.java | 2 +- .../actors/blobs/Web.java | 2 +- .../actors/buffs/BlobImmunity.java | 12 +--- .../actors/buffs/Buff.java | 2 +- .../actors/buffs/Drowsy.java | 2 +- .../actors/buffs/MagicalSleep.java | 2 +- .../actors/buffs/ToxicImbue.java | 1 + .../actors/mobs/Acidic.java | 2 + .../actors/mobs/Bat.java | 3 - .../actors/mobs/DM300.java | 8 +-- .../actors/mobs/Elemental.java | 16 +---- .../actors/mobs/Eye.java | 1 - .../actors/mobs/Golem.java | 2 + .../actors/mobs/Goo.java | 6 +- .../actors/mobs/Guard.java | 2 +- .../actors/mobs/King.java | 4 +- .../actors/mobs/Piranha.java | 7 +-- .../actors/mobs/Scorpio.java | 4 -- .../actors/mobs/Shaman.java | 9 +-- .../actors/mobs/Skeleton.java | 1 + .../actors/mobs/Spinner.java | 2 +- .../actors/mobs/Statue.java | 7 +-- .../actors/mobs/Succubus.java | 4 -- .../actors/mobs/Tengu.java | 2 - .../actors/mobs/Thief.java | 2 +- .../actors/mobs/Yog.java | 12 +--- .../items/artifacts/DriedRose.java | 2 + .../items/rings/RingOfElements.java | 5 +- .../items/wands/WandOfCorruption.java | 7 +-- 38 files changed, 100 insertions(+), 108 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 403c66794..51c2805a3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -23,10 +23,16 @@ package com.shatteredpixel.shatteredpixeldungeon.actors; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bless; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Chill; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Doom; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.EarthImbue; @@ -34,14 +40,24 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSleep; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Preparation; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Slow; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Speed; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Venom; 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.items.armor.glyphs.Potential; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfElements; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfPsionicBlast; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFireblast; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfLightning; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Blazing; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Grim; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Shocking; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Door; @@ -56,6 +72,7 @@ import com.watabou.utils.GameMath; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; +import java.util.Arrays; import java.util.HashSet; public abstract class Char extends Actor { @@ -277,10 +294,10 @@ public abstract class Char extends Actor { } Class srcClass = src.getClass(); - if (immunities().contains( srcClass )) { + if (isImmune( srcClass )) { dmg = 0; - } else if (resistances().contains( srcClass )) { - dmg = Random.IntRange( 0, dmg ); + } else { + dmg = Math.round( dmg * resist( srcClass )); } if (buff( Paralysis.class ) != null) { @@ -493,6 +510,16 @@ public abstract class Char extends Actor { return result; } + public float resist( Class effect ){ + float result = 1f; + for (Class c : resistances()){ + if (c.isAssignableFrom(effect)){ + result *= Random.Float(); + } + } + return result; + } + protected final HashSet immunities = new HashSet<>(); public HashSet immunities() { @@ -505,6 +532,15 @@ public abstract class Char extends Actor { } return result; } + + public boolean isImmune(Class effect ){ + for (Class c : immunities()){ + if (c.isAssignableFrom(effect)){ + return true; + } + } + return false; + } protected HashSet properties = new HashSet<>(); @@ -513,10 +549,22 @@ public abstract class Char extends Actor { } public enum Property{ - BOSS, - MINIBOSS, + BOSS ( new HashSet( Arrays.asList(Grim.class, ScrollOfPsionicBlast.class)), + new HashSet( Arrays.asList(Corruption.class) )), + MINIBOSS ( new HashSet(), + new HashSet( Arrays.asList(Corruption.class) )), UNDEAD, DEMONIC, + INORGANIC ( new HashSet(), + new HashSet( Arrays.asList(Bleeding.class, ToxicGas.class, Poison.class, Venom.class) )), + BLOB_IMMUNE ( new HashSet(), + new HashSet( Arrays.asList(Blob.class) )), + FIERY ( new HashSet( Arrays.asList(WandOfFireblast.class)), + new HashSet( Arrays.asList(Burning.class, Blazing.class))), + ACIDIC ( new HashSet( Arrays.asList(ToxicGas.class)), + new HashSet( Arrays.asList(Ooze.class))), + ELECTRIC ( new HashSet( Arrays.asList(WandOfLightning.class, Shocking.class, Potential.class, Electricity.class)), + new HashSet()), IMMOVABLE; private HashSet resistances; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ConfusionGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ConfusionGas.java index c3cec5101..d195171b9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ConfusionGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ConfusionGas.java @@ -43,8 +43,9 @@ public class ConfusionGas extends Blob { for (int j = area.top; j < area.bottom; j++){ cell = i + j*Dungeon.level.width(); if (cur[cell] > 0 && (ch = Actor.findChar( cell )) != null) { - if (!ch.immunities().contains(this.getClass())) - Buff.prolong( ch, Vertigo.class, 2 ); + if (!ch.isImmune(this.getClass())) { + Buff.prolong(ch, Vertigo.class, 2); + } } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Electricity.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Electricity.java index 9c4e1fa52..78b6bada5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Electricity.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Electricity.java @@ -63,7 +63,7 @@ public class Electricity extends Blob { cell = i + j*Dungeon.level.width(); if (cur[cell] > 0) { Char ch = Actor.findChar( cell ); - if (ch != null && !ch.immunities().contains(this.getClass())) { + if (ch != null && !ch.isImmune(this.getClass())) { Buff.prolong( ch, Paralysis.class, 1f); if (cur[cell] % 2 == 1) { ch.damage(Math.round(Random.Float(2 + Dungeon.depth / 5f)), this); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Fire.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Fire.java index 33c4ca84b..2f1c6f16c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Fire.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Fire.java @@ -98,7 +98,7 @@ public class Fire extends Blob { private void burn( int pos ) { Char ch = Actor.findChar( pos ); - if (ch != null && !ch.immunities().contains(this.getClass())) { + if (ch != null && !ch.isImmune(this.getClass())) { Buff.affect( ch, Burning.class ).reignite( ch ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Freezing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Freezing.java index ab5a83b06..6397f0aee 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Freezing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Freezing.java @@ -56,7 +56,7 @@ public class Freezing extends Blob { } Char ch = Actor.findChar( cell ); - if (ch != null && !ch.immunities().contains(this.getClass())) { + if (ch != null && !ch.isImmune(this.getClass())) { if (ch.buff(Frost.class) != null){ Buff.affect(ch, Frost.class, 2f); } else { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ParalyticGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ParalyticGas.java index dae0c6598..6f428d752 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ParalyticGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ParalyticGas.java @@ -43,7 +43,7 @@ public class ParalyticGas extends Blob { for (int j = area.top; j < area.bottom; j++) { cell = i + j * Dungeon.level.width(); if (cur[cell] > 0 && (ch = Actor.findChar(cell)) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.prolong(ch, Paralysis.class, Paralysis.duration(ch)); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Regrowth.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Regrowth.java index f5dddeec3..e67819a40 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Regrowth.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Regrowth.java @@ -60,7 +60,7 @@ public class Regrowth extends Blob { Char ch = Actor.findChar( cell ); if (ch != null - && !ch.immunities().contains(this.getClass()) + && !ch.isImmune(this.getClass()) && off[cell] > 1) { Buff.prolong( ch, Roots.class, TICK ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/StenchGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/StenchGas.java index 139d5da7b..7784bba30 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/StenchGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/StenchGas.java @@ -43,7 +43,7 @@ public class StenchGas extends Blob { for (int j = area.top; j < area.bottom; j++){ cell = i + j*Dungeon.level.width(); if (cur[cell] > 0 && (ch = Actor.findChar( cell )) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.prolong( ch, Paralysis.class, Paralysis.duration( ch )/5 ); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ToxicGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ToxicGas.java index 9bcf12043..0ba587619 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ToxicGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/ToxicGas.java @@ -47,7 +47,7 @@ public class ToxicGas extends Blob implements Hero.Doom { for (int j = area.top; j < area.bottom; j++){ cell = i + j*Dungeon.level.width(); if (cur[cell] > 0 && (ch = Actor.findChar( cell )) != null) { - if (!ch.immunities().contains(this.getClass())) { + if (!ch.isImmune(this.getClass())) { int damage = (ch.HT + levelDamage) / 40; if (Random.Int( 40 ) < (ch.HT + levelDamage) % 40) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/VenomGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/VenomGas.java index 531c016a9..aa10ab813 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/VenomGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/VenomGas.java @@ -49,7 +49,7 @@ public class VenomGas extends Blob { for (int j = area.top; j < area.bottom; j++){ cell = i + j*Dungeon.level.width(); if (cur[cell] > 0 && (ch = Actor.findChar( cell )) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.affect(ch, Venom.class).set(2f, strength); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Web.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Web.java index 3037da2f1..eeb9db19b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Web.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Web.java @@ -47,7 +47,7 @@ public class Web extends Blob { volume += off[cell]; Char ch = Actor.findChar( cell ); - if (ch != null && !ch.immunities().contains(this.getClass())) { + if (ch != null && !ch.isImmune(this.getClass())) { Buff.prolong( ch, Roots.class, TICK ); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/BlobImmunity.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/BlobImmunity.java index cf2c851c0..fea0f2910 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/BlobImmunity.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/BlobImmunity.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ConfusionGas; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire; @@ -55,16 +56,7 @@ public class BlobImmunity extends FlavourBuff { } { - immunities.add( ParalyticGas.class ); - immunities.add( ToxicGas.class ); - immunities.add( ConfusionGas.class ); - immunities.add( StenchGas.class ); - immunities.add( VenomGas.class ); - immunities.add( Fire.class ); - immunities.add( Freezing.class ); - immunities.add( Electricity.class ); - immunities.add( Regrowth.class ); - immunities.add( Web.class ); + immunities.add( Blob.class ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java index bcfe7e6db..a975155c4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java @@ -57,7 +57,7 @@ public class Buff extends Actor { public boolean attachTo( Char target ) { - if (target.immunities().contains( getClass() )) { + if (target.isImmune( getClass() )) { return false; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Drowsy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Drowsy.java index 0a4834927..be0662e9f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Drowsy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Drowsy.java @@ -38,7 +38,7 @@ public class Drowsy extends Buff { } public boolean attachTo( Char target ) { - if (!target.immunities().contains(Sleep.class) && super.attachTo(target)) { + if (!target.isImmune(Sleep.class) && super.attachTo(target)) { if (cooldown() == 0) spend(Random.Int(3, 6)); return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java index 26eb47b1a..b4d2cf307 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java @@ -34,7 +34,7 @@ public class MagicalSleep extends Buff { @Override public boolean attachTo( Char target ) { - if (!target.immunities().contains(Sleep.class) && super.attachTo( target )) { + if (!target.isImmune(Sleep.class) && super.attachTo( target )) { if (target instanceof Hero) if (target.HP == target.HT) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java index f170d89c4..8e0a3fb08 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java @@ -93,5 +93,6 @@ public class ToxicImbue extends Buff { { immunities.add( ToxicGas.class ); immunities.add( Poison.class ); + immunities.add( Venom.class ); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Acidic.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Acidic.java index 9c3538e87..24d0e0d67 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Acidic.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Acidic.java @@ -33,6 +33,8 @@ public class Acidic extends Scorpio { { spriteClass = AcidicSprite.class; + + properties.add(Property.ACIDIC); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bat.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bat.java index cb61eeb62..fddca7e40 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bat.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bat.java @@ -89,7 +89,4 @@ public class Bat extends Mob { return super.createLoot(); } - { - resistances.add( Vampiric.class ); - } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java index feacc0e89..aca9710e6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java @@ -65,6 +65,7 @@ public class DM300 extends Mob { lootChance = 0.333f; properties.add(Property.BOSS); + properties.add(Property.INORGANIC); } @Override @@ -136,7 +137,7 @@ public class DM300 extends Mob { public void damage(int dmg, Object src) { super.damage(dmg, src); LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); - if (lock != null && !immunities().contains(src.getClass())) lock.addTime(dmg*1.5f); + if (lock != null && !isImmune(src.getClass())) lock.addTime(dmg*1.5f); } @Override @@ -164,11 +165,6 @@ public class DM300 extends Mob { yell( Messages.get(this, "notice") ); } - { - resistances.add( Grim.class ); - resistances.add( ScrollOfPsionicBlast.class ); - } - { immunities.add( ToxicGas.class ); immunities.add( Terror.class ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Elemental.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Elemental.java index 9753a4baa..023ed58f4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Elemental.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Elemental.java @@ -49,8 +49,8 @@ public class Elemental extends Mob { loot = new PotionOfLiquidFlame(); lootChance = 0.1f; - - properties.add(Property.DEMONIC); + + properties.add(Property.FIERY); } @Override @@ -80,12 +80,7 @@ public class Elemental extends Mob { @Override public void add( Buff buff ) { - if (buff instanceof Burning) { - if (HP < HT) { - HP++; - sprite.emitter().burst( Speck.factory( Speck.HEALING ), 1 ); - } - } else if (buff instanceof Frost || buff instanceof Chill) { + if (buff instanceof Frost || buff instanceof Chill) { if (Dungeon.level.water[this.pos]) damage( Random.NormalIntRange( HT / 2, HT ), buff ); else @@ -95,9 +90,4 @@ public class Elemental extends Mob { } } - { - immunities.add( Burning.class ); - immunities.add( Blazing.class ); - immunities.add( WandOfFireblast.class ); - } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Eye.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Eye.java index a8d86f76a..2a8f1c1a2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Eye.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Eye.java @@ -219,7 +219,6 @@ public class Eye extends Mob { { resistances.add( WandOfDisintegration.class ); resistances.add( Grim.class ); - resistances.add( Vampiric.class ); } { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Golem.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Golem.java index 119bfb1db..0475b0f98 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Golem.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Golem.java @@ -39,6 +39,8 @@ public class Golem extends Mob { EXP = 12; maxLvl = 22; + + properties.add(Property.INORGANIC); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java index ac3b0f834..8669274c4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java @@ -64,6 +64,7 @@ public class Goo extends Mob { properties.add(Property.BOSS); properties.add(Property.DEMONIC); + properties.add(Property.ACIDIC); } private int pumpedUp = 0; @@ -271,9 +272,4 @@ public class Goo extends Mob { } - { - resistances.add( ToxicGas.class ); - resistances.add( Grim.class ); - resistances.add( ScrollOfPsionicBlast.class ); - } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Guard.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Guard.java index 831c68ac5..04aae9145 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Guard.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Guard.java @@ -56,7 +56,7 @@ public class Guard extends Mob { loot = null; //see createloot. lootChance = 0.25f; - properties.add(Property.DEMONIC); + properties.add(Property.UNDEAD); HUNTING = new Hunting(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java index 3e1671f8a..0b04d73ef 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java @@ -228,9 +228,6 @@ public class King extends Mob { } { - resistances.add( ToxicGas.class ); - resistances.add( Grim.class ); - resistances.add( ScrollOfPsionicBlast.class ); resistances.add( WandOfDisintegration.class ); } @@ -255,6 +252,7 @@ public class King extends Mob { state = WANDERING; properties.add(Property.UNDEAD); + properties.add(Property.INORGANIC); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Piranha.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Piranha.java index 10f483a34..c2fcc5c01 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Piranha.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Piranha.java @@ -51,6 +51,8 @@ public class Piranha extends Mob { lootChance = 1f; HUNTING = new Hunting(); + + properties.add(Property.BLOB_IMMUNE); } public Piranha() { @@ -133,11 +135,6 @@ public class Piranha extends Mob { { immunities.add( Burning.class ); - immunities.add( Paralysis.class ); - immunities.add( ToxicGas.class ); - immunities.add( VenomGas.class ); - immunities.add( Roots.class ); - immunities.add( Frost.class ); } private class Hunting extends Mob.Hunting{ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Scorpio.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Scorpio.java index 7edfbfca2..d8adba69a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Scorpio.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Scorpio.java @@ -104,8 +104,4 @@ public class Scorpio extends Mob { } } - { - resistances.add( Vampiric.class ); - resistances.add( Poison.class ); - } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java index 8e9466a0f..f84928883 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java @@ -52,6 +52,8 @@ public class Shaman extends Mob implements Callback { loot = Generator.Category.SCROLL; lootChance = 0.33f; + + properties.add(Property.ELECTRIC); } @Override @@ -121,10 +123,5 @@ public class Shaman extends Mob implements Callback { public void call() { next(); } - - { - resistances.add( WandOfLightning.class ); - resistances.add( Shocking.class ); - resistances.add( Potential.class ); - } + } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Skeleton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Skeleton.java index 78a21fb86..55ed0cd62 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Skeleton.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Skeleton.java @@ -51,6 +51,7 @@ public class Skeleton extends Mob { lootChance = 0.2f; properties.add(Property.UNDEAD); + properties.add(Property.INORGANIC); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Spinner.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Spinner.java index f9e112dda..4574ad05e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Spinner.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Spinner.java @@ -100,7 +100,7 @@ public class Spinner extends Mob { } { - immunities.add(Roots.class); + immunities.add(Web.class); } private class Fleeing extends Mob.Fleeing { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java index dd2ad7695..7c3e51e85 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java @@ -43,6 +43,8 @@ public class Statue extends Mob { EXP = 0; state = PASSIVE; + + properties.add(Property.INORGANIC); } protected Weapon weapon; @@ -153,12 +155,7 @@ public class Statue extends Mob { } { - resistances.add(ToxicGas.class); - resistances.add(Poison.class); resistances.add(Grim.class); } - { - immunities.add( Vampiric.class ); - } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Succubus.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Succubus.java index c47e2ca2d..2db07b490 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Succubus.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Succubus.java @@ -137,10 +137,6 @@ public class Succubus extends Mob { return Random.NormalIntRange(0, 10); } - { - resistances.add( Vampiric.class ); - } - { immunities.add( Sleep.class ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java index e9078addf..cc9cfac21 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java @@ -237,8 +237,6 @@ public class Tengu extends Mob { { resistances.add( ToxicGas.class ); resistances.add( Poison.class ); - resistances.add( Grim.class ); - resistances.add( ScrollOfPsionicBlast.class ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java index c4e4f9d95..0f9109793 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java @@ -59,7 +59,7 @@ public class Thief extends Mob { WANDERING = new Wandering(); FLEEING = new Fleeing(); - properties.add(Property.DEMONIC); + properties.add(Property.UNDEAD); } private static final String ITEM = "item"; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java index 811547c06..930a3c0f5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java @@ -216,6 +216,7 @@ public class Yog extends Mob { properties.add(Property.BOSS); properties.add(Property.DEMONIC); + properties.add(Property.ACIDIC); } @Override @@ -263,12 +264,6 @@ public class Yog extends Mob { if (lock != null) lock.addTime(dmg*0.5f); } - { - resistances.add( ToxicGas.class ); - resistances.add( Grim.class ); - resistances.add( ScrollOfPsionicBlast.class ); - } - { immunities.add( Amok.class ); immunities.add( Sleep.class ); @@ -292,6 +287,7 @@ public class Yog extends Mob { properties.add(Property.BOSS); properties.add(Property.DEMONIC); + properties.add(Property.FIERY); } @Override @@ -363,16 +359,12 @@ public class Yog extends Mob { { resistances.add( ToxicGas.class ); - resistances.add( Grim.class ); - } { immunities.add( Amok.class ); immunities.add( Sleep.class ); immunities.add( Terror.class ); - immunities.add( Burning.class ); - immunities.add( ScrollOfPsionicBlast.class ); immunities.add( Vertigo.class ); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index a0b4b365c..70b1d6442 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -385,6 +385,8 @@ public class DriedRose extends Artifact { //before other mobs actPriority = MOB_PRIO + 1; + + properties.add(Property.UNDEAD); } private DriedRose rose = null; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java index 3b9df0fd0..c0abdc04c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java @@ -68,9 +68,6 @@ public class RingOfElements extends Ring { } public class Resistance extends RingBuff { - - public float durationFactor() { - return level() < 0 ? 1 : (1 + 0.5f * level()) / (1 + level()); - } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java index 978ee1ea2..6ffb7a061 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java @@ -61,7 +61,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Statue; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Swarm; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Wraith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Yog; -import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.NPC; import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; @@ -194,7 +193,7 @@ public class WandOfCorruption extends Wand { } } for (Class toAssign : debuffs.keySet()){ - if (debuffs.get(toAssign) > 0 && enemy.immunities().contains(toAssign)){ + if (debuffs.get(toAssign) > 0 && enemy.isImmune(toAssign)){ debuffs.put(toAssign, 0f); } } @@ -218,9 +217,7 @@ public class WandOfCorruption extends Wand { return; } - if (!enemy.properties().contains(Char.Property.BOSS) && - !enemy.properties().contains(Char.Property.MINIBOSS) && - !enemy.immunities().contains(Corruption.class)){ + if (!enemy.isImmune(Corruption.class)){ enemy.HP = enemy.HT; for (Buff buff : enemy.buffs()) { if (buff.type == Buff.buffType.NEGATIVE