灵兽战斗数据组装

back_recharge
lvxinran 2020-10-23 17:54:22 +08:00
parent d054d48907
commit 8a1c93570d
2 changed files with 47 additions and 8 deletions

View File

@ -3019,7 +3019,7 @@ public class HeroLogic{
SSpiritAnimal animalConfig = STableManager.getConfig(SSpiritAnimal.class).get(tmpId);
Map<Integer, Integer> costMap = new HashMap<>();
costMap.put(animalConfig.getReturnCost()[0], animalConfig.getReturnCost()[1]);
if (ItemUtil.checkCost(user, costMap)) {
if (!ItemUtil.checkCost(user, costMap)) {
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
Map<Integer, Integer> returnMap = new HashMap<>();
@ -3033,6 +3033,8 @@ public class HeroLogic{
returnMap.put(tmpId, returnMap.getOrDefault(tmpId, 0) + sumItemNum);
}
ItemUtil.itemCost(user, costMap, BIReason.SPECIAL_BACK_CONSUME, 1);
pokemonManager.updatePokemonLevel(pokemonId,1);
pokemonManager.updatePokemonStar(pokemonId,0);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(returnMap), BIReason.SPECIAL_MONSTER_REWARD);

View File

@ -113,7 +113,7 @@ public class FightDataUtil {
enemyData.rawset(i+1, unitData);
}
enemyData.set("teamSkill", getTeamSkill(data.getTeamSkillList().trim()));
enemyData.set("monsterList", getTeamSkill(data.getTeamSkillList().trim(),1));
enemyData.set("teamPassive", new LuaTable());
return enemyData;
@ -190,9 +190,10 @@ public class FightDataUtil {
for (int i = 1; i <= heroTeam.getFightUnitListCount(); i++) {
playerData.rawset(i, getHeroFightUnit(heroTeam.getFightUnitList(i - 1),position));
}
playerData.set("teamSkill", getTeamSkill(heroTeam.getTeamSkillList()));
playerData.set("teamSkill","");
playerData.set("teamPassive", getTeamPassive(heroTeam.getTeamPassiveList()));
playerData.set("outData",heroTeam.getSpecialPassive());
playerData.set("monsterList", getTeamSkill(heroTeam.getTeamSkillList(),0));
playerData.set("firstCamp",first?1:0);
return playerData;
}
@ -234,18 +235,54 @@ public class FightDataUtil {
return passivityData;
}
private static LuaValue getTeamSkill(String pokemonSkill) {
//组装灵兽技能数据 camp=0 自己 1 对方
private static LuaValue getTeamSkill(String pokemonSkill,int camp) {
LuaValue teamSkill = new LuaTable();
if (StringUtil.isEmpty(pokemonSkill)){
return teamSkill;
}
String[] skills = pokemonSkill.trim().split("\\|");
String[] skills = pokemonSkill.trim().split("#");
for (int i = 0; i < skills.length; i++) {
String skillAndPos = skills[i];
String[] skillAndPosItem = skillAndPos.split("#");
if (Integer.parseInt(skillAndPosItem[1])>0){
teamSkill.rawset(i + 1, getSkill(skillAndPosItem[1],skillAndPosItem[0]));
if(skillAndPos.equals("0")){
continue;
}
SSpiritAnimalSkill sSpiritAnimalSkill = STableManager.getConfig(SSpiritAnimalSkill.class).get(Integer.valueOf(skillAndPos));
LuaValue monster = new LuaTable();
monster.set("id",sSpiritAnimalSkill.getSpiritAnimalMatch());
monster.set("star",sSpiritAnimalSkill.getStarMatch());
monster.set("camp",camp);
monster.set("position",i+1);
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])));
oneSkill.set("triggerCondition",triggerCondition);
oneSkill.set("maxCount",sSpiritAnimalSkill.getWarEffectCount()[j]);
oneSkill.set("maxRoundCount",sSpiritAnimalSkill.getTurnEffectCount()[j]);
skill.rawset(j+1,oneSkill);
}
monster.rawset("skill",skill);
// String[] skillAndPosItem = skillAndPos.split("#");
// if (Integer.parseInt(skillAndPosItem[1])>0){
// teamSkill.rawset(i + 1, getSkill(skillAndPosItem[1],skillAndPosItem[0]));
// }
teamSkill.rawset(i+1,monster);
}
return teamSkill;
}