From 53b29d606e186c18d29e1239f6235d70e3384deb Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Tue, 14 Dec 2021 17:58:31 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=A5=9E=E5=B0=86=E5=9B=9E=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/exception/ErrorCode.java | 2 + .../com/ljsd/jieling/globals/BIReason.java | 1 + .../jieling/handler/HeroReturnHandler.java | 14 ++-- .../ljsd/jieling/ktbeans/ReportEventEnum.java | 2 + .../logic/activity/AbstractActivity.java | 14 ++++ .../ljsd/jieling/logic/hero/HeroLogic.java | 76 ++++++++++++++++++- .../jieling/logic/store/BuyGoodsNewLogic.java | 5 +- .../java/com/ljsd/jieling/util/ItemUtil.java | 3 +- 8 files changed, 109 insertions(+), 8 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java b/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java index 54daeded3..d7669248f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/exception/ErrorCode.java @@ -181,6 +181,8 @@ public enum ErrorCode implements IErrorCode { SHOP_XIA_JIA(150,"商品已下架"), SHOP_COLSE(151,"商店已关闭"), SHOP_NO_ITEM(152,"商品不存在"), + HERO_RETURN_ONLY_LEVEL_ONE(153,"只有1级的神将才可回退,请先进行归元!"), + HERO_RETURN_CAN_NOT(154,"此神将不可回退"), GUILD_NOT_AUTHORITY(300,"账号因错误发言导致相关功能封禁中,操作失败"), diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 3a4450646..d2e86322e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -176,6 +176,7 @@ public interface BIReason { int ENDLESS_TREASURE_REWARD = 100;//无尽秘宝获得 int ENDLESS_RESET = 101;//无尽重置获得 + int HERO_RETURN = 102;// 神将回退 int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/HeroReturnHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/HeroReturnHandler.java index 6e22c350e..ff1dcfa24 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/HeroReturnHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/HeroReturnHandler.java @@ -21,11 +21,15 @@ public class HeroReturnHandler extends BaseHandler getAllMissInfo(User user,ActivityMission activityMission, Set filter) { Map activityProgressInfoMap = activityMission.getActivityMissionMap(); List missionInfos = new ArrayList<>(activityProgressInfoMap.size()); + long now = TimeUtils.now(); for (Map.Entry missionProgress : activityProgressInfoMap.entrySet()) { if (filter != null && !filter.contains(missionProgress.getKey())) { continue; } Integer missionId = missionProgress.getKey(); + SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByMissionId(missionId); + if (sActivityRewardConfig == null) { + continue; + } + if(id == ActivityType.RechargeTotal){ + // 2021-12-22 09:00:00 之后开的服,首充不显示累充满100元任务 + if (now > 1640134800000L) { + int value = sActivityRewardConfig.getValues()[0][0]; + if (value == 100) { + continue; + } + } + } ActivityProgressInfo activityProgressInfo = missionProgress.getValue(); missionInfos.add(CommonProto.ActivityInfo.MissionInfo.newBuilder().setMissionId(missionId).setProgress(activityProgressInfo.getProgrss()).setState(activityProgressInfo.getState()).build()); } 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 bc916ea4a..bc490284d 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 @@ -255,7 +255,6 @@ public class HeroLogic { public void random(ISession session, int type) throws Exception { - long time = System.currentTimeMillis(); int uid = session.getUid(); User user = UserManager.getUser(uid); SLotterySetting sLotterySetting = STableManager.getConfig(SLotterySetting.class).get(type); @@ -4014,6 +4013,81 @@ public class HeroLogic { MessageUtil.sendMessage(session, 1, responseMsgId, build, true); } + + + /** + * 神将回退 + * 仅限6-9星神将 + * @param session + * @param heroId + * @throws Exception + */ + public void heroReturn(ISession session, String heroId) throws Exception { + int uid = session.getUid(); + int responseMsgId = MessageTypeProto.MessageType.HERO_RETURN_RESPONSE_VALUE; + User user = UserManager.getUser(uid); + Hero hero = user.getHeroManager().getHero(heroId); + if (hero == null || hero.getOriginalLevel() != 1) { + throw new ErrorCodeException(ErrorCode.HERO_RETURN_ONLY_LEVEL_ONE); + } + SCHero scHero = SCHero.sCHero.get(hero.getTemplateId()); + int[][] returnBook = scHero.getReturnBook(); + if (returnBook == null || returnBook.length == 0) { + throw new ErrorCodeException(ErrorCode.HERO_RETURN_CAN_NOT); + } + List returnPercent = new ArrayList<>(5); + for (int i = 0; i < returnBook.length; i++) { + if (returnBook[i][0] == hero.getStar()) { + returnPercent.add(returnBook[i]); + continue; + } + } + if (returnPercent == null) { + throw new ErrorCodeException(ErrorCode.HERO_RETURN_CAN_NOT); + } + int[][] returnReward = new int[returnPercent.size()][2]; + int j = -1; + for (int[] ints : returnPercent) { + for (int i = 1; i < ints.length; i++) { + SHeroRankupGroup sHeroRankupGroup=STableManager.getConfig(SHeroRankupGroup.class).get(ints[i]); + if (sHeroRankupGroup == null) { + continue; + } + i++; + int isSame = sHeroRankupGroup.getIssame(); +// int starLimit = sHeroRankupGroup.getStarLimit(); +// int isSameClan = sHeroRankupGroup.getIsSameClan(); + int isId = sHeroRankupGroup.getIsId(); + if (isSame == 1) { + j++; + returnReward[j][0] = hero.getTemplateId(); + returnReward[j][1] = ints[i]; + } + if (isId != 0) { + j++; + returnReward[j][0] = isId; + returnReward[j][1] = ints[i]; + } + } + } + CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, returnReward, BIReason.HERO_RETURN); + List itemList = drop.getItemlistList(); + List itemId = new ArrayList<>(itemList.size()); + List itemNum = new ArrayList<>(itemList.size()); + itemList.forEach(item -> { + itemId.add(item.getItemId()); + itemNum.add((int) item.getItemNum()); + }); +// ReportUtil.onReportEvent(user, ReportEventEnum.HERO_RETURN.getType(), String.valueOf(hero.getTemplateId()), hero.getLevel(user.getHeroManager()), hero.getStar(), itemId, itemNum); + hero.setLevel(1); + hero.setBreakId(0); + hero.setStar(5); + //鸿蒙阵 + addOrUpdateHongmeng(session); + HeroInfoProto.HeroReturnResponse build = HeroInfoProto.HeroReturnResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, responseMsgId, build, true); + } + /** * 法宝归元 * diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index a3a1c1f9e..918633841 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -21,7 +21,10 @@ import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.activity.ActivityTypeEnum; import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic; import com.ljsd.jieling.logic.activity.event.*; -import com.ljsd.jieling.logic.dao.*; +import com.ljsd.jieling.logic.dao.PlayerManager; +import com.ljsd.jieling.logic.dao.RechargeInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.VipInfo; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.expedition.ExpeditionLogic; import com.ljsd.jieling.logic.fight.CombatLogic; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 74c9dd596..ace90f536 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -544,7 +544,8 @@ public class ItemUtil { private static void getMap(int itemId ,long itemNum,ItemMap itemObj,float dropRatio) throws ErrorCodeException{ SItem sItem = SItem.getsItemMap().get(itemId); if(sItem==null){ - throw new ErrorCodeException("SItem配置不存在 id:"+itemId); + LOGGER.info("getMap SItem配置不存在 id:{}", itemId); + return; } int itemType =getItemType(sItem); long amount = MathUtils.numRount((itemNum * MathUtils.floatToDouble(dropRatio))); From 81f42415119803ae1f55370ffb6bdaf01d5ea2bc Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Tue, 14 Dec 2021 17:59:06 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=A5=9E=E5=B0=86=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E6=BC=8F=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tablemanager/src/main/java/config/SCHero.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tablemanager/src/main/java/config/SCHero.java b/tablemanager/src/main/java/config/SCHero.java index 74d633413..8f89fd52f 100644 --- a/tablemanager/src/main/java/config/SCHero.java +++ b/tablemanager/src/main/java/config/SCHero.java @@ -74,6 +74,8 @@ public class SCHero implements BaseConfig{ private Map> skillListByStar; + private int[][] returnBook; + // 觉醒增加的技能属性 private Map>> awakSkillMap; @@ -378,4 +380,8 @@ public class SCHero implements BaseConfig{ public int getIsSoulOpen() { return isSoulOpen; } + + public int[][] getReturnBook() { + return returnBook; + } } From 1f08ca2f33affdc1dccb4ed557701d597a7c3d1d Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Wed, 15 Dec 2021 09:45:00 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=9B=9E=E9=80=80=E6=89=80=E5=BE=97?= =?UTF-8?q?=E7=A5=9E=E5=B0=86=E4=B8=8D=E6=9B=B4=E6=96=B0=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=88=96=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/util/ItemUtil.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 2405f1e20..7f0562950 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -1354,6 +1354,10 @@ public class ItemUtil { SItem sItem = SItem.getsItemMap().get(entry.getKey()); extraDropAop(user,dropBuilder,sItem); } + // 回退所得神将不更新任务或活动 + if (reason == BIReason.HERO_RETURN) { + continue; + } fiveStarEvent(user,entry.getKey()); if(reason != BIReason.HERO_RANDOM){ fiveStarPushByCombine(user,entry.getKey(),count); @@ -1389,8 +1393,10 @@ public class ItemUtil { PlayerManager playerInfoManager = user.getPlayerInfoManager(); int[] heroStar = SItem.getsItemMap().get(cardId).getHeroStar(); Hero hero = new Hero(user.getId(),heroStar[0],heroStar[1]); - if (hero.getStar() == GlobalsDef.WUJINGMIBAO_STAR){ - Poster.getPoster().dispatchEvent(new SummonTreasureEvent(user.getId(),hero.getStar(),1)); + if (reason != BIReason.HERO_RETURN) { + if (hero.getStar() == GlobalsDef.WUJINGMIBAO_STAR){ + Poster.getPoster().dispatchEvent(new SummonTreasureEvent(user.getId(),hero.getStar(),1)); + } } heroManager.addHero(hero); // 鸿蒙阵推送 From 3b112b0dff8b090a05ab76eb9a4abf5716d05d53 Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Wed, 15 Dec 2021 10:57:50 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=9B=9E=E9=80=80=E4=B8=8D=E9=A3=98?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 2 +- .../src/main/java/com/ljsd/jieling/util/ItemUtil.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) 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 bc490284d..84be6feba 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 @@ -4042,7 +4042,7 @@ public class HeroLogic { continue; } } - if (returnPercent == null) { + if (returnPercent.isEmpty()) { throw new ErrorCodeException(ErrorCode.HERO_RETURN_CAN_NOT); } int[][] returnReward = new int[returnPercent.size()][2]; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 7f0562950..207cf7c6d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -1403,12 +1403,15 @@ public class ItemUtil { HeroLogic.getInstance().addOrUpdateHongmeng(OnlineUserManager.getSessionByUid(user.getId())); heroList.add(CBean2Proto.getHero(hero)); SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); - if (scHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_lottery_content_parm)) { //策划资质改成星级 + if (reason != BIReason.HERO_RETURN && scHero.getStar() >= SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_lottery_content_parm)) { //策划资质改成星级 String message = SErrorCodeEerverConfig.getI18NMessageNeedConvert("lamp_lottery_content", new Object[]{playerInfoManager.getNameColor(), playerInfoManager.getNickName(), scHero.getStar(), scHero.getReadingName()},new int[]{0,0,0,1}); if (!message.isEmpty()){ ChatLogic.getInstance().sendSysChatMessage(message,Global.LUCKY_LUCK,String.valueOf(hero.getTemplateId()),0,0,0,0,0); } } + if (reason != BIReason.HERO_RETURN) { + return; + } user.getUserMissionManager().onGameEvent(user,GameEvent.GET_HERO,heroStar[0],heroStar[1]); // KtEventUtils.onKtEvent(user, ParamEventBean.UserItemEvent,reason,GlobalsDef.addReason,cardId,1,heroStar[1]); ReportUtil.onReportEvent(user,ReportEventEnum.GET_HERO.getType(),String.valueOf(cardId),String.valueOf(hero.getStar()),String.valueOf(reason));