From 3d8e104b9b24a70a174fd9bfab0545dffcf74ccc Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 16 Dec 2015 17:27:36 -0500 Subject: [PATCH] v0.3.3: implemented BOSS and MINIBOSS properties --- .../shatteredpixeldungeon/actors/Char.java | 2 +- .../shatteredpixeldungeon/actors/mobs/Bestiary.java | 6 ------ .../shatteredpixeldungeon/actors/mobs/DM300.java | 2 ++ .../shatteredpixeldungeon/actors/mobs/FetidRat.java | 2 ++ .../actors/mobs/GnollTrickster.java | 2 ++ .../shatteredpixeldungeon/actors/mobs/Goo.java | 2 ++ .../shatteredpixeldungeon/actors/mobs/GreatCrab.java | 2 ++ .../shatteredpixeldungeon/actors/mobs/King.java | 2 ++ .../actors/mobs/NewbornElemental.java | 1 + .../shatteredpixeldungeon/actors/mobs/RotHeart.java | 1 + .../shatteredpixeldungeon/actors/mobs/Tengu.java | 2 ++ .../shatteredpixeldungeon/actors/mobs/Yog.java | 5 +++++ .../shatteredpixeldungeon/items/wands/CursedWand.java | 6 ++++-- .../items/wands/WandOfCorruption.java | 9 +-------- 14 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 8b210a4b3..37102d1ec 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -165,7 +165,7 @@ public abstract class Char extends Actor { if ( this instanceof Yog ) { Dungeon.fail( Utils.format( ResultDescriptions.NAMED, name) ); - } if (Bestiary.isUnique( this )) { + } else if (properties().contains(Property.MINIBOSS) || properties().contains(Property.BOSS)) { Dungeon.fail( Utils.format( ResultDescriptions.UNIQUE, name) ); } else { Dungeon.fail( Utils.format( ResultDescriptions.MOB, Utils.indefinite( name )) ); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bestiary.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bestiary.java index da79ef028..778bef398 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bestiary.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bestiary.java @@ -179,10 +179,4 @@ public class Bestiary { return classes[ Random.chances( chances )]; } - - public static boolean isUnique( Char mob ) { - return mob instanceof Goo || mob instanceof Tengu || mob instanceof DM300 || mob instanceof King - || mob instanceof Yog.BurningFist || mob instanceof Yog.RottingFist - || mob instanceof FetidRat || mob instanceof GnollTrickster || mob instanceof GreatCrab; - } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java index 0ffc3356a..6dcac22bd 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java @@ -64,6 +64,8 @@ public class DM300 extends Mob { loot = new CapeOfThorns().identify(); lootChance = 0.333f; + + properties.add(Property.BOSS); } @Override diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java index 0a23dedde..99503c810 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FetidRat.java @@ -44,6 +44,8 @@ public class FetidRat extends Rat { EXP = 4; state = WANDERING; + + properties.add(Property.MINIBOSS); } @Override diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollTrickster.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollTrickster.java index 3d1e9cca0..99111fa45 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollTrickster.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollTrickster.java @@ -50,6 +50,8 @@ public class GnollTrickster extends Gnoll { loot = Generator.random(CurareDart.class); lootChance = 1f; + + properties.add(Property.MINIBOSS); } private int combo = 0; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java index 8bc397b8c..666eecd61 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java @@ -61,6 +61,8 @@ public class Goo extends Mob { loot = new LloydsBeacon().identify(); lootChance = 0.333f; + + properties.add(Property.BOSS); } private int pumpedUp = 0; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GreatCrab.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GreatCrab.java index 29c968b2d..59826fbbe 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GreatCrab.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GreatCrab.java @@ -42,6 +42,8 @@ public class GreatCrab extends Crab { EXP = 6; state = WANDERING; + + properties.add(Property.MINIBOSS); } private int moving = 0; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java index 49641ece8..2dc1a4e51 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/King.java @@ -66,6 +66,8 @@ public class King extends Mob { defenseSkill = 25; Undead.count = 0; + + properties.add(Property.BOSS); } private boolean nextPedestal = true; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewbornElemental.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewbornElemental.java index 535d1905f..f0174942c 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewbornElemental.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewbornElemental.java @@ -40,6 +40,7 @@ public class NewbornElemental extends Elemental { EXP = 7; + properties.add(Property.MINIBOSS); } @Override diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/RotHeart.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/RotHeart.java index 0d1a6659d..acbda89a8 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/RotHeart.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/RotHeart.java @@ -45,6 +45,7 @@ public class RotHeart extends Mob { state = PASSIVE; properties.add(Property.IMMOVABLE); + properties.add(Property.MINIBOSS); } @Override diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java index b09cba42a..ba36acb29 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Tengu.java @@ -64,6 +64,8 @@ public class Tengu extends Mob { HUNTING = new Hunting(); flying = true; //doesn't literally fly, but he is fleet-of-foot enough to avoid hazards + + properties.add(Property.BOSS); } @Override diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java index 44839c32d..d29bf2c33 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Yog.java @@ -71,6 +71,7 @@ public class Yog extends Mob { state = PASSIVE; + properties.add(Property.BOSS); properties.add(Property.IMMOVABLE); } @@ -230,6 +231,8 @@ public class Yog extends Mob { EXP = 0; state = WANDERING; + + properties.add(Property.BOSS); } @Override @@ -320,6 +323,8 @@ public class Yog extends Mob { EXP = 0; state = WANDERING; + + properties.add(Property.BOSS); } @Override diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java index 6236a734c..7524f9939 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java @@ -292,8 +292,10 @@ public class CursedWand { cursedFX(user, bolt, new Callback() { public void call() { Char ch = Actor.findChar( bolt.collisionPos ); - //TODO: this is lazy, should think of a better way to ID bosses, or have this effect be more sophisticated. - if (ch != null && ch != user && !Dungeon.bossLevel()){ + + if (ch != null && ch != user + && !ch.properties().contains(Char.Property.BOSS) + && !ch.properties().contains(Char.Property.MINIBOSS)){ Sheep sheep = new Sheep(); sheep.lifespan = 10; sheep.pos = ch.pos; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java index a14afae96..15198b648 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java @@ -48,13 +48,6 @@ public class WandOfCorruption extends Wand { image = ItemSpriteSheet.WAND_CORRUPTION; } - //FIXME: sloppy - private static HashSet bosses = new HashSet(Arrays.asList( - FetidRat.class, GnollTrickster.class, GreatCrab.class, - Goo.class, Tengu.class, DM300.class, King.class, - Yog.class, Yog.BurningFist.class, Yog.RottingFist.class - )); - @Override protected void onZap(Ballistica bolt) { Char ch = Actor.findChar(bolt.collisionPos); @@ -66,7 +59,7 @@ public class WandOfCorruption extends Wand { return; } - if (bosses.contains(ch.getClass())){ + if (ch.properties().contains(Char.Property.BOSS) || ch.properties().contains(Char.Property.MINIBOSS)){ GLog.w("Bosses are immune to corruption"); return; }