工会副本修改

DESKTOP-98AVA47\Administrator 2020-12-17 04:10:05 +08:00
parent 171bbd248d
commit 52cbb01232
1 changed files with 47 additions and 46 deletions

View File

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