diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuildMyInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuildMyInfo.java index 5d9fd25f2..fc4d64e67 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuildMyInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/GuildMyInfo.java @@ -42,7 +42,8 @@ public class GuildMyInfo extends MongoBase { //公会副本 private int guildChallengeDamage; private int lastMonsterId; - + //已经使用过刷新的boss + private Set refreshedBoss = new HashSet<>(); public void clearOfLevelGuild(){ @@ -317,4 +318,14 @@ public class GuildMyInfo extends MongoBase { this.lastMonsterId = lastMonsterId; updateString("lastMonsterId",lastMonsterId); } + + public Set getRefreshedBoss() { + return refreshedBoss; + } + + public void addRefreshedBoss(int bossId) { + refreshedBoss.add(bossId); + updateString("refreshedBoss",refreshedBoss); + + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildChallengeLogic.java index 4a5bd6056..6ff750bdb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildChallengeLogic.java @@ -81,14 +81,19 @@ public class GuildChallengeLogic { double bossHpRemain = guildInfo.getBossHpRemain(); GuildMyInfo guildMyInfo = user.getGuildMyInfo(); + int isRefresh = 0 ; //先清除特权 if(guildInfo.getCurrBossId()!=0&&guildInfo.getCurrBossId()!= guildMyInfo.getLastMonsterId()&& guildMyInfo.getLastMonsterId()!=0){ - for(int clearPrivilege:config.getPrivilege()){ - user.getPlayerInfoManager().clearVipCount(clearPrivilege); + if(!guildMyInfo.getRefreshedBoss().contains(guildMyInfo.getLastMonsterId())&&guildMyInfo.getGuildChallengeDamage()!=0){ + for(int clearPrivilege:config.getPrivilege()){ + user.getPlayerInfoManager().clearVipCount(clearPrivilege); + } + user.getPlayerInfoManager().removeVipPriviliageId(3013); + user.getStoreManager().removeStoreItemInfo(7,10031); + StoreLogic.sendStoreUpdateIndication(uid,user.getStoreManager().getStoreInfoMap().get(7)); + guildMyInfo.addRefreshedBoss(guildMyInfo.getLastMonsterId()); + isRefresh = 1; } - user.getPlayerInfoManager().removeVipPriviliageId(3013); - user.getStoreManager().removeStoreItemInfo(7,10031); - StoreLogic.sendStoreUpdateIndication(uid,user.getStoreManager().getStoreInfoMap().get(7)); } int canSweep = 0; if(guildMyInfo.getLastMonsterId()!=0&&currBossId==guildMyInfo.getLastMonsterId()&&guildMyInfo.getGuildChallengeDamage()>0){ @@ -100,6 +105,9 @@ public class GuildChallengeLogic { .setBlood(bossHpRemain==0?10000:(int)(bossHpRemain*10000/config.getMonsterHp())) .setBuffTime(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffOverTime():0) .setBuffCount(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffIndex():0) + .setSweepDamage(guildMyInfo.getGuildChallengeDamage()) + .addAllRefreshedBoss(guildMyInfo.getRefreshedBoss()) + .setIsRefresh(isRefresh) .build(); MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); @@ -229,6 +237,13 @@ public class GuildChallengeLogic { continue; } AyyncWorker worker = new AyyncWorker(UserManager.getUser(sendUid),false,(user1)->{ + GuildMyInfo guildMyInfo = user1.getGuildMyInfo(); + if(guildMyInfo.getGuildChallengeDamage()==0){ + return; + } + if(guildMyInfo.getRefreshedBoss().contains(bossId)){ + return; + } int[] refreshPrivilege = config.getPrivilege(); for(int clearPrivilege:refreshPrivilege){ user1.getPlayerInfoManager().clearVipCount(clearPrivilege); @@ -236,9 +251,9 @@ public class GuildChallengeLogic { user1.getPlayerInfoManager().removeVipPriviliageId(3013); user1.getStoreManager().removeStoreItemInfo(7,10031); StoreLogic.sendStoreUpdateIndication(user1.getId(),user1.getStoreManager().getStoreInfoMap().get(7)); - GuildMyInfo guildMyInfo = user1.getGuildMyInfo(); guildMyInfo.setLastMonsterId(bossId+1); guildMyInfo.setGuildChallengeDamage(0); + guildMyInfo.addRefreshedBoss(bossId); }); ProtocolsManager.getInstance().updateAyncWorker(worker); } @@ -256,8 +271,6 @@ public class GuildChallengeLogic { GuildLogic.sendIndicationToMemberWithoutUser(guildInfo, MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION,indication.build(),uid); indication.setIsKill(kill); - MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION_VALUE,indication.build(),true); - //伤害排行 AbstractRank rank = RankContext.getRankEnum(RankEnum.GUILD_CHALLENGE_RANK.getType()); @@ -279,6 +292,8 @@ public class GuildChallengeLogic { PlayerLogic.getInstance().checkAndUpdate(user,config.getPrivilege()[0],1); MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); + + MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION_VALUE,indication.build(),true); } /**