use of com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength in project shattered-pixel-dungeon-gdx by 00-Evan.
the class Frost method attachTo.
@Override
public boolean attachTo(Char target) {
if (super.attachTo(target)) {
target.paralysed++;
Buff.detach(target, Burning.class);
Buff.detach(target, Chill.class);
if (target instanceof Hero) {
Hero hero = (Hero) target;
ArrayList<Item> freezable = new ArrayList<>();
// does not reach inside of containers
for (Item i : hero.belongings.backpack.items) {
if ((i instanceof Potion && !(i instanceof PotionOfStrength || i instanceof PotionOfMight)) || i instanceof MysteryMeat) {
freezable.add(i);
}
}
if (!freezable.isEmpty()) {
Item toFreeze = Random.element(freezable).detach(hero.belongings.backpack);
if (toFreeze instanceof Potion) {
((Potion) toFreeze).shatter(hero.pos);
} else if (toFreeze instanceof MysteryMeat) {
FrozenCarpaccio carpaccio = new FrozenCarpaccio();
if (!carpaccio.collect(hero.belongings.backpack)) {
Dungeon.level.drop(carpaccio, target.pos).sprite.drop();
}
}
GLog.w(Messages.get(this, "freezes", toFreeze.toString()));
}
} else if (target instanceof Thief) {
Item item = ((Thief) target).item;
if (item instanceof Potion && !(item instanceof PotionOfStrength || item instanceof PotionOfMight)) {
((Potion) ((Thief) target).item).shatter(target.pos);
((Thief) target).item = null;
} else if (item instanceof MysteryMeat) {
((Thief) target).item = new FrozenCarpaccio();
;
}
}
return true;
} else {
return false;
}
}
use of com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength in project shattered-pixel-dungeon-gdx by 00-Evan.
the class Heap method freeze.
public void freeze() {
if (type == Type.MIMIC) {
Mimic m = Mimic.spawnAt(pos, items);
if (m != null) {
Buff.prolong(m, Frost.class, Frost.duration(m) * Random.Float(1.0f, 1.5f));
destroy();
}
}
if (type != Type.HEAP) {
return;
}
boolean frozen = false;
for (Item item : items.toArray(new Item[0])) {
if (item instanceof MysteryMeat) {
replace(item, FrozenCarpaccio.cook((MysteryMeat) item));
frozen = true;
} else if (item instanceof Potion && !(item instanceof PotionOfStrength || item instanceof PotionOfMight)) {
items.remove(item);
((Potion) item).shatter(pos);
frozen = true;
} else if (item instanceof Bomb) {
((Bomb) item).fuse = null;
frozen = true;
}
}
if (frozen) {
if (isEmpty()) {
destroy();
} else if (sprite != null) {
sprite.view(items.peek());
}
}
}
use of com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength in project shattered-pixel-dungeon-gdx by 00-Evan.
the class Level method create.
public void create() {
Random.seed(Dungeon.seedCurDepth());
if (!(Dungeon.bossLevel() || Dungeon.depth == 21)) /*final shop floor*/
{
if (Dungeon.isChallenged(Challenges.NO_FOOD)) {
addItemToSpawn(new SmallRation());
} else {
addItemToSpawn(Generator.random(Generator.Category.FOOD));
}
if (Dungeon.isChallenged(Challenges.DARKNESS)) {
addItemToSpawn(new Torch());
}
if (Dungeon.posNeeded()) {
addItemToSpawn(new PotionOfStrength());
Dungeon.LimitedDrops.STRENGTH_POTIONS.count++;
}
if (Dungeon.souNeeded()) {
addItemToSpawn(new ScrollOfUpgrade());
Dungeon.LimitedDrops.UPGRADE_SCROLLS.count++;
}
if (Dungeon.asNeeded()) {
addItemToSpawn(new Stylus());
Dungeon.LimitedDrops.ARCANE_STYLI.count++;
}
DriedRose rose = Dungeon.hero.belongings.getItem(DriedRose.class);
if (rose != null && rose.isIdentified() && !rose.cursed) {
// aim to drop 1 petal every 2 floors
int petalsNeeded = (int) Math.ceil((float) ((Dungeon.depth / 2) - rose.droppedPetals) / 3);
for (int i = 1; i <= petalsNeeded; i++) {
// the player may miss a single petal and still max their rose.
if (rose.droppedPetals < 11) {
addItemToSpawn(new DriedRose.Petal());
rose.droppedPetals++;
}
}
}
if (Dungeon.depth > 1) {
switch(Random.Int(10)) {
case 0:
if (!Dungeon.bossLevel(Dungeon.depth + 1)) {
feeling = Feeling.CHASM;
}
break;
case 1:
feeling = Feeling.WATER;
break;
case 2:
feeling = Feeling.GRASS;
break;
case 3:
feeling = Feeling.DARK;
addItemToSpawn(new Torch());
viewDistance = Math.round(viewDistance / 2f);
break;
}
}
}
do {
width = height = length = 0;
mobs = new HashSet<>();
heaps = new SparseArray<>();
blobs = new HashMap<>();
plants = new SparseArray<>();
traps = new SparseArray<>();
customTiles = new HashSet<>();
customWalls = new HashSet<>();
} while (!build());
buildFlagMaps();
cleanWalls();
createMobs();
createItems();
Random.seed();
}
use of com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength in project shattered-pixel-dungeon-gdx by 00-Evan.
the class Hero method actPickUp.
private boolean actPickUp(HeroAction.PickUp action) {
int dst = action.dst;
if (pos == dst) {
Heap heap = Dungeon.level.heaps.get(pos);
if (heap != null) {
Item item = heap.peek();
if (item.doPickUp(this)) {
heap.pickUp();
if (item instanceof Dewdrop || item instanceof TimekeepersHourglass.sandBag || item instanceof DriedRose.Petal || item instanceof Key) {
// Do Nothing
} else {
boolean important = ((item instanceof ScrollOfUpgrade || item instanceof ScrollOfMagicalInfusion) && ((Scroll) item).isKnown()) || ((item instanceof PotionOfStrength || item instanceof PotionOfMight) && ((Potion) item).isKnown());
if (important) {
GLog.p(Messages.get(this, "you_now_have", item.name()));
} else {
GLog.i(Messages.get(this, "you_now_have", item.name()));
}
}
curAction = null;
} else {
heap.sprite.drop();
ready();
}
} else {
ready();
}
return false;
} else if (getCloser(dst)) {
return true;
} else {
ready();
return false;
}
}
Aggregations