parent
4a030074ea
commit
f4952c5d51
|
@ -41,6 +41,15 @@ public class Jewel extends PropertyItem implements Cloneable {
|
|||
this.setGodTreeLv(jewel.getGodTreeLv());
|
||||
}
|
||||
|
||||
public Jewel(com.ljsd.jieling.thrift.idl.PropertyItem propertyItem){
|
||||
this.setId(propertyItem.getId());
|
||||
this.setEquipId(propertyItem.getEquipId());
|
||||
this.setHeroId(propertyItem.heroId);
|
||||
this.setBuildLevel(propertyItem.getRebuildLevel());
|
||||
this.setLevel(propertyItem.getLevel());
|
||||
this.setGodTreeLv(propertyItem.getGodTreeLv());
|
||||
}
|
||||
|
||||
public int getGodTreeLv() {
|
||||
return godTreeLv;
|
||||
}
|
||||
|
@ -74,12 +83,13 @@ public class Jewel extends PropertyItem implements Cloneable {
|
|||
|
||||
public int getLevelByHongMeng(HeroManager heroManager,String heroId) {
|
||||
// 英雄在共鳴池中
|
||||
if (heroManager.getResonances().values().contains(heroId)) {
|
||||
if (heroManager.getResonances().containsValue(heroId)) {
|
||||
// 1:魂宝,2:灵宝
|
||||
HongMengAddAttribute hongMengAddAttribute = null;
|
||||
if (jewelType == 1){
|
||||
hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.SOUL_EQUIP);
|
||||
}else if (jewelType == 2){
|
||||
}
|
||||
if (jewelType == 2){
|
||||
hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.SPIRIT_EQUIP);
|
||||
}
|
||||
// 读配置表
|
||||
|
@ -88,9 +98,9 @@ public class Jewel extends PropertyItem implements Cloneable {
|
|||
int[] max = config.getMax();
|
||||
if (hongMengAddAttribute != null){
|
||||
// 比较当前等级和共鸣等级
|
||||
int newLevel = getLevel() >= hongMengAddAttribute.value?getLevel():hongMengAddAttribute.value;
|
||||
int newLevel = Math.max(getLevel(), hongMengAddAttribute.value);
|
||||
// 第一次结果和最大等级限制比较
|
||||
newLevel = max[0] >= newLevel?newLevel:max[0];
|
||||
newLevel = Math.min(max[0], newLevel);
|
||||
return newLevel;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,13 @@ public class PurpleMansionSeal{
|
|||
this.state = state;
|
||||
}
|
||||
|
||||
public PurpleMansionSeal(com.ljsd.jieling.thrift.idl.PurpleMansionSeal seal) {
|
||||
this.sealId = seal.getSealId();
|
||||
this.type = seal.getType();
|
||||
this.subId = seal.getSubId();
|
||||
this.state = seal.getState();
|
||||
}
|
||||
|
||||
public int getSealId() {
|
||||
return sealId;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
package com.ljsd.jieling.logic.dao.vo;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.Hero;
|
||||
import com.ljsd.jieling.logic.dao.HeroManager;
|
||||
import com.ljsd.jieling.logic.dao.Jewel;
|
||||
import com.ljsd.jieling.logic.dao.PurpleMansionSeal;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.thrift.idl.ArenaOfHero;
|
||||
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
|
||||
import com.ljsd.jieling.util.CBean2Proto;
|
||||
import config.SCHero;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 说明:
|
||||
*
|
||||
* @author ascend
|
||||
* 2022/11/17 15:26:54
|
||||
*/
|
||||
public class HeroVo {
|
||||
private String id;
|
||||
private int templateId;
|
||||
private int star;
|
||||
private int HMBreakId;
|
||||
private int starBreakId;
|
||||
private int HMEspecialEquipLevel;
|
||||
private int propertyId;
|
||||
private int godSoulLv;
|
||||
private Map<Integer, Integer> soulEquipByPositionMap = new HashMap<>();
|
||||
private Map<Integer, Integer> godSealByPositionMap = new HashMap<>();
|
||||
private Map<Integer, PurpleMansionSeal> purpleMansionSealMap = new HashMap<>();
|
||||
private Map<Integer, Integer> HMEquipPositionMap = new HashMap<>();
|
||||
private Map<Integer, Integer> faBaoGongMingSkillMap = new HashMap<>();
|
||||
private Map<Integer, Long> userMountValidTime = new HashMap<>();
|
||||
|
||||
private Map<String, Jewel> jewelMap = new HashMap<>();
|
||||
|
||||
public HeroVo(User user, Hero hero) {
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
this.id = hero.getId();
|
||||
this.templateId = hero.getTemplateId();
|
||||
this.star = hero.getTemplateId();
|
||||
this.HMBreakId = hero.getBreakIdByHongMeng(heroManager);
|
||||
this.starBreakId = hero.getStarBreakId();
|
||||
this.HMEspecialEquipLevel = hero.getEspecialEquipLevelByHongmeng(heroManager,hero.getId());
|
||||
this.propertyId = hero.getPropertyId();
|
||||
this.godSoulLv = hero.getGodSoulLv();
|
||||
this.soulEquipByPositionMap = new HashMap<>(hero.getSoulEquipByPositionMap());
|
||||
this.godSealByPositionMap = new HashMap<>(hero.getGodSealByPositionMap());
|
||||
this.purpleMansionSealMap = new HashMap<>(heroManager.getPurpleMansionSeal());
|
||||
this.HMEquipPositionMap = new HashMap<>(hero.getEquipByHongmengPositionMap(heroManager));
|
||||
this.faBaoGongMingSkillMap = new HashMap<>(heroManager.getFaBaoGongMingSkillMap());
|
||||
this.userMountValidTime = new HashMap<>(user.getPlayerInfoManager().getUserMountValidTime());
|
||||
this.jewelMap = new HashMap<>(CBean2Proto.jewelOfLocal(user,hero));
|
||||
}
|
||||
|
||||
public HeroVo(CrossArenaManager arena, ArenaOfHero hero) {
|
||||
this.id = hero.getId();
|
||||
this.templateId = hero.getTemplateId();
|
||||
this.star = hero.getTemplateId();
|
||||
this.HMBreakId = hero.getBreakId();
|
||||
this.starBreakId = hero.getStarBreakId();
|
||||
this.HMEspecialEquipLevel = hero.getEspecialEquipLevel();
|
||||
this.propertyId = hero.getPropertyId();
|
||||
this.godSoulLv = hero.getGodSoulLv();
|
||||
this.soulEquipByPositionMap = new HashMap<>(hero.getSoulEquipByPositionMap());
|
||||
this.godSealByPositionMap = new HashMap<>(hero.getGodSealByPositionMap());
|
||||
this.purpleMansionSealMap = CBean2Proto.sealOfCross(arena.getSeals());
|
||||
this.HMEquipPositionMap = new HashMap<>(hero.getEquipByPositionMap());
|
||||
this.faBaoGongMingSkillMap = new HashMap<>(arena.getFaBaoGongMingSkillMap());
|
||||
this.userMountValidTime = new HashMap<>();
|
||||
this.jewelMap = new HashMap<>(CBean2Proto.jewelOfCross(arena,hero));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public int getGodSoulLv() {
|
||||
return godSoulLv;
|
||||
}
|
||||
|
||||
public int getPropertyId() {
|
||||
if (propertyId == 0) {
|
||||
SCHero scHero = SCHero.getsCHero().get(templateId);
|
||||
return scHero.getPropertyName();
|
||||
}
|
||||
return propertyId;
|
||||
}
|
||||
|
||||
public Map<String, Jewel> getJewelMap() {
|
||||
return jewelMap;
|
||||
}
|
||||
|
||||
public Map<Integer, Long> getUserMountValidTime() {
|
||||
return userMountValidTime;
|
||||
}
|
||||
|
||||
public int getTemplateId() {
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public int getStar() {
|
||||
return star;
|
||||
}
|
||||
|
||||
public int getHMBreakId() {
|
||||
return HMBreakId;
|
||||
}
|
||||
|
||||
public int getStarBreakId() {
|
||||
return starBreakId;
|
||||
}
|
||||
|
||||
public int getHMEspecialEquipLevel() {
|
||||
return HMEspecialEquipLevel;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getSoulEquipByPositionMap() {
|
||||
return soulEquipByPositionMap;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getGodSealByPositionMap() {
|
||||
return godSealByPositionMap;
|
||||
}
|
||||
|
||||
public Map<Integer, PurpleMansionSeal> getPurpleMansionSealMap() {
|
||||
return purpleMansionSealMap;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getHMEquipPositionMap() {
|
||||
return HMEquipPositionMap;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getFaBaoGongMingSkillMap() {
|
||||
return faBaoGongMingSkillMap;
|
||||
}
|
||||
}
|
|
@ -798,13 +798,6 @@ public class CombatLogic {
|
|||
}
|
||||
});
|
||||
}
|
||||
// if(teamId == GlobalsDef.EXPEDITION_TEAM){
|
||||
// user.getPlayerInfoManager().getRechargeInfo().getBuyGoodsTimes().keySet().forEach(id->{
|
||||
// for(int passId : SRechargeCommodityConfig.rechargeCommodityConfigMap.get(id).getPassiveSkill()) {
|
||||
// passiveTeamskillEffect.add(passId);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
user.getTeamPosManager().updatePassSkillTeamPos(teamId,passiveTeamskillEffect);
|
||||
passiveskillEffect.addAll(passiveTeamskillEffect);
|
||||
}else{
|
||||
|
|
|
@ -30,6 +30,7 @@ import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
|
|||
import com.ljsd.jieling.logic.dao.*;
|
||||
import com.ljsd.jieling.logic.dao.cross.CSPlayer;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.logic.dao.vo.HeroVo;
|
||||
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
|
||||
import com.ljsd.jieling.logic.fight.CombatLogic;
|
||||
import com.ljsd.jieling.logic.fight.passiveSkillCal.PassiveskillCalEnum;
|
||||
|
@ -2005,7 +2006,6 @@ public class HeroLogic {
|
|||
return getParaRate(scHero, hero.getStar(), hero.getLevel(user.getHeroManager()), hero.getBreakIdByHongMeng(user.getHeroManager()));
|
||||
}
|
||||
|
||||
//todo
|
||||
private Map<Integer, Object> getParaForRobotHero(SCHero scHero, int level, int breakId) {
|
||||
return getParaRate(scHero, scHero.getStar(), level, breakId);
|
||||
}
|
||||
|
@ -2030,31 +2030,34 @@ public class HeroLogic {
|
|||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取英雄所有技能,新技能添加到此方法, 跨服获取英雄技能也需要添加新技能
|
||||
* @param user
|
||||
* @param hero
|
||||
* 获取英雄所有技能,原点方法
|
||||
* 新技能添加到此方法, 跨服获取英雄技能也需要添加新技能
|
||||
* @param heroVo
|
||||
* @return
|
||||
*/
|
||||
public List<Integer> getHeroSkillList(User user, Hero hero) {
|
||||
public List<Integer> originGetHeroSkillList(HeroVo heroVo) {
|
||||
List<Integer> skillList = new ArrayList<>();
|
||||
SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId());
|
||||
List<Integer> skillListByStar = tempHero.getSkillListByStar(hero.getStar());
|
||||
|
||||
int templateId = heroVo.getTemplateId();
|
||||
int star = heroVo.getStar();
|
||||
|
||||
SCHero tempHero = SCHero.getsCHero().get(templateId);
|
||||
List<Integer> skillListByStar = tempHero.getSkillListByStar(star);
|
||||
if (skillListByStar != null) {
|
||||
skillList.addAll(skillListByStar);
|
||||
}
|
||||
// 大于10星,觉醒技
|
||||
if (hero.getStar() > HERO_MAX_STAR) {
|
||||
skillList.addAll(tempHero.getAwakSkills(1, hero.getBreakIdByHongMeng(user.getHeroManager())));
|
||||
skillList.addAll(tempHero.getAwakSkills(2, hero.getStarBreakId()));
|
||||
if (star > HERO_MAX_STAR) {
|
||||
skillList.addAll(tempHero.getAwakSkills(1, heroVo.getHMBreakId()));
|
||||
skillList.addAll(tempHero.getAwakSkills(2, heroVo.getStarBreakId()));
|
||||
} else {
|
||||
skillList.addAll(tempHero.getPassiveSkills(1, hero.getBreakIdByHongMeng(user.getHeroManager())));
|
||||
skillList.addAll(tempHero.getPassiveSkills(2, hero.getStarBreakId()));
|
||||
skillList.addAll(tempHero.getPassiveSkills(1, heroVo.getHMBreakId()));
|
||||
skillList.addAll(tempHero.getPassiveSkills(2, heroVo.getStarBreakId()));
|
||||
}
|
||||
|
||||
// 角色初始被动
|
||||
|
@ -2068,21 +2071,63 @@ public class HeroLogic {
|
|||
Map<Integer, SEquipConfig> config = STableManager.getConfig(SEquipConfig.class);
|
||||
|
||||
//魂印
|
||||
Map<Integer, Integer> soulEquipByPositionMap = hero.getSoulEquipByPositionMap();
|
||||
Map<Integer, Integer> soulEquipByPositionMap = heroVo.getSoulEquipByPositionMap();
|
||||
soulEquipByPositionMap.values().forEach(e -> {
|
||||
Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add);
|
||||
});
|
||||
|
||||
//神印
|
||||
Map<Integer, Integer> godSealByPositionMap = hero.getGodSealByPositionMap();
|
||||
Map<Integer, Integer> godSealByPositionMap = heroVo.getGodSealByPositionMap();
|
||||
godSealByPositionMap.values().forEach(e -> {
|
||||
Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add);
|
||||
});
|
||||
|
||||
// 神印套装
|
||||
Iterator<Map.Entry<Integer, Integer>> godSealIterator = godSealByPositionMap.entrySet().iterator();
|
||||
ArrayList<SEquipConfig> godSealSuiteNumList = new ArrayList<>();
|
||||
while (godSealIterator.hasNext()) {
|
||||
Map.Entry<Integer, Integer> next = godSealIterator.next();
|
||||
SEquipConfig sEquipConfig = config.get(next.getValue());
|
||||
// 添加到套装list
|
||||
godSealSuiteNumList.add(sEquipConfig);
|
||||
}
|
||||
Collections.sort(godSealSuiteNumList);
|
||||
// 记录当前长度(位置)
|
||||
int godSealNum = godSealSuiteNumList.size();
|
||||
if (!godSealSuiteNumList.isEmpty()) {
|
||||
// 遍历套装list
|
||||
for (SEquipConfig item : godSealSuiteNumList) {
|
||||
//根据星级读取配置表,为空表示不是套装
|
||||
SEquipSuiteConfig sEquipSuiteConfig = SEquipSuiteConfig.config.get(item.getStar());
|
||||
if (null != sEquipSuiteConfig) {
|
||||
// 根据套装数量读表,为空标是套装数量不足
|
||||
Integer integer = sEquipSuiteConfig.getSuiteSkills().get(godSealNum);
|
||||
if (integer == null) {
|
||||
godSealNum -= 1;
|
||||
continue;
|
||||
}
|
||||
skillList.add(integer);
|
||||
}
|
||||
// 不管是否是套装,都要-1
|
||||
godSealNum -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 魂灵宝
|
||||
Map<Integer, SJewelConfig> map = STableManager.getConfig(SJewelConfig.class);
|
||||
for (Jewel jewel : heroVo.getJewelMap().values()) {
|
||||
SJewelConfig jewelConfig = map.get(jewel.getEquipId());
|
||||
if (jewelConfig == null){
|
||||
continue;
|
||||
}
|
||||
SJewelRankupConfig rankUp = SJewelRankupConfig.rankupMap.get(jewelConfig.getRankupPool()).get(2).get(jewel.getBuildLevel());
|
||||
skillList.add(rankUp.getPassiveSkillId());
|
||||
}
|
||||
|
||||
//法宝技能
|
||||
int[] equipTalismana = tempHero.getEquipTalismana();
|
||||
if (equipTalismana.length >= 2 && hero.getStar() >= equipTalismana[0]) {
|
||||
int especialEquipLevel = hero.getEspecialEquipLevelByHongmeng(user.getHeroManager(), hero.getId());
|
||||
if (equipTalismana.length >= 2 && star >= equipTalismana[0]) {
|
||||
int especialEquipLevel = heroVo.getHMEspecialEquipLevel();
|
||||
int especialEquipId = equipTalismana[1];
|
||||
Map<Integer, SEquipTalismana> sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId);
|
||||
sEquipTalismana.forEach((k, v) -> {
|
||||
|
@ -2092,26 +2137,26 @@ public class HeroLogic {
|
|||
});
|
||||
}
|
||||
|
||||
int propertyId = heroVo.getPropertyId();
|
||||
|
||||
// 紫府神印技能
|
||||
Collection<PurpleMansionSeal> seals = user.getHeroManager().getPurpleMansionSeal().values();
|
||||
seals.forEach(v -> {
|
||||
for (PurpleMansionSeal seal : heroVo.getPurpleMansionSealMap().values()) {
|
||||
// 使用中神印
|
||||
if (v.getState() == 1) {
|
||||
// 附身神印
|
||||
if (v.getType() == 1) {
|
||||
if (v.getSubId().equals(hero.getId())) {
|
||||
getPurpleMansionSealSkill(v.getSealId(), hero.getPropertyId(), skillList);
|
||||
}
|
||||
if (seal.getState() != 1){
|
||||
continue;
|
||||
}
|
||||
// 通用神印
|
||||
else {
|
||||
getPurpleMansionSealSkill(v.getSealId(), hero.getPropertyId(), skillList);
|
||||
if (seal.getType() == 0){
|
||||
getPurpleMansionSealSkill(seal.getSealId(), propertyId, skillList);
|
||||
}
|
||||
// 附身神印
|
||||
if (seal.getType() == 1 && seal.getSubId().equals(heroVo.getId())) {
|
||||
getPurpleMansionSealSkill(seal.getSealId(), propertyId, skillList);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Iterator<Map.Entry<Integer, Integer>> iterator = hero.getEquipByHongmengPositionMap(user.getHeroManager()).entrySet().iterator();
|
||||
// 套装list初始化
|
||||
// 装备套装list初始化
|
||||
Iterator<Map.Entry<Integer, Integer>> iterator = heroVo.getHMEquipPositionMap().entrySet().iterator();
|
||||
ArrayList<SEquipConfig> suiteNumList = new ArrayList<>();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<Integer, Integer> next = iterator.next();
|
||||
|
@ -2140,8 +2185,9 @@ public class HeroLogic {
|
|||
num -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 坐骑技能
|
||||
for (Map.Entry<Integer, Long> entry : user.getPlayerInfoManager().getUserMountValidTime().entrySet()) {
|
||||
for (Map.Entry<Integer, Long> entry : heroVo.getUserMountValidTime().entrySet()) {
|
||||
if (!SPlayerHeadIcon.getHeadIconMap().containsKey(entry.getKey())) {
|
||||
continue;
|
||||
}
|
||||
|
@ -2153,27 +2199,30 @@ public class HeroLogic {
|
|||
}
|
||||
|
||||
//神魂技能
|
||||
if (hero.getGodSoulLv() > 0) {
|
||||
List<Integer> godSoulSkills = GetGodSoulSkill(hero.getTemplateId(), hero.getGodSoulLv());
|
||||
int godSoulLv = heroVo.getGodSoulLv();
|
||||
if (godSoulLv > 0) {
|
||||
List<Integer> godSoulSkills = GetGodSoulSkill(templateId, godSoulLv);
|
||||
skillList.addAll(godSoulSkills);
|
||||
}
|
||||
|
||||
///法宝之魂共鸣技能
|
||||
if (user.getHeroManager().getFaBaoGongMingSkillMap().size()>0) {
|
||||
Map<Integer, Integer> faBaoGongMingSkillMap = heroVo.getFaBaoGongMingSkillMap();
|
||||
if (faBaoGongMingSkillMap.size() > 0) {
|
||||
List<Integer> faBaoSoulSkills=new ArrayList<>();
|
||||
for (Map.Entry<Integer, Integer> entry : user.getHeroManager().getFaBaoGongMingSkillMap().entrySet()) {
|
||||
for (Map.Entry<Integer, Integer> entry : faBaoGongMingSkillMap.entrySet()) {
|
||||
SXiuXianSkill sXiuXianSkill= STableManager.getConfig(SXiuXianSkill.class).get(entry.getValue());
|
||||
if (sXiuXianSkill.getFitList()[0]==0){
|
||||
for (int skillId : sXiuXianSkill.getSkillId()) {
|
||||
faBaoSoulSkills.add(skillId);
|
||||
}
|
||||
}else if(sXiuXianSkill.getFitList()[0]==1){
|
||||
if (sXiuXianSkill.getFitList()[1]==hero.getPropertyId()){
|
||||
if (sXiuXianSkill.getFitList()[1]==propertyId){
|
||||
for (int skillId : sXiuXianSkill.getSkillId()) {
|
||||
faBaoSoulSkills.add(skillId);
|
||||
}
|
||||
}
|
||||
}else if(sXiuXianSkill.getFitList()[0]==2){
|
||||
if (sXiuXianSkill.getFitList()[1]==hero.getPropertyId()){
|
||||
if (sXiuXianSkill.getFitList()[1]==propertyId){
|
||||
for (int skillId : sXiuXianSkill.getSkillId()) {
|
||||
faBaoSoulSkills.add(skillId);
|
||||
}
|
||||
|
@ -2188,6 +2237,17 @@ public class HeroLogic {
|
|||
return skillList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 本服玩家使用
|
||||
* @param user
|
||||
* @param hero
|
||||
* @return
|
||||
*/
|
||||
public List<Integer> getHeroSkillList(User user, Hero hero) {
|
||||
HeroVo heroVo = new HeroVo(user, hero);
|
||||
return originGetHeroSkillList(heroVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 跨服获取英雄技能
|
||||
* @param crossArenaManager
|
||||
|
@ -2196,141 +2256,8 @@ public class HeroLogic {
|
|||
*/
|
||||
public StringBuilder getCrossHeroSkillStr(CrossArenaManager crossArenaManager, com.ljsd.jieling.thrift.idl.ArenaOfHero hero) {
|
||||
|
||||
List<Integer> skillList = new ArrayList<>();
|
||||
SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId());
|
||||
List<Integer> skillListByStar = tempHero.getSkillListByStar(hero.getStar());
|
||||
if (skillListByStar != null) {
|
||||
skillList.addAll(skillListByStar);
|
||||
}
|
||||
// 大于10星,觉醒技
|
||||
if (hero.getStar() > HERO_MAX_STAR) {
|
||||
skillList.addAll(tempHero.getAwakSkills(1, hero.getBreakId()));
|
||||
skillList.addAll(tempHero.getAwakSkills(2, hero.getStarBreakId()));
|
||||
} else {
|
||||
skillList.addAll(tempHero.getPassiveSkills(1, hero.getBreakId()));
|
||||
skillList.addAll(tempHero.getPassiveSkills(2, hero.getStarBreakId()));
|
||||
}
|
||||
|
||||
Map<Integer, SEquipConfig> config = STableManager.getConfig(SEquipConfig.class);
|
||||
//魂印
|
||||
Map<Integer, Integer> soulEquipByPositionMap = hero.getSoulEquipByPositionMap();
|
||||
soulEquipByPositionMap.values().forEach(e -> {
|
||||
Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add);
|
||||
});
|
||||
|
||||
//神印
|
||||
Map<Integer, Integer> godSealByPositionMap = hero.getGodSealByPositionMap();
|
||||
godSealByPositionMap.values().forEach(e -> {
|
||||
Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add);
|
||||
});
|
||||
|
||||
//法宝技能
|
||||
int[] equipTalismana = tempHero.getEquipTalismana();
|
||||
if (equipTalismana.length >= 1 && hero.getStar() >= equipTalismana[0]) {
|
||||
int especialEquipLevel = hero.getEspecialEquipLevel();
|
||||
int especialEquipId = equipTalismana[1];
|
||||
Map<Integer, SEquipTalismana> sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId);
|
||||
sEquipTalismana.forEach((k, v) -> {
|
||||
if (k <= especialEquipLevel && v.getOpenSkillRules() != null) {
|
||||
Arrays.stream(v.getOpenSkillRules()).forEach(i -> skillList.add(i));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 紫府神印技能
|
||||
//Collection<PurpleMansionSeal> seals = user.getHeroManager().getPurpleMansionSeal().values();
|
||||
Collection<com.ljsd.jieling.thrift.idl.PurpleMansionSeal> seals = crossArenaManager.getSeals().values();
|
||||
seals.forEach(v -> {
|
||||
// 使用中神印
|
||||
if (v.getState() == 1) {
|
||||
// 附身神印
|
||||
if (v.getType() == 1) {
|
||||
if (v.getSubId().equals(hero.getId())) {
|
||||
getPurpleMansionSealSkill(v.getSealId(), hero.getPropertyId(), skillList);
|
||||
}
|
||||
}
|
||||
// 通用神印
|
||||
else {
|
||||
getPurpleMansionSealSkill(v.getSealId(), hero.getPropertyId(), skillList);
|
||||
}
|
||||
}
|
||||
});
|
||||
// 坐骑技能
|
||||
for (int skill : crossArenaManager.getSkill()) {
|
||||
if (!SPlayerHeadIcon.getHeadIconMap().containsKey(skill)) {
|
||||
continue;
|
||||
}
|
||||
SPlayerHeadIcon sPlayerHeadIcon = SPlayerHeadIcon.getHeadIconMap().get(skill);
|
||||
if (sPlayerHeadIcon.getSkill() == null || sPlayerHeadIcon.getSkill().length <= 0) {
|
||||
continue;
|
||||
}
|
||||
skillList.add(sPlayerHeadIcon.getSkill()[0][0]);
|
||||
//sb.append(sPlayerHeadIcon.getSkill()[0][0]).append(DIVISION);
|
||||
}
|
||||
|
||||
Iterator<Map.Entry<Integer, Integer>> iterator = hero.getEquipByPositionMap().entrySet().iterator();
|
||||
// 套装list初始化
|
||||
ArrayList<SEquipConfig> suiteNumList = new ArrayList<>();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<Integer, Integer> next = iterator.next();
|
||||
SEquipConfig sEquipConfig = STableManager.getConfig(SEquipConfig.class).get(next.getValue());
|
||||
// 添加到套装list
|
||||
suiteNumList.add(sEquipConfig);
|
||||
}
|
||||
Collections.sort(suiteNumList);
|
||||
// 记录当前长度(位置)
|
||||
int num = suiteNumList.size();
|
||||
if (!suiteNumList.isEmpty()) {
|
||||
// 遍历套装list
|
||||
for (SEquipConfig item : suiteNumList) {
|
||||
//根据星级读取配置表,为空表示不是套装
|
||||
SEquipSuiteConfig sEquipSuiteConfig = SEquipSuiteConfig.config.get(item.getStar());
|
||||
if (null != sEquipSuiteConfig) {
|
||||
// 根据套装数量读表,为空标是套装数量不足
|
||||
Integer integer = sEquipSuiteConfig.getSuiteSkills().get(num);
|
||||
if (integer == null) {
|
||||
num -= 1;
|
||||
continue;
|
||||
}
|
||||
skillList.add(integer);
|
||||
//sb.append(integer).append(DIVISION);
|
||||
}
|
||||
// 不管是否是套装,都要-1
|
||||
num -= 1;
|
||||
}
|
||||
}
|
||||
//神魂技能
|
||||
if (hero.getGodSoulLv() > 0) {
|
||||
List<Integer> godSoulSkills = GetGodSoulSkill(hero.getTemplateId(), hero.getGodSoulLv());
|
||||
skillList.addAll(godSoulSkills);
|
||||
}
|
||||
///法宝之魂共鸣技能
|
||||
if (crossArenaManager.getFaBaoGongMingSkillMap().size()>0) {
|
||||
List<Integer> faBaoSoulSkills=new ArrayList<>();
|
||||
for (Map.Entry<Integer, Integer> entry : crossArenaManager.getFaBaoGongMingSkillMap().entrySet()) {
|
||||
SXiuXianSkill sXiuXianSkill= STableManager.getConfig(SXiuXianSkill.class).get(entry.getValue());
|
||||
if (sXiuXianSkill.getFitList()[0]==0){
|
||||
for (int skillId : sXiuXianSkill.getSkillId()) {
|
||||
faBaoSoulSkills.add(skillId);
|
||||
}
|
||||
}else if(sXiuXianSkill.getFitList()[0]==1){
|
||||
if (sXiuXianSkill.getFitList()[1]==hero.getPropertyId()){
|
||||
for (int skillId : sXiuXianSkill.getSkillId()) {
|
||||
faBaoSoulSkills.add(skillId);
|
||||
}
|
||||
}
|
||||
}else if(sXiuXianSkill.getFitList()[0]==2){
|
||||
if (sXiuXianSkill.getFitList()[1]==hero.getPropertyId()){
|
||||
for (int skillId : sXiuXianSkill.getSkillId()) {
|
||||
faBaoSoulSkills.add(skillId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (faBaoSoulSkills.size()>0) {
|
||||
skillList.addAll(faBaoSoulSkills);
|
||||
}
|
||||
}
|
||||
HeroVo heroVo = new HeroVo(crossArenaManager, hero);
|
||||
List<Integer> skillList = originGetHeroSkillList(heroVo);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
coverSkill(skillList);
|
||||
|
@ -2345,7 +2272,6 @@ public class HeroLogic {
|
|||
sb.append(skill).append(DIVISION);
|
||||
}
|
||||
}
|
||||
|
||||
return sb;
|
||||
}
|
||||
|
||||
|
@ -2371,13 +2297,7 @@ public class HeroLogic {
|
|||
skillList.add(skillId);
|
||||
break;
|
||||
case 1:
|
||||
// 阵营限制
|
||||
if (propertyId == fitList[1]) {
|
||||
skillList.add(skillId);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
// 职业限制
|
||||
case 2:// 阵营限制,职业限制
|
||||
if (propertyId == fitList[1]) {
|
||||
skillList.add(skillId);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,8 @@ import com.ljsd.jieling.logic.help.HelpTypeEnum;
|
|||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.logic.home.HomeLogic;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo;
|
||||
import com.ljsd.jieling.thrift.idl.ArenaOfHero;
|
||||
import com.ljsd.jieling.thrift.idl.CrossArenaManager;
|
||||
import config.*;
|
||||
import manager.STableManager;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -1342,4 +1344,45 @@ public class CBean2Proto {
|
|||
builder.setEspecialEquipLevel(hero.getEspecialEquipLevel());
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 跨服,转换神印对象
|
||||
* @param crossSeals
|
||||
* @return
|
||||
*/
|
||||
public static Map<Integer, PurpleMansionSeal> sealOfCross(Map<Integer, com.ljsd.jieling.thrift.idl.PurpleMansionSeal> crossSeals){
|
||||
HashMap<Integer, PurpleMansionSeal> result = new HashMap<>();
|
||||
for (Map.Entry<Integer, com.ljsd.jieling.thrift.idl.PurpleMansionSeal> entry : crossSeals.entrySet()) {
|
||||
PurpleMansionSeal seal = new PurpleMansionSeal(entry.getValue());
|
||||
result.put(entry.getKey(),seal);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 跨服,转换魂宝对象
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, Jewel> jewelOfCross(CrossArenaManager arena, ArenaOfHero hero){
|
||||
HashMap<String, Jewel> result = new HashMap<>();
|
||||
for (String id : hero.getJewelInfo()) {
|
||||
Jewel jewel = new Jewel(arena.getJewels().get(id));
|
||||
result.put(id,jewel);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 本服,转换魂宝对象
|
||||
* @return
|
||||
*/
|
||||
public static Map<String, Jewel> jewelOfLocal(User user, Hero hero){
|
||||
HashMap<String, Jewel> result = new HashMap<>();
|
||||
Map<String, PropertyItem> itemMap = user.getEquipManager().getEquipMap();
|
||||
for (String id : hero.getJewelInfo()) {
|
||||
Jewel jewel = (Jewel) itemMap.get(id);
|
||||
result.put(id,jewel);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ public class SEquipConfig implements BaseConfig,Comparable<SEquipConfig> {
|
|||
|
||||
private int suiteID;
|
||||
|
||||
private int suiteID1;
|
||||
|
||||
private int professionLimit;
|
||||
|
||||
private int position;
|
||||
|
@ -187,6 +189,10 @@ public class SEquipConfig implements BaseConfig,Comparable<SEquipConfig> {
|
|||
return suiteID;
|
||||
}
|
||||
|
||||
public int getSuiteID1() {
|
||||
return suiteID1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(SEquipConfig o) {
|
||||
return this.getStar() - o.getStar();
|
||||
|
|
|
@ -23,6 +23,8 @@ public class SJewelRankupConfig implements BaseConfig {
|
|||
|
||||
private int[][] upExpend;
|
||||
|
||||
private int passiveSkillId;
|
||||
|
||||
/**
|
||||
* 第一层《poolId,map》
|
||||
* 第二层《type,map》
|
||||
|
@ -69,5 +71,7 @@ public class SJewelRankupConfig implements BaseConfig {
|
|||
return upExpend;
|
||||
}
|
||||
|
||||
|
||||
public int getPassiveSkillId() {
|
||||
return passiveSkillId;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue