diff --git a/conf/c_database_version.json b/conf/c_database_version.json index 2b4b31e47..d29184ebf 100644 --- a/conf/c_database_version.json +++ b/conf/c_database_version.json @@ -1,4 +1,4 @@ { - "version":"5", - "tables":"" + "version":"6", + "tables":"StoreConfig|RechargeCommodityConfig" } \ No newline at end of file diff --git a/conf/hotfix.json b/conf/hotfix.json index 5ae757c8d..5ce50d6a9 100644 --- a/conf/hotfix.json +++ b/conf/hotfix.json @@ -1,5 +1,6 @@ { - "version":"5", + "version":"6", "classes":[ + {"name":"HeroLogic.class","fullName":"com.ljsd.jieling.logic.hero.HeroLogic"} ] } 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 719390e6b..e952f4946 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 @@ -5342,211 +5342,215 @@ public class HeroLogic { * @param session * @param judge true:返回,false:推送 */ - public void addOrUpdateHongmeng(ISession session, boolean judge) throws Exception { - User user = UserManager.getUser(session.getUid()); - // 英雄星级排行榜 - SaveHeroForceEventHandler.heroStarHandle(user); - // 鸿蒙阵逻辑 - HeroInfoProto.HongmengInfoIndication.Builder hongmengInfoIndication = HeroInfoProto.HongmengInfoIndication.newBuilder(); + public void addOrUpdateHongmeng(ISession session, boolean judge){ + try { + User user = UserManager.getUser(session.getUid()); + // 英雄星级排行榜 + SaveHeroForceEventHandler.heroStarHandle(user); + // 鸿蒙阵逻辑 + HeroInfoProto.HongmengInfoIndication.Builder hongmengInfoIndication = HeroInfoProto.HongmengInfoIndication.newBuilder(); - SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.HongMeng.getFunctionType()); - boolean open = GlobleSystemLogic.checkOpen(user, sGlobalSystemConfig); - // 鸿蒙阵开启条件 - if (open) { - /** ========================== 共鸣信息初始化 =========================== **/ - // 限制表 鸿蒙守卫数量#鸿蒙碑使者等级 - String[] openLevel = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#"); + SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.HongMeng.getFunctionType()); + boolean open = GlobleSystemLogic.checkOpen(user, sGlobalSystemConfig); + // 鸿蒙阵开启条件 + if (open) { + /** ========================== 共鸣信息初始化 =========================== **/ + // 限制表 鸿蒙守卫数量#鸿蒙碑使者等级 + String[] openLevel = SSpecialConfig.getStringValue(SSpecialConfig.HONGMENG_UPGRADE_LIMIT).split("#"); - Map hongmengs = new HashMap<>(Integer.parseInt(openLevel[0])); - int defaultValue = 1000; - // 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 -1:不用卸下装备,其他表示装备星级 - HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue); - // 只要任意鸿蒙守卫未穿戴魂宝/灵宝,或强化等级为0,便不会触发对应宝物的共鸣 - HongMengAddAttribute soulEquip = new HongMengAddAttribute(0, defaultValue); - HongMengAddAttribute spiritEquip = new HongMengAddAttribute(0, defaultValue); + Map hongmengs = new HashMap<>(Integer.parseInt(openLevel[0])); + int defaultValue = 1000; + // 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 -1:不用卸下装备,其他表示装备星级 + HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue); + // 只要任意鸿蒙守卫未穿戴魂宝/灵宝,或强化等级为0,便不会触发对应宝物的共鸣 + HongMengAddAttribute soulEquip = new HongMengAddAttribute(0, defaultValue); + HongMengAddAttribute spiritEquip = new HongMengAddAttribute(0, defaultValue); - // 共鸣等级=鸿蒙守卫中最低的等级 - HongMengAddAttribute resonanceLevel = new HongMengAddAttribute(0, defaultValue); + // 共鸣等级=鸿蒙守卫中最低的等级 + HongMengAddAttribute resonanceLevel = new HongMengAddAttribute(0, defaultValue); - // 共鸣法宝=鸿蒙守卫中法宝强化最低等级 - HongMengAddAttribute especialEquipLevel = new HongMengAddAttribute(0, defaultValue); + // 共鸣法宝=鸿蒙守卫中法宝强化最低等级 + HongMengAddAttribute especialEquipLevel = new HongMengAddAttribute(0, defaultValue); - /** ========================== 开始处理玩家信息,更 =========================== **/ - HeroManager heroManager = user.getHeroManager(); - // 共鸣英雄池 - Map resonances = heroManager.getResonances(); - // 第一个格子免费开启 - if (!resonances.containsKey(1)) { - resonances.put(1, ""); - heroManager.setResonances(resonances); - // 成就任务 - user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.HONGMENG_RESONANCE_LATTICE, resonances.size()); - } + /** ========================== 开始处理玩家信息,更 =========================== **/ + HeroManager heroManager = user.getHeroManager(); + // 共鸣英雄池 + Map resonances = heroManager.getResonances(); + // 第一个格子免费开启 + if (!resonances.containsKey(1)) { + resonances.put(1, ""); + heroManager.setResonances(resonances); + // 成就任务 + user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.HONGMENG_RESONANCE_LATTICE, resonances.size()); + } - // 获取玩家全部英雄 - Collection values = heroManager.getHeroMap().values(); - List heroes = new ArrayList<>(values); + // 获取玩家全部英雄 + Collection values = heroManager.getHeroMap().values(); + List heroes = new ArrayList<>(values); - // 是否开启鸿蒙碑 - int tabletMax = 0; - // 是否为鸿蒙碑 - if (heroManager.getHongmengTablet() > 0) { - // 等级 - resonanceLevel.value = heroManager.getHongmengTablet(); - tabletMax = heroManager.getHongmengMaxLevelByInt(); - } else { - // 玩家英雄背包按等级排序 - Collections.sort(heroes); + // 是否开启鸿蒙碑 + int tabletMax = 0; + // 是否为鸿蒙碑 + if (heroManager.getHongmengTablet() > 0) { + // 等级 + resonanceLevel.value = heroManager.getHongmengTablet(); + tabletMax = heroManager.getHongmengMaxLevelByInt(); + } else { + // 玩家英雄背包按等级排序 + Collections.sort(heroes); - 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(); + 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++; + } + // 等级 + hongmengLevel(resonanceLevel, hero); + hongmengs.put(i + 1, hero.getId()); + if (hongmengs.size() >= Integer.parseInt(openLevel[0])) { + break; + } + } + + // 更新鸿蒙使者 + heroManager.setHongmengGuards(hongmengs); + + // 鸿蒙碑,觉醒限制 + if (tabletMax >= Integer.parseInt(openLevel[0]) && 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(1); + hero.setBreakId(0); + } + // 初始化鸿蒙碑等级上限 + for (Hero hero : heroes) { + if (hero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_awaken_hero_content_parm)) { + heroManager.addHongmengMaxLevel(hero.getTemplateId()); } } - }); - // 是否开启鸿蒙碑 - if (hero.getOriginalLevel() >= Integer.parseInt(openLevel[1])) { - tabletMax++; - } - // 等级 - hongmengLevel(resonanceLevel, hero); - hongmengs.put(i + 1, hero.getId()); - if (hongmengs.size() >= Integer.parseInt(openLevel[0])) { - break; + 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); } } + // 守卫/使者英雄池 + Map guards = heroManager.getHongmengGuards(); + // 英雄装备 + Map equipMap = user.getEquipManager().getEquipMap(); - // 更新鸿蒙使者 - heroManager.setHongmengGuards(hongmengs); + // 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); + // break; + // } + // // 装备 + // hongmengEquip(hongMengAddAttributeEquip, hero); + // // 魂宝 灵宝 + // soulOrSpirit(soulEquip, 1, equipMap, hero); + // soulOrSpirit(spiritEquip, 2, equipMap, hero); + // } + // } - // 鸿蒙碑,觉醒限制 - if (tabletMax >= Integer.parseInt(openLevel[0]) && 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(1); - hero.setBreakId(0); - } - // 初始化鸿蒙碑等级上限 - 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(); + /*** ============================= 计算共鸣信息 ==================================== **/ + Map resonanceAddition = heroManager.getResonanceAddition(); + resonanceAddition.clear(); + if (resonanceLevel.value == defaultValue) { + resonanceLevel.value = -1; + } + // if (hongMengAddAttributeEquip.value == defaultValue) { + // hongMengAddAttributeEquip.value = -1; + // } + // if (soulEquip.value == defaultValue) { + // soulEquip.value = -1; + // } + // if (spiritEquip.value == defaultValue) { + // spiritEquip.value = -1; + // } + // if (especialEquipLevel.value == defaultValue) { + // especialEquipLevel.value = -1; + // } + resonanceAddition.put(HongMengAttributeEnum.LEVEL, resonanceLevel); + // resonanceAddition.put(HongMengAttributeEnum.EQUIP, hongMengAddAttributeEquip); + // resonanceAddition.put(HongMengAttributeEnum.SOUL_EQUIP, soulEquip); + // resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip); + heroManager.setResonanceAddition(resonanceAddition); - // 鸿蒙碑新手引导推送 - HeroInfoProto.HongmengSteleNewHandIndication.Builder builder = HeroInfoProto.HongmengSteleNewHandIndication.newBuilder().setState(1); - MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_STELE_NEW_HAND_INDICATION.getNumber(), builder.build(), true); + /*** ============================= 开始组装鸿蒙阵信息 ==================================== **/ + // 当前时间,秒 + long now = TimeUtils.now() / 1000; + // 鸿蒙守卫 + 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<>(); + 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); + } + // 共鸣使者 + List hongmengResonancesProto = new ArrayList<>(); + Map hongmengResonances = heroManager.getResonances(); + Map hongmengResonanceTime = heroManager.getResonancesTime(); + for (Map.Entry entry : hongmengResonances.entrySet()) { + HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder() + .setGridId(entry.getKey()) + .setHeroId(entry.getValue()) + .setTime(hongmengResonanceTime.containsKey(entry.getKey()) ? (hongmengResonanceTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengResonanceTime.get(entry.getKey()) - now)) : 0) + .build(); + hongmengResonancesProto.add(hongmengHeroInfo); + } + hongmengInfoIndication.addAllHongmengGuards(hongmengGuardsProto).addAllHongmengAdditions(hongmengAdditions) + .addAllHongmengResonacnes(hongmengResonancesProto).setHongmengTabletMax(tabletMax).build(); + } + // 返回协议 + if (judge) { + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_GET_INFO_RESPONSE_VALUE, hongmengInfoIndication.build(), true); + } else { + if (hongmengInfoIndication.getHongmengGuardsCount() > 0 || hongmengInfoIndication.getHongmengAdditionsCount() > 0 || hongmengInfoIndication.getHongmengResonacnesCount() > 0) { + MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_INFO_INDICATION_VALUE, hongmengInfoIndication.build(), true); } } - // 守卫/使者英雄池 - Map guards = heroManager.getHongmengGuards(); - // 英雄装备 - Map equipMap = user.getEquipManager().getEquipMap(); - -// 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); -// break; -// } -// // 装备 -// hongmengEquip(hongMengAddAttributeEquip, hero); -// // 魂宝 灵宝 -// soulOrSpirit(soulEquip, 1, equipMap, hero); -// soulOrSpirit(spiritEquip, 2, equipMap, hero); -// } -// } - - /*** ============================= 计算共鸣信息 ==================================== **/ - Map resonanceAddition = heroManager.getResonanceAddition(); - resonanceAddition.clear(); - if (resonanceLevel.value == defaultValue) { - resonanceLevel.value = -1; - } -// if (hongMengAddAttributeEquip.value == defaultValue) { -// hongMengAddAttributeEquip.value = -1; -// } -// if (soulEquip.value == defaultValue) { -// soulEquip.value = -1; -// } -// if (spiritEquip.value == defaultValue) { -// spiritEquip.value = -1; -// } -// if (especialEquipLevel.value == defaultValue) { -// especialEquipLevel.value = -1; -// } - resonanceAddition.put(HongMengAttributeEnum.LEVEL, resonanceLevel); -// resonanceAddition.put(HongMengAttributeEnum.EQUIP, hongMengAddAttributeEquip); -// resonanceAddition.put(HongMengAttributeEnum.SOUL_EQUIP, soulEquip); -// resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip); - heroManager.setResonanceAddition(resonanceAddition); - - /*** ============================= 开始组装鸿蒙阵信息 ==================================== **/ - // 当前时间,秒 - long now = TimeUtils.now() / 1000; - // 鸿蒙守卫 - 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<>(); - 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); - } - // 共鸣使者 - List hongmengResonancesProto = new ArrayList<>(); - Map hongmengResonances = heroManager.getResonances(); - Map hongmengResonanceTime = heroManager.getResonancesTime(); - for (Map.Entry entry : hongmengResonances.entrySet()) { - HeroInfoProto.HongmengHeroInfo hongmengHeroInfo = HeroInfoProto.HongmengHeroInfo.newBuilder() - .setGridId(entry.getKey()) - .setHeroId(entry.getValue()) - .setTime(hongmengResonanceTime.containsKey(entry.getKey()) ? (hongmengResonanceTime.get(entry.getKey()) - now < 0 ? 0 : (hongmengResonanceTime.get(entry.getKey()) - now)) : 0) - .build(); - hongmengResonancesProto.add(hongmengHeroInfo); - } - hongmengInfoIndication.addAllHongmengGuards(hongmengGuardsProto).addAllHongmengAdditions(hongmengAdditions) - .addAllHongmengResonacnes(hongmengResonancesProto).setHongmengTabletMax(tabletMax).build(); - } - // 返回协议 - if (judge) { - MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_GET_INFO_RESPONSE_VALUE, hongmengInfoIndication.build(), true); - } else { - if (hongmengInfoIndication.getHongmengGuardsCount() > 0 || hongmengInfoIndication.getHongmengAdditionsCount() > 0 || hongmengInfoIndication.getHongmengResonacnesCount() > 0) { - MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_INFO_INDICATION_VALUE, hongmengInfoIndication.build(), true); - } + } catch (Exception e) { + throw new RuntimeException(e); } }