公会副本挑战bug修复

master_0.05
grimm 2024-06-26 14:22:36 +08:00
parent fde4068166
commit 72630bb467
2 changed files with 62 additions and 41 deletions

View File

@ -455,4 +455,24 @@ public interface BIReason {
int TRAINING_UNLOCK_SKILL_COST = 1341;//特训解锁技能消耗
int GIFT_UP_STAR_COST = 1342;//礼物装备升星
int GIFT_UP_STAR_GET = 1343;//礼物装备获得
int ARENA_UP_LV_REWARD = 1344;//竞技场段位升级奖励
int SOLDIER_UP_LV = 1345;//兵力升级
int SOLDIER_SPEED_UP_LV = 1346;//兵力加速升级
int SOLDIER_LOTTERY_REWARD = 1347;//小兵招募获得
int SOLDIER_LOTTERY_COST = 1348;//小兵招募消耗
int SOLDIER_DISMISS_REWARD = 1349;//小兵遣散获得
int SOLDIER_MIAN_LEVEL_REWARD = 1350;//小兵主线奖励
int COMPARE_NUM_GAME_REWARD = 1351;//比数小游戏挂机奖励
int MONEY_BUY_GOOD_COST = 1352;//现金点卷购买礼包消耗
int EVERYDAY_DISCOUNT_GET_REFRESH_COUNT = 1353;//天天折扣获得刷新次数
int EVERYDAY_DISCOUNT_COST_REFRESH_COUNT = 1354;//天天折扣刷新消耗
int EVERYDAY_DISCOUNT_GET_MISSION_COUNT = 1355;//天天折扣获得档位次数
int EVERYDAY_DISCOUNT_COST_MISSION_COUNT = 1356;//天天折扣消耗档位次数
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){
// 消耗特权次数
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){
@ -328,46 +331,44 @@ public class GuildChallengeLogic {
continue;
}
ISession isession = OnlineUserManager.getSessionByUid(sendUid);
if(isession==null){
continue;
}
User userByRpc = PlayerLogic.getInstance().getUserByRpc(sendUid);
if (userByRpc == null){
continue;
}
Family.GuildChallengeIndication.Builder otherIndication = Family.GuildChallengeIndication.newBuilder()
.setBlood(remainHp)
.setCurBoss(guildInfo.getCurrBossId());
if(kill==1&&!PlayerLogic.getInstance().getUserByRpc(sendUid).getGuildMyInfo().getRefreshedBoss().contains(bossId)&&guildInfo.getBossHpRemain()!=-1){
if(kill == 1 && !userByRpc.getGuildMyInfo().getRefreshedBoss().contains(bossId) && guildInfo.getBossHpRemain()!=-1){
otherIndication.setIsRefresh(1);//需要前端刷新次数
}
if(isession!=null){
LOGGER.info("向{}发送indication",sendUid);
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);
// 记录战报
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);
// 任务更新
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);
}
@ -466,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{