大闹天宫,遇敌刷新逻辑修改
parent
1099169d1f
commit
2dc01e8b26
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据英雄id和下标id获取几技能
|
||||||
|
* @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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue