From 89122562b5ae7e914c79f684076397af19ac8c35 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 27 Oct 2020 17:23:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=AA=E7=89=A9=E7=BB=84=E5=86=85=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=81=B5=E5=85=BD=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/map/behavior/BehaviorUtil.java | 29 ++++++++++--------- .../logic/expedition/ExpeditionLogic.java | 8 +++-- .../ljsd/jieling/logic/fight/CombatLogic.java | 6 ++-- .../ljsd/jieling/logic/fight/FightUtil.java | 6 ++-- .../ljsd/jieling/logic/hero/HeroLogic.java | 13 +++++---- .../com/ljsd/jieling/util/FightDataUtil.java | 2 +- .../com/ljsd/jieling/util/MonsterUtil.java | 26 ++++++++++++++--- .../src/main/java/config/SMonsterGroup.java | 9 ++++-- 8 files changed, 65 insertions(+), 34 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java index a40b7f103..61235c050 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java @@ -173,10 +173,10 @@ public class BehaviorUtil { fightData.setHeroFightInfos(fightTeamInfo); //monster Map> monsterByGroup = MonsterUtil.getMonsterByGroup(groupId); - - List monsterGroupList = getFightTeamInfos(groupId,monsterByGroup, Global.MONSTER_1); - List monsterGroupList1 = getFightTeamInfos(groupId,monsterByGroup, Global.MONSTER_2); - List monsterGroupList2 = getFightTeamInfos(groupId,monsterByGroup, Global.MONSTER_3); + List monsterPokemonByGroup = MonsterUtil.getMonsterPokemonByGroup(groupId); + List monsterGroupList = getFightTeamInfos(monsterByGroup,monsterPokemonByGroup, Global.MONSTER_1); + List monsterGroupList1 = getFightTeamInfos(monsterByGroup,monsterPokemonByGroup, Global.MONSTER_2); + List monsterGroupList2 = getFightTeamInfos(monsterByGroup,monsterPokemonByGroup, Global.MONSTER_3); for(Map.Entry> entry :mapManager.getMonsterTempSkill().entrySet()){ if(groupId!=entry.getKey()){ continue; @@ -344,9 +344,10 @@ public class BehaviorUtil { fightData.setHeroFightInfos(fightTeamInfo); //monster Map> monsterByGroup = MonsterUtil.getMonsterByGroup(groupId); - List monsterGroupList = getFightTeamInfos(groupId,monsterByGroup,0); - List monsterGroupList1 = getFightTeamInfos(groupId,monsterByGroup,1); - List monsterGroupList2 = getFightTeamInfos(groupId,monsterByGroup,2); + List monsterPokemonByGroup = MonsterUtil.getMonsterPokemonByGroup(groupId); + List monsterGroupList = getFightTeamInfos(monsterByGroup,monsterPokemonByGroup,0); + List monsterGroupList1 = getFightTeamInfos(monsterByGroup,monsterPokemonByGroup,1); + List monsterGroupList2 = getFightTeamInfos(monsterByGroup,monsterPokemonByGroup,2); fightData.addAllMonsterList(monsterGroupList).addAllMonsterList(monsterGroupList1).addAllMonsterList(monsterGroupList2); //设置战斗随机种子 @@ -377,15 +378,15 @@ public class BehaviorUtil { * @param groupId * @return */ - public static List getFightTeamInfos(int groupId,Map> monsterByGroup,int mosterNum) { - String monsterTeamSkill = MonsterUtil.getMonsterTeamSkillByGroup(groupId); + public static List getFightTeamInfos(Map> monsterByGroup,List monsterPokemonByGroup,int mosterNum) { List monsterGroupList = new ArrayList<>(); if (monsterByGroup.size() > mosterNum){ - CommonProto.FightTeamInfo monsterTeamInfo = CommonProto.FightTeamInfo.newBuilder() - .addAllFightUnitList(monsterByGroup.get(mosterNum)) -// .setTeamSkillList(monsterTeamSkill) - .build(); - monsterGroupList.add(monsterTeamInfo); + CommonProto.FightTeamInfo.Builder monsterTeamInfo = CommonProto.FightTeamInfo.newBuilder(); + monsterTeamInfo.addAllFightUnitList(monsterByGroup.get(mosterNum)); + if(monsterPokemonByGroup!=null){ + monsterTeamInfo .addAllPokemonUnitList(monsterPokemonByGroup); + } + monsterGroupList.add(monsterTeamInfo.build()); } return monsterGroupList; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index 79d641a41..7178e17e7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -966,11 +966,13 @@ public class ExpeditionLogic { - public static List getGropFightTeamInfoWithDouble(int gropid, Map attackBloodMap) { + public static List getGropFightTeamInfoWithDouble(int groupId, Map attackBloodMap) { Map> hps = new HashMap<>(); hps.put(0,new LinkedList<>(attackBloodMap.values())); - Map> monsterByGroupWithDouble = MonsterUtil.getMonsterByGroupWithDouble(gropid, hps); - List fightTeamInfos = BehaviorUtil.getFightTeamInfos(gropid, monsterByGroupWithDouble, Global.MONSTER_1); + Map> monsterByGroupWithDouble = MonsterUtil.getMonsterByGroupWithDouble(groupId, hps); + List monsterPokemonByGroup = MonsterUtil.getMonsterPokemonByGroup(groupId); + + List fightTeamInfos = BehaviorUtil.getFightTeamInfos(monsterByGroupWithDouble,monsterPokemonByGroup, Global.MONSTER_1); return fightTeamInfos; } 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 76d9ba575..82adc5190 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 @@ -536,7 +536,9 @@ public class CombatLogic { hps.put(0,adventureBoss.getRemainHps()); CommonProto.FightTeamInfo fightTeamInfo = BehaviorUtil.getFightTeamInfo(user, teamId,true); Map> monsterByGroup = MonsterUtil.getMonsterByGroup(bossGroupId,hps); - List monsterGroupList = BehaviorUtil.getFightTeamInfos(bossGroupId,monsterByGroup, Global.MONSTER_1); + List monsterPokemonByGroup = MonsterUtil.getMonsterPokemonByGroup(bossGroupId); + + List monsterGroupList = BehaviorUtil.getFightTeamInfos(monsterByGroup,monsterPokemonByGroup, Global.MONSTER_1); //设置战斗随机种子 int seed = (int)(System.currentTimeMillis()/1000); LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, monsterGroupList); @@ -582,7 +584,7 @@ public class CombatLogic { } hps.put(0,adventureBoss.getRemainHps()); monsterByGroup = MonsterUtil.getMonsterByGroup(bossGroupId,hps); - monsterGroupList = BehaviorUtil.getFightTeamInfos(bossGroupId,monsterByGroup, Global.MONSTER_1); +// monsterGroupList = BehaviorUtil.getFightTeamInfos(bossGroupId,monsterByGroup, Global.MONSTER_1); //设置战斗随机种子 seed = (int)(System.currentTimeMillis()/1000); getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, monsterGroupList); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java index ed643dcd1..805df3a08 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java @@ -82,9 +82,10 @@ public class FightUtil { //防守方是怪物 public static List makeMonsterFightData(int bossGroupId,int nums,Map> monsterHp){ Map> monsterByGroup = makeMonsterGroup(bossGroupId,monsterHp); + List monsterPokemonByGroup = MonsterUtil.getMonsterPokemonByGroup(bossGroupId); List monsterTeamList = new ArrayList<>(nums); for(int i=0;i monsterGroupList = BehaviorUtil.getFightTeamInfos(bossGroupId, monsterByGroup, i); + List monsterGroupList = BehaviorUtil.getFightTeamInfos(monsterByGroup,monsterPokemonByGroup, i); monsterTeamList.addAll(monsterGroupList); } return monsterTeamList; @@ -258,8 +259,7 @@ public class FightUtil { return CommonProto.FightTeamInfo. newBuilder() .addAllFightUnitList(heroFightInfos) -// .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) -// .setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId)) + .addAllPokemonUnitList(HeroLogic.getInstance().getPokemonSkills(user)) .build(); } 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 58ca02427..cbd039104 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 @@ -2314,10 +2314,13 @@ public class HeroLogic{ * @return */ private Map calOnePokemonAttribute(PokemonManager pokemonManager,String pokemonId){ - Map pokemonAttributeMap = new HashMap<>(); Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId); + return calOnePokemonAttribute(pokemon.getTmpId(),pokemon.getStar(),pokemon.getLevel()); + } + public Map calOnePokemonAttribute(int tmpId,int star,int level){ + Map pokemonAttributeMap = new HashMap<>(); Map oneAttrMap = new HashMap<>(); - SSpiritAnimal animal = STableManager.getConfig(SSpiritAnimal.class).get(pokemon.getTmpId()); + SSpiritAnimal animal = STableManager.getConfig(SSpiritAnimal.class).get(tmpId); oneAttrMap.put(GlobalsDef.HP_TYPE,(int)animal.getHp()); oneAttrMap.put(GlobalsDef.ATTACK_TYPE,(int)animal.getAttack()); @@ -2325,13 +2328,13 @@ public class HeroLogic{ oneAttrMap.put(GlobalsDef.MAGIC_DEFENCE_TYPE,(int)animal.getMagicDefence()); //等级增量 - SSpiritAnimalLevel levelConfig = SSpiritAnimalLevel.configByQualityAndLevel.get(animal.getQuality()).get(pokemon.getLevel()); + SSpiritAnimalLevel levelConfig = SSpiritAnimalLevel.configByQualityAndLevel.get(animal.getQuality()).get(level); int[][] characterLevelPara = levelConfig.getCharacterLevelPara(); for(int[] para:characterLevelPara){ oneAttrMap.put(para[0],oneAttrMap.getOrDefault(para[0],0)+para[1]); } //星级增量 - SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animal.getQuality()).get(pokemon.getStar()); + SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animal.getQuality()).get(star); int starPara = starConfig.getStarPara(); for(int key:oneAttrMap.keySet()){ pokemonAttributeMap.put(key,pokemonAttributeMap.getOrDefault(key,0)+(int)(oneAttrMap.getOrDefault(key,0)*(1+starPara/10000d))); @@ -2345,7 +2348,7 @@ public class HeroLogic{ * @param level * @return */ - private StringBuilder getOnePokemonProperty(Map propertyMap,int level){ + public StringBuilder getOnePokemonProperty(Map propertyMap,int level){ StringBuilder builder = new StringBuilder(); builder.append(level); for(int propId:pokemonTemplate){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java index 8a19fed89..45ede7b0a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java @@ -194,7 +194,7 @@ public class FightDataUtil { playerData.set("teamSkill",""); playerData.set("teamPassive", getTeamPassive(heroTeam.getTeamPassiveList())); playerData.set("outData",heroTeam.getSpecialPassive()); - //todo 灵兽技能 + // 灵兽技能 playerData.set("monsterList", getPokemonSkill(heroTeam.getPokemonUnitListList(),0)); playerData.set("firstCamp",first?1:0); return playerData; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java index 7a1b31bc4..78aff7ebf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java @@ -4,9 +4,11 @@ import com.ljsd.jieling.config.clazzStaticCfg.MapStaticConfig; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.handler.map.MapLogic; +import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.protocols.CommonProto; import config.SMonsterConfig; import config.SMonsterGroup; +import config.SSpiritAnimalSkill; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -171,10 +173,26 @@ public class MonsterUtil { return (int)(maxForce*(0.8+groupIds.length*0.2)); } - public static String getMonsterTeamSkillByGroup(int groupId) { - if (SMonsterGroup.getsMonsterGroupMap().get(groupId).getSkill()!=null){ - return SMonsterGroup.getsMonsterGroupMap().get(groupId).getSkill(); + public static List getMonsterPokemonByGroup(int groupId) { + int[][] animal = SMonsterGroup.getsMonsterGroupMap().get(groupId).getAnimal(); + if (animal==null||animal.length<1||animal[0].length<1){ + return null; } - return ""; + List pokemonInfo = new ArrayList<>(); + for(int i = 0 ; i map = HeroLogic.getInstance().calOnePokemonAttribute(animal[i][0], animal[i][1], animal[i][2]); + + info.setProperty(HeroLogic.getInstance().getOnePokemonProperty(map,animal[i][2]).toString()); + + pokemonInfo.add(info.build()); + } + return pokemonInfo; } } diff --git a/tablemanager/src/main/java/config/SMonsterGroup.java b/tablemanager/src/main/java/config/SMonsterGroup.java index 6ca9531cd..3ca0c9f36 100644 --- a/tablemanager/src/main/java/config/SMonsterGroup.java +++ b/tablemanager/src/main/java/config/SMonsterGroup.java @@ -16,8 +16,9 @@ public class SMonsterGroup implements BaseConfig { private String skill; - - @Override + private int[][] animal; + + @Override public void init() throws Exception { sMonsterGroupMap = STableManager.getConfig(SMonsterGroup.class); } @@ -41,4 +42,8 @@ public class SMonsterGroup implements BaseConfig { public String getSkill() { return skill; } + + public int[][] getAnimal() { + return animal; + } } \ No newline at end of file