From 9c9f43d686e95d21058fd7ab9021773791c8f982 Mon Sep 17 00:00:00 2001 From: duhui Date: Mon, 4 Jan 2021 15:11:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=B8=BF=E8=92=99=E9=98=B52.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/dao/Hero.java | 9 +- .../ljsd/jieling/logic/dao/HeroManager.java | 18 + .../ljsd/jieling/logic/hero/HeroLogic.java | 310 +++++++++--------- tablemanager/src/main/java/config/SCHero.java | 8 +- .../src/main/java/config/SEquipConfig.java | 13 +- tablemanager/src/main/java/config/SItem.java | 5 + 6 files changed, 209 insertions(+), 154 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index 92d45051b..a27856d0c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -10,6 +10,7 @@ import com.ljsd.jieling.util.KeyGenUtils; import com.ljsd.jieling.util.UUIDEnum; import config.SCHero; import config.SCHeroRankUpConfig; +import config.SEquipConfig; import config.SItem; import manager.STableManager; import org.slf4j.Logger; @@ -206,11 +207,9 @@ public class Hero extends MongoBase { // 模板,取装备 HongMengAddAttribute hongMengByEquip = heroManager.getResonanceAddition().get(HongMengAttributeEnum.EQUIP); if (hongMengByEquip != null && hongMengByEquip.value != -1) { - Map hongmengEquip = new HashMap<>(4); - for (int i = 0; i < 4; i++) { - hongmengEquip.put(i+1,hongMengByEquip.value); - } - return hongmengEquip; + // 根据星级获取装备位置和信息 + Map map = SEquipConfig.starByPositionMap.get(hongMengByEquip.value); + return map==null?new HashMap<>():map; } } return equipByPositionMap; 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 9769a5262..0f49d619a 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 @@ -5,6 +5,7 @@ import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.RemoveHeroEvent; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.hero.HongMengAttributeEnum; +import config.SSpecialConfig; import org.luaj.vm2.ast.Str; import java.util.*; @@ -218,9 +219,26 @@ public class HeroManager extends MongoBase { return hongmengMaxLevel; } + public int getHongmengMaxLevelByInt() { + String[] split = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#"); + return hongmengMaxLevel.size() * SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_ONEHERO_OPENLEVEL) + Integer.parseInt(split[1]); + } + public void setHongmengMaxLevel(Set hongmengMaxLevel) { this.hongmengMaxLevel = hongmengMaxLevel; updateString("hongmengMaxLevel", hongmengMaxLevel); } + + /** + * 增加鸿蒙碑神将等级上限 + * @param heroTid + */ + public void addHongmengMaxLevel(int heroTid) { + boolean add = hongmengMaxLevel.add(heroTid); + if (add) { + updateString("hongmengMaxLevel", hongmengMaxLevel); + } + } + } 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 28e5a7499..faeb6dcd2 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 @@ -29,10 +29,7 @@ import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.session.ISession; -import com.ljsd.jieling.protocols.CommonProto; -import com.ljsd.jieling.protocols.HeroInfoProto; -import com.ljsd.jieling.protocols.MapInfoProto; -import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.*; import com.ljsd.jieling.util.*; import config.*; import manager.STableManager; @@ -3447,53 +3444,10 @@ public class HeroLogic{ * @throws Exception */ public void getHongmengInfo(ISession session, MessageTypeProto.MessageType messageType) throws Exception { - User user = UserManager.getUser(session.getUid()); - HeroManager heroManager = user.getHeroManager(); - // 组装鸿蒙守卫或者鸿蒙使者信息 // 刷新鸿蒙阵 addOrUpdateHongmeng(session); - // 组装鸿蒙阵信息 - List hongmengHeroInfos = new ArrayList<>(); - Map resonances = heroManager.getResonances(); - Map resonancesTime = heroManager.getResonancesTime(); - long now = TimeUtils.now()/1000; - for (Map.Entry entry : resonances.entrySet()) { - HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder() - .setGridId(entry.getKey()) - .setHeroId(entry.getValue()) - .setTime(resonancesTime.containsKey(entry.getKey()) ? (resonancesTime.get(entry.getKey()) - now < 0 ? 0 : (resonancesTime.get(entry.getKey()) - now)) : 0) - .build(); - hongmengHeroInfos.add(hongmengHeroInfo); - } - List hongmengGuardsProto = new ArrayList<>(); - Map hongmengGuards = heroManager.getHongmengGuards(); - Map hongmengGuardTime = heroManager.getHongmengGuardTime(); - for (Map.Entry entry : hongmengGuards.entrySet()) { - HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder() - .setGridId(entry.getKey()) - .setHeroId(entry.getValue()) - .setTime(hongmengGuardTime.containsKey(entry.getKey()) ? (hongmengGuardTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengGuardTime.get(entry.getKey()) - now)) : 0) - .build(); - hongmengGuardsProto.add(hongmengHeroInfo); - } - List hongmengAdditions = new ArrayList<>(); - Map resonanceAddition = heroManager.getResonanceAddition(); - for (Map.Entry entry : resonanceAddition.entrySet()) { - HeroInfoProto.HongmengAddition hongmengAddition = HeroInfoProto.HongmengAddition - .newBuilder() - .setAdditionType(entry.getKey().getPropertyId()) - .setValue(entry.getValue().value) - .setHeroTid(entry.getValue().heroTid) - .build(); - hongmengAdditions.add(hongmengAddition); - } - HeroInfoProto.GetHongmengInfoResponse getHongmengInfoResponse = HeroInfoProto.GetHongmengInfoResponse.newBuilder() - .addAllHongmengGuards(hongmengGuardsProto) - .setHongmengTablet(heroManager.getHongmengTablet()) - .addAllHongmengHeroInfos(hongmengHeroInfos) - .addAllHongmengAdditions(hongmengAdditions) - .build(); + HeroInfoProto.GetHongmengInfoResponse getHongmengInfoResponse = HeroInfoProto.GetHongmengInfoResponse.newBuilder().build(); MessageUtil.sendMessage(session, 1, messageType.getNumber(), getHongmengInfoResponse); } @@ -3503,32 +3457,12 @@ public class HeroLogic{ */ public void addOrUpdateHongmeng(ISession session) throws Exception { User user = UserManager.getUser(session.getUid()); - + // 鸿蒙阵开启条件 if (user.getPlayerInfoManager().getLevel() < SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_OPENLEVEL)) { return; } - HeroManager heroManager = user.getHeroManager(); - // 鸿蒙碑开启,不需要再更新鸿蒙使者和鸿蒙守卫 - if (heroManager.getHongmengTablet() > 0) { - return; - } - Collection values = heroManager.getHeroMap().values(); - List heroes = new ArrayList<>(values); - Collections.sort(heroes, new Comparator() { - @Override - public int compare(Hero hero1, Hero hero2) { - int compareValue = hero2.getOriginalLevel() - hero1.getOriginalLevel(); - if (compareValue != 0) { - return compareValue; - } - return Integer.compare(hero2.getStar(), hero1.getStar()); - } - }); - - heroes.forEach((item)->{ - System.out.println("hero========================:"+item.getId()); - }); + /** ========================== 共鸣信息初始化 =========================== **/ // 限制表 鸿蒙守卫数量#鸿蒙碑使者等级 String[] openLevel = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#"); @@ -3546,32 +3480,91 @@ public class HeroLogic{ // 共鸣法宝=鸿蒙守卫中法宝强化最低等级 HongMengAddAttribute especialEquipLevel = new HongMengAddAttribute(0, defaultValue); - // 是否开启鸿蒙碑 - int tablet = 1; + /** ========================== 开始处理玩家信息,更 =========================== **/ + HeroManager heroManager = user.getHeroManager(); // 共鸣英雄池 Map resonances = heroManager.getResonances(); - int key = 1; - for (int i = 0; i < heroes.size(); i++) { - Hero hero = heroes.get(i); - resonances.forEach((k,v)->{ - if (v.equals(hero.getId())){ - try { - // 共鸣格子更新 - unLoadResonance(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, k, 0); - } catch (Exception e) { - e.printStackTrace(); + // 第一个格子免费开启 + if (!resonances.containsKey(1)) { + resonances.put(1, ""); + heroManager.setResonances(resonances); + } + + // 获取玩家全部英雄 + Collection values = heroManager.getHeroMap().values(); + List heroes = new ArrayList<>(values); + + // 是否开启鸿蒙碑 + int tabletMax = 1; + // 是否为鸿蒙碑 + if (heroManager.getHongmengTablet() > 0){ + // 等级 + resonanceLevel.value = heroManager.getHongmengTablet(); + tabletMax = heroManager.getHongmengMaxLevelByInt(); + }else { + // 玩家英雄背包按等级排序 + Collections.sort(heroes, new Comparator() { + @Override + public int compare(Hero hero1, Hero hero2) { + int compareValue = hero2.getOriginalLevel() - hero1.getOriginalLevel(); + if (compareValue != 0) { + return compareValue; } + return Integer.compare(hero2.getStar(), hero1.getStar()); } }); - // 是否开启鸿蒙碑 - if (hero.getOriginalLevel() < Integer.parseInt(openLevel[1])) { - tablet = 0; + + for (int i = 0; i < heroes.size(); i++) { + Hero hero = heroes.get(i); + resonances.forEach((k,v)->{ + if (v.equals(hero.getId())){ + try { + // 共鸣格子更新 + unLoadResonance(session, MessageTypeProto.MessageType.HONGMENG_RESONANCE_RESPONSE, k, 0); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + // 是否开启鸿蒙碑 + if (hero.getOriginalLevel() < Integer.parseInt(openLevel[1])) { + tabletMax = 0; + } + // 等级 + hongmengLevel(resonanceLevel, hero); + hongmengs.put(i+1, hero.getId()); + if (hongmengs.size() >= Integer.parseInt(openLevel[0])) { + break; + } } - // 等级 - hongmengLevel(resonanceLevel, hero); - hongmengs.put(key++, hero.getId()); - if (hongmengs.size() >= Integer.parseInt(openLevel[0])) { - break; + + // 更新鸿蒙使者 + heroManager.setHongmengGuards(hongmengs); + + // 鸿蒙碑,觉醒限制 + if (tabletMax == 1 && heroManager.getHongmengTablet() == 0) { + // 开启鸿蒙碑 + heroManager.setHongmengTablet(Integer.parseInt(openLevel[1])); + for (String resetLevelId : heroManager.getHongmengGuards().values()) { + Hero hero = heroManager.getHero(resetLevelId); + if (hero == null) { + continue; + } + hero.setLevel(user, 1); + } + // 初始化鸿蒙碑等级上限 + for (Hero hero:heroes){ + if (hero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_awaken_hero_content_parm)) { + heroManager.addHongmengMaxLevel(hero.getTemplateId()); + } + } + tabletMax = heroManager.getHongmengMaxLevelByInt(); + resonanceLevel.heroTid = 0; + resonanceLevel.value = heroManager.getHongmengTablet(); + + // 鸿蒙碑新手引导推送 + HeroInfoProto.HongmengSteleNewHandIndication.Builder builder = HeroInfoProto.HongmengSteleNewHandIndication.newBuilder().setState(1); + MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.HONGMENG_STELE_NEW_HAND_INDICATION.getNumber(),builder.build(),true); } } @@ -3579,48 +3572,49 @@ public class HeroLogic{ /*if (hongmengs.size() < Integer.parseInt(openLevel[0])) { return; }*/ - // 更新鸿蒙使者 - heroManager.setHongmengGuards(hongmengs); + // 守卫/使者英雄池 Map guards = heroManager.getHongmengGuards(); // 英雄装备 Map equipMap = user.getEquipManager().getEquipMap(); - for (int i = 0; i < guards.size(); i++) { - Hero hero = user.getHeroManager().getHero(guards.get(i+1)); - if (hero == null){ - continue; + if (guards.size() >= Integer.parseInt(openLevel[0])){ + for (int i = 0; i < guards.size(); i++) { + Hero hero = user.getHeroManager().getHero(guards.get(i+1)); + if (hero == null){ + // 找不到英雄,不存在这些共鸣属性 + hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue); + soulEquip = new HongMengAddAttribute(0, defaultValue); + spiritEquip = new HongMengAddAttribute(0, defaultValue); + especialEquipLevel = new HongMengAddAttribute(0, defaultValue); + break; + } + // 装备 + hongmengEquip(hongMengAddAttributeEquip, hero); + // 魂宝 灵宝 + soulOrSpirit(soulEquip, spiritEquip, equipMap, hero); + // 法宝 + especialAdd(especialEquipLevel, hero); } - // 装备 - hongmengEquip(hongMengAddAttributeEquip, hero); - // 魂宝 灵宝 - soulOrSpirit(soulEquip, spiritEquip, equipMap, hero); - // 法宝 - especialAdd(especialEquipLevel, hero); } - // 第一个格子免费开启 - if (!resonances.containsKey(1)) { - resonances.put(1, ""); - heroManager.setResonances(resonances); - } - // 计算共鸣属性 + /*** ============================= 计算共鸣信息 ==================================== **/ Map resonanceAddition = heroManager.getResonanceAddition(); resonanceAddition.clear(); - if (resonanceLevel.value == defaultValue || hongmengs.size() < Integer.parseInt(openLevel[0])) { - resonanceLevel.value = 0; + if (resonanceLevel.value == defaultValue) { + resonanceLevel.value = -1; } - if (hongMengAddAttributeEquip.value == defaultValue || hongmengs.size() < Integer.parseInt(openLevel[0])) { - hongMengAddAttributeEquip.value = 0; + if (hongMengAddAttributeEquip.value == defaultValue) { + hongMengAddAttributeEquip.value = -1; } - if (soulEquip.value == defaultValue || hongmengs.size() < Integer.parseInt(openLevel[0])) { - soulEquip.value = 0; + if (soulEquip.value == defaultValue) { + soulEquip.value = -1; } - if (spiritEquip.value == defaultValue || hongmengs.size() < Integer.parseInt(openLevel[0])) { - spiritEquip.value = 0; + if (spiritEquip.value == defaultValue) { + spiritEquip.value = -1; } - if (especialEquipLevel.value == defaultValue || hongmengs.size() < Integer.parseInt(openLevel[0])) { - especialEquipLevel.value = 0; + if (especialEquipLevel.value == defaultValue) { + especialEquipLevel.value = -1; } resonanceAddition.put(HongMengAttributeEnum.LEVEL, resonanceLevel); resonanceAddition.put(HongMengAttributeEnum.EQUIP, hongMengAddAttributeEquip); @@ -3628,18 +3622,9 @@ public class HeroLogic{ resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip); resonanceAddition.put(HongMengAttributeEnum.MAGIC_WEAPON, especialEquipLevel); heroManager.setResonanceAddition(resonanceAddition); - // 鸿蒙碑,觉醒限制 - if (tablet == 1 && heroManager.getHongmengTablet() == 0) { - // 开启鸿蒙碑 - heroManager.setHongmengTablet(Integer.parseInt(openLevel[1])); - for (String resetLevelId : heroManager.getHongmengGuards().values()) { - Hero hero = heroManager.getHero(resetLevelId); - if (hero == null) { - continue; - } - hero.setLevel(user, 1); - } - } + + /*** ============================= 开始组装鸿蒙阵信息 ==================================== **/ + // 当前时间,秒 long now = TimeUtils.now()/1000; // 鸿蒙守卫 List hongmengGuardsProto = new ArrayList<>(); @@ -3680,6 +3665,7 @@ public class HeroLogic{ .addAllHongmengGuards(hongmengGuardsProto) .addAllHongmengAdditions(hongmengAdditions) .addAllHongmengResonacnes(hongmengResonancesProto) + .setHongmengTabletMax(tabletMax) .build(); MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.HONGMENG_INFO_INDICATION.getNumber(),hongmengInfoIndication,true); @@ -3868,6 +3854,12 @@ public class HeroLogic{ equipByPositionMap.clear(); hero.setEquipByPositionMap(equipByPositionMap); } + + // 战力改变 + if(isInTeam(user,heroId,1)){ + Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(user.getId())); + } + MessageUtil.sendMessage(session, 1, messageType.getNumber(), null); } @@ -3898,6 +3890,11 @@ public class HeroLogic{ heroManager.updateResonances(index, ""); heroManager.updateResonancesTime(index, TimeUtils.now()/1000 + time); + // 战力改变 + if(isInTeam(user,heroId,1)){ + Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(user.getId())); + } + HeroInfoProto.ResonanceResponse resonanceResponse = HeroInfoProto.ResonanceResponse.newBuilder().setLeftTime(time).build(); MessageUtil.sendMessage(session, 1, messageType.getNumber(), resonanceResponse); } @@ -3927,10 +3924,11 @@ public class HeroLogic{ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); } String[] stringValue = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_LATTICE_PRICE).split("#"); - long time = (unloadTime - now); - int count = (int) (time / Integer.parseInt(stringValue[0]) *Integer.parseInt(stringValue[2]) ); + double time = (unloadTime - now); + double money = Integer.parseInt(stringValue[0]) *Integer.parseInt(stringValue[2]); + double count = Math.ceil (time / money); Map cost = new HashMap<>(1); - cost.put(Integer.parseInt(stringValue[1]), count); + cost.put(Integer.parseInt(stringValue[1]), (int)count); boolean checkCost = ItemUtil.checkCost(user, cost); if (!checkCost) { LOGGER.info("cleanTime uid=>{} item not enough =>{}", user.getId(), unloadTime); @@ -3956,10 +3954,11 @@ public class HeroLogic{ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); } String[] stringValue = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_LATTICE_PRICE).split("#"); - long time = unloadTime - now; - int count = (int) (time * Integer.parseInt(stringValue[0])); + double time = unloadTime - now; + double money = Integer.parseInt(stringValue[0]) *Integer.parseInt(stringValue[2]); + double count = Math.ceil (time / money); Map cost = new HashMap<>(1); - cost.put(Integer.parseInt(stringValue[1]), count); + cost.put(Integer.parseInt(stringValue[1]), (int)count); boolean checkCost = ItemUtil.checkCost(user, cost); if (!checkCost) { LOGGER.info("cleanTime uid=>{} item not enough =>{}", user.getId(), unloadTime); @@ -3984,8 +3983,7 @@ public class HeroLogic{ LOGGER.info("updateHongmengTablet uid=>{} HongmengTablet not open=>{}", user.getId(), 0); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); } - String[] split = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#"); - int maxLevel = heroManager.getHongmengMaxLevel().size() * SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_ONEHERO_OPENLEVEL) + Integer.parseInt(split[1]); + int maxLevel = heroManager.getHongmengMaxLevelByInt(); if (heroManager.getHongmengTablet() >= maxLevel) { LOGGER.info("updateHongmengTablet uid=>{} curLevel={} maxLevel =>{}", user.getId(), heroManager.getHongmengTablet(), maxLevel); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); @@ -4003,6 +4001,10 @@ public class HeroLogic{ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); } heroManager.setHongmengTablet(nextLevel); + + // 战力改变 + Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(user.getId())); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), null); } @@ -4034,19 +4036,27 @@ public class HeroLogic{ LOGGER.info("addHongmengTableHero uid=>{} the heroId=>{} is Resonances", user.getId(), heroId); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); } - Map resonances = heroManager.getHongmengGuards(); - String resonanceInfo = resonances.get(index); - if (resonanceInfo != null && !resonanceInfo.isEmpty()) { + Map guards = heroManager.getHongmengGuards(); + String guardsInfo = guards.get(index); + if (guardsInfo != null && !guardsInfo.isEmpty()) { LOGGER.info("addHongmengTableHero uid=>{} not hero key=>{}", user.getId(), index); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); } - Map resonancesTime = heroManager.getHongmengGuardTime(); - if (resonancesTime.get(index) != null && resonancesTime.get(index) > TimeUtils.now()/1000) { - LOGGER.info("addHongmengTableHero uid=>{} time =>{}", user.getId(), resonancesTime.get(index)); + Map guardsTime = heroManager.getHongmengGuardTime(); + if (guardsTime.get(index) != null && guardsTime.get(index) > TimeUtils.now()/1000) { + LOGGER.info("addHongmengTableHero uid=>{} time =>{}", user.getId(), guardsTime.get(index)); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); } // 添加鸿蒙碑 heroManager.updateHongmengGuards(index, heroId); + + // 战力改变 + if(isInTeam(user,heroId,1)){ + Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(user.getId())); + } + + addOrUpdateHongmeng(session); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), null); } @@ -4065,8 +4075,8 @@ public class HeroLogic{ LOGGER.info("unLoadHongmengTableHero uid=>{} HongmengTablet==0", user.getId()); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); } - Map resonances = heroManager.getHongmengGuards(); - String heroId = resonances.get(index); + Map guards = heroManager.getHongmengGuards(); + String heroId = guards.get(index); if (heroId == null || heroId.isEmpty()) { LOGGER.info("unLoadHongmengTableHero uid=>{} no hero=>{}", user.getId(), index); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF); @@ -4082,6 +4092,14 @@ public class HeroLogic{ .newBuilder() .setLeftTime(SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_LATTICE_WAIT_TIME)) .build(); + + // 战力改变 + if(isInTeam(user,heroId,1)){ + Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(user.getId())); + } + + addOrUpdateHongmeng(session); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), resonanceResponse); } diff --git a/tablemanager/src/main/java/config/SCHero.java b/tablemanager/src/main/java/config/SCHero.java index d4e1fe738..f0c4a1e12 100644 --- a/tablemanager/src/main/java/config/SCHero.java +++ b/tablemanager/src/main/java/config/SCHero.java @@ -56,6 +56,8 @@ public class SCHero implements BaseConfig{ private int[] growthSwitch; + private int job; + private Map secondaryFactorMap; private Map> skillListByStar; @@ -169,7 +171,7 @@ public class SCHero implements BaseConfig{ // 大于10星为 觉醒技能 int[][] awakens = scHero.getAwaken(); Map>> awakSkillMapTmp = new HashMap<>(); - if (awakens != null && awakens.length > 0) { + if (awakens != null && awakens.length > 0&&awakens[0].length>0) { awakSkillMapTmp.put(1, new TreeMap<>()); awakSkillMapTmp.put(2, new TreeMap<>()); for (int[] openSkillRule : awakens) { @@ -337,4 +339,8 @@ public class SCHero implements BaseConfig{ public int[][] getAwaken() { return awaken; } + + public int getJob() { + return job; + } } diff --git a/tablemanager/src/main/java/config/SEquipConfig.java b/tablemanager/src/main/java/config/SEquipConfig.java index bf63a1eb1..ad0d279cf 100644 --- a/tablemanager/src/main/java/config/SEquipConfig.java +++ b/tablemanager/src/main/java/config/SEquipConfig.java @@ -54,11 +54,19 @@ public class SEquipConfig implements BaseConfig { private int[] passiveSkill; - public static Map> positionStarMap ; + /** + * 位置,星级,装备信息 + */ + public static Map> positionStarMap; + /** + * 星级,位置,装备id + */ + public static Map> starByPositionMap; @Override public void init() throws Exception { Map> tempMap = new HashMap<>(); + Map> startMap = new HashMap<>(); Map config = STableManager.getConfig(SEquipConfig.class); config.forEach((k,v)->{ if(v.getRange()!=null && v.getRange().length>0 && v.getRange()[0]!=0){ @@ -68,13 +76,14 @@ public class SEquipConfig implements BaseConfig { } if(v.getPosition()!=5){ tempMap.computeIfAbsent(v.getPosition(),m->new HashMap<>()).put(v.getStar(),v); + startMap.computeIfAbsent(v.getStar(),m->new HashMap<>()).put(v.getPosition(),v.getId()); } }); positionStarMap = tempMap; + starByPositionMap = startMap; } - public int getId() { return id; } diff --git a/tablemanager/src/main/java/config/SItem.java b/tablemanager/src/main/java/config/SItem.java index 4e3313a76..38f906130 100644 --- a/tablemanager/src/main/java/config/SItem.java +++ b/tablemanager/src/main/java/config/SItem.java @@ -25,6 +25,7 @@ public class SItem implements BaseConfig { private String resolveReward; private int itemNumlimit; private int[][] extraReward; + private int recycle; private String name; @@ -104,4 +105,8 @@ public class SItem implements BaseConfig { public int[][] getExtraReward() { return extraReward; } + + public int getRecycle() { + return recycle; + } }