use of com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken in project shattered-pixel-dungeon-gdx by 00-Evan.
the class TenguSprite method attack.
@Override
public void attack(int cell) {
if (!Dungeon.level.adjacent(cell, ch.pos)) {
final Char enemy = Actor.findChar(cell);
((MissileSprite) parent.recycle(MissileSprite.class)).reset(ch.pos, cell, new Shuriken(), new Callback() {
@Override
public void call() {
ch.next();
if (enemy != null)
ch.attack(enemy);
}
});
play(cast);
turnTo(ch.pos, cell);
} else {
super.attack(cell);
}
}
use of com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken in project shattered-pixel-dungeon-gdx by 00-Evan.
the class ShopRoom method generateItems.
protected static ArrayList<Item> generateItems() {
ArrayList<Item> itemsToSpawn = new ArrayList<>();
switch(Dungeon.depth) {
case 6:
itemsToSpawn.add((Random.Int(2) == 0 ? new Shortsword().identify() : new HandAxe()).identify());
itemsToSpawn.add(Random.Int(2) == 0 ? new FishingSpear().quantity(2) : new Shuriken().quantity(2));
itemsToSpawn.add(new LeatherArmor().identify());
break;
case 11:
itemsToSpawn.add((Random.Int(2) == 0 ? new Sword().identify() : new Mace()).identify());
itemsToSpawn.add(Random.Int(2) == 0 ? new ThrowingSpear().quantity(2) : new Bolas().quantity(2));
itemsToSpawn.add(new MailArmor().identify());
break;
case 16:
itemsToSpawn.add((Random.Int(2) == 0 ? new Longsword().identify() : new BattleAxe()).identify());
itemsToSpawn.add(Random.Int(2) == 0 ? new Javelin().quantity(2) : new Tomahawk().quantity(2));
itemsToSpawn.add(new ScaleArmor().identify());
break;
case 21:
itemsToSpawn.add(Random.Int(2) == 0 ? new Greatsword().identify() : new WarHammer().identify());
itemsToSpawn.add(Random.Int(2) == 0 ? new Trident().quantity(2) : new ThrowingHammer().quantity(2));
itemsToSpawn.add(new PlateArmor().identify());
itemsToSpawn.add(new Torch());
itemsToSpawn.add(new Torch());
itemsToSpawn.add(new Torch());
break;
}
itemsToSpawn.add(TippedDart.randomTipped());
itemsToSpawn.add(new MerchantsBeacon());
itemsToSpawn.add(ChooseBag(Dungeon.hero.belongings));
itemsToSpawn.add(new PotionOfHealing());
for (int i = 0; i < 3; i++) itemsToSpawn.add(Generator.random(Generator.Category.POTION));
itemsToSpawn.add(new ScrollOfIdentify());
itemsToSpawn.add(new ScrollOfRemoveCurse());
itemsToSpawn.add(new ScrollOfMagicMapping());
itemsToSpawn.add(Generator.random(Generator.Category.SCROLL));
for (int i = 0; i < 2; i++) itemsToSpawn.add(Random.Int(2) == 0 ? Generator.random(Generator.Category.POTION) : Generator.random(Generator.Category.SCROLL));
itemsToSpawn.add(new SmallRation());
itemsToSpawn.add(new SmallRation());
itemsToSpawn.add(new Bomb().random());
switch(Random.Int(5)) {
case 1:
itemsToSpawn.add(new Bomb());
break;
case 2:
itemsToSpawn.add(new Bomb().random());
break;
case 3:
case 4:
itemsToSpawn.add(new Honeypot());
break;
}
if (Dungeon.depth == 6) {
itemsToSpawn.add(new Ankh());
itemsToSpawn.add(new Weightstone());
} else {
itemsToSpawn.add(Random.Int(2) == 0 ? new Ankh() : new Weightstone());
}
TimekeepersHourglass hourglass = Dungeon.hero.belongings.getItem(TimekeepersHourglass.class);
if (hourglass != null) {
int bags = 0;
// this way players who get the hourglass late can still max it, usually.
switch(Dungeon.depth) {
case 6:
bags = (int) Math.ceil((5 - hourglass.sandBags) * 0.20f);
break;
case 11:
bags = (int) Math.ceil((5 - hourglass.sandBags) * 0.25f);
break;
case 16:
bags = (int) Math.ceil((5 - hourglass.sandBags) * 0.50f);
break;
case 21:
bags = (int) Math.ceil((5 - hourglass.sandBags) * 0.80f);
break;
}
for (int i = 1; i <= bags; i++) {
itemsToSpawn.add(new TimekeepersHourglass.sandBag());
hourglass.sandBags++;
}
}
Item rare;
switch(Random.Int(10)) {
case 0:
rare = Generator.random(Generator.Category.WAND);
rare.level(0);
break;
case 1:
rare = Generator.random(Generator.Category.RING);
rare.level(0);
break;
case 2:
rare = Generator.random(Generator.Category.ARTIFACT);
break;
default:
rare = new Stylus();
}
rare.cursed = rare.cursedKnown = false;
itemsToSpawn.add(rare);
// hard limit is 63 items + 1 shopkeeper, as shops can't be bigger than 8x8=64 internally
if (itemsToSpawn.size() > 63)
throw new RuntimeException("Shop attempted to carry more than 63 items!");
Random.shuffle(itemsToSpawn);
return itemsToSpawn;
}
use of com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken in project shattered-pixel-dungeon-gdx by 00-Evan.
the class HuntressArmor method doSpecial.
@Override
public void doSpecial() {
Item proto = new Shuriken();
for (Mob mob : Dungeon.level.mobs) {
if (Dungeon.level.heroFOV[mob.pos]) {
Callback callback = new Callback() {
@Override
public void call() {
curUser.attack(targets.get(this));
targets.remove(this);
if (targets.isEmpty()) {
curUser.spendAndNext(curUser.attackDelay());
}
}
};
((MissileSprite) curUser.sprite.parent.recycle(MissileSprite.class)).reset(curUser.pos, mob.pos, proto, callback);
targets.put(callback, mob);
}
}
if (targets.size() == 0) {
GLog.w(Messages.get(this, "no_enemies"));
return;
}
curUser.HP -= (curUser.HP / 3);
curUser.sprite.zap(curUser.pos);
curUser.busy();
}
Aggregations