公会副本挑战bug修复
parent
e5ebfe0818
commit
f9679361a2
|
@ -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挑战奖励
|
||||
}
|
|
@ -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{
|
||||
|
|
Loading…
Reference in New Issue