diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java index 8c36f9c19..aa3c2bf7b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java @@ -300,6 +300,8 @@ public class CumulationData { */ private int yuxuLv; + + public Result updateData(MissionType missionType, Object...parm) throws Exception { return DataManagerDistributor.updateData(this, missionType,parm); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index a024855b3..346d2c0df 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -678,5 +678,26 @@ public class HeroManager extends MongoBase { this.xiuweiLevel = xiuweiLevel; updateString("xiuweiLevel", xiuweiLevel); } + + public int getHongMengLevel(){ + if(this.getHongmengTablet() > 0){ + return this.getHongmengTablet(); + } + //取守卫中最低等级 + Map heros = this.getHongmengGuards(); + int level = 9999; + for(String heroId : heros.values()){ + Hero hero = this.getHero(heroId); + if(hero != null){ + if(level > hero.getOriginalLevel()){ + level = hero.getOriginalLevel(); + } + } + } + if(level < 9999){ + return level; + } + return 1; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java index 325066341..a24034181 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java @@ -514,11 +514,12 @@ public class EquipLogic { String format = MessageFormat.format("礼物穿戴报错, 英雄礼物已穿戴,uid:{0},list:{1}, roleList:{2}", user.getId(), giftIds, heroGifts); throw new ErrorCodeException(format); } -// int boxNum = getHeroGiftBoxNum(user); -// if (heroGifts.size() + set.size() > boxNum){ -// String format = MessageFormat.format("礼物穿戴报错, 英雄礼物超出格子数量,uid:{0},wear:{1}, allow:{2}", user.getId(), heroGifts.size() + set.size(), boxNum); -// throw new ErrorCodeException(format); -// } + int hongmengLevel = heroManager.getHongMengLevel(); + int boxNum = SGiftConfig.getOpenBox(hongmengLevel); + if (heroGifts.size() + set.size() > boxNum){ + String format = MessageFormat.format("礼物穿戴报错, 英雄礼物超出格子数量,uid:{0},wear:{1}, allow:{2}", user.getId(), heroGifts.size() + set.size(), boxNum); + throw new ErrorCodeException(format); + } int templateId = hero.getTemplateId(); SCHero scHero = SCHero.getsCHero().get(templateId); if (scHero == null){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index a7e750ad9..befb107c1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -6520,10 +6520,11 @@ public class HeroLogic { // 装备神印 if (type == 1) { int[] value = SSpecialConfig.getIntegerArrayValue(SSpecialConfig.GodSignOpenStar); - // 存放已解锁的位置id + // 存放已解锁的位置id,改成根据鸿蒙阵等级解锁 ArrayList indexBox = new ArrayList<>(); + int hongMengLevel = heroManager.getHongMengLevel(); for (int i = 0; i < value.length; i++) { - if (hero.getStar() >= value[i]) { + if (hongMengLevel >= value[i]) { indexBox.add(i + 1); } } diff --git a/tablemanager/src/main/java/config/SGiftConfig.java b/tablemanager/src/main/java/config/SGiftConfig.java index 20714c543..da66b23e8 100644 --- a/tablemanager/src/main/java/config/SGiftConfig.java +++ b/tablemanager/src/main/java/config/SGiftConfig.java @@ -3,37 +3,64 @@ package config; import manager.STableManager; import manager.Table; -import java.util.HashMap; -import java.util.Map; +import java.util.*; @Table(name ="GiftConfig") public class SGiftConfig implements BaseConfig { - private int id; + private int id; - private int gift; + private int gift; - private int box; + private int harmony; + + private int box; public static Map map = new HashMap<>(); - - @Override + //按鸿蒙阵等级存储的列表 + public static Map harmonymap = new HashMap<>(); + //按鸿蒙阵等级排好序的礼物格子列表 + public static List list = new ArrayList(); + + @Override public void init() throws Exception { map = STableManager.getConfig(SGiftConfig.class); + for(SGiftConfig config :map.values()){ + harmonymap.put(config.getHarmony(),config); + } + for(SGiftConfig config :harmonymap.values()){ + list.add(config.getHarmony()); + } + Collections.sort(list); } - public int getId() { + public int getId() { return id; } - public int getGift() { + public int getGift() { return gift; } - public int getBox() { + public int getBox() { return box; } + public int getHarmony() { + return harmony; + } + public static int getOpenBox(int harmonyLevel){ + for(int i = list.size() - 1;i>=0;i--){ + int level = list.get(i); + if(harmonyLevel >= level){ + SGiftConfig config = harmonymap.get(level); + if(config !=null){ + return config.getBox(); + } + } + } + return 0; + } } \ No newline at end of file