【优化】升星操作增加鸿蒙阵等级限制

back_recharge
duhui 2022-02-17 14:14:19 +08:00
parent 91be761235
commit 0b1295cb61
3 changed files with 64 additions and 0 deletions

View File

@ -183,6 +183,7 @@ public enum ErrorCode implements IErrorCode {
SHOP_NO_ITEM(152,"商品不存在"),
HERO_RETURN_ONLY_LEVEL_ONE(153,"只有1级的神将才可回退请先进行归元"),
HERO_RETURN_CAN_NOT(154,"此神将不可回退"),
HONGMENG_LEVEL_NOT(155,"鸿蒙阵等级不足"),
GUILD_NOT_AUTHORITY(300,"账号因错误发言导致相关功能封禁中,操作失败"),

View File

@ -1464,6 +1464,13 @@ public class HeroLogic {
if (targetHero.getLevel(user.getHeroManager()) < scHeroRankUpConfig.getLimitLevel()) {
throw new ErrorCodeException(ErrorCode.HERO_LEVE_DOWN);
}
// 验证鸿蒙阵等级
boolean verifyHomgmeng = upStarVerifyHomgmeng(user, targetHero);
if (!verifyHomgmeng){
throw new ErrorCodeException(ErrorCode.HONGMENG_LEVEL_NOT);
}
Map<Integer, SCHero.ConsumeMaterialInfo> consumeMaterialInfoByPosition = scHero.getConsumeMaterialInfoOfPositionByStar(oldStar + 1);
if (consumeMaterialInfoByPosition == null) {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
@ -1648,6 +1655,40 @@ public class HeroLogic {
ReportUtil.onReportEvent(user, ReportEventEnum.HERO_STRENGTHEN.getType(), String.valueOf(targetHero.getTemplateId()), String.valueOf(oldStar), String.valueOf(targetHero.getStar()), consume, reportConsumeHero.toString());
}
/**
* 鸿
* @param user
* @param hero
* @return
*/
private boolean upStarVerifyHomgmeng(User user, Hero hero){
// 英雄配置表信息
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
// 升星表
Map<Integer, SCHeroRankUpConfig> configMap = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE, scHero.getStar());
// 升星数据
SCHeroRankUpConfig rankUp = configMap.get(hero.getStar() + 1);
// 0表示没有限制
if (rankUp == null || rankUp.getLimitHomgmengLevel() <= 0){
return true;
}
HeroManager heroManager = user.getHeroManager();
int hongmengLevel = 0;
// 鸿蒙碑开启,读取鸿蒙碑等级
if (heroManager.getHongmengTablet() > 0){
hongmengLevel = heroManager.getHongmengTablet();
}else {
// 否则获取前6个最高等级英雄种最后一个的等级
List<Hero> heroList = getCountHeroByLevel(user, 6);
hongmengLevel = heroList.get(heroList.size()-1).getOriginalLevel();
}
// 验证等级
if (hongmengLevel >= rankUp.getLimitHomgmengLevel()){
return true;
}
return false;
}
/**
*
*
@ -5147,6 +5188,22 @@ public class HeroLogic {
addOrUpdateHongmeng(session, false);
}
/**
*
* @param user
* @param count
* @return
*/
public List<Hero> getCountHeroByLevel(User user, int count){
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
ArrayList<Hero> heroes = new ArrayList<>(heroMap.values());
Collections.sort(heroes);
if (heroes.size() >= count){
return heroes.subList(0,count);
}
return heroes;
}
/**
* 鸿
*

View File

@ -31,6 +31,8 @@ public class SCHeroRankUpConfig implements BaseConfig{
private int[] phase;
private int limitHomgmengLevel;
@Override
public void init() throws Exception {
}
@ -85,4 +87,8 @@ public class SCHeroRankUpConfig implements BaseConfig{
public int[] getPhase() {
return phase;
}
public int getLimitHomgmengLevel() {
return limitHomgmengLevel;
}
}