diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java index a6f5d2cf2..bb729790d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java @@ -69,6 +69,7 @@ public interface Global { int VIPSTORID = 20; //vip商店id + int GODSTORID = 57; //vip商店id int LUXURYMONTHCARDID =11;//6豪华月卡 废弃 改版 int WEEKCARDID = 10; //月卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java index 063b0ff82..185beb7c0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java @@ -89,18 +89,7 @@ public class EndExpeditionBattleRequest extends BaseHandler expeditionHolyConfigs = ExpeditionLogic.getFirstRankHoly(expeditionManager); - - StringBuilder passiveSkillResult = new StringBuilder(); - if(deffightInfo.getPassiveSkills().length()!=0){ - passiveSkillResult.append("|"); - } - for (SExpeditionHolyConfig config:expeditionHolyConfigs) { - passiveSkillResult.append(String.valueOf(config.getPassiveSkillId())).append("|"); - } - String holySkill = passiveSkillResult.length()!=0?passiveSkillResult.substring(0,passiveSkillResult.length()-1):""; LuaValue getFightData; if(ExpeditionLogic.isHardNode(nodeInfo.getType())){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeRequestHandler.java index 17e5f4f89..1796de43c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeRequestHandler.java @@ -73,15 +73,15 @@ public class HeroNodeRequestHandler extends BaseHandler equipMapTemp = expeditionManager.getEquipMapTemp(); - for (Map.Entry next : hero.getEquipByPositionMap().entrySet()) { - String equipId = next.getValue(); - PropertyItem equip = equipMapTemp.get(equipId); - if (equip == null) { - continue; - } - user.getExpeditionManager().addEquip(user, equip); - } +// Map equipMapTemp = expeditionManager.getEquipMapTemp(); +// for (Map.Entry next : hero.getEquipByPositionMap().entrySet()) { +// String equipId = next.getValue(); +// PropertyItem equip = equipMapTemp.get(equipId); +// if (equip == null) { +// continue; +// } +// user.getExpeditionManager().addEquip(user, equip); +// } Set jewelInfo = hero.getJewelInfo(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java index 2626ecbea..137107950 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java @@ -4,6 +4,7 @@ import com.googlecode.protobuf.format.JsonFormat; import com.ljsd.fight.FightType; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.handler.map.TrailHero; +import com.ljsd.jieling.logic.fight.FightUtil; import com.ljsd.jieling.logic.fight.specialparm.SpecialForTeamBuildEnum; import com.ljsd.jieling.logic.hero.HeroAttributeEnum; import com.ljsd.jieling.util.CBean2Proto; @@ -220,7 +221,7 @@ public class BehaviorUtil { */ public static CommonProto.FightTeamInfo getFightTeamInfo(User user, int teamId,boolean isMySelf) { if(teamId==GlobalsDef.TRIAL_TEAM){ - return getFightTeamInfo(user,teamId); + return FightUtil.getFightTeamInfo(user,teamId); } user.getTeamPosManager().setCurTeamPosId(teamId); List heroFightInfos = new ArrayList<>(); @@ -252,181 +253,6 @@ public class BehaviorUtil { .build(); } - /** - * 获取FightUnitInfo - * @param user - * @param teamId - * @return - */ - public static CommonProto.FightTeamInfo getFightTeamInfo(User user, int teamId) { - //无尽副本使用镜像来战斗 - if(teamId!= GlobalsDef.TRIAL_TEAM){ - return getFightTeamInfo(user,teamId,true); - } - user.getTeamPosManager().setCurTeamPosId(teamId); - List heroFightInfos = new ArrayList<>(); - List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); - Map heroInfo = user.getMapManager().getTrialInfo().getHeroInfo(); - for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) { - if (heroInfo.isEmpty()||!heroInfo.containsKey(teamPosHeroInfo.getHeroId())) { - continue; - } - TrailHero trailHero = heroInfo.get(teamPosHeroInfo.getHeroId()); - StringBuilder propertySb = new StringBuilder(); - //存起来 - String heroSkill = trailHero.getHeroSkills(); - String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb,trailHero.getTmpId(),trailHero.getLevel(),trailHero.getProperty()).toString(); - CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo - .newBuilder() - .setUnitId(Integer.toString(trailHero.getTmpId())) - .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) - .setProperty(property.substring(0, property.length()-1)) - .setPosition(teamPosHeroInfo.getPosition()) - .setStar(trailHero.getStar()) - .build(); - heroFightInfos.add(heroFightInfo); - } - return CommonProto.FightTeamInfo. - newBuilder() - .addAllFightUnitList(heroFightInfos) -// .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) -// .setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId)) - .build(); - } - - /** - * 获取FightUnitInfo - * @param user - * @param teamId - * @param attackBloodMap 血量百分比 - * @return - */ - public static CommonProto.FightTeamInfo getFightTeamInfo(User user, int teamId, Map attackBloodMap) { - user.getTeamPosManager().setCurTeamPosId(teamId); - List heroFightInfos = new ArrayList<>(); - List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); - for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) { - Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId()); - if (hero == null) { - continue; - } - Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); - if(attackBloodMap.containsKey(teamPosHeroInfo.getHeroId())){ - heroAttributeMap.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId())-attackBloodMap.get(teamPosHeroInfo.getHeroId())*heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId())/100); - } - StringBuilder skillSb = new StringBuilder(); - StringBuilder propertySb = new StringBuilder(); - String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString(); - String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getTemplateId(),hero.getLevel(), heroAttributeMap).toString(); - CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo - .newBuilder() - .setUnitId(Integer.toString(hero.getTemplateId())) - .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) - .setProperty(property.substring(0, property.length()-1)) - .setStar(hero.getStar()) - .build(); - heroFightInfos.add(heroFightInfo); - } - return CommonProto.FightTeamInfo. - newBuilder() - .addAllFightUnitList(heroFightInfos) - .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) - .setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId)) - .setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId,user)) - .build(); - } - - - /** - * 获取FightUnitInfo - * @param user - * @param teamId - * @param attackBloodMap 血量百分比 - * @return - */ - public static CommonProto.FightTeamInfo getFightTeamInfoWithDouble(User user, int teamId, Map attackBloodMap) { - user.getTeamPosManager().setCurTeamPosId(teamId); - List heroFightInfos = new ArrayList<>(); - List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); - int i=0; - for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) { - Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId()); - if (hero == null) { - continue; - } - Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); - if(attackBloodMap.containsKey(teamPosHeroInfo.getHeroId())){ - heroAttributeMap.put(HeroAttributeEnum.CurHP.getPropertyId(),(int)(attackBloodMap.getOrDefault(teamPosHeroInfo.getHeroId(),1d)*heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId()))); - } - StringBuilder skillSb = new StringBuilder(); - StringBuilder propertySb = new StringBuilder(); - String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString(); - String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getTemplateId(),hero.getLevel(), heroAttributeMap).toString(); - CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo - .newBuilder() - .setUnitId(Integer.toString(hero.getTemplateId())) - .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) - .setProperty(property.substring(0, property.length()-1)) - .setPosition(++i) - .setStar(hero.getStar()) - .build(); - heroFightInfos.add(heroFightInfo); - } - return CommonProto.FightTeamInfo. - newBuilder() - .addAllFightUnitList(heroFightInfos) - .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) - .setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId)) - .build(); - } - - - public static CommonProto.FightTeamInfo getRobotFightTeamInfo(SArenaRobotConfig sArenaRobotConfig) { - return getRobotFightTeamInfo(sArenaRobotConfig,null); - } - public static CommonProto.FightTeamInfo getRobotFightTeamInfo(SArenaRobotConfig sArenaRobotConfig,Map remainHp) { - List heroFightInfos = new ArrayList<>(); - Map heroStarsMap = sArenaRobotConfig.getStarOfHeroMap(); - int i=0; - for(Map.Entry item : heroStarsMap.entrySet()){ - StringBuilder skillSb = new StringBuilder(); - StringBuilder propertySb = new StringBuilder(); - Integer heroTid = item.getKey(); - Integer heroStar = item.getValue(); - SCHero scHero = SCHero.getsCHero().get(heroTid); - List skillIds = scHero.getSkillListByStar(heroStar); - String heroSkill = HeroLogic.getInstance().getRobotHeroSkills(skillIds,skillSb).toString(); - - int[] differDemonsId = sArenaRobotConfig.getDifferDemonsId(); - int differDemonsLv = sArenaRobotConfig.getDifferDemonsLv(); - int robotLevel = sArenaRobotConfig.getRoleLv(); - Map robotHeroAttribute =HeroLogic.getInstance(). calRobotHeroAttribute(scHero, robotLevel, sArenaRobotConfig.getBreakId(), differDemonsId, differDemonsLv,false); - - if(remainHp!=null&&remainHp.containsKey(heroTid.toString())){ - robotHeroAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),(int)(remainHp.getOrDefault(heroTid.toString(),1d)*robotHeroAttribute.get(HeroAttributeEnum.Hp.getPropertyId()))); - } - - String property = HeroLogic.getInstance().getRobotHeroProperty(sArenaRobotConfig,scHero,propertySb,robotHeroAttribute).toString(); - CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo - .newBuilder() - .setUnitId(Integer.toString(heroTid)) - .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) - .setProperty(property.substring(0, property.length()-1)) - .setPosition(++i) - .setStar(heroStar) - .build(); - heroFightInfos.add(heroFightInfo); - } - - return CommonProto.FightTeamInfo. - newBuilder() - .addAllFightUnitList(heroFightInfos) - .setTeamSkillList(HeroLogic.getInstance().getRobotPokenmonSkills(sArenaRobotConfig)) - .setTeamPassiveList(HeroLogic.getInstance().getRobotPokenmonPassiveSkills(sArenaRobotConfig)) - .build(); - - } - /** * 更新事件时 更新任务 */ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 261ae3ae6..a0cae107c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -468,6 +468,10 @@ public class ActivityLogic implements IEventHandler{ endTime = (int) (ToolsUtil.getTimeLong(sGlobalActivity.getStartTimeLong(),sGlobalActivity.getEndTimeLong(),sGlobalActivity.getTime(),createTime, 2) / 1000); } AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId()); + if(abstractActivity==null){ + LOGGER.error(sGlobalActivity.getId()+":活动类型不存在"); + continue; + } List missionInfos =abstractActivity.getAllMissInfo(activityMission); activityInfoList.add(CommonProto.ActivityInfo.newBuilder().setActivityId(activityId).addAllMission(missionInfos).setStartTime(startTime).setEndTime(endTime).setValue(activityMission.getV()).setReallyOpen(activityMission.getOpenType()).build()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index b72d09a08..83fdaca86 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -61,6 +61,7 @@ public interface ActivityType { int LEVEL_EXPERT = 52; //进阶达人 int BUY_GOLD = 53; //购买金币 点石成金 + int ECPEDITION_ACTIVITY = 54; //天宫密宝 int COPY_PASS = 55; // 开服福利 副本限时通过奖励 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index 4e2ffcbc6..2fb553f22 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -46,6 +46,7 @@ public enum ActivityTypeEnum { SECURTBOX_EXPERT(ActivityType.SECURTBOX_EXPERT,SecurtBoxExpectRankActivity::new), FIND_FAIRY_FESTIVAL(ActivityType.FIND_FAIRY_FESTIVAL,RechargeSumActivity::new), BUY_GOLD(ActivityType.BUY_GOLD,BuyGoldActivity::new), + ECPEDITION_ACTIVITY(ActivityType.ECPEDITION_ACTIVITY,DefaultEmptyActivity::new), COPY_PASS(ActivityType.COPY_PASS,ChapterRewardActivity::new) ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index 6ea6e0c2c..05976d1fd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -43,6 +43,8 @@ import java.util.stream.Collectors; * Description: 远征 猎妖之路 * Author: zsx * CreateDate: 2020/1/7 11:46 + * + *TODO fix 清除临时的节点装备 */ public class ExpeditionLogic { @@ -863,11 +865,11 @@ public class ExpeditionLogic { Jewel j = (Jewel) propertyItem; Jewel newequip = new Jewel(user.getId(), j.getEquipId()); - if(isTemp){ - user.getExpeditionManager().addEquipToTemp(user, newequip); - }else { + // if(isTemp){ + // user.getExpeditionManager().addEquipToTemp(user, newequip); + // }else { user.getExpeditionManager().addEquip(user, newequip); - } + // } newHero.addJewel(newequip.getId()); } if(isTemp){ @@ -902,28 +904,7 @@ public class ExpeditionLogic { } - public static TreeSet getRandomTidWithPro(int type,int size)throws ErrorCodeException{ - //select collections - Map cfg = STableManager.getFigureConfig(CommonStaticConfig.class).type2Recruitcfgs.getOrDefault(type, new HashMap<>()); - - //check limit - if(cfg.size()(cfg.keySet()); - } - - //random ids - TreeSet tempid = new TreeSet<>(); - while (tempid.size() getGropFightTeamInfoWithDouble(int gropid, Map attackBloodMap) { Map> hps = new HashMap<>(); @@ -934,6 +915,10 @@ public class ExpeditionLogic { } + /** + * 猎妖之路 使用 + * 需要添加被动 + */ public static CommonProto.FightTeamInfo getFightTeamInfoWithDouble(User user, int teamId, Map attackBloodMap) { user.getTeamPosManager().setCurTeamPosId(teamId); List heroFightInfos = new ArrayList<>(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java index 8b87dce5d..9d2cc638b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java @@ -2,19 +2,27 @@ package com.ljsd.jieling.logic.fight; import com.googlecode.protobuf.format.JsonFormat; import com.ljsd.fight.CheckFight; +import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.handler.map.TrailHero; import com.ljsd.jieling.handler.map.behavior.BehaviorUtil; import com.ljsd.jieling.logic.blood.BloodLogic; +import com.ljsd.jieling.logic.dao.Hero; +import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.result.FightResult; +import com.ljsd.jieling.logic.fight.specialparm.SpecialForTeamBuildEnum; +import com.ljsd.jieling.logic.hero.HeroAttributeEnum; +import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.util.FightDataUtil; import com.ljsd.jieling.util.MonsterUtil; import config.SArenaRobotConfig; +import config.SCHero; import org.luaj.vm2.LuaValue; import java.util.ArrayList; @@ -27,14 +35,14 @@ public class FightUtil { if(attackBloodMap ==null || attackBloodMap.isEmpty()){ return BehaviorUtil.getFightTeamInfo(player,teamId,true); } - return BehaviorUtil.getFightTeamInfo(player,teamId,attackBloodMap); + return getFightTeamInfo(player,teamId,attackBloodMap); } public static CommonProto.FightTeamInfo makePersonFightDataWithDouble(User player,int teamId,Map attackBloodMap){ if(attackBloodMap ==null || attackBloodMap.isEmpty()){ return BehaviorUtil.getFightTeamInfo(player,teamId,true); } - return BehaviorUtil.getFightTeamInfoWithDouble(player,teamId,attackBloodMap); + return getFightTeamInfoWithDouble(player,teamId,attackBloodMap); } @@ -73,7 +81,7 @@ public class FightUtil { //防守方是机器人(目前是竞技场适用) public static CommonProto.FightTeamInfo makeRobotFightData(int robotId){ SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(robotId); - return BehaviorUtil.getRobotFightTeamInfo(sArenaRobotConfig); + return getRobotFightTeamInfo(sArenaRobotConfig); } public static FightResult getFightForPVE(FightEvent fightEvent){ @@ -180,4 +188,173 @@ public class FightUtil { + + + /** + * 获取FightUnitInfo + */ + public static CommonProto.FightTeamInfo getFightTeamInfo(User user, int teamId) { + //无尽副本使用镜像来战斗 + if(teamId!= GlobalsDef.TRIAL_TEAM){ + return BehaviorUtil.getFightTeamInfo(user,teamId,true); + } + user.getTeamPosManager().setCurTeamPosId(teamId); + List heroFightInfos = new ArrayList<>(); + List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); + Map heroInfo = user.getMapManager().getTrialInfo().getHeroInfo(); + for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) { + if (heroInfo.isEmpty()||!heroInfo.containsKey(teamPosHeroInfo.getHeroId())) { + continue; + } + TrailHero trailHero = heroInfo.get(teamPosHeroInfo.getHeroId()); + StringBuilder propertySb = new StringBuilder(); + //存起来 + String heroSkill = trailHero.getHeroSkills(); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb,trailHero.getTmpId(),trailHero.getLevel(),trailHero.getProperty()).toString(); + CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo + .newBuilder() + .setUnitId(Integer.toString(trailHero.getTmpId())) + .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) + .setProperty(property.substring(0, property.length()-1)) + .setPosition(teamPosHeroInfo.getPosition()) + .setStar(trailHero.getStar()) + .build(); + heroFightInfos.add(heroFightInfo); + } + return CommonProto.FightTeamInfo. + newBuilder() + .addAllFightUnitList(heroFightInfos) +// .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) +// .setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId)) + .build(); + } + + /** + * 获取FightUnitInfo + * @param attackBloodMap 血量百分比 + */ + private static CommonProto.FightTeamInfo getFightTeamInfo(User user, int teamId, Map attackBloodMap) { + user.getTeamPosManager().setCurTeamPosId(teamId); + List heroFightInfos = new ArrayList<>(); + List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); + for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) { + Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId()); + if (hero == null) { + continue; + } + Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); + if(attackBloodMap.containsKey(teamPosHeroInfo.getHeroId())){ + heroAttributeMap.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId())-attackBloodMap.get(teamPosHeroInfo.getHeroId())*heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId())/100); + } + StringBuilder skillSb = new StringBuilder(); + StringBuilder propertySb = new StringBuilder(); + String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString(); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getTemplateId(),hero.getLevel(), heroAttributeMap).toString(); + CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo + .newBuilder() + .setUnitId(Integer.toString(hero.getTemplateId())) + .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) + .setProperty(property.substring(0, property.length()-1)) + .setStar(hero.getStar()) + .build(); + heroFightInfos.add(heroFightInfo); + } + return CommonProto.FightTeamInfo. + newBuilder() + .addAllFightUnitList(heroFightInfos) + .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) + .setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId)) + .setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId,user)) + .build(); + } + + + /** + * 获取FightUnitInfo + * @param attackBloodMap 血量百分比 double + */ + private static CommonProto.FightTeamInfo getFightTeamInfoWithDouble(User user, int teamId, Map attackBloodMap) { + user.getTeamPosManager().setCurTeamPosId(teamId); + List heroFightInfos = new ArrayList<>(); + List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); + int i=0; + for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) { + Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId()); + if (hero == null) { + continue; + } + Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); + if(attackBloodMap.containsKey(teamPosHeroInfo.getHeroId())){ + heroAttributeMap.put(HeroAttributeEnum.CurHP.getPropertyId(),(int)(attackBloodMap.getOrDefault(teamPosHeroInfo.getHeroId(),1d)*heroAttributeMap.get(HeroAttributeEnum.Hp.getPropertyId()))); + } + StringBuilder skillSb = new StringBuilder(); + StringBuilder propertySb = new StringBuilder(); + String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString(); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getTemplateId(),hero.getLevel(), heroAttributeMap).toString(); + CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo + .newBuilder() + .setUnitId(Integer.toString(hero.getTemplateId())) + .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) + .setProperty(property.substring(0, property.length()-1)) + .setPosition(teamPosHeroInfo.getPosition()) + .setStar(hero.getStar()) + .build(); + heroFightInfos.add(heroFightInfo); + } + return CommonProto.FightTeamInfo. + newBuilder() + .addAllFightUnitList(heroFightInfos) + .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) + .setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId)) + .build(); + } + + + private static CommonProto.FightTeamInfo getRobotFightTeamInfo(SArenaRobotConfig sArenaRobotConfig) { + return getRobotFightTeamInfo(sArenaRobotConfig,null); + } + private static CommonProto.FightTeamInfo getRobotFightTeamInfo(SArenaRobotConfig sArenaRobotConfig,Map remainHp) { + List heroFightInfos = new ArrayList<>(); + Map heroStarsMap = sArenaRobotConfig.getStarOfHeroMap(); + int i=0; + for(Map.Entry item : heroStarsMap.entrySet()){ + StringBuilder skillSb = new StringBuilder(); + StringBuilder propertySb = new StringBuilder(); + Integer heroTid = item.getKey(); + Integer heroStar = item.getValue(); + SCHero scHero = SCHero.getsCHero().get(heroTid); + List skillIds = scHero.getSkillListByStar(heroStar); + String heroSkill = HeroLogic.getInstance().getRobotHeroSkills(skillIds,skillSb).toString(); + + int[] differDemonsId = sArenaRobotConfig.getDifferDemonsId(); + int differDemonsLv = sArenaRobotConfig.getDifferDemonsLv(); + int robotLevel = sArenaRobotConfig.getRoleLv(); + Map robotHeroAttribute =HeroLogic.getInstance(). calRobotHeroAttribute(scHero, robotLevel, sArenaRobotConfig.getBreakId(), differDemonsId, differDemonsLv,false); + + if(remainHp!=null&&remainHp.containsKey(heroTid.toString())){ + robotHeroAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),(int)(remainHp.getOrDefault(heroTid.toString(),1d)*robotHeroAttribute.get(HeroAttributeEnum.Hp.getPropertyId()))); + } + + String property = HeroLogic.getInstance().getRobotHeroProperty(sArenaRobotConfig,scHero,propertySb,robotHeroAttribute).toString(); + CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo + .newBuilder() + .setUnitId(Integer.toString(heroTid)) + .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) + .setProperty(property.substring(0, property.length()-1)) + .setPosition(++i) + .setStar(heroStar) + .build(); + heroFightInfos.add(heroFightInfo); + } + + return CommonProto.FightTeamInfo. + newBuilder() + .addAllFightUnitList(heroFightInfos) + .setTeamSkillList(HeroLogic.getInstance().getRobotPokenmonSkills(sArenaRobotConfig)) + .setTeamPassiveList(HeroLogic.getInstance().getRobotPokenmonPassiveSkills(sArenaRobotConfig)) + .build(); + + } + + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroAttributeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroAttributeEnum.java index 3376cf621..e684c423a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroAttributeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroAttributeEnum.java @@ -20,6 +20,8 @@ public enum HeroAttributeEnum { DifferDemonsBocusFactor(66), CurHpExtra(67), CurHpSpecialExtra(68), + PVPDamageBocusFactor(69), + PVPDamageReduceFactor(70), FireDamageBonusFactor(101), WindDamageBonusFactor(102), WaterDamageBonusFactor(103), diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 891e9d450..818990978 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -1083,6 +1083,7 @@ public class HeroLogic{ } return getHeroPropertyBuilder(sb,hero.getTemplateId(),hero.getLevel(),heroAttributeMap); } + public StringBuilder getHeroPropertyBuilder(StringBuilder sb,int tempId,int heroLevel,Map heroAttributeMap){ sb.append(heroLevel).append(DIVISION); SCHero scHero = SCHero.getsCHero().get(tempId); @@ -1109,31 +1110,10 @@ public class HeroLogic{ } public StringBuilder getHeroPropertyBuilder(StringBuilder sb,FamilyHeroInfo hero,Map heroAttributeMap){ - int heroLevel = hero.getLevel(); - sb.append(heroLevel).append(DIVISION); - SCHero scHero = SCHero.getsCHero().get(hero.getTempleteId()); - List templatePropetyIds = transTemplateByHeroPropertyName.get(scHero.getPropertyName()); - for(Integer templatePropetyId:templatePropetyIds){ - Integer propertyValue = heroAttributeMap.get(templatePropetyId); - if(propertyValue == null){ - propertyValue =0; - } - SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(templatePropetyId); - if(sPropertyConfig.getIfFormula() == 1){ - sb.append(propertyValue/(heroLevel+10)/100).append(DIVISION); - }else{ - if(sPropertyConfig.getStyle() == GlobalsDef.PERCENT_TYPE){ - sb.append(propertyValue/10000f).append(DIVISION); - - }else{ - sb.append(propertyValue).append(DIVISION); - } - } - - } - return sb; + return getHeroPropertyBuilder(sb, hero.getTempleteId(), hero.getLevel(), heroAttributeMap); } + public StringBuilder getRobotHeroProperty(SArenaRobotConfig sArenaRobotConfig,SCHero scHero, StringBuilder sb,Map robotHeroAttribute){ int robotLevel = sArenaRobotConfig.getRoleLv(); @@ -1524,6 +1504,11 @@ public class HeroLogic{ return heroAllAttribute; } + + /** + * 属性数值计算 + * @param heroAllAttribute + */ public void calInteractAdd(Map heroAllAttribute){ Map propertyPercentMap = new HashMap<>(); Iterator> iterator = heroAllAttribute.entrySet().iterator(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index f7258daa6..eaa90216d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -458,7 +458,7 @@ public class StoreLogic implements IEventHandler { if(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() == 10){ user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_SEVEN_GIFT,storeId,itemNum); } - if(itemId==10005){ + if(storeId==Global.GODSTORID){ Poster.getPoster().dispatchEvent(new GoldEvent(user.getId(),itemNum)); }