diff --git a/src/main/java/emu/nebula/game/activity/ActivityManager.java b/src/main/java/emu/nebula/game/activity/ActivityManager.java index f9a63e8..d8360b3 100644 --- a/src/main/java/emu/nebula/game/activity/ActivityManager.java +++ b/src/main/java/emu/nebula/game/activity/ActivityManager.java @@ -53,6 +53,16 @@ public class ActivityManager extends PlayerManager implements GameDatabaseObject return null; } + public T getFirstActivity(Class activityClass) { + for (var activity : this.getActivities().values()) { + if (activityClass.isInstance(activity)) { + return activityClass.cast(activity); + } + } + + return null; + } + /** * This needs to be called after being loaded from the database */ diff --git a/src/main/java/emu/nebula/server/handlers/HandlerActivityTowerDefenseLevelSettleReq.java b/src/main/java/emu/nebula/server/handlers/HandlerActivityTowerDefenseLevelSettleReq.java index a770dca..65d9635 100644 --- a/src/main/java/emu/nebula/server/handlers/HandlerActivityTowerDefenseLevelSettleReq.java +++ b/src/main/java/emu/nebula/server/handlers/HandlerActivityTowerDefenseLevelSettleReq.java @@ -16,7 +16,11 @@ public class HandlerActivityTowerDefenseLevelSettleReq extends NetHandler { var req = ActivityTowerDefenseLevelSettleReq.parseFrom(message); // Get activity - var activity = session.getPlayer().getActivityManager().getActivity(TowerDefenseActivity.class, 102001); + var activity = session.getPlayer().getActivityManager().getFirstActivity(TowerDefenseActivity.class); + + if (activity == null) { + return session.encodeMsg(NetMsgId.activity_tower_defense_level_settle_failed_ack); + } // Claim rewards var change = activity.claimReward(req.getLevelId());