Implement some tower achievements

This commit is contained in:
Melledy
2025-12-06 02:01:57 -08:00
parent 5707c1c919
commit dfb93cae4b
7 changed files with 140 additions and 28 deletions

View File

@@ -5,6 +5,7 @@ import java.util.List;
import emu.nebula.GameConstants;
import emu.nebula.data.GameData;
import emu.nebula.data.resources.AchievementDef;
import emu.nebula.game.tower.room.RoomType;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
@@ -34,7 +35,7 @@ public class AchievementHelper {
public static void init() {
// Cache total achievements
for (var condition : AchievementCondition.values()) {
if (condition.name().endsWith("Total")) {
if (condition.name().endsWith("Total") || condition.name().endsWith("Times")) {
incrementalAchievementSet.add(condition.getValue());
}
}
@@ -44,12 +45,15 @@ public class AchievementHelper {
incrementalAchievementSet.add(AchievementCondition.ItemsAdd.getValue());
incrementalAchievementSet.add(AchievementCondition.ItemsDeplete.getValue());
incrementalAchievementSet.add(AchievementCondition.TowerItemsGet.getValue());
incrementalAchievementSet.add(AchievementCondition.TowerEnterRoom.getValue());
// Fix params
fixParams();
}
private static void fixParams() {
// Monolith
// Star Tower TODO
addParam(78, 0, 2);
addParam(79, 0, 4);
addParam(498, 0, 1);
@@ -73,20 +77,44 @@ public class AchievementHelper {
}
// Character count
addParam(393, 1, 0);
addParam(394, 1, 0);
addParam(395, 1, 0);
addParam(396, 1, 0);
addParam(397, 1, 0);
addParam(398, 1, 0);
addParams(393, 398, 1, 0);
// Disc count
addParam(382, 1, 0);
addParam(383, 1, 0);
addParam(384, 1, 0);
addParam(385, 1, 0);
addParam(386, 1, 0);
addParam(387, 1, 0);
addParams(382, 387, 1, 0);
// Star Tower team clear
addParams(95, 98, 1, 0); // Aqua team clear
addParams(99, 102, 2, 0); // Fire team clear
addParams(103, 106, 3, 0); // Earth team clear
addParams(107, 110, 4, 0); // Wind team clear
addParams(111, 114, 5, 0); // Light team clear
addParams(115, 118, 6, 0); // Dark team clear
// Star tower items
addParams(139, 144, GameConstants.TOWER_COIN_ITEM_ID, 0);
addParams(145, 149, 90011, 0);
addParams(150, 154, 90012, 0);
addParams(155, 159, 90013, 0);
addParams(160, 164, 90014, 0);
addParams(165, 169, 90015, 0);
addParams(170, 174, 90016, 0);
addParams(175, 179, 90017, 0);
addParams(180, 184, 90018, 0);
addParams(185, 189, 90019, 0);
addParams(190, 194, 90020, 0);
addParams(195, 199, 90021, 0);
addParams(200, 204, 90022, 0);
addParams(205, 209, 90023, 0);
// Star tower rooms
addParams(210, 216, RoomType.BattleRoom.getValue() + 1, 0);
addParams(217, 223, RoomType.EliteBattleRoom.getValue() + 1, 0);
addParams(224, 230, RoomType.BossRoom.getValue() + 1, 0);
addParams(231, 237, RoomType.FinalBossRoom.getValue() + 1, 0);
addParams(238, 244, RoomType.ShopRoom.getValue() + 1, 0);
addParams(245, 251, RoomType.EventRoom.getValue() + 1, 0);
}
private static void addParam(int achievementId, int param1, int param2) {
@@ -95,4 +123,10 @@ public class AchievementHelper {
data.setParams(param1, param2);
}
private static void addParams(int start, int end, int param1, int param2) {
for (int id = start; id <= end; id++) {
addParam(id, param1, param2);
}
}
}