工会副本修改

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();
if(guildInfo.getBossHpRemain()==-1){
if(size>currBossId){
currBossId++;
guildInfo.setCurrBossId(currBossId+1);
guildInfo.setBossHpRemain(0);
currBossId++;
}
}
}
@ -203,22 +203,24 @@ public class GuildChallengeLogic {
int damageInt = checkResult[1];
if(checkResult[0]==1) {
kill = 1;
//重置boss血量
if(guildInfo.getCurrBossId()!=configMap.size()){
guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1);
guildInfo.setBossHpRemain(0);
}else{
guildInfo.setBossHpRemain(-1);
}
//加公会经验
Map<Integer, SGuildLevelConfig> levelConfigMap = STableManager.getConfig(SGuildLevelConfig.class);
if (guildInfo.getExp() + config.getLegionExp() >= levelConfigMap.get(guildInfo.getLevel()).getExp()) {
guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp() - levelConfigMap.get(guildInfo.getLevel()).getExp());
guildInfo.updateLevel(guildInfo.getLevel() + 1);
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(guildInfo.getId()), new GuildCache(GameApplication.serverId, guildInfo.getIcon(), guildInfo.getLevel(), guildInfo.getName()));
} else {
guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp());
if(guildInfo.getBossHpRemain()!=-1){
kill = 1;
//重置boss血量
if(guildInfo.getCurrBossId()!=configMap.size()){
guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1);
guildInfo.setBossHpRemain(0);
}else{
guildInfo.setBossHpRemain(-1);
}
//加公会经验
Map<Integer, SGuildLevelConfig> levelConfigMap = STableManager.getConfig(SGuildLevelConfig.class);
if (guildInfo.getExp() + config.getLegionExp() >= levelConfigMap.get(guildInfo.getLevel()).getExp()) {
guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp() - levelConfigMap.get(guildInfo.getLevel()).getExp());
guildInfo.updateLevel(guildInfo.getLevel() + 1);
RedisUtil.getInstence().putMapEntry(RedisKey.FAMILY_INFO, "", String.valueOf(guildInfo.getId()), new GuildCache(GameApplication.serverId, guildInfo.getIcon(), guildInfo.getLevel(), guildInfo.getName()));
} else {
guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp());
}
}
}else if(checkResult[0]==0){
//怪物保持在第四位
@ -267,44 +269,43 @@ public class GuildChallengeLogic {
if(!error.isEmpty()){
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());
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更特权
if(guildInfo.getCurrBossId()-1!=configMap.size()){
GuildLogic.sendFamilyBaseUpdateIndication(guildInfo);
Map<Integer, Set<Integer>> members = guildInfo.getMembers();
for(Set<Integer> items : members.values()){
for(Integer sendUid : items){
if(!OnlineUserManager.sessionMap.containsKey(sendUid)){
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);
GuildLogic.sendFamilyBaseUpdateIndication(guildInfo);
Map<Integer, Set<Integer>> members = guildInfo.getMembers();
for(Set<Integer> items : members.values()){
for(Integer sendUid : items){
if(!OnlineUserManager.sessionMap.containsKey(sendUid)){
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);
}
}
//异步发奖
Runnable runnable = () -> sendRankReward(guildId,bossId);
runnable.run();