diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Dewdrop.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Dewdrop.java index 9322ae946..3d7af0a80 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Dewdrop.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Dewdrop.java @@ -74,7 +74,7 @@ public class Dewdrop extends Item { } Sample.INSTANCE.play( Assets.Sounds.DEWDROP ); - hero.spendAndNext( TIME_TO_PICK_UP ); + hero.spendAndNext( pickupDelay() ); return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/EnergyCrystal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/EnergyCrystal.java index 158e3c1b3..ed4964374 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/EnergyCrystal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/EnergyCrystal.java @@ -64,7 +64,7 @@ public class EnergyCrystal extends Item { GameScene.pickUp( this, pos ); hero.sprite.showStatusWithIcon( 0x44CCFF, Integer.toString(quantity), FloatingText.ENERGY ); - hero.spendAndNext( TIME_TO_PICK_UP ); + hero.spendAndNext( pickupDelay() ); Sample.INSTANCE.play( Assets.Sounds.ITEM ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Gold.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Gold.java index 6994ae0eb..4610a6d05 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Gold.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Gold.java @@ -68,7 +68,7 @@ public class Gold extends Item { GameScene.pickUp( this, pos ); hero.sprite.showStatusWithIcon( CharSprite.NEUTRAL, Integer.toString(quantity), FloatingText.GOLD ); - hero.spendAndNext( TIME_TO_PICK_UP ); + hero.spendAndNext( pickupDelay() ); Sample.INSTANCE.play( Assets.Sounds.GOLD, 1, 1, Random.Float( 0.9f, 1.1f ) ); updateQuickslot(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java index 10bfacf7b..ddbac4a7a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Item.java @@ -126,7 +126,7 @@ public class Item implements Bundlable { GameScene.pickUp( this, pos ); Sample.INSTANCE.play( Assets.Sounds.ITEM ); - hero.spendAndNext( TIME_TO_PICK_UP ); + hero.spendAndNext( pickupDelay() ); return true; } else { @@ -697,6 +697,10 @@ public class Item implements Bundlable { public float castDelay( Char user, int cell ){ return TIME_TO_THROW; } + + public float pickupDelay(){ + return TIME_TO_PICK_UP; + } protected static Hero curUser = null; protected static Item curItem = null; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/LostBackpack.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/LostBackpack.java index 0431fbffa..4a61836db 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/LostBackpack.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/LostBackpack.java @@ -77,7 +77,7 @@ public class LostBackpack extends Item { Item.updateQuickslot(); Sample.INSTANCE.play( Assets.Sounds.DEWDROP ); - hero.spendAndNext(TIME_TO_PICK_UP); + hero.spendAndNext(pickupDelay()); GameScene.pickUp( this, pos ); ((HeroSprite)hero.sprite).updateArmor(); 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 62356be01..24fe5d28d 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 @@ -503,7 +503,7 @@ public class DriedRose extends Artifact { return false; } if ( rose.level() >= rose.levelCap ){ GLog.i( Messages.get(this, "no_room") ); - hero.spendAndNext(TIME_TO_PICK_UP); + hero.spendAndNext(pickupDelay()); return true; } else { @@ -516,7 +516,7 @@ public class DriedRose extends Artifact { Sample.INSTANCE.play( Assets.Sounds.DEWDROP ); GameScene.pickUp(this, pos); - hero.spendAndNext(TIME_TO_PICK_UP); + hero.spendAndNext(pickupDelay()); return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/MasterThievesArmband.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/MasterThievesArmband.java index 3d860237e..68aeb512e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/MasterThievesArmband.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/MasterThievesArmband.java @@ -165,7 +165,7 @@ public class MasterThievesArmband extends Artifact { } else { if (loot.doPickUp(curUser)) { //item collection happens instantly - curUser.spend(-TIME_TO_PICK_UP); + curUser.spend(-loot.pickupDelay()); } else { Dungeon.level.drop(loot, curUser.pos).sprite.drop(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java index 3a2c11f5c..ea16b2a94 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java @@ -518,7 +518,7 @@ public class TimekeepersHourglass extends Artifact { else GLog.i( Messages.get(this, "levelup") ); GameScene.pickUp(this, pos); - hero.spendAndNext(TIME_TO_PICK_UP); + hero.spendAndNext(pickupDelay()); return true; } else { GLog.w( Messages.get(this, "no_hourglass") ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/DocumentPage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/DocumentPage.java index 3d1a2f8a6..ef79e4a8f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/DocumentPage.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/DocumentPage.java @@ -64,7 +64,7 @@ public abstract class DocumentPage extends Item { } document().findPage(page); Sample.INSTANCE.play( Assets.Sounds.ITEM ); - hero.spendAndNext( TIME_TO_PICK_UP ); + hero.spendAndNext( pickupDelay() ); return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/Guidebook.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/Guidebook.java index af1b391b1..ab49ebc05 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/Guidebook.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/Guidebook.java @@ -63,7 +63,7 @@ public class Guidebook extends Item { } GameScene.flashForDocument(Document.ADVENTURERS_GUIDE, Document.GUIDE_INTRO); Sample.INSTANCE.play( Assets.Sounds.ITEM ); - hero.spendAndNext( TIME_TO_PICK_UP ); + hero.spendAndNext( pickupDelay() ); return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/keys/Key.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/keys/Key.java index e5b517499..a0beab19c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/keys/Key.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/keys/Key.java @@ -57,7 +57,7 @@ public abstract class Key extends Item { WndJournal.last_index = 0; Notes.add(this); Sample.INSTANCE.play( Assets.Sounds.ITEM ); - hero.spendAndNext( TIME_TO_PICK_UP ); + hero.spendAndNext( pickupDelay() ); GameScene.updateKeyDisplay(); return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/TelekineticGrab.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/TelekineticGrab.java index 6cd4331cc..3e6a8e98a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/TelekineticGrab.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/spells/TelekineticGrab.java @@ -75,7 +75,7 @@ public class TelekineticGrab extends TargetedSpell { Item item = ch.buff(PinCushion.class).grabOne(); if (item.doPickUp(hero, ch.pos)) { - hero.spend(-Item.TIME_TO_PICK_UP); //casting the spell already takes a turn + hero.spend(-item.pickupDelay()); //casting the spell already takes a turn GLog.i( Messages.capitalize(Messages.get(hero, "you_now_have", item.name())) ); } else { @@ -100,7 +100,7 @@ public class TelekineticGrab extends TargetedSpell { Item item = h.peek(); if (item.doPickUp(hero, h.pos)) { h.pickUp(); - hero.spend(-Item.TIME_TO_PICK_UP); //casting the spell already takes a turn + hero.spend(-item.pickupDelay()); //casting the spell already takes a turn GLog.i( Messages.capitalize(Messages.get(hero, "you_now_have", item.name())) ); } else { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java index 93f0a0073..c30bd0caf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/HeavyBoomerang.java @@ -51,16 +51,22 @@ public class HeavyBoomerang extends MissileWeapon { (tier-1) * lvl; //3 scaling, down from 4 } - boolean circleBackhit = false; + boolean circlingBack = false; @Override protected float adjacentAccFactor(Char owner, Char target) { - if (circleBackhit){ + if (circlingBack){ return 1.5f; } return super.adjacentAccFactor(owner, target); } + @Override + public float pickupDelay() { + //pickup is instant when circling back + return circlingBack ? 0f : super.pickupDelay(); + } + @Override protected void rangedHit(Char enemy, int cell) { decrementDurability(); @@ -126,22 +132,18 @@ public class HeavyBoomerang extends MissileWeapon { @Override public void call() { detach(); + boomerang.circlingBack = true; if (returnTarget == target){ if (!boomerang.spawnedForEffect) { - if (target instanceof Hero && boomerang.doPickUp((Hero) target)) { - //grabbing the boomerang takes no time - ((Hero) target).spend(-TIME_TO_PICK_UP); - } else { + if (!(target instanceof Hero) || !boomerang.doPickUp((Hero) target)) { Dungeon.level.drop(boomerang, returnPos).sprite.drop(); } } } else if (returnTarget != null){ - boomerang.circleBackhit = true; if (((Hero)target).shoot( returnTarget, boomerang )) { boomerang.decrementDurability(); } - boomerang.circleBackhit = false; if (!boomerang.spawnedForEffect && boomerang.durability > 0) { Dungeon.level.drop(boomerang, returnPos).sprite.drop(); } @@ -149,6 +151,7 @@ public class HeavyBoomerang extends MissileWeapon { } else if (!boomerang.spawnedForEffect) { Dungeon.level.drop(boomerang, returnPos).sprite.drop(); } + boomerang.circlingBack = false; CircleBack.this.next(); } }); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index b287e1fd5..562e93c74 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -598,7 +598,7 @@ abstract public class MissileWeapon extends Weapon { parent = null; if (!UpgradedSetTracker.pickupValid(hero, this)){ Sample.INSTANCE.play( Assets.Sounds.ITEM ); - hero.spendAndNext( TIME_TO_PICK_UP ); + hero.spendAndNext( pickupDelay() ); GLog.w(Messages.get(this, "dust")); quantity(0); return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java index cdb3308dd..f96675926 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java @@ -22,7 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class ThrowingClub extends MissileWeapon { @@ -38,12 +37,8 @@ public class ThrowingClub extends MissileWeapon { } @Override - public boolean doPickUp(Hero hero, int pos) { - if (super.doPickUp(hero, pos)){ - hero.spendAndNext( -hero.cooldown() ); - return true; - } - return false; + public float pickupDelay() { + return 0; //picked up instantly } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingHammer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingHammer.java index 2963bf571..d0f65c688 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingHammer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingHammer.java @@ -22,7 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class ThrowingHammer extends MissileWeapon { @@ -38,12 +37,8 @@ public class ThrowingHammer extends MissileWeapon { } @Override - public boolean doPickUp(Hero hero, int pos) { - if (super.doPickUp(hero, pos)){ - hero.spendAndNext( -hero.cooldown() ); - return true; - } - return false; + public float pickupDelay() { + return 0; //picked up instantly } @Override