diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamEnum.java new file mode 100644 index 000000000..e707a7946 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamEnum.java @@ -0,0 +1,129 @@ +package com.ljsd.jieling.logic.dao; + +import java.util.Arrays; +import java.util.Map; +import java.util.TreeMap; + +/** + * @Author hj + * @Date 2021/9/2 11:21:54 + * @Description: + * @Version 1.0 + */ +public enum TeamEnum { + FORMATION_NORMAL(1,"主线编队",1,1), + TEAM_ARENA_DEFENSE(101,"竞技场防御编队",0,1), + TEAM_ARENA_ATTACH(201,"竞技场进攻编队(暂时不用)"), + TRIAL_TEAM(301,"森罗环境编队"), + ENDLESS_TEAM(401,"无尽编队"), + BLOODY_TEAM(701,"血战队伍"), + CHAMPION_ATTACK_TEAM(801,"巅峰赛进攻队伍(暂时不用)"), + EXPEDITION_TEAM(1001,"大闹天宫"), + CAR_DELAY_TEAM(1101,"车迟斗法",0,1), + DEATH_PATH_TEAM(1201,"十绝阵"), + CHAMPION_TEAM(1301,"巅峰赛",0,1), + WORLD_TEAM_ARENA_DEFENSE(1601,"跨服竞技场防御编队",1,1), + HARD_STAGE_TEAM(1701,"山河社稷图队伍"), + VICE_HARD_STAGE_TEAM(1801,"山河社稷图副关卡队伍"), + TASUILINGXIAO_CHALLENGE(1901,"踏碎凌霄挑战队伍"), + CROSS_YU_XU_LUN_DAO_ONE(2001,"玉虚论道第一编队",1,1), + CROSS_YU_XU_LUN_DAO_TWO(2002,"玉虚论道第二编队",1,1), + CROSS_YU_XU_LUN_DAO_THREE(2003,"玉虚论道第三编队",1,1), + FOURCHALLENGE_PEOPLE_TEAM(3001,"四灵试炼-人"), + FOURCHALLENGE_BUDDHA_TEAM(3002,"四灵试炼-佛"), + FOURCHALLENGE_MONSTER_TEAM(3003,"四灵试炼-妖"), + FOURCHALLENGE_MORALITY_TEAM(3004,"四灵试炼-道"), + ; + + /** + * 队伍id + */ + private int teamId; + /** + * 是否跨服,0:否,1:是 + */ + private int isCross; + /** + * 备注 + */ + private String remarks; + /** + * 是否是pvp,0:否,1:是 + */ + private int isPvp; + + private static Map enumMap = new TreeMap<>(); + + static { + Arrays.stream(TeamEnum.values()).forEach(v->enumMap.putIfAbsent(v.getTeamId(),v)); + } + + /** + * 是否是跨服队伍 + * @param teamId + * @return + */ + public static boolean isCrossTeam(int teamId){ + TeamEnum anEnum = enumMap.get(teamId); + if (anEnum == null){ + return false; + } + return anEnum.getIsCross() == 1; + } + + /** + * 是否是pvp队伍 + * @param teamId + * @return + */ + public static boolean isPvpTeam(int teamId){ + TeamEnum anEnum = enumMap.get(teamId); + if (anEnum == null){ + return false; + } + return anEnum.getIsPvp() == 1; + } + + TeamEnum(int teamId, String remarks) { + this.teamId = teamId; + this.remarks = remarks; + } + + TeamEnum(int teamId, String remarks, int isCross, int isPvp) { + this.teamId = teamId; + this.isCross = isCross; + this.remarks = remarks; + } + + public int getTeamId() { + return teamId; + } + + public void setTeamId(int teamId) { + this.teamId = teamId; + } + + public int getIsCross() { + return isCross; + } + + public void setIsCross(int isCross) { + this.isCross = isCross; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public int getIsPvp() { + return isPvp; + } + + public void setIsPvp(int isPvp) { + this.isPvp = isPvp; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 59162c4e7..fe030c8af 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -162,7 +162,7 @@ public class CombatLogic { } } HeroLogic.getInstance().combinedAttribute(foodAddMap,heroAllAttribute); - HeroLogic.getInstance().calInteractAdd(heroAllAttribute); + HeroLogic.getInstance().calInteractAdd(heroAllAttribute,false); heroAllAttributeMap.put(hero.getId(), heroAllAttribute); } user.getMapManager().setHeroAllAttributeMap(heroAllAttributeMap); 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 b0d00e959..31950e18e 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 @@ -2523,14 +2523,13 @@ public class HeroLogic{ } } - //移除非pvp队伍加成 - - if(teamId!=GlobalsDef.TEAM_ARENA_ATTACH&&teamId!=GlobalsDef.TEAM_ARENA_DEFENSE){ + //pvp队伍加成 + if(!isForce && !TeamEnum.isPvpTeam(teamId)){ heroAllAttribute.remove(HeroAttributeEnum.PVPDamageBocusFactor.getPropertyId()); heroAllAttribute.remove(HeroAttributeEnum.PVPDamageReduceFactor.getPropertyId()); } - calInteractAdd(heroAllAttribute); + calInteractAdd(heroAllAttribute,isForce); heroSkillList.forEach(skill->{ SPassiveSkillLogicConfig configTmp = SPassiveSkillLogicConfig.getConfig(skill); @@ -2541,15 +2540,14 @@ public class HeroLogic{ } } }); + if(!heroSkillAdMap.isEmpty()){ combinedAttribute(heroSkillAdMap,heroAllAttribute); - calInteractAdd(heroAllAttribute); + calInteractAdd(heroAllAttribute,isForce); heroSkillAdMap.clear(); } heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAllAttribute.get(GlobalsDef.HP_TYPE)); - //装备战力保存 - heroAllAttribute.put(HeroAttributeEnum.EquipForce.getPropertyId(), (long) equipForce); return heroAllAttribute; } @@ -2585,7 +2583,7 @@ public class HeroLogic{ } } heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAllAttribute.get(GlobalsDef.HP_TYPE)); - calInteractAdd(heroAllAttribute); + calInteractAdd(heroAllAttribute,isForce); return heroAllAttribute; } @@ -2607,7 +2605,7 @@ public class HeroLogic{ * 先计算一级属性 *绝对值直接加 百分比统一之后加 */ - public void calInteractAdd(Map heroAllAttribute){ + public void calInteractAdd(Map heroAllAttribute,boolean judge){ Map propertyPercentMap = new HashMap<>(); Iterator> iterator = heroAllAttribute.entrySet().iterator(); Map newAddAttribute = new HashMap<>(); @@ -2641,7 +2639,9 @@ public class HeroLogic{ }else{ propertyPercentMap.put(targetPropertyId,effectValue); } - iterator.remove(); + if (!judge){ + iterator.remove(); + } } heroAllAttribute.putAll(newAddAttribute); @@ -2676,7 +2676,7 @@ public class HeroLogic{ } Map heroAllAttributeCopy = new HashMap<>(heroAllAttribute); combinedAttribute(foodAddMap,heroAllAttributeCopy); - calInteractAdd(heroAllAttributeCopy); + calInteractAdd(heroAllAttributeCopy,false); return heroAllAttributeCopy; } @@ -2685,16 +2685,16 @@ public class HeroLogic{ Map heroAllAttribute; heroAllAttribute = calHeroNotBufferAttribute(user, hero,true,teamId); //战力保存 - int force = calForce(heroAllAttribute); - Map soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); - for (int sign:soulEquipByPositionMap.values()){ - SEquipConfig sEquipConfig = STableManager.getConfig(SEquipConfig.class).get(sign); - if(sEquipConfig==null) { - continue; - } - force+=sEquipConfig.getScore(); - } - return force + heroAllAttribute.get(HeroAttributeEnum.EquipForce.getPropertyId()); + return calForce(heroAllAttribute); +// Map soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); +// for (int sign:soulEquipByPositionMap.values()){ +// SEquipConfig sEquipConfig = STableManager.getConfig(SEquipConfig.class).get(sign); +// if(sEquipConfig==null) { +// continue; +// } +// force+=sEquipConfig.getScore(); +// } +// return force + heroAllAttribute.get(HeroAttributeEnum.EquipForce.getPropertyId()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index 2d5e48589..0c32636b1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -283,7 +283,7 @@ public abstract class AbstractRank implements IRank { .setForce(query.getPlayerManager().getMaxFore()) .setSex(query.getPlayerManager().getGender()) .setHead(query.getPlayerManager().getHead()) - .setGuildName(mapEntry.getName()) + .setGuildName(Optional.ofNullable(mapEntry).map(GuildCache::getName).orElse("")) .setHeadFrame(query.getPlayerManager().getHeadFrame()) .setUserMount(query.getPlayerManager().getUserMount()) .setUserSkin(query.getPlayerManager().getSkin())