公会副本挑战bug修复

master_haizei01
grimm 2024-06-26 14:22:36 +08:00
parent e5ebfe0818
commit f9679361a2
2 changed files with 41 additions and 41 deletions

View File

@ -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挑战奖励
}

View File

@ -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<Integer, Set<Integer>> members = guildInfo.getMembers();
for(Set<Integer> 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<ZSetOperations.TypedTuple<String>> rankInfos = rank.getRankByKey(guildId + ":" + bossId, 0, configMap.size());
if(rankInfos.size()<1){
if(rankInfos.isEmpty()){
return;
}
try{