神兵技能
parent
0e22c4f222
commit
c5e20dde2b
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue