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 fe63e2dfe..2e59a5f5a 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 @@ -87,9 +87,9 @@ public class GuildChallengeLogic { int size = STableManager.getConfig(SGuildCheckpointConfig.class).size(); if(guildInfo.getBossHpRemain()==-1){ if(size>currBossId){ - currBossId++; guildInfo.setCurrBossId(currBossId+1); guildInfo.setBossHpRemain(0); + currBossId++; } } } @@ -203,22 +203,24 @@ public class GuildChallengeLogic { int damageInt = checkResult[1]; if(checkResult[0]==1) { - kill = 1; - //重置boss血量 - if(guildInfo.getCurrBossId()!=configMap.size()){ - guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1); - guildInfo.setBossHpRemain(0); - }else{ - guildInfo.setBossHpRemain(-1); - } - //加公会经验 - Map levelConfigMap = STableManager.getConfig(SGuildLevelConfig.class); - if (guildInfo.getExp() + config.getLegionExp() >= levelConfigMap.get(guildInfo.getLevel()).getExp()) { - guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp() - levelConfigMap.get(guildInfo.getLevel()).getExp()); - guildInfo.updateLevel(guildInfo.getLevel() + 1); - RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(guildInfo.getId()), new GuildCache(GameApplication.serverId, guildInfo.getIcon(), guildInfo.getLevel(), guildInfo.getName())); - } else { - guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp()); + if(guildInfo.getBossHpRemain()!=-1){ + kill = 1; + //重置boss血量 + if(guildInfo.getCurrBossId()!=configMap.size()){ + guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1); + guildInfo.setBossHpRemain(0); + }else{ + guildInfo.setBossHpRemain(-1); + } + //加公会经验 + Map levelConfigMap = STableManager.getConfig(SGuildLevelConfig.class); + if (guildInfo.getExp() + config.getLegionExp() >= levelConfigMap.get(guildInfo.getLevel()).getExp()) { + guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp() - levelConfigMap.get(guildInfo.getLevel()).getExp()); + guildInfo.updateLevel(guildInfo.getLevel() + 1); + RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(guildInfo.getId()), new GuildCache(GameApplication.serverId, guildInfo.getIcon(), guildInfo.getLevel(), guildInfo.getName())); + } else { + guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp()); + } } }else if(checkResult[0]==0){ //怪物保持在第四位 @@ -267,44 +269,43 @@ public class GuildChallengeLogic { if(!error.isEmpty()){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } - if(guildInfo.getBossHpRemain()!=-1){ + if(guildInfo.getBossHpRemain()!=-1||kill==1){ AbstractRank rank = RankContext.getRankEnum(RankEnum.GUILD_CHALLENGE_RANK.getType()); long score = Double.valueOf(rank.getScoreById(user.getId(), guildId+":"+bossId)).longValue(); rank.addRank(uid,guildId+":"+bossId,score==-1?damage:score+damage); } if(kill==1){ //如果不是最后一个boss更特权 - if(guildInfo.getCurrBossId()-1!=configMap.size()){ - GuildLogic.sendFamilyBaseUpdateIndication(guildInfo); - Map> members = guildInfo.getMembers(); - for(Set items : members.values()){ - for(Integer sendUid : items){ - if(!OnlineUserManager.sessionMap.containsKey(sendUid)){ - 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); - } - user1.getPlayerInfoManager().removeVipPriviliageId(3013); - user1.getStoreManager().removeStoreItemInfo(7,10031); - StoreLogic.sendStoreUpdateIndication(user1.getId(),user1.getStoreManager().getStoreInfoMap().get(7)); - guildMyInfo.setLastMonsterId(bossId+1); - guildMyInfo.setGuildChallengeDamage(0); - guildMyInfo.addRefreshedBoss(bossId); - }); - ProtocolsManager.getInstance().updateAyncWorker(worker); + GuildLogic.sendFamilyBaseUpdateIndication(guildInfo); + Map> members = guildInfo.getMembers(); + for(Set items : members.values()){ + for(Integer sendUid : items){ + if(!OnlineUserManager.sessionMap.containsKey(sendUid)){ + 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); + } + user1.getPlayerInfoManager().removeVipPriviliageId(3013); + user1.getStoreManager().removeStoreItemInfo(7,10031); + StoreLogic.sendStoreUpdateIndication(user1.getId(),user1.getStoreManager().getStoreInfoMap().get(7)); + guildMyInfo.setLastMonsterId(bossId+1); + guildMyInfo.setGuildChallengeDamage(0); + guildMyInfo.addRefreshedBoss(bossId); + }); + ProtocolsManager.getInstance().updateAyncWorker(worker); } } + //异步发奖 Runnable runnable = () -> sendRankReward(guildId,bossId); runnable.run();