From 2c969e9f451517fd8888e8333df61f3207f2f564 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 5 Mar 2022 20:39:20 -0500 Subject: [PATCH] v1.2.0: added a fifth badge to each of the current tiered badges --- core/src/main/assets/interfaces/badges.png | Bin 4328 -> 4573 bytes .../assets/messages/actors/actors.properties | 4 +- .../main/assets/messages/misc/misc.properties | 72 ++++++---- .../shatteredpixeldungeon/Badges.java | 128 +++++++++++------- 4 files changed, 124 insertions(+), 80 deletions(-) diff --git a/core/src/main/assets/interfaces/badges.png b/core/src/main/assets/interfaces/badges.png index ef8935b0a69afac277ca8983c024035935f4e182..4c2b341044209d17e726b0f404ccf48d06196ea9 100644 GIT binary patch delta 4205 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 LlkE!|%9VcucQ6kX delta 3958 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 diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index fc767c5cb..0c01eaf78 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -463,11 +463,11 @@ actors.hero.heroclass.mage_unlock=The Mage is an expert with wands, and carries actors.hero.heroclass.rogue=rogue actors.hero.heroclass.rogue_desc=The Rogue starts with a unique _Cloak of Shadows_, which he can use to become invisible at will.\n\nThe Rogue can _detect secrets and traps_ from a greater distance.\n\nThe Rogue also starts with _a dagger_, _three throwing knives_, cloth armor, a waterskin, and a velvet pouch.\n\nThe Rogue automatically identifies:\n_-_ Scrolls of Identify\n_-_ Potions of Invisibility\n_-_ Scrolls of Magic Mapping -actors.hero.heroclass.rogue_unlock=The Rogue can control the flow of battle and strike from invisibility using his _unique cloak of shadows._\n\nTo unlock him _perform 10 surprise attacks in one run._ +actors.hero.heroclass.rogue_unlock=The Rogue can control the flow of battle and strike from invisibility using his _unique cloak of shadows._\n\nTo unlock him _perform 10 surprise attacks in one game._ actors.hero.heroclass.huntress=huntress actors.hero.heroclass.huntress_desc=The Huntress starts with a _unique spirit bow,_ which can fire an infinite number of conjured arrows.\n\nThe Huntress can travel through tall grass _without trampling it_.\n\nThe Huntress also starts with _studded gloves_, cloth armor, a waterskin, and a velvet pouch.\n\nThe Huntress automatically identifies:\n_-_ Scrolls of Identify\n_-_ Potions of Mind Vision\n_-_ Scrolls of Lullaby -actors.hero.heroclass.huntress_unlock=The Huntress is a master of thrown weapons, and has a _unique magical bow_ with infinite arrows.\n\nTo unlock her _hit 15 different enemies with thrown weapons in one run._ +actors.hero.heroclass.huntress_unlock=The Huntress is a master of thrown weapons, and has a _unique magical bow_ with infinite arrows.\n\nTo unlock her _hit 15 different enemies with thrown weapons in one game._ actors.hero.herosubclass.berserker=berserker actors.hero.herosubclass.berserker_short_desc=The _Berserker_ builds rage as he takes damage. Rage increases his damage, and can let him briefly cheat death. diff --git a/core/src/main/assets/messages/misc/misc.properties b/core/src/main/assets/messages/misc/misc.properties index 5bb920f8b..39ecf6709 100644 --- a/core/src/main/assets/messages/misc/misc.properties +++ b/core/src/main/assets/messages/misc/misc.properties @@ -1,21 +1,25 @@ badges.endorsed=Badge endorsed: %s -badges.new=Badge unlocked!: %s +badges.new=Badge unlocked: %s badges$badge.monsters_slain_1.title=Novice Monster Hunter -badges$badge.monsters_slain_1.desc=Defeat 10 enemies in one run +badges$badge.monsters_slain_1.desc=Defeat 10 enemies in one game badges$badge.monsters_slain_2.title=Adept Monster Hunter -badges$badge.monsters_slain_2.desc=Defeat 50 enemies in one run +badges$badge.monsters_slain_2.desc=Defeat 50 enemies in one game badges$badge.monsters_slain_3.title=Expert Monster Hunter -badges$badge.monsters_slain_3.desc=Defeat 150 enemies in one run +badges$badge.monsters_slain_3.desc=Defeat 100 enemies in one game badges$badge.monsters_slain_4.title=Master Monster Hunter -badges$badge.monsters_slain_4.desc=Defeat 250 enemies in one run +badges$badge.monsters_slain_4.desc=Defeat 200 enemies in one game +badges$badge.monsters_slain_5.title=Grandmaster Monster Hunter +badges$badge.monsters_slain_5.desc=Defeat 300 enemies in one game badges$badge.gold_collected_1.title=Novice Treasure Hunter -badges$badge.gold_collected_1.desc=Collect 100 gold in one run +badges$badge.gold_collected_1.desc=Collect 250 gold in one game badges$badge.gold_collected_2.title=Adept Treasure Hunter -badges$badge.gold_collected_2.desc=Collect 500 gold in one run +badges$badge.gold_collected_2.desc=Collect 1000 gold in one game badges$badge.gold_collected_3.title=Expert Treasure Hunter -badges$badge.gold_collected_3.desc=Collect 2500 gold in one run +badges$badge.gold_collected_3.desc=Collect 2500 gold in one game badges$badge.gold_collected_4.title=Master Treasure Hunter -badges$badge.gold_collected_4.desc=Collect 7500 gold in one run +badges$badge.gold_collected_4.desc=Collect 5000 gold in one game +badges$badge.gold_collected_5.title=Grandmaster Treasure Hunter +badges$badge.gold_collected_5.desc=Collect 10,000 gold in one game badges$badge.level_reached_1.title=Novice Adventurer badges$badge.level_reached_1.desc=Reach level 6 badges$badge.level_reached_2.title=Adept Adventurer @@ -24,6 +28,8 @@ badges$badge.level_reached_3.title=Expert Adventurer badges$badge.level_reached_3.desc=Reach level 18 badges$badge.level_reached_4.title=Master Adventurer badges$badge.level_reached_4.desc=Reach level 24 +badges$badge.level_reached_5.title=Grandmaster Adventurer +badges$badge.level_reached_5.desc=Reach level 30 badges$badge.all_weapons_identified.title=Weapon Researcher badges$badge.all_weapons_identified.desc=Identify all weapons in your journal badges$badge.all_armor_identified.title=Armor Researcher @@ -69,21 +75,25 @@ badges$badge.boss_slain_1_all_classes.desc=Defeat the first boss with the Warrio badges$badge.boss_slain_3_all_subclasses.title=Jack of All Trades badges$badge.boss_slain_3_all_subclasses.desc=Defeat the third boss with the Gladiator, Berserker, Warlock, Battlemage, Freerunner, Assassin, Sniper & Warden badges$badge.strength_attained_1.title=Novice Bodybuilder -badges$badge.strength_attained_1.desc=Reach 13 points of strength +badges$badge.strength_attained_1.desc=Reach 12 points of strength badges$badge.strength_attained_2.title=Adept Bodybuilder -badges$badge.strength_attained_2.desc=Reach 15 points of strength +badges$badge.strength_attained_2.desc=Reach 14 points of strength badges$badge.strength_attained_3.title=Expert Bodybuilder -badges$badge.strength_attained_3.desc=Reach 17 points of strength +badges$badge.strength_attained_3.desc=Reach 16 points of strength badges$badge.strength_attained_4.title=Master Bodybuilder -badges$badge.strength_attained_4.desc=Reach 19 points of strength +badges$badge.strength_attained_4.desc=Reach 18 points of strength +badges$badge.strength_attained_5.title=Grandmaster Bodybuilder +badges$badge.strength_attained_5.desc=Reach 20 points of strength badges$badge.food_eaten_1.title=Novice Gourmet -badges$badge.food_eaten_1.desc=Eat 10 pieces of food in one run +badges$badge.food_eaten_1.desc=Eat food 10 times in one game badges$badge.food_eaten_2.title=Adept Gourmet -badges$badge.food_eaten_2.desc=Eat 20 pieces of food in one run +badges$badge.food_eaten_2.desc=Eat food 20 times in one game badges$badge.food_eaten_3.title=Expert Gourmet -badges$badge.food_eaten_3.desc=Eat 30 pieces of food in one run +badges$badge.food_eaten_3.desc=Eat food 30 times in one game badges$badge.food_eaten_4.title=Master Gourmet -badges$badge.food_eaten_4.desc=Eat 40 pieces of food in one run +badges$badge.food_eaten_4.desc=Eat food 40 times in one game +badges$badge.food_eaten_5.title=Grandmaster Gourmet +badges$badge.food_eaten_5.desc=Eat food 50 times in one game badges$badge.item_level_1.title=Novice Enchanter badges$badge.item_level_1.desc=Acquire an item of level 3 or higher badges$badge.item_level_2.title=Adept Enchanter @@ -92,6 +102,8 @@ badges$badge.item_level_3.title=Expert Enchanter badges$badge.item_level_3.desc=Acquire an item of level 9 or higher badges$badge.item_level_4.title=Master Enchanter badges$badge.item_level_4.desc=Acquire an item of level 12 or higher +badges$badge.item_level_5.title=Grandmaster Enchanter +badges$badge.item_level_5.desc=Acquire an item of level 15 or higher badges$badge.victory.title=Victory! badges$badge.victory.desc=Obtain the Amulet of Yendor badges$badge.victory_all_classes.title=Master of Many Trades @@ -99,27 +111,31 @@ badges$badge.victory_all_classes.desc=Obtain the Amulet of Yendor with the Warri badges$badge.mastery_combo.title=Gladiator's Fury badges$badge.mastery_combo.desc=Reach a 10-hit combo badges$badge.items_crafted_1.title=Novice Alchemist -badges$badge.items_crafted_1.desc=Craft 5 items via alchemy in one run +badges$badge.items_crafted_1.desc=Craft 5 items via alchemy in one game badges$badge.items_crafted_2.title=Adept Alchemist -badges$badge.items_crafted_2.desc=Craft 10 items via alchemy in one run +badges$badge.items_crafted_2.desc=Craft 10 items via alchemy in one game badges$badge.items_crafted_3.title=Expert Alchemist -badges$badge.items_crafted_3.desc=Craft 15 items via alchemy in one run +badges$badge.items_crafted_3.desc=Craft 15 items via alchemy in one game badges$badge.items_crafted_4.title=Master Alchemist -badges$badge.items_crafted_4.desc=Craft 20 items via alchemy in one run +badges$badge.items_crafted_4.desc=Craft 20 items via alchemy in one game +badges$badge.items_crafted_5.title=Grandmaster Alchemist +badges$badge.items_crafted_5.desc=Craft 25 items via alchemy in one game badges$badge.no_monsters_slain.title=Pacifist badges$badge.no_monsters_slain.desc=Complete a Floor without killing any monsters badges$badge.grim_weapon.title=Grim Reaper badges$badge.grim_weapon.desc=Monster killed by a Grim weapon badges$badge.piranhas.title=Unconventional Angler -badges$badge.piranhas.desc=Kill 6 piranhas in one run +badges$badge.piranhas.desc=Kill 6 piranhas in one game badges$badge.games_played_1.title=Novice Dungeoneer -badges$badge.games_played_1.desc=Play 10 games +badges$badge.games_played_1.desc=Play 10 games or win 1 game badges$badge.games_played_2.title=Adept Dungeoneer -badges$badge.games_played_2.desc=Play 50 games +badges$badge.games_played_2.desc=Play 50 games or win 5 games badges$badge.games_played_3.title=Expert Dungeoneer -badges$badge.games_played_3.desc=Play 250 games +badges$badge.games_played_3.desc=Play 100 games or win 10 games badges$badge.games_played_4.title=Master Dungeoneer -badges$badge.games_played_4.desc=Play 1000 games +badges$badge.games_played_4.desc=Play 250 games or win 25 games +badges$badge.games_played_5.title=Grandmaster Dungeoneer +badges$badge.games_played_5.desc=Play 1000 games or win 100 games badges$badge.happy_end.title=Happy Ending badges$badge.happy_end.desc=Take the Amulet of Yendor to the surface badges$badge.champion_1.title=Bronze Champion @@ -131,9 +147,9 @@ badges$badge.champion_3.desc=Beat the game with 6 or more challenges enabled badges$badge.unlock_mage.title=Mage Unlocked! badges$badge.unlock_mage.desc=Unlock the Mage by using a scroll of upgrade badges$badge.unlock_rogue.title=Rogue Unlocked! -badges$badge.unlock_rogue.desc=Unlock the Rogue by performing 10 surprise attacks in one run +badges$badge.unlock_rogue.desc=Unlock the Rogue by performing 10 surprise attacks in one game badges$badge.unlock_huntress.title=Huntress Unlocked! -badges$badge.unlock_huntress.desc=Unlock the Huntress by attacking 10 enemies with thrown weapons in one run +badges$badge.unlock_huntress.desc=Unlock the Huntress by attacking 10 enemies with thrown weapons in one game challenges.no_food=On diet challenges.no_food_desc=Food's already scarce, but you have to watch your portions as well!\n\n- Food and the horn of plenty are one third as effective at satisfying hunger\n- Other sources of satiety are unaffected diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java index 4fb046a5f..87ae9962a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java @@ -71,6 +71,7 @@ public class Badges { DEATH_FROM_GAS ( 16 ), DEATH_FROM_HUNGER ( 17 ), DEATH_FROM_FALLING ( 18 ), + GAMES_PLAYED_1 ( 19, true ), //silver NO_MONSTERS_SLAIN ( 32 ), @@ -99,7 +100,7 @@ public class Badges { BOSS_SLAIN_1_ROGUE, BOSS_SLAIN_1_HUNTRESS, BOSS_SLAIN_1_ALL_CLASSES ( 53, true ), - GAMES_PLAYED_1 ( 54, true ), + GAMES_PLAYED_2 ( 54, true ), //gold PIRANHAS ( 64 ), @@ -109,19 +110,26 @@ public class Badges { BAG_BOUGHT_MAGICAL_HOLSTER, ALL_BAGS_BOUGHT ( 65 ), MASTERY_COMBO ( 66 ), - ITEM_LEVEL_4 ( 67 ), - LEVEL_REACHED_4 ( 68 ), - STRENGTH_ATTAINED_4 ( 69 ), - FOOD_EATEN_4 ( 70 ), - ITEMS_CRAFTED_4 ( 71 ), - BOSS_SLAIN_4 ( 72 ), - ALL_WEAPONS_IDENTIFIED ( 73 ), - ALL_ARMOR_IDENTIFIED ( 74 ), - ALL_WANDS_IDENTIFIED ( 75 ), - ALL_RINGS_IDENTIFIED ( 76 ), - ALL_ARTIFACTS_IDENTIFIED ( 77 ), - VICTORY ( 78 ), - YASD ( 79, true ), + MONSTERS_SLAIN_5 ( 67 ), + GOLD_COLLECTED_5 ( 68 ), + ITEM_LEVEL_4 ( 69 ), + ITEM_LEVEL_5 ( 70 ), + LEVEL_REACHED_4 ( 71 ), + LEVEL_REACHED_5 ( 72 ), + STRENGTH_ATTAINED_4 ( 73 ), + STRENGTH_ATTAINED_5 ( 74 ), + FOOD_EATEN_4 ( 75 ), + FOOD_EATEN_5 ( 76 ), + ITEMS_CRAFTED_4 ( 77 ), + ITEMS_CRAFTED_5 ( 78 ), + BOSS_SLAIN_4 ( 79 ), + ALL_WEAPONS_IDENTIFIED ( 80 ), + ALL_ARMOR_IDENTIFIED ( 81 ), + ALL_WANDS_IDENTIFIED ( 82 ), + ALL_RINGS_IDENTIFIED ( 83 ), + ALL_ARTIFACTS_IDENTIFIED ( 84 ), + VICTORY ( 85 ), + YASD ( 86, true ), BOSS_SLAIN_3_GLADIATOR, BOSS_SLAIN_3_BERSERKER, BOSS_SLAIN_3_WARLOCK, @@ -130,8 +138,8 @@ public class Badges { BOSS_SLAIN_3_ASSASSIN, BOSS_SLAIN_3_SNIPER, BOSS_SLAIN_3_WARDEN, - BOSS_SLAIN_3_ALL_SUBCLASSES ( 80, true ), - GAMES_PLAYED_2 ( 81, true ), + BOSS_SLAIN_3_ALL_SUBCLASSES ( 87, true ), + GAMES_PLAYED_3 ( 88, true ), //platinum HAPPY_END ( 96 ), @@ -141,11 +149,11 @@ public class Badges { VICTORY_ROGUE, VICTORY_HUNTRESS, VICTORY_ALL_CLASSES ( 98, true ), - GAMES_PLAYED_3 ( 99, true ), + GAMES_PLAYED_4 ( 99, true ), CHAMPION_1 ( 100 ), //diamond - GAMES_PLAYED_4 ( 112, true ), + GAMES_PLAYED_5 ( 112, true ), CHAMPION_2 ( 113 ), CHAMPION_3 ( 114 ); @@ -291,14 +299,18 @@ public class Badges { badge = Badge.MONSTERS_SLAIN_2; local.add( badge ); } - if (!local.contains( Badge.MONSTERS_SLAIN_3 ) && Statistics.enemiesSlain >= 150) { + if (!local.contains( Badge.MONSTERS_SLAIN_3 ) && Statistics.enemiesSlain >= 100) { badge = Badge.MONSTERS_SLAIN_3; local.add( badge ); } - if (!local.contains( Badge.MONSTERS_SLAIN_4 ) && Statistics.enemiesSlain >= 250) { + if (!local.contains( Badge.MONSTERS_SLAIN_4 ) && Statistics.enemiesSlain >= 200) { badge = Badge.MONSTERS_SLAIN_4; local.add( badge ); } + if (!local.contains( Badge.MONSTERS_SLAIN_5 ) && Statistics.enemiesSlain >= 300) { + badge = Badge.MONSTERS_SLAIN_5; + local.add( badge ); + } displayBadge( badge ); } @@ -306,11 +318,11 @@ public class Badges { public static void validateGoldCollected() { Badge badge = null; - if (!local.contains( Badge.GOLD_COLLECTED_1 ) && Statistics.goldCollected >= 100) { + if (!local.contains( Badge.GOLD_COLLECTED_1 ) && Statistics.goldCollected >= 250) { badge = Badge.GOLD_COLLECTED_1; local.add( badge ); } - if (!local.contains( Badge.GOLD_COLLECTED_2 ) && Statistics.goldCollected >= 500) { + if (!local.contains( Badge.GOLD_COLLECTED_2 ) && Statistics.goldCollected >= 1000) { badge = Badge.GOLD_COLLECTED_2; local.add( badge ); } @@ -318,10 +330,14 @@ public class Badges { badge = Badge.GOLD_COLLECTED_3; local.add( badge ); } - if (!local.contains( Badge.GOLD_COLLECTED_4 ) && Statistics.goldCollected >= 7500) { + if (!local.contains( Badge.GOLD_COLLECTED_4 ) && Statistics.goldCollected >= 5000) { badge = Badge.GOLD_COLLECTED_4; local.add( badge ); } + if (!local.contains( Badge.GOLD_COLLECTED_5 ) && Statistics.goldCollected >= 10_000) { + badge = Badge.GOLD_COLLECTED_5; + local.add( badge ); + } displayBadge( badge ); } @@ -345,6 +361,10 @@ public class Badges { badge = Badge.LEVEL_REACHED_4; local.add( badge ); } + if (!local.contains( Badge.LEVEL_REACHED_5 ) && Dungeon.hero.lvl >= 30) { + badge = Badge.LEVEL_REACHED_5; + local.add( badge ); + } displayBadge( badge ); } @@ -352,22 +372,26 @@ public class Badges { public static void validateStrengthAttained() { Badge badge = null; - if (!local.contains( Badge.STRENGTH_ATTAINED_1 ) && Dungeon.hero.STR >= 13) { + if (!local.contains( Badge.STRENGTH_ATTAINED_1 ) && Dungeon.hero.STR >= 12) { badge = Badge.STRENGTH_ATTAINED_1; local.add( badge ); } - if (!local.contains( Badge.STRENGTH_ATTAINED_2 ) && Dungeon.hero.STR >= 15) { + if (!local.contains( Badge.STRENGTH_ATTAINED_2 ) && Dungeon.hero.STR >= 14) { badge = Badge.STRENGTH_ATTAINED_2; local.add( badge ); } - if (!local.contains( Badge.STRENGTH_ATTAINED_3 ) && Dungeon.hero.STR >= 17) { + if (!local.contains( Badge.STRENGTH_ATTAINED_3 ) && Dungeon.hero.STR >= 16) { badge = Badge.STRENGTH_ATTAINED_3; local.add( badge ); } - if (!local.contains( Badge.STRENGTH_ATTAINED_4 ) && Dungeon.hero.STR >= 19) { + if (!local.contains( Badge.STRENGTH_ATTAINED_4 ) && Dungeon.hero.STR >= 18) { badge = Badge.STRENGTH_ATTAINED_4; local.add( badge ); } + if (!local.contains( Badge.STRENGTH_ATTAINED_5 ) && Dungeon.hero.STR >= 20) { + badge = Badge.STRENGTH_ATTAINED_5; + local.add( badge ); + } displayBadge( badge ); } @@ -391,6 +415,10 @@ public class Badges { badge = Badge.FOOD_EATEN_4; local.add( badge ); } + if (!local.contains( Badge.FOOD_EATEN_5 ) && Statistics.foodEaten >= 50) { + badge = Badge.FOOD_EATEN_5; + local.add( badge ); + } displayBadge( badge ); } @@ -414,6 +442,10 @@ public class Badges { badge = Badge.ITEMS_CRAFTED_4; local.add( badge ); } + if (!local.contains( Badge.ITEMS_CRAFTED_5 ) && Statistics.itemsCrafted >= 25) { + badge = Badge.ITEMS_CRAFTED_5; + local.add( badge ); + } displayBadge( badge ); } @@ -458,6 +490,10 @@ public class Badges { badge = Badge.ITEM_LEVEL_4; local.add( badge ); } + if (!local.contains( Badge.ITEM_LEVEL_5 ) && item.level() >= 15) { + badge = Badge.ITEM_LEVEL_5; + local.add( badge ); + } displayBadge( badge ); } @@ -797,18 +833,21 @@ public class Badges { public static void validateGamesPlayed() { Badge badge = null; - if (Rankings.INSTANCE.totalNumber >= 10) { + if (Rankings.INSTANCE.totalNumber >= 10 || Rankings.INSTANCE.wonNumber >= 1) { badge = Badge.GAMES_PLAYED_1; } - if (Rankings.INSTANCE.totalNumber >= 50) { + if (Rankings.INSTANCE.totalNumber >= 50 || Rankings.INSTANCE.wonNumber >= 5) { badge = Badge.GAMES_PLAYED_2; } - if (Rankings.INSTANCE.totalNumber >= 250) { + if (Rankings.INSTANCE.totalNumber >= 100 || Rankings.INSTANCE.wonNumber >= 10) { badge = Badge.GAMES_PLAYED_3; } - if (Rankings.INSTANCE.totalNumber >= 1000) { + if (Rankings.INSTANCE.totalNumber >= 250 || Rankings.INSTANCE.wonNumber >= 25) { badge = Badge.GAMES_PLAYED_4; } + if (Rankings.INSTANCE.totalNumber >= 1000 || Rankings.INSTANCE.wonNumber >= 100) { + badge = Badge.GAMES_PLAYED_5; + } displayBadge( badge ); } @@ -911,15 +950,15 @@ public class Badges { } private static final Badge[][] tierBadgeReplacements = new Badge[][]{ - {Badge.MONSTERS_SLAIN_1, Badge.MONSTERS_SLAIN_2, Badge.MONSTERS_SLAIN_3, Badge.MONSTERS_SLAIN_4}, - {Badge.GOLD_COLLECTED_1, Badge.GOLD_COLLECTED_2, Badge.GOLD_COLLECTED_3, Badge.GOLD_COLLECTED_4}, - {Badge.ITEM_LEVEL_1, Badge.ITEM_LEVEL_2, Badge.ITEM_LEVEL_3, Badge.ITEM_LEVEL_4}, - {Badge.LEVEL_REACHED_1, Badge.LEVEL_REACHED_2, Badge.LEVEL_REACHED_3, Badge.LEVEL_REACHED_4}, - {Badge.STRENGTH_ATTAINED_1, Badge.STRENGTH_ATTAINED_2, Badge.STRENGTH_ATTAINED_3, Badge.STRENGTH_ATTAINED_4}, - {Badge.FOOD_EATEN_1, Badge.FOOD_EATEN_2, Badge.FOOD_EATEN_3, Badge.FOOD_EATEN_4}, - {Badge.ITEMS_CRAFTED_1, Badge.ITEMS_CRAFTED_2, Badge.ITEMS_CRAFTED_3, Badge.ITEMS_CRAFTED_4}, + {Badge.MONSTERS_SLAIN_1, Badge.MONSTERS_SLAIN_2, Badge.MONSTERS_SLAIN_3, Badge.MONSTERS_SLAIN_4, Badge.MONSTERS_SLAIN_5}, + {Badge.GOLD_COLLECTED_1, Badge.GOLD_COLLECTED_2, Badge.GOLD_COLLECTED_3, Badge.GOLD_COLLECTED_4, Badge.GOLD_COLLECTED_5}, + {Badge.ITEM_LEVEL_1, Badge.ITEM_LEVEL_2, Badge.ITEM_LEVEL_3, Badge.ITEM_LEVEL_4, Badge.ITEM_LEVEL_5}, + {Badge.LEVEL_REACHED_1, Badge.LEVEL_REACHED_2, Badge.LEVEL_REACHED_3, Badge.LEVEL_REACHED_4, Badge.LEVEL_REACHED_5}, + {Badge.STRENGTH_ATTAINED_1, Badge.STRENGTH_ATTAINED_2, Badge.STRENGTH_ATTAINED_3, Badge.STRENGTH_ATTAINED_4, Badge.STRENGTH_ATTAINED_5}, + {Badge.FOOD_EATEN_1, Badge.FOOD_EATEN_2, Badge.FOOD_EATEN_3, Badge.FOOD_EATEN_4, Badge.FOOD_EATEN_5}, + {Badge.ITEMS_CRAFTED_1, Badge.ITEMS_CRAFTED_2, Badge.ITEMS_CRAFTED_3, Badge.ITEMS_CRAFTED_4, Badge.ITEMS_CRAFTED_5}, {Badge.BOSS_SLAIN_1, Badge.BOSS_SLAIN_2, Badge.BOSS_SLAIN_3, Badge.BOSS_SLAIN_4}, - {Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4}, + {Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4, Badge.GAMES_PLAYED_5}, {Badge.CHAMPION_1, Badge.CHAMPION_2, Badge.CHAMPION_3} }; @@ -942,17 +981,6 @@ public class Badges { public static List filterReplacedBadges( List badges ) { - leaveBest( badges, Badge.MONSTERS_SLAIN_1, Badge.MONSTERS_SLAIN_2, Badge.MONSTERS_SLAIN_3, Badge.MONSTERS_SLAIN_4 ); - leaveBest( badges, Badge.GOLD_COLLECTED_1, Badge.GOLD_COLLECTED_2, Badge.GOLD_COLLECTED_3, Badge.GOLD_COLLECTED_4 ); - leaveBest( badges, Badge.BOSS_SLAIN_1, Badge.BOSS_SLAIN_2, Badge.BOSS_SLAIN_3, Badge.BOSS_SLAIN_4 ); - leaveBest( badges, Badge.LEVEL_REACHED_1, Badge.LEVEL_REACHED_2, Badge.LEVEL_REACHED_3, Badge.LEVEL_REACHED_4 ); - leaveBest( badges, Badge.STRENGTH_ATTAINED_1, Badge.STRENGTH_ATTAINED_2, Badge.STRENGTH_ATTAINED_3, Badge.STRENGTH_ATTAINED_4 ); - leaveBest( badges, Badge.FOOD_EATEN_1, Badge.FOOD_EATEN_2, Badge.FOOD_EATEN_3, Badge.FOOD_EATEN_4 ); - leaveBest( badges, Badge.ITEM_LEVEL_1, Badge.ITEM_LEVEL_2, Badge.ITEM_LEVEL_3, Badge.ITEM_LEVEL_4 ); - leaveBest( badges, Badge.ITEMS_CRAFTED_1, Badge.ITEMS_CRAFTED_2, Badge.ITEMS_CRAFTED_3, Badge.ITEMS_CRAFTED_4 ); - leaveBest( badges, Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4 ); - leaveBest( badges, Badge.CHAMPION_1, Badge.CHAMPION_2, Badge.CHAMPION_3 ); - for (Badge[] tierReplace : tierBadgeReplacements){ leaveBest( badges, tierReplace ); }