【优化】升星操作增加鸿蒙阵等级限制
parent
91be761235
commit
0b1295cb61
|
@ -183,6 +183,7 @@ public enum ErrorCode implements IErrorCode {
|
||||||
SHOP_NO_ITEM(152,"商品不存在"),
|
SHOP_NO_ITEM(152,"商品不存在"),
|
||||||
HERO_RETURN_ONLY_LEVEL_ONE(153,"只有1级的神将才可回退,请先进行归元!"),
|
HERO_RETURN_ONLY_LEVEL_ONE(153,"只有1级的神将才可回退,请先进行归元!"),
|
||||||
HERO_RETURN_CAN_NOT(154,"此神将不可回退"),
|
HERO_RETURN_CAN_NOT(154,"此神将不可回退"),
|
||||||
|
HONGMENG_LEVEL_NOT(155,"鸿蒙阵等级不足"),
|
||||||
|
|
||||||
GUILD_NOT_AUTHORITY(300,"账号因错误发言导致相关功能封禁中,操作失败"),
|
GUILD_NOT_AUTHORITY(300,"账号因错误发言导致相关功能封禁中,操作失败"),
|
||||||
|
|
||||||
|
|
|
@ -1464,6 +1464,13 @@ public class HeroLogic {
|
||||||
if (targetHero.getLevel(user.getHeroManager()) < scHeroRankUpConfig.getLimitLevel()) {
|
if (targetHero.getLevel(user.getHeroManager()) < scHeroRankUpConfig.getLimitLevel()) {
|
||||||
throw new ErrorCodeException(ErrorCode.HERO_LEVE_DOWN);
|
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);
|
Map<Integer, SCHero.ConsumeMaterialInfo> consumeMaterialInfoByPosition = scHero.getConsumeMaterialInfoOfPositionByStar(oldStar + 1);
|
||||||
if (consumeMaterialInfoByPosition == null) {
|
if (consumeMaterialInfoByPosition == null) {
|
||||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
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());
|
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);
|
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[] phase;
|
||||||
|
|
||||||
|
private int limitHomgmengLevel;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() throws Exception {
|
public void init() throws Exception {
|
||||||
}
|
}
|
||||||
|
@ -85,4 +87,8 @@ public class SCHeroRankUpConfig implements BaseConfig{
|
||||||
public int[] getPhase() {
|
public int[] getPhase() {
|
||||||
return phase;
|
return phase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getLimitHomgmengLevel() {
|
||||||
|
return limitHomgmengLevel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue