鸿蒙碑
parent
98ddcf78fc
commit
d3a11d5305
|
@ -191,7 +191,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
||||||
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.RECHARGE_BUY.getType(),Global.LMONTHCARDID));
|
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.RECHARGE_BUY.getType(),Global.LMONTHCARDID));
|
||||||
}
|
}
|
||||||
// 刷新鸿蒙阵
|
// 刷新鸿蒙阵
|
||||||
// HeroLogic.getInstance().addOrUpdateHongmeng(user);
|
HeroLogic.getInstance().addOrUpdateHongmeng(user);
|
||||||
// 组装鸿蒙阵信息
|
// 组装鸿蒙阵信息
|
||||||
List<PlayerInfoProto.HongmengHeroInfo> hongmengHeroInfos = new ArrayList<>();
|
List<PlayerInfoProto.HongmengHeroInfo> hongmengHeroInfos = new ArrayList<>();
|
||||||
Map<Integer, String> resonances = heroManager.getResonances();
|
Map<Integer, String> resonances = heroManager.getResonances();
|
||||||
|
@ -205,12 +205,13 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
||||||
hongmengHeroInfos.add(hongmengHeroInfo);
|
hongmengHeroInfos.add(hongmengHeroInfo);
|
||||||
}
|
}
|
||||||
List<PlayerInfoProto.HongmengAddition> hongmengAdditions = new ArrayList<>();
|
List<PlayerInfoProto.HongmengAddition> hongmengAdditions = new ArrayList<>();
|
||||||
Map<HongMengAttributeEnum, Integer> resonanceAddition = heroManager.getResonanceAddition();
|
Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = heroManager.getResonanceAddition();
|
||||||
for (Map.Entry<HongMengAttributeEnum, Integer> entry : resonanceAddition.entrySet()) {
|
for (Map.Entry<HongMengAttributeEnum, HongMengAddAttribute> entry : resonanceAddition.entrySet()) {
|
||||||
PlayerInfoProto.HongmengAddition hongmengAddition = PlayerInfoProto.HongmengAddition
|
PlayerInfoProto.HongmengAddition hongmengAddition = PlayerInfoProto.HongmengAddition
|
||||||
.newBuilder()
|
.newBuilder()
|
||||||
.setAdditionType(entry.getKey().getPropertyId())
|
.setAdditionType(entry.getKey().getPropertyId())
|
||||||
.setValue(entry.getValue())
|
.setValue(entry.getValue().value)
|
||||||
|
.setHeroTid(entry.getValue().heroTid)
|
||||||
.build();
|
.build();
|
||||||
hongmengAdditions.add(hongmengAddition);
|
hongmengAdditions.add(hongmengAddition);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class HeroManager extends MongoBase {
|
||||||
// 共鸣英雄<格子id,冷却时间>
|
// 共鸣英雄<格子id,冷却时间>
|
||||||
private Map<Integer, Long> resonancesTime = new HashMap<>();
|
private Map<Integer, Long> resonancesTime = new HashMap<>();
|
||||||
// 共鸣加成
|
// 共鸣加成
|
||||||
private Map<HongMengAttributeEnum, Integer> resonanceAddition = new HashMap<>();
|
private Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = new HashMap<>();
|
||||||
// 鸿蒙碑等级
|
// 鸿蒙碑等级
|
||||||
private int hongmengTablet;
|
private int hongmengTablet;
|
||||||
// 鸿蒙碑最大等级
|
// 鸿蒙碑最大等级
|
||||||
|
@ -51,7 +51,6 @@ public class HeroManager extends MongoBase {
|
||||||
public void updateRandomPoolByType(int type,Map<Integer,Integer> map){
|
public void updateRandomPoolByType(int type,Map<Integer,Integer> map){
|
||||||
randomPoolByType.put(type,map);
|
randomPoolByType.put(type,map);
|
||||||
updateString("randomPoolByType." + type, map);
|
updateString("randomPoolByType." + type, map);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Hero> getItemMap() {
|
public Map<String, Hero> getItemMap() {
|
||||||
|
@ -175,11 +174,11 @@ public class HeroManager extends MongoBase {
|
||||||
updateString("resonancesTime."+ index, time);
|
updateString("resonancesTime."+ index, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<HongMengAttributeEnum, Integer> getResonanceAddition() {
|
public Map<HongMengAttributeEnum, HongMengAddAttribute> getResonanceAddition() {
|
||||||
return resonanceAddition;
|
return resonanceAddition;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setResonanceAddition(Map<HongMengAttributeEnum, Integer> resonanceAddition) {
|
public void setResonanceAddition(Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition) {
|
||||||
this.resonanceAddition = resonanceAddition;
|
this.resonanceAddition = resonanceAddition;
|
||||||
updateString("resonanceAddition", resonanceAddition);
|
updateString("resonanceAddition", resonanceAddition);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.ljsd.jieling.logic.dao;
|
||||||
|
|
||||||
|
public class HongMengAddAttribute {
|
||||||
|
public int heroTid;
|
||||||
|
public int value;
|
||||||
|
|
||||||
|
public HongMengAddAttribute(int heroTid, int value) {
|
||||||
|
this.heroTid = heroTid;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -3423,20 +3423,19 @@ public class HeroLogic{
|
||||||
return Integer.compare(hero2.getStar(), hero1.getStar());
|
return Integer.compare(hero2.getStar(), hero1.getStar());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
List<String> hongmengs = heroManager.getHongmengGuard();
|
List<String> hongmengs = new ArrayList<>();
|
||||||
hongmengs.clear();
|
int defaultValue = 1000;
|
||||||
// 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 1:不卸下装备
|
// 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 1:不卸下装备
|
||||||
int isUnloadEquip = 1;
|
HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
|
||||||
|
|
||||||
// 只要任意鸿蒙守卫未穿戴魂宝/灵宝,或强化等级为0,便不会触发对应宝物的共鸣
|
// 只要任意鸿蒙守卫未穿戴魂宝/灵宝,或强化等级为0,便不会触发对应宝物的共鸣
|
||||||
int soulEquip = 1000;
|
HongMengAddAttribute soulEquip = new HongMengAddAttribute(0, defaultValue);
|
||||||
int spiritEquip = 1000;
|
HongMengAddAttribute spiritEquip = new HongMengAddAttribute(0, defaultValue);
|
||||||
|
|
||||||
// 共鸣等级=鸿蒙守卫中最低的等级
|
// 共鸣等级=鸿蒙守卫中最低的等级
|
||||||
int resonanceLevel = 1000;
|
HongMengAddAttribute resonanceLevel = new HongMengAddAttribute(0, defaultValue);
|
||||||
|
|
||||||
// 共鸣法宝=鸿蒙守卫中法宝强化最低等级
|
// 共鸣法宝=鸿蒙守卫中法宝强化最低等级
|
||||||
int especialEquipLevel = 1000;
|
HongMengAddAttribute especialEquipLevel = new HongMengAddAttribute(0, defaultValue);
|
||||||
|
|
||||||
// 是否开启鸿蒙碑
|
// 是否开启鸿蒙碑
|
||||||
int tablet = 1;
|
int tablet = 1;
|
||||||
|
@ -3448,41 +3447,18 @@ public class HeroLogic{
|
||||||
if (values2.contains(hero.getId())) {
|
if (values2.contains(hero.getId())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (hero.getEquipByPositionMap().size() != 4 && isUnloadEquip == 1) {
|
// 装备
|
||||||
isUnloadEquip = 0;
|
hongmengEquip(hongMengAddAttributeEquip, hero);
|
||||||
}
|
// 魂宝 灵宝
|
||||||
if (hero.getJewelInfo().isEmpty()) {
|
soulOrSpirit(soulEquip, spiritEquip, equipMap, hero);
|
||||||
soulEquip = 0;
|
// 法宝
|
||||||
spiritEquip = 0;
|
especialAdd(especialEquipLevel, hero);
|
||||||
} else {
|
// 是否开启鸿蒙碑
|
||||||
for (String jewel : hero.getJewelInfo()) {
|
|
||||||
PropertyItem propertyItem = equipMap.get(jewel);
|
|
||||||
if (propertyItem == null) {
|
|
||||||
soulEquip = 0;
|
|
||||||
spiritEquip = 0;
|
|
||||||
} else {
|
|
||||||
SJewelConfig config = STableManager.getConfig(SJewelConfig.class).get(propertyItem.getEquipId());
|
|
||||||
if (config == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// getLocation 1魂宝 2灵宝
|
|
||||||
if (config.getLocation() == 1) {
|
|
||||||
soulEquip = propertyItem.getLevel() < soulEquip ? propertyItem.getLevel() : soulEquip;
|
|
||||||
} else {
|
|
||||||
spiritEquip = propertyItem.getLevel() < soulEquip ? propertyItem.getLevel() : soulEquip;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (hero.getEspecialEquipLevel() < especialEquipLevel) {
|
|
||||||
especialEquipLevel = hero.getEspecialEquipLevel();
|
|
||||||
}
|
|
||||||
if (hero.getLevel() < Integer.parseInt(openLevel[1])) {
|
if (hero.getLevel() < Integer.parseInt(openLevel[1])) {
|
||||||
tablet = 0;
|
tablet = 0;
|
||||||
}
|
}
|
||||||
if (hero.getLevel() < resonanceLevel) {
|
// 等级
|
||||||
resonanceLevel = hero.getLevel();
|
hongmengLevel(resonanceLevel, hero);
|
||||||
}
|
|
||||||
hongmengs.add(hero.getId());
|
hongmengs.add(hero.getId());
|
||||||
if (hongmengs.size() >= Integer.parseInt(openLevel[0])) {
|
if (hongmengs.size() >= Integer.parseInt(openLevel[0])) {
|
||||||
break;
|
break;
|
||||||
|
@ -3492,14 +3468,35 @@ public class HeroLogic{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
heroManager.setHongmengGuard(hongmengs);
|
heroManager.setHongmengGuard(hongmengs);
|
||||||
|
// 第一个格子免费开启
|
||||||
|
Map<Integer, String> resonances = heroManager.getResonances();
|
||||||
|
if (!resonances.containsKey(1)) {
|
||||||
|
resonances.put(1, "");
|
||||||
|
heroManager.setResonances(resonances);
|
||||||
|
}
|
||||||
// 计算共鸣属性
|
// 计算共鸣属性
|
||||||
Map<HongMengAttributeEnum, Integer> resonanceAddition = heroManager.getResonanceAddition();
|
Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = heroManager.getResonanceAddition();
|
||||||
resonanceAddition.clear();
|
resonanceAddition.clear();
|
||||||
resonanceAddition.put(HongMengAttributeEnum.LEVEL, resonanceLevel == 1000 ? 0 : resonanceLevel);
|
if (resonanceLevel.value == defaultValue) {
|
||||||
resonanceAddition.put(HongMengAttributeEnum.EQUIP, isUnloadEquip);
|
resonanceLevel.value = 0;
|
||||||
resonanceAddition.put(HongMengAttributeEnum.SOUL_EQUIP, soulEquip == 1000 ? 0 : soulEquip);
|
}
|
||||||
resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip == 1000 ? 0 : spiritEquip);
|
if (hongMengAddAttributeEquip.value == defaultValue) {
|
||||||
resonanceAddition.put(HongMengAttributeEnum.MAGIC_WEAPON, especialEquipLevel == 1000 ? 0 : especialEquipLevel);
|
hongMengAddAttributeEquip.value = 0;
|
||||||
|
}
|
||||||
|
if (soulEquip.value == defaultValue) {
|
||||||
|
soulEquip.value = 0;
|
||||||
|
}
|
||||||
|
if (spiritEquip.value == defaultValue) {
|
||||||
|
spiritEquip.value = 0;
|
||||||
|
}
|
||||||
|
if (especialEquipLevel.value == defaultValue) {
|
||||||
|
especialEquipLevel.value = 0;
|
||||||
|
}
|
||||||
|
resonanceAddition.put(HongMengAttributeEnum.LEVEL, resonanceLevel);
|
||||||
|
resonanceAddition.put(HongMengAttributeEnum.EQUIP, hongMengAddAttributeEquip);
|
||||||
|
resonanceAddition.put(HongMengAttributeEnum.SOUL_EQUIP, soulEquip);
|
||||||
|
resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip);
|
||||||
|
resonanceAddition.put(HongMengAttributeEnum.MAGIC_WEAPON, especialEquipLevel);
|
||||||
heroManager.setResonanceAddition(resonanceAddition);
|
heroManager.setResonanceAddition(resonanceAddition);
|
||||||
// 鸿蒙碑
|
// 鸿蒙碑
|
||||||
if (tablet == 1 && heroManager.getHongmengTablet() == 0) {
|
if (tablet == 1 && heroManager.getHongmengTablet() == 0) {
|
||||||
|
@ -3508,6 +3505,95 @@ public class HeroLogic{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 鸿蒙阵对神将等级加成
|
||||||
|
* @param resonanceLevel
|
||||||
|
* @param hero
|
||||||
|
*/
|
||||||
|
public void hongmengLevel(HongMengAddAttribute resonanceLevel, Hero hero) {
|
||||||
|
if (hero.getLevel() < resonanceLevel.value) {
|
||||||
|
resonanceLevel.value = hero.getLevel();
|
||||||
|
resonanceLevel.heroTid = hero.getTemplateId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 鸿蒙阵对法宝加成
|
||||||
|
* @param especialEquipLevel
|
||||||
|
* @param hero
|
||||||
|
*/
|
||||||
|
public void especialAdd(HongMengAddAttribute especialEquipLevel, Hero hero) {
|
||||||
|
if (hero.getEspecialEquipLevel() < especialEquipLevel.value) {
|
||||||
|
especialEquipLevel.value = hero.getEspecialEquipLevel();
|
||||||
|
especialEquipLevel.heroTid = hero.getTemplateId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 鸿蒙阵对魂宝灵宝加成
|
||||||
|
* @param soulEquip
|
||||||
|
* @param spiritEquip
|
||||||
|
* @param equipMap
|
||||||
|
* @param hero
|
||||||
|
*/
|
||||||
|
public void soulOrSpirit(HongMengAddAttribute soulEquip, HongMengAddAttribute spiritEquip, Map<String, PropertyItem> equipMap, Hero hero) {
|
||||||
|
if (hero.getJewelInfo().isEmpty()) {
|
||||||
|
soulEquip.value = 0;
|
||||||
|
spiritEquip.value = 0;
|
||||||
|
soulEquip.heroTid = 0;
|
||||||
|
spiritEquip.heroTid = 0;
|
||||||
|
} else {
|
||||||
|
for (String jewel : hero.getJewelInfo()) {
|
||||||
|
PropertyItem propertyItem = equipMap.get(jewel);
|
||||||
|
if (propertyItem == null) {
|
||||||
|
soulEquip.value = 0;
|
||||||
|
spiritEquip.value = 0;
|
||||||
|
soulEquip.heroTid = 0;
|
||||||
|
spiritEquip.heroTid = 0;
|
||||||
|
} else {
|
||||||
|
SJewelConfig config = STableManager.getConfig(SJewelConfig.class).get(propertyItem.getEquipId());
|
||||||
|
if (config == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// getLocation 1魂宝 2灵宝
|
||||||
|
if (config.getLocation() == 1) {
|
||||||
|
soulEquip.value = propertyItem.getLevel() < soulEquip.value ? propertyItem.getLevel() : soulEquip.value;
|
||||||
|
soulEquip.heroTid = hero.getTemplateId();
|
||||||
|
} else {
|
||||||
|
spiritEquip.value = propertyItem.getLevel() < soulEquip.value ? propertyItem.getLevel() : soulEquip.value;
|
||||||
|
spiritEquip.heroTid = hero.getTemplateId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 鸿蒙阵对装备加成
|
||||||
|
* @param hongMengAddAttributeEquip
|
||||||
|
* @param hero
|
||||||
|
*/
|
||||||
|
public void hongmengEquip(HongMengAddAttribute hongMengAddAttributeEquip, Hero hero) {
|
||||||
|
if (hero.getEquipByPositionMap().size() != 4) {
|
||||||
|
hongMengAddAttributeEquip.value = -1;
|
||||||
|
hongMengAddAttributeEquip.heroTid = 0;
|
||||||
|
}
|
||||||
|
if (hongMengAddAttributeEquip.value > 0) {
|
||||||
|
for (Integer value : hero.getEquipByPositionMap().values()) {
|
||||||
|
SEquipConfig sEquipConfig = STableManager.getConfig(SEquipConfig.class).get(value);
|
||||||
|
if (sEquipConfig == null) {
|
||||||
|
hongMengAddAttributeEquip.value = -1;
|
||||||
|
hongMengAddAttributeEquip.heroTid = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (sEquipConfig.getStar() < hongMengAddAttributeEquip.value) {
|
||||||
|
hongMengAddAttributeEquip.value = sEquipConfig.getQuality();
|
||||||
|
hongMengAddAttributeEquip.heroTid = hero.getTemplateId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开启共鸣区域格子
|
* 开启共鸣区域格子
|
||||||
* @param session
|
* @param session
|
||||||
|
@ -3595,20 +3681,23 @@ public class HeroLogic{
|
||||||
User user = UserManager.getUser(session.getUid());
|
User user = UserManager.getUser(session.getUid());
|
||||||
HeroManager heroManager = user.getHeroManager();
|
HeroManager heroManager = user.getHeroManager();
|
||||||
Map<Integer, String> resonances = heroManager.getResonances();
|
Map<Integer, String> resonances = heroManager.getResonances();
|
||||||
String resonanceInfo = resonances.get(index);
|
String heroId = resonances.get(index);
|
||||||
if (resonanceInfo == null || resonanceInfo.isEmpty()) {
|
if (heroId == null || heroId.isEmpty()) {
|
||||||
LOGGER.info("unLoadResonance uid=>{} the index not open=>{}", user.getId(), index);
|
LOGGER.info("unLoadResonance uid=>{} the index not open=>{}", user.getId(), index);
|
||||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
||||||
}
|
}
|
||||||
Hero hero = heroManager.getHero(resonanceInfo);
|
Hero hero = heroManager.getHero(heroId);
|
||||||
if (hero == null) {
|
if (hero == null) {
|
||||||
LOGGER.info("unLoadResonance uid=>{} cur hero is null {}", user.getId(), resonanceInfo);
|
LOGGER.info("unLoadResonance uid=>{} cur hero is null {}", user.getId(), heroId);
|
||||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
||||||
}
|
}
|
||||||
heroManager.updateResonances(index, "");
|
heroManager.updateResonances(index, "");
|
||||||
heroManager.updateResonancesTime(index, TimeUtils.now() + SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_LATTICE_WAIT_TIME) * 1000);
|
heroManager.updateResonancesTime(index, TimeUtils.now() + SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_LATTICE_WAIT_TIME) * 1000);
|
||||||
heroManager.updateResonances(index, resonanceInfo);
|
HeroInfoProto.ResonanceResponse resonanceResponse = HeroInfoProto.ResonanceResponse
|
||||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null);
|
.newBuilder()
|
||||||
|
.setLeftTime(SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_LATTICE_WAIT_TIME))
|
||||||
|
.build();
|
||||||
|
MessageUtil.sendMessage(session, 1, messageType.getNumber(), resonanceResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue