【优化】升星操作增加鸿蒙阵等级限制
parent
91be761235
commit
0b1295cb61
|
@ -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,"账号因错误发言导致相关功能封禁中,操作失败"),
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加或更新鸿蒙守卫
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue