diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 569c0bc96..b5905dd54 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -472,4 +472,7 @@ public interface BIReason { int EVERYDAY_DISCOUNT_CLEAN_MISSION_COUNT = 1357;//天天折扣清零次数 int TRAINGING_SPEED_ITEM_COST = 1358;//特训加速道具消耗 + + int GUILD_BOSS_KILLED_REWARD = 1359;//公会boss击杀奖励 + int GUILD_BOSS_CHALLENGE_REWARD = 1360;//公会boss挑战奖励 } \ No newline at end of file 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 973adb798..61a62ee94 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 @@ -262,16 +262,21 @@ public class GuildChallengeLogic { GuilidManager.saveOrUpdateGuildInfo(guildInfo); } } + // 挑战失败 if(!error.isEmpty()){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } - if(guildInfo.getBossHpRemain()!=-1||kill==1){ - if(damage!=0){ - 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); - } + + // 消耗特权次数 + PlayerLogic.getInstance().checkAndUpdate(user, privilege[0],1); + + // 排行榜更新 + if(damage!=0 && (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更特权 GuildLogic.sendFamilyBaseUpdateIndication(guildInfo); @@ -295,7 +300,7 @@ public class GuildChallengeLogic { if(guildMyInfo.getRefreshedBoss().contains(bossId)) { return; } - refreshGuildChallengeStore(user1, config.getPrivilege()); + refreshGuildChallengeStore(user1, privilege); guildMyInfo.addRefreshedBoss(bossId); guildMyInfo.setLastMonsterId(bossId+1); guildMyInfo.setGuildChallengeDamage(0); @@ -303,23 +308,21 @@ public class GuildChallengeLogic { ProtocolsManager.getInstance().updateAyncWorker(worker); } } - - drop = ItemUtil.drop(user, new int[]{config.getReward(),config.getKillReward()}, 1, 0, 1); - + drop = ItemUtil.drop(user, new int[]{config.getReward(),config.getKillReward()}, 1, 0, BIReason.GUILD_BOSS_KILLED_REWARD); }else{ - drop = ItemUtil.drop(user, new int[]{config.getReward()}, 1, 0, 1); + drop = ItemUtil.drop(user, new int[]{config.getReward()}, 1, 0, BIReason.GUILD_BOSS_CHALLENGE_REWARD); } + int remainHp; if(guildInfo.getBossHpRemain()==0){ remainHp = 10000; - }else if(guildInfo.getBossHpRemain()==-1){ + } + else if(guildInfo.getBossHpRemain()==-1){ remainHp = -1; - }else{ + } + else{ remainHp = (int)(guildInfo.getBossHpRemain()*10000D/config.getMonsterHp()); } - Family.GuildChallengeIndication.Builder indication = Family.GuildChallengeIndication.newBuilder() - .setBlood(remainHp) - .setCurBoss(guildInfo.getCurrBossId()); Map> members = guildInfo.getMembers(); for(Set items : members.values()){ for(Integer sendUid : items){ @@ -327,6 +330,10 @@ public class GuildChallengeLogic { if(sendUid==uid){ continue; } + ISession isession = OnlineUserManager.getSessionByUid(sendUid); + if(isession==null){ + continue; + } User userByRpc = PlayerLogic.getInstance().getUserByRpc(sendUid); if (userByRpc == null){ continue; @@ -337,41 +344,31 @@ public class GuildChallengeLogic { if(kill == 1 && !userByRpc.getGuildMyInfo().getRefreshedBoss().contains(bossId) && guildInfo.getBossHpRemain()!=-1){ otherIndication.setIsRefresh(1);//需要前端刷新次数 } - ISession isession = OnlineUserManager.getSessionByUid(sendUid); - if(isession!=null){ - LOGGER.info("向{}发送indication",sendUid); - MessageUtil.sendIndicationMessage(isession,1,MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION_VALUE,otherIndication.build(),true); - } + MessageUtil.sendIndicationMessage(isession,1,MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION_VALUE,otherIndication.build(),true); } } - indication.setIsKill(kill); //伤害排行 Family.GuildChallengeResponse.Builder response = Family.GuildChallengeResponse.newBuilder(); - - response.setDrop(drop); - - if(fightData!=null){ - fightData.toBuilder().setFightId(FightUtil.getFightId(uid,fightData.getFightType())); - - response.setFightData(fightData); - + if(fightData != null){ // 记录战报 - FightRecordLogic.getInstance().addRecordMap(user,fightData); +// FightRecordLogic.getInstance().addRecordMap(user,fightData); + response.setFightData(fightData); + fightData.toBuilder().setFightId(FightUtil.getFightId(uid,fightData.getFightType())); } - + response.setDrop(drop); response.setKill(kill); - response.setDamage(damage); - - PlayerLogic.getInstance().checkAndUpdate(user,config.getPrivilege()[0],1); - - user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GUILD_BOSS_ROOM,1); - MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); - if(kill==1&&!UserManager.getUser(uid).getGuildMyInfo().getRefreshedBoss().contains(bossId)&&guildInfo.getBossHpRemain()!=-1){ + // 任务更新 + user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GUILD_BOSS_ROOM,1); + // 推送 + Family.GuildChallengeIndication.Builder indication = Family.GuildChallengeIndication.newBuilder(); + indication.setBlood(remainHp); + indication.setCurBoss(guildInfo.getCurrBossId()); + indication.setIsKill(kill); + if(kill==1 && !UserManager.getUser(uid).getGuildMyInfo().getRefreshedBoss().contains(bossId) && guildInfo.getBossHpRemain()!=-1){ indication.setIsRefresh(1);//需要前端刷新次数 } - MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION_VALUE,indication.build(),true); } @@ -470,7 +467,7 @@ public class GuildChallengeLogic { return; } Set> rankInfos = rank.getRankByKey(guildId + ":" + bossId, 0, configMap.size()); - if(rankInfos.size()<1){ + if(rankInfos.isEmpty()){ return; } try{