大闹天宫,遇敌刷新逻辑修改

back_recharge
duhui 2021-02-26 11:29:44 +08:00
parent 1099169d1f
commit 2dc01e8b26
4 changed files with 93 additions and 23 deletions

View File

@ -302,10 +302,10 @@ public class ExpeditionLogic {
Set<ExpeditionNodeInfo> nodeSets = createNodeSet(user,leve); Set<ExpeditionNodeInfo> nodeSets = createNodeSet(user,leve);
SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1); SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
if (sExpeditionSetting == null) { if (sExpeditionSetting == null) {
throw new ErrorCodeException(ErrorCode.CFG_NULL); throw new ErrorCodeException(ErrorCode.CFG_NULL,"配置表错误,获取数据为空");
} }
if(leve-1>sExpeditionSetting.getMatchForce().length){ if(leve-1>sExpeditionSetting.getMatchForce().length){
throw new ErrorCodeException(ErrorCode.UNKNOWN); throw new ErrorCodeException(ErrorCode.UNKNOWN,"大闹天宫层数错误");
} }
// 万分比 // 万分比
@ -326,25 +326,17 @@ public class ExpeditionLogic {
int robotLevel = MathUtils.random((int)Math.ceil(averageLevel*minFoce),(int)Math.ceil(averageLevel*maxFoce)); int robotLevel = MathUtils.random((int)Math.ceil(averageLevel*minFoce),(int)Math.ceil(averageLevel*maxFoce));
// 随机出来的队伍信息 // 随机出来的队伍信息
List<Integer> randomFaceRankTeam = getRandomFaceRankTeam(user); List<Integer> randomFaceRankTeam = getRandomFaceRankTeam(user);
// 节点英雄快照
//提前战力排序 支持战力查找机器人 snapOneFightInfo(nodeInfo,randomFaceRankTeam,robotLevel);
// SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(robotId);
// snapOneFightInfo(nodeInfo, sArenaRobotConfig);
// } else {
// String serarchIdFromRank = typedTuples.iterator().next().getValue();
// snapOneFightInfo(user, nodeInfo, Integer.valueOf(serarchIdFromRank));
// }
} }
// boss节点
if(nodeInfo.getType()==ExpeditionLogic.NODETYPE_GREED||nodeInfo.getType() ==ExpeditionLogic.NODETYPE_TRY){ if(nodeInfo.getType()==ExpeditionLogic.NODETYPE_GREED||nodeInfo.getType() ==ExpeditionLogic.NODETYPE_TRY){
snapOneFightInfo(nodeInfo); snapOneFightInfo(nodeInfo);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
user.getExpeditionManager().putExpeditionNodeInfos(sortId, nodeInfo); user.getExpeditionManager().putExpeditionNodeInfos(sortId, nodeInfo);
}); });
} }
@ -354,7 +346,7 @@ public class ExpeditionLogic {
* @return * @return
* @throws Exception * @throws Exception
*/ */
public List<Integer> getRandomFaceRankTeam(User user) throws Exception { private List<Integer> getRandomFaceRankTeam(User user) throws Exception {
// 获取随机排名的用户id // 获取随机排名的用户id
int uid = RankLogic.getInstance().getRandomByFoceRank(user, 1, 50); int uid = RankLogic.getInstance().getRandomByFoceRank(user, 1, 50);
@ -365,7 +357,7 @@ public class ExpeditionLogic {
ArrayList<Integer> integers = new ArrayList<>(); ArrayList<Integer> integers = new ArrayList<>();
heroInfos.forEach(v->{ heroInfos.forEach(v->{
// 获取英雄模板id // 获取英雄模板id
Hero hero = user.getHeroManager().getHero(v.getHeroId()); Hero hero = other.getHeroManager().getHero(v.getHeroId());
integers.add(hero.getTemplateId()); integers.add(hero.getTemplateId());
}); });
@ -567,6 +559,58 @@ public class ExpeditionLogic {
} }
/**
* 2021-2-25
* @param nodeInfo
* @param heroIds
* @param level
*/
private void snapOneFightInfo(ExpeditionNodeInfo nodeInfo, List<Integer> heroIds, int level) {
// 非战斗节点类型
if (!isBattleNode(nodeInfo.getType())) {
return;
}
SnapFightInfo fightInfo = new SnapFightInfo();
// 英雄列表
Map<String, FamilyHeroInfo> heroAllAttribute = new HashMap<>();
// boss血量这里无用
Map<String, Double> bossHP = new HashMap<>();
// 获取对应等级的机器人信息
SRobotProperty property = STableManager.getConfig(SRobotProperty.class).get(level);
// 自增标识
int innerPosition= 1;
// 战力
int force = 0;
for (Integer id : heroIds) {
SCHero scHero = SCHero.getsCHero().get(id);
// 获取技能列表,包含主动和被动技能
String skills = SRobotSkill.getSkills(id, property.getSkillPool());
fightInfo.updateHeroSkill(id.toString(), skills.substring(0, skills.length() - 1));
// 需要赋值
bossHP.put(id.toString(), 1D);
// 空值初始化
int[] differDemonsId = null;
int differDemonsLv = 0;
// 英雄属性
Map<Integer, Integer> robotHeroAttribute = HeroLogic.getInstance().calRobotHeroAttribute(scHero, level, 0, differDemonsId, differDemonsLv, false);
force+=HeroLogic.getInstance().calForce(robotHeroAttribute);
heroAllAttribute.put(id.toString(), new FamilyHeroInfo(id, level, property.getStar(), robotHeroAttribute,innerPosition++));
}
fightInfo.setForce(force);
fightInfo.setPokenmonSkills("");
fightInfo.setPassiveSkills("");
fightInfo.setUid(property.getId());
fightInfo.setHeroAttribute(heroAllAttribute);
nodeInfo.setSnapFightInfo(fightInfo);
nodeInfo.setBossHP(bossHP);
}
private void snapOneFightInfo(User self, ExpeditionNodeInfo nodeInfo, int defid) throws Exception { private void snapOneFightInfo(User self, ExpeditionNodeInfo nodeInfo, int defid) throws Exception {
int snapTeamId = GlobalsDef.TEAM_ARENA_DEFENSE; int snapTeamId = GlobalsDef.TEAM_ARENA_DEFENSE;
@ -1011,7 +1055,7 @@ public class ExpeditionLogic {
} }
StringBuilder skillSb = new StringBuilder(); StringBuilder skillSb = new StringBuilder();
StringBuilder propertySb = new StringBuilder(); StringBuilder propertySb = new StringBuilder();
HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString(); HeroLogic.getInstance().getHeroSkills(user,hero,skillSb);
if(teamId==GlobalsDef.EXPEDITION_TEAM){ if(teamId==GlobalsDef.EXPEDITION_TEAM){
ExpeditionManager expeditionManager = user.getExpeditionManager(); ExpeditionManager expeditionManager = user.getExpeditionManager();

View File

@ -32,6 +32,7 @@ import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.network.server.ProtocolsManager; import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.sun.jndi.cosnaming.ExceptionMapper;
import rpc.protocols.CommonProto; import rpc.protocols.CommonProto;
import rpc.protocols.HeroInfoProto; import rpc.protocols.HeroInfoProto;
import rpc.protocols.MapInfoProto; import rpc.protocols.MapInfoProto;
@ -4322,7 +4323,7 @@ public class HeroLogic{
* @param averageNum * @param averageNum
* @return * @return
*/ */
public int getAverageLevel(User user, int averageNum){ public int getAverageLevel(User user, int averageNum) throws ErrorCodeException {
HeroManager heroManager = user.getHeroManager(); HeroManager heroManager = user.getHeroManager();
int num = heroManager.getHeroMap().size() > averageNum?averageNum:heroManager.getHeroMap().size(); int num = heroManager.getHeroMap().size() > averageNum?averageNum:heroManager.getHeroMap().size();
@ -4348,10 +4349,10 @@ public class HeroLogic{
count += heroes.get(i).getLevel(heroManager); count += heroes.get(i).getLevel(heroManager);
} }
// 避免zero异常 // 避免zero异常
if (count == 0){ if (count == 0 || num == 0){
return 0; throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
} }
return num/count; return count/num;
} }
} }

View File

@ -101,12 +101,12 @@ public class RankLogic {
return 0; return 0;
} }
int random = MathUtils.randomInt(end); int random = MathUtils.randomInt(end)+1;
int rankSize = rankResponse.getRanksCount(); int rankSize = rankResponse.getRanksCount();
// 随机排名 // 随机排名
int anInt = random > rankSize?rankSize:random; int anInt = random > rankSize?rankSize:random;
CommonProto.UserRank ranks = rankResponse.getRanks(anInt); CommonProto.UserRank ranks = rankResponse.getRanks(anInt-1);
return ranks.getUid(); return ranks.getUid();
} }

View File

@ -3,6 +3,8 @@ package config;
import manager.STableManager; import manager.STableManager;
import manager.Table; import manager.Table;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Table(name ="RobotSkill") @Table(name ="RobotSkill")
@ -16,9 +18,13 @@ public class SRobotSkill implements BaseConfig {
private int[][] passiveSkill; private int[][] passiveSkill;
private static Map<Integer,SRobotSkill> skillMap;
@Override @Override
public void init() throws Exception { public void init() throws Exception {
Map<Integer, SRobotSkill> config = STableManager.getConfig(SRobotSkill.class);
skillMap = new HashMap<>();
config.forEach((k,v)->skillMap.put(v.getHeroId(),v));
} }
@ -38,5 +44,24 @@ public class SRobotSkill implements BaseConfig {
return passiveSkill; return passiveSkill;
} }
/**
* idid
* @param heroTid
* @param index
* @return
*/
public static String getSkills(int heroTid, int index){
StringBuilder builder = new StringBuilder();
SRobotSkill robotSkill = skillMap.get(heroTid);
// 主动技能
for (int i : robotSkill.getSkill()) {
builder.append(i).append("#");
}
// 被动技能
for (int i : robotSkill.getPassiveSkill()[index]) {
builder.append(i).append("#");
}
return builder.toString();
}
} }