神兵技能

back_recharge
duhui 2023-04-07 16:25:35 +08:00
parent 0e22c4f222
commit c5e20dde2b
2 changed files with 115 additions and 66 deletions

View File

@ -118,6 +118,7 @@ public class FightDataUtil {
}
//todo 灵兽技能
enemyData.set("monsterList", getPokemonSkill(data.getPokemonUnitListList(),1));
enemyData.set("weaponList", getMagicSoldierSkill(data.getMagicSoldierListList(),1));
enemyData.set("teamPassive", new LuaTable());
enemyData.set("teamSkill",new LuaTable());
@ -135,6 +136,7 @@ public class FightDataUtil {
SDuoDuiTowerHero towerHero = SDuoDuiTowerHero.heroMap.get(Integer.parseInt(unitInfo.getUnitId()));
// todo unitData对象可以摘出来
LuaValue unitData = new LuaTable();
unitData.set("roleId", towerHero.getId());
unitData.set("professionId", 0);
@ -171,8 +173,9 @@ public class FightDataUtil {
enemyData.rawset(i+1, unitData);
}
//todo 灵兽技能
// 灵兽技能
enemyData.set("monsterList", getPokemonSkill(data.getPokemonUnitListList(),1));
enemyData.set("weaponList", getMagicSoldierSkill(data.getMagicSoldierListList(),1));
enemyData.set("teamPassive", new LuaTable());
enemyData.set("teamSkill",new LuaTable());
@ -199,8 +202,9 @@ public class FightDataUtil {
for(int i=2;i<length;i++){
int passivityId = Integer.parseInt(unitSkill[i]);
SPassiveSkillLogicConfig sPassiveSkillLogicConfig = SPassiveSkillLogicConfig.getConfig(passivityId);
if(sPassiveSkillLogicConfig.getCoverID()!=0)
if(sPassiveSkillLogicConfig.getCoverID()!=0) {
tempSet.add(sPassiveSkillLogicConfig.getCoverID());
}
}
for(int i=2;i<length;i++){
LuaValue detail = new LuaTable();
@ -267,7 +271,8 @@ public class FightDataUtil {
playerData.set("teamPassive", getTeamPassive(heroTeam.getTeamPassiveList()));
playerData.set("outData",heroTeam.getSpecialPassive());
// 灵兽技能
playerData.set("monsterList", getPokemonSkill(heroTeam.getPokemonUnitListList(),position));
playerData.set("monsterList", getPokemonSkill(heroTeam.getPokemonUnitListList(), position));
playerData.set("weaponList", getMagicSoldierSkill(heroTeam.getMagicSoldierListList(), position));
playerData.set("firstCamp",first?1:0);
return playerData;
}
@ -321,9 +326,9 @@ public class FightDataUtil {
if(skillId.equals("0")|| StringUtil.isEmpty(skillId)){
continue;
}
LuaValue monster = new LuaTable();
///100代表是修行技能
if (unitInfo.getPosition()==100){
LuaValue monster = new LuaTable();
monster.set("id",0);
monster.set("star",unitInfo.getStar());
monster.set("teamDamage",unitInfo.getForceScore());
@ -331,7 +336,7 @@ public class FightDataUtil {
monster.set("position",unitInfo.getPosition());
monster.set("property",getProperty(unitInfo.getProperty()));
String[] allSkillIdArr = skillId.split("\\|");
String[]skillIdArr=allSkillIdArr[0].split("#");
String[] skillIdArr = allSkillIdArr[0].split("#");
if (allSkillIdArr.length>1){
String passivityStr="##"+allSkillIdArr[1];
String[]passivitySkillIdArr=passivityStr.split("#");
@ -339,37 +344,13 @@ public class FightDataUtil {
}
LuaValue skillList= new LuaTable();
for (int k = 0; k < skillIdArr.length; k++) {
SPlayerSkill playerSkillConfig=STableManager.getConfig(SPlayerSkill.class).get(Integer.valueOf(skillIdArr[k]));
LuaValue skill= new LuaTable();
int[] skillIDList = playerSkillConfig.getSkillIDList();
for(int j = 0 ; j <skillIDList.length;j++){
LuaValue oneSkill = new LuaTable();
oneSkill.rawset("triggerId",playerSkillConfig.getReleasePoint()[j]);
int[][] releaseLimit = playerSkillConfig.getReleaseLimit();
LuaValue triggerCondition = new LuaTable();
if(releaseLimit!=null&&releaseLimit.length>0&&releaseLimit[0].length>0){
for(int l = 0 ; l<releaseLimit[j].length;l++){
triggerCondition.rawset(l+1, LuaValue.valueOf(releaseLimit[j][l]));
}
}else{
triggerCondition.rawset(1,LuaValue.valueOf(0));
}
oneSkill.set("effect",getSkill(String.valueOf(skillIDList[j]),0));
oneSkill.set("triggerCondition",triggerCondition);
oneSkill.set("maxCount",playerSkillConfig.getWarEffectCount()[j]);
oneSkill.set("maxRoundCount",playerSkillConfig.getTurnEffectCount()[j]);
skill.rawset(j+1,oneSkill);
}
SPlayerSkill playerSkillConfig = STableManager.getConfig(SPlayerSkill.class).get(Integer.valueOf(skillIdArr[k]));
LuaValue skill = getLuaSkill(playerSkillConfig.getSkillIDList(), playerSkillConfig.getReleasePoint(),playerSkillConfig.getReleaseLimit(), playerSkillConfig.getWarEffectCount(), playerSkillConfig.getTurnEffectCount());
skillList.rawset(k+1,skill);
}
monster.set("skill",skillList);
teamSkill.rawset(i+1,monster);
}else{
SSpiritAnimalSkill sSpiritAnimalSkill=STableManager.getConfig(SSpiritAnimalSkill.class).get(Integer.valueOf(skillId));
LuaValue monster = new LuaTable();
monster.set("id",sSpiritAnimalSkill.getSpiritAnimalMatch());
monster.set("star",sSpiritAnimalSkill.getStarMatch());
monster.set("camp",camp);
@ -378,42 +359,100 @@ public class FightDataUtil {
String[] skillIdArr = skillId.split("#");
LuaValue skillList= new LuaTable();
for (int k = 0; k < skillIdArr.length; k++) {
LuaValue skill = new LuaTable();
int[] skillIDList = sSpiritAnimalSkill.getSkillIDList();
for (int j = 0; j < skillIDList.length; j++) {
LuaValue oneSkill = new LuaTable();
oneSkill.rawset("triggerId", sSpiritAnimalSkill.getReleasePoint()[j]);
int[][] releaseLimit = sSpiritAnimalSkill.getReleaseLimit();
LuaValue triggerCondition = new LuaTable();
if (releaseLimit != null && releaseLimit.length > 0 && releaseLimit[0].length > 0) {
for (int l = 0; l < releaseLimit[j].length; l++) {
triggerCondition.rawset(l + 1, LuaValue.valueOf(releaseLimit[j][l]));
}
} else {
triggerCondition.rawset(1, LuaValue.valueOf(0));
}
oneSkill.set("effect", getSkill(String.valueOf(skillIDList[j]), 0));
oneSkill.set("triggerCondition", triggerCondition);
oneSkill.set("maxCount", sSpiritAnimalSkill.getWarEffectCount()[j]);
oneSkill.set("maxRoundCount", sSpiritAnimalSkill.getTurnEffectCount()[j]);
skill.rawset(j + 1, oneSkill);
}
LuaValue skill = getLuaSkill(sSpiritAnimalSkill.getSkillIDList(), sSpiritAnimalSkill.getReleasePoint(),sSpiritAnimalSkill.getReleaseLimit(), sSpiritAnimalSkill.getWarEffectCount(), sSpiritAnimalSkill.getTurnEffectCount());
skillList.rawset(k+1,skill);
}
monster.set("skill",skillList);
// String[] skillAndPosItem = skillAndPos.split("#");
// if (Integer.parseInt(skillAndPosItem[1])>0){
// teamSkill.rawset(i + 1, getSkill(skillAndPosItem[1],skillAndPosItem[0]));
// }
teamSkill.rawset(i+1,monster);
}
teamSkill.rawset(i+1,monster);
}
return teamSkill;
}
/**
* lua
* @param magicSoldierList
* @param camp
* @return
*/
private static LuaValue getMagicSoldierSkill(List<CommonProto.FightUnitInfo> magicSoldierList, int camp) {
LuaValue teamSkill = new LuaTable();
if (magicSoldierList.isEmpty()){
return teamSkill;
}
for (int i = 0; i < magicSoldierList.size(); i++) {
CommonProto.FightUnitInfo unitInfo = magicSoldierList.get(i);
String skillId = unitInfo.getUnitSkillIds();
if(skillId.equals("0")|| StringUtil.isEmpty(skillId)){
continue;
}
String[] split = skillId.split("#");
LuaValue monster = new LuaTable();
LuaValue initiative= new LuaTable();
ArrayList<int[]> passive = new ArrayList<>();
for (int j = 0; j < split.length; j++) {
SShenBingSkill shenBingSkill = SShenBingSkill.map.get(Integer.parseInt(split[j]));
if (j == 0){
monster.set("id",shenBingSkill.getSpiritAnimalMatch());
monster.set("star",shenBingSkill.getStarMatch());
monster.set("camp",camp);
monster.set("position",unitInfo.getPosition());
monster.set("property",getProperty(unitInfo.getProperty()));
}
int[] initiativeSkill = shenBingSkill.getSkillIDList();
LuaValue initiative1 = getLuaSkill(initiativeSkill, shenBingSkill.getReleasePoint(),shenBingSkill.getReleaseLimit(), shenBingSkill.getWarEffectCount(), shenBingSkill.getTurnEffectCount());
initiative.rawset(j+1, initiative1);
passive.add(shenBingSkill.getPassiveSkill());
}
monster.set("skill", initiative);
String[] convert = typeConvert(passive);
LuaValue passivity = getPassivity(convert);
monster.set("passivity", passivity);
teamSkill.rawset(i+1,monster);
}
return teamSkill;
}
public static String[] typeConvert(List<int[]> skill){
if (skill == null || skill.isEmpty()){
return new String[]{};
}
ArrayList<Integer> list = new ArrayList<>();
for (int[] ints : skill) {
for (int anInt : ints) {
list.add(anInt);
}
}
String[] result = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
result[i] = String.valueOf(list.get(i));
}
return result;
}
public static LuaValue getLuaSkill(int[] skills, int[] releasePoint, int[][] releaseLimit, int[] warEffectCount, int[] turnEffectCount){
LuaValue skill = new LuaTable();
for (int u = 0; u < skills.length; u++) {
LuaValue oneSkill = new LuaTable();
oneSkill.rawset("triggerId", releasePoint[u]);
LuaValue triggerCondition = new LuaTable();
if (releaseLimit != null && releaseLimit.length > 0 && releaseLimit[0].length > 0) {
for (int l = 0; l < releaseLimit[u].length; l++) {
triggerCondition.rawset(l + 1, LuaValue.valueOf(releaseLimit[u][l]));
}
} else {
triggerCondition.rawset(1, LuaValue.valueOf(0));
}
oneSkill.set("effect", getSkill(String.valueOf(skills[u]), 0));
oneSkill.set("triggerCondition", triggerCondition);
oneSkill.set("maxCount", warEffectCount[u]);
oneSkill.set("maxRoundCount", turnEffectCount[u]);
skill.rawset(u + 1, oneSkill);
}
return skill;
}
/**
*

View File

@ -21,6 +21,8 @@ public class SShenBingSkill implements BaseConfig {
private int[] skillIDList;
private int[] passiveSkill;
private int[] releasePoint;
private int[][] releaseLimit;
@ -29,20 +31,24 @@ public class SShenBingSkill implements BaseConfig {
private int[] turnEffectCount;
public static Map<Integer,SShenBingSkill> map;
/**
* id
*/
public static Map<Integer,Map<Integer, List<SShenBingSkill>>> skillMap;
@Override
public void init() throws Exception {
Map<Integer, Map<Integer, List<SShenBingSkill>>> map = new HashMap<>();
Map<Integer, SShenBingSkill> config = STableManager.getConfig(SShenBingSkill.class);
for (SShenBingSkill value : config.values()) {
Map<Integer, List<SShenBingSkill>> map1 = map.getOrDefault(value.getSpiritAnimalMatch(), new HashMap<>());
map = STableManager.getConfig(SShenBingSkill.class);
Map<Integer, Map<Integer, List<SShenBingSkill>>> skillMap2 = new HashMap<>();
for (SShenBingSkill value : map.values()) {
Map<Integer, List<SShenBingSkill>> map1 = skillMap2.getOrDefault(value.getSpiritAnimalMatch(), new HashMap<>());
List<SShenBingSkill> skills = map1.getOrDefault(value.getStarMatch(), new ArrayList<>());
skills.add(value);
map1.put(value.getStarMatch(),skills);
map.put(value.getSpiritAnimalMatch(), map1);
skillMap2.put(value.getSpiritAnimalMatch(), map1);
}
skillMap = map;
skillMap = skillMap2;
}
@ -62,7 +68,11 @@ public class SShenBingSkill implements BaseConfig {
return skillIDList;
}
public int[] getReleasePoint() {
public int[] getPassiveSkill() {
return passiveSkill;
}
public int[] getReleasePoint() {
return releasePoint;
}