鸿蒙碑
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));
|
||||
}
|
||||
// 刷新鸿蒙阵
|
||||
// HeroLogic.getInstance().addOrUpdateHongmeng(user);
|
||||
HeroLogic.getInstance().addOrUpdateHongmeng(user);
|
||||
// 组装鸿蒙阵信息
|
||||
List<PlayerInfoProto.HongmengHeroInfo> hongmengHeroInfos = new ArrayList<>();
|
||||
Map<Integer, String> resonances = heroManager.getResonances();
|
||||
|
@ -205,12 +205,13 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
hongmengHeroInfos.add(hongmengHeroInfo);
|
||||
}
|
||||
List<PlayerInfoProto.HongmengAddition> hongmengAdditions = new ArrayList<>();
|
||||
Map<HongMengAttributeEnum, Integer> resonanceAddition = heroManager.getResonanceAddition();
|
||||
for (Map.Entry<HongMengAttributeEnum, Integer> entry : resonanceAddition.entrySet()) {
|
||||
Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = heroManager.getResonanceAddition();
|
||||
for (Map.Entry<HongMengAttributeEnum, HongMengAddAttribute> entry : resonanceAddition.entrySet()) {
|
||||
PlayerInfoProto.HongmengAddition hongmengAddition = PlayerInfoProto.HongmengAddition
|
||||
.newBuilder()
|
||||
.setAdditionType(entry.getKey().getPropertyId())
|
||||
.setValue(entry.getValue())
|
||||
.setValue(entry.getValue().value)
|
||||
.setHeroTid(entry.getValue().heroTid)
|
||||
.build();
|
||||
hongmengAdditions.add(hongmengAddition);
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public class HeroManager extends MongoBase {
|
|||
// 共鸣英雄<格子id,冷却时间>
|
||||
private Map<Integer, Long> resonancesTime = new HashMap<>();
|
||||
// 共鸣加成
|
||||
private Map<HongMengAttributeEnum, Integer> resonanceAddition = new HashMap<>();
|
||||
private Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition = new HashMap<>();
|
||||
// 鸿蒙碑等级
|
||||
private int hongmengTablet;
|
||||
// 鸿蒙碑最大等级
|
||||
|
@ -51,7 +51,6 @@ public class HeroManager extends MongoBase {
|
|||
public void updateRandomPoolByType(int type,Map<Integer,Integer> map){
|
||||
randomPoolByType.put(type,map);
|
||||
updateString("randomPoolByType." + type, map);
|
||||
|
||||
}
|
||||
|
||||
public Map<String, Hero> getItemMap() {
|
||||
|
@ -175,11 +174,11 @@ public class HeroManager extends MongoBase {
|
|||
updateString("resonancesTime."+ index, time);
|
||||
}
|
||||
|
||||
public Map<HongMengAttributeEnum, Integer> getResonanceAddition() {
|
||||
public Map<HongMengAttributeEnum, HongMengAddAttribute> getResonanceAddition() {
|
||||
return resonanceAddition;
|
||||
}
|
||||
|
||||
public void setResonanceAddition(Map<HongMengAttributeEnum, Integer> resonanceAddition) {
|
||||
public void setResonanceAddition(Map<HongMengAttributeEnum, HongMengAddAttribute> resonanceAddition) {
|
||||
this.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());
|
||||
}
|
||||
});
|
||||
List<String> hongmengs = heroManager.getHongmengGuard();
|
||||
hongmengs.clear();
|
||||
List<String> hongmengs = new ArrayList<>();
|
||||
int defaultValue = 1000;
|
||||
// 只要任意鸿蒙守卫中有未穿戴装备的部位,就不会触发装备共鸣,共鸣区域放入神将时不再自动卸下装备 1:不卸下装备
|
||||
int isUnloadEquip = 1;
|
||||
|
||||
HongMengAddAttribute hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
// 只要任意鸿蒙守卫未穿戴魂宝/灵宝,或强化等级为0,便不会触发对应宝物的共鸣
|
||||
int soulEquip = 1000;
|
||||
int spiritEquip = 1000;
|
||||
HongMengAddAttribute soulEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
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;
|
||||
|
@ -3448,41 +3447,18 @@ public class HeroLogic{
|
|||
if (values2.contains(hero.getId())) {
|
||||
continue;
|
||||
}
|
||||
if (hero.getEquipByPositionMap().size() != 4 && isUnloadEquip == 1) {
|
||||
isUnloadEquip = 0;
|
||||
}
|
||||
if (hero.getJewelInfo().isEmpty()) {
|
||||
soulEquip = 0;
|
||||
spiritEquip = 0;
|
||||
} 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();
|
||||
}
|
||||
// 装备
|
||||
hongmengEquip(hongMengAddAttributeEquip, hero);
|
||||
// 魂宝 灵宝
|
||||
soulOrSpirit(soulEquip, spiritEquip, equipMap, hero);
|
||||
// 法宝
|
||||
especialAdd(especialEquipLevel, hero);
|
||||
// 是否开启鸿蒙碑
|
||||
if (hero.getLevel() < Integer.parseInt(openLevel[1])) {
|
||||
tablet = 0;
|
||||
}
|
||||
if (hero.getLevel() < resonanceLevel) {
|
||||
resonanceLevel = hero.getLevel();
|
||||
}
|
||||
// 等级
|
||||
hongmengLevel(resonanceLevel, hero);
|
||||
hongmengs.add(hero.getId());
|
||||
if (hongmengs.size() >= Integer.parseInt(openLevel[0])) {
|
||||
break;
|
||||
|
@ -3492,14 +3468,35 @@ public class HeroLogic{
|
|||
return;
|
||||
}
|
||||
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.put(HongMengAttributeEnum.LEVEL, resonanceLevel == 1000 ? 0 : resonanceLevel);
|
||||
resonanceAddition.put(HongMengAttributeEnum.EQUIP, isUnloadEquip);
|
||||
resonanceAddition.put(HongMengAttributeEnum.SOUL_EQUIP, soulEquip == 1000 ? 0 : soulEquip);
|
||||
resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip == 1000 ? 0 : spiritEquip);
|
||||
resonanceAddition.put(HongMengAttributeEnum.MAGIC_WEAPON, especialEquipLevel == 1000 ? 0 : especialEquipLevel);
|
||||
if (resonanceLevel.value == defaultValue) {
|
||||
resonanceLevel.value = 0;
|
||||
}
|
||||
if (hongMengAddAttributeEquip.value == defaultValue) {
|
||||
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);
|
||||
// 鸿蒙碑
|
||||
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
|
||||
|
@ -3595,20 +3681,23 @@ public class HeroLogic{
|
|||
User user = UserManager.getUser(session.getUid());
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
Map<Integer, String> resonances = heroManager.getResonances();
|
||||
String resonanceInfo = resonances.get(index);
|
||||
if (resonanceInfo == null || resonanceInfo.isEmpty()) {
|
||||
String heroId = resonances.get(index);
|
||||
if (heroId == null || heroId.isEmpty()) {
|
||||
LOGGER.info("unLoadResonance uid=>{} the index not open=>{}", user.getId(), index);
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
||||
}
|
||||
Hero hero = heroManager.getHero(resonanceInfo);
|
||||
Hero hero = heroManager.getHero(heroId);
|
||||
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);
|
||||
}
|
||||
heroManager.updateResonances(index, "");
|
||||
heroManager.updateResonancesTime(index, TimeUtils.now() + SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_LATTICE_WAIT_TIME) * 1000);
|
||||
heroManager.updateResonances(index, resonanceInfo);
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null);
|
||||
HeroInfoProto.ResonanceResponse resonanceResponse = HeroInfoProto.ResonanceResponse
|
||||
.newBuilder()
|
||||
.setLeftTime(SSpecialConfig.getIntegerValue(SSpecialConfig.HONGMENG_LATTICE_WAIT_TIME))
|
||||
.build();
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), resonanceResponse);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue