v3.0.0: fixed a fairly seriously bug with item type discover tracking
triggering it in 'setSeen' also meant it was constantly triggered by sync behaviour, which is not what we want.
This commit is contained in:
@@ -142,7 +142,7 @@ public class Statistics {
|
||||
private static final String SNEAKS = "sneakAttacks";
|
||||
private static final String THROWN = "thrownAssists";
|
||||
|
||||
private static final String ITEM_DISCOVERIES = "item_discoveries";
|
||||
private static final String ITEM_TYPES_DISCOVERED = "item_types_discovered";
|
||||
|
||||
private static final String SPAWNERS = "spawnersAlive";
|
||||
|
||||
@@ -165,7 +165,7 @@ public class Statistics {
|
||||
bundle.put( ALCHEMY, itemsCrafted );
|
||||
bundle.put( PIRANHAS, piranhasKilled );
|
||||
bundle.put( ANKHS, ankhsUsed );
|
||||
bundle.put( ITEM_DISCOVERIES, itemTypesDiscovered.toArray(new Class<?>[0]) );
|
||||
bundle.put( ITEM_TYPES_DISCOVERED, itemTypesDiscovered.toArray(new Class<?>[0]) );
|
||||
|
||||
bundle.put( PROG_SCORE, progressScore );
|
||||
bundle.put( ITEM_VAL, heldItemValue );
|
||||
@@ -211,8 +211,8 @@ public class Statistics {
|
||||
piranhasKilled = bundle.getInt( PIRANHAS );
|
||||
ankhsUsed = bundle.getInt( ANKHS );
|
||||
|
||||
if (bundle.contains( ITEM_DISCOVERIES )) {
|
||||
itemTypesDiscovered = new HashSet<>(Arrays.asList(bundle.getClassArray(ITEM_DISCOVERIES)));
|
||||
if (bundle.contains( ITEM_TYPES_DISCOVERED )) {
|
||||
itemTypesDiscovered = new HashSet<>(Arrays.asList(bundle.getClassArray(ITEM_TYPES_DISCOVERED)));
|
||||
} else {
|
||||
itemTypesDiscovered.clear();
|
||||
}
|
||||
|
||||
@@ -768,11 +768,6 @@ public enum Talent {
|
||||
}
|
||||
}
|
||||
|
||||
//note that IDing can happen in alchemy scene, so be careful with VFX here
|
||||
public static void onItemIdentified( Hero hero, Item item ){
|
||||
//currently no talents that trigger here, it wasn't a very popular trigger =(
|
||||
}
|
||||
|
||||
public static int onAttackProc( Hero hero, Char enemy, int dmg ){
|
||||
|
||||
if (hero.hasTalent(Talent.PROVOKED_ANGER)
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Healing;
|
||||
@@ -53,6 +54,7 @@ public class Dewdrop extends Item {
|
||||
|
||||
Waterskin flask = hero.belongings.getItem( Waterskin.class );
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
|
||||
if (flask != null && !flask.isFull()){
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
@@ -56,6 +57,7 @@ public class EnergyCrystal extends Item {
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
|
||||
Dungeon.energy += quantity;
|
||||
//TODO track energy collected maybe? We do already track recipes crafted though..
|
||||
|
||||
@@ -60,6 +60,7 @@ public class Gold extends Item {
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
|
||||
Dungeon.gold += quantity;
|
||||
Statistics.goldCollected += quantity;
|
||||
|
||||
@@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness;
|
||||
@@ -231,7 +232,10 @@ public class Item implements Bundlable {
|
||||
if (Dungeon.hero != null && Dungeon.hero.isAlive()) {
|
||||
Badges.validateItemLevelAquired( this );
|
||||
Talent.onItemCollected(Dungeon.hero, item);
|
||||
if (isIdentified()) Catalog.setSeen(getClass());
|
||||
if (isIdentified()) {
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
}
|
||||
}
|
||||
if (TippedDart.lostDarts > 0){
|
||||
Dart d = new Dart();
|
||||
@@ -258,7 +262,10 @@ public class Item implements Bundlable {
|
||||
if (Dungeon.hero != null && Dungeon.hero.isAlive()) {
|
||||
Badges.validateItemLevelAquired( this );
|
||||
Talent.onItemCollected( Dungeon.hero, this );
|
||||
if (isIdentified()) Catalog.setSeen(getClass());
|
||||
if (isIdentified()){
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
}
|
||||
}
|
||||
|
||||
items.add( this );
|
||||
@@ -452,7 +459,7 @@ public class Item implements Bundlable {
|
||||
|
||||
if (byHero && Dungeon.hero != null && Dungeon.hero.isAlive()){
|
||||
Catalog.setSeen(getClass());
|
||||
if (!isIdentified()) Talent.onItemIdentified(Dungeon.hero, this);
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
}
|
||||
|
||||
levelKnown = true;
|
||||
|
||||
@@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.armor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
|
||||
@@ -209,6 +210,7 @@ public class Armor extends EquipableItem {
|
||||
if(super.collect(container)){
|
||||
if (Dungeon.hero != null && Dungeon.hero.isAlive() && isIdentified() && glyph != null){
|
||||
Catalog.setSeen(glyph.getClass());
|
||||
Statistics.itemTypesDiscovered.add(glyph.getClass());
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
@@ -220,6 +222,7 @@ public class Armor extends EquipableItem {
|
||||
public Item identify(boolean byHero) {
|
||||
if (glyph != null && byHero && Dungeon.hero != null && Dungeon.hero.isAlive()){
|
||||
Catalog.setSeen(glyph.getClass());
|
||||
Statistics.itemTypesDiscovered.add(glyph.getClass());
|
||||
}
|
||||
return super.identify(byHero);
|
||||
}
|
||||
@@ -649,6 +652,7 @@ public class Armor extends EquipableItem {
|
||||
if (glyph != null && isIdentified() && Dungeon.hero != null
|
||||
&& Dungeon.hero.isAlive() && Dungeon.hero.belongings.contains(this)){
|
||||
Catalog.setSeen(glyph.getClass());
|
||||
Statistics.itemTypesDiscovered.add(glyph.getClass());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas;
|
||||
@@ -489,6 +490,7 @@ public class DriedRose extends Artifact {
|
||||
@Override
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
DriedRose rose = hero.belongings.getItem( DriedRose.class );
|
||||
|
||||
if (rose == null){
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
@@ -500,6 +501,7 @@ public class TimekeepersHourglass extends Artifact {
|
||||
@Override
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
TimekeepersHourglass hourglass = hero.belongings.getItem( TimekeepersHourglass.class );
|
||||
if (hourglass != null && !hourglass.cursed) {
|
||||
hourglass.upgrade();
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.items.keys;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
@@ -51,6 +52,7 @@ public abstract class Key extends Item {
|
||||
@Override
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
GameScene.pickUpJournal(this, pos);
|
||||
WndJournal.last_index = 0;
|
||||
Notes.add(this);
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.potions;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire;
|
||||
@@ -357,6 +358,7 @@ public class Potion extends Item {
|
||||
|
||||
if (Dungeon.hero.isAlive()) {
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.rings;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.EnhancedRings;
|
||||
@@ -161,6 +162,7 @@ public class Ring extends KindofMisc {
|
||||
|
||||
if (Dungeon.hero.isAlive()) {
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.scrolls;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
|
||||
@@ -220,6 +221,7 @@ public abstract class Scroll extends Item {
|
||||
|
||||
if (Dungeon.hero.isAlive()) {
|
||||
Catalog.setSeen(getClass());
|
||||
Statistics.itemTypesDiscovered.add(getClass());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.scrolls;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Transmuting;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.EquipableItem;
|
||||
@@ -139,6 +140,7 @@ public class ScrollOfTransmutation extends InventoryScroll {
|
||||
}
|
||||
if (result.isIdentified()){
|
||||
Catalog.setSeen(result.getClass());
|
||||
Statistics.itemTypesDiscovered.add(result.getClass());
|
||||
}
|
||||
Transmuting.show(curUser, item, result);
|
||||
curUser.sprite.emitter().start(Speck.factory(Speck.CHANGE), 0.2f, 10);
|
||||
|
||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Berserk;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
|
||||
@@ -219,6 +220,7 @@ abstract public class Weapon extends KindOfWeapon {
|
||||
if(super.collect(container)){
|
||||
if (Dungeon.hero != null && Dungeon.hero.isAlive() && isIdentified() && enchantment != null){
|
||||
Catalog.setSeen(enchantment.getClass());
|
||||
Statistics.itemTypesDiscovered.add(enchantment.getClass());
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
@@ -230,6 +232,7 @@ abstract public class Weapon extends KindOfWeapon {
|
||||
public Item identify(boolean byHero) {
|
||||
if (enchantment != null && byHero && Dungeon.hero != null && Dungeon.hero.isAlive()){
|
||||
Catalog.setSeen(enchantment.getClass());
|
||||
Statistics.itemTypesDiscovered.add(enchantment.getClass());
|
||||
}
|
||||
return super.identify(byHero);
|
||||
}
|
||||
@@ -410,6 +413,7 @@ abstract public class Weapon extends KindOfWeapon {
|
||||
if (ench != null && isIdentified() && Dungeon.hero != null
|
||||
&& Dungeon.hero.isAlive() && Dungeon.hero.belongings.contains(this)){
|
||||
Catalog.setSeen(ench.getClass());
|
||||
Statistics.itemTypesDiscovered.add(ench.getClass());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.journal;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Amulet;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Ankh;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.ArcaneResin;
|
||||
@@ -46,13 +45,13 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.ArcaneBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Firebomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.SmokeBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.FlashBangBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.FrostBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.HolyBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Noisemaker;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.RegrowthBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.FlashBangBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.ShrapnelBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.SmokeBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.WoollyBomb;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.Berry;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
|
||||
@@ -321,7 +320,6 @@ public enum Catalog {
|
||||
Journal.saveNeeded = true;
|
||||
}
|
||||
}
|
||||
Statistics.itemTypesDiscovered.add(cls);
|
||||
Badges.validateCatalogBadges();
|
||||
}
|
||||
|
||||
|
||||
@@ -69,8 +69,8 @@ public class WndChooseAbility extends Window {
|
||||
for (ArmorAbility ability : hero.heroClass.armorAbilities()) {
|
||||
|
||||
String warn;
|
||||
if (Dungeon.initialVersion < 820){
|
||||
warn = "_WARNING, code to track which items you have found for use in trinity was added in BETA-2.1. This run was started before that, and so some items you have encountered may not be usable with Trinity. Any items you currently hold can be made selectable by dropping and picking them back up._\n\n";
|
||||
if (Dungeon.initialVersion < 821){
|
||||
warn = "_WARNING, code to track which items you have found for use in trinity was added in BETA-2.2. This run was started before that, and so some items you have encountered may not be usable with Trinity. Any items you currently hold can be made selectable by dropping and picking them back up._\n\n";
|
||||
} else {
|
||||
warn = "";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user