diff --git a/src/main/java/emu/nebula/server/handlers/HandlerActivityTowerDefenseLevelSettleReq.java b/src/main/java/emu/nebula/server/handlers/HandlerActivityTowerDefenseLevelSettleReq.java index 65d9635..b9c7c77 100644 --- a/src/main/java/emu/nebula/server/handlers/HandlerActivityTowerDefenseLevelSettleReq.java +++ b/src/main/java/emu/nebula/server/handlers/HandlerActivityTowerDefenseLevelSettleReq.java @@ -22,17 +22,20 @@ public class HandlerActivityTowerDefenseLevelSettleReq extends NetHandler { return session.encodeMsg(NetMsgId.activity_tower_defense_level_settle_failed_ack); } - // Claim rewards - var change = activity.claimReward(req.getLevelId()); - - // Update completed stages - activity.getCompletedStages().put(req.getLevelId(), req.getStar()); - - // Save changes - session.getPlayer().save(); - - // Encode and send - return session.encodeMsg(NetMsgId.activity_tower_defense_level_settle_succeed_ack, change.toProto()); + // Only receive rewards if we havent completed the stage + if (!activity.getCompletedStages().containsKey(req.getLevelId())) { + // Claim rewards + var change = activity.claimReward(req.getLevelId()); + + // Update completed stages and save activity to the database + activity.getCompletedStages().put(req.getLevelId(), req.getStar()); + activity.save(); + + // Encode and send + return session.encodeMsg(NetMsgId.activity_tower_defense_level_settle_succeed_ack, change.toProto()); + } else { + return session.encodeMsg(NetMsgId.activity_tower_defense_level_settle_succeed_ack); + } } }