From f73829b5d43af672c8c3599724fc1cbd7b3c622e Mon Sep 17 00:00:00 2001 From: lilei Date: Mon, 17 Aug 2020 15:01:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=92=E9=BE=99=E7=A7=98=E5=AE=9D=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=83=A8=E5=88=86=E4=BB=BB=E5=8A=A1=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/core/VipPrivilegeType.java | 2 + .../jieling/handler/ServerZeroHandler.java | 7 ++- .../jieling/logic/activity/ActivityLogic.java | 6 +- .../logic/activity/TreasureActivity.java | 57 ++++++++++++++---- .../jieling/logic/dao/CumulationData.java | 60 +++++++++++++++++++ .../jieling/logic/dao/UserMissionManager.java | 11 ++-- .../ljsd/jieling/logic/mission/GameEvent.java | 3 + .../jieling/logic/mission/MissionType.java | 11 ++++ .../data/ArenaConsecutiveWinManager.java | 47 +++++++++++++++ .../mission/data/ChampionshipRankManager.java | 36 +++++++++++ .../mission/data/DataManagerDistributor.java | 5 +- .../mission/data/GotSoulMarkManager.java | 37 ++++++++++++ .../event/MissionEventDistributor.java | 11 ++++ .../java/com/ljsd/jieling/util/ItemUtil.java | 2 + .../src/main/java/config/SSpecialConfig.java | 2 +- .../config/STreasureSunlongTaskConfig.java | 14 ++++- 16 files changed, 285 insertions(+), 26 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ArenaConsecutiveWinManager.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ChampionshipRankManager.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GotSoulMarkManager.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/VipPrivilegeType.java b/serverlogic/src/main/java/com/ljsd/jieling/core/VipPrivilegeType.java index ca00124f1..df0924ee9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/VipPrivilegeType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/VipPrivilegeType.java @@ -45,4 +45,6 @@ public interface VipPrivilegeType { int SIGN_AGAIN = 1005; //每日签到充值后再领一次 int ADVENTURE_ADD_TIME = 2002;//挂机时常增加 + int DRAGON_TREASURE_SUPPLY = 1007;//青龙宝藏每周补给 + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java index 3dd8aa3a2..f11eae99a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/ServerZeroHandler.java @@ -33,8 +33,9 @@ public class ServerZeroHandler extends BaseHandler { GlobalDataManaager.flushGoodsTimes(user); PlayerLogic.getInstance().sendDayilyMail(user,-1); user.getUserMissionManager().onGameEvent(user, GameEvent.LOGIN_GAME,0); - //发送每日孙龙邮件 - if(user.getPlayerInfoManager().getHadBuyTreasure()!=0){ + //发送每日孙龙邮件l + // 这段暂时注掉,青龙秘宝没有这个需求,防止活动开启后发送错误的邮件 + /*if(user.getPlayerInfoManager().getHadBuyTreasure()!=0){ Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); for(Map.Entry entry:activityMissionMap.entrySet()){ if(SGlobalActivity.getsGlobalActivityMap().get(entry.getKey()).getType()== ActivityType.TREASURE){ @@ -42,7 +43,7 @@ public class ServerZeroHandler extends BaseHandler { break; } } - } + }*/ } } 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 c17709763..bc70b8e73 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 @@ -1246,9 +1246,11 @@ public class ActivityLogic implements IEventHandler{ } int num = 0; int[][] cost= SSpecialConfig.getTwiceArrayValue(SSpecialConfig.SUNLONG_COST); - for(int i = level;i>treasureLevel;i--){ + //这段代码并没有实现每一级相同的购买价格??? + /*for(int i = level;i>treasureLevel;i--){ num+=MathUtils.calABX(i,cost[1]); - } + }*/ + num = (int)MathUtils.calABX(level - treasureLevel, cost[1]); int[][] costItems = new int[1][]; int[] costTemp = {cost[0][0],num}; costItems[0]=costTemp; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java index 13200a416..7329a0482 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/TreasureActivity.java @@ -1,12 +1,15 @@ package com.ljsd.jieling.logic.activity; +import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.dao.Item; import com.ljsd.jieling.logic.dao.PlayerManager; 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.mission.GameEvent; import com.ljsd.jieling.logic.store.GiftGoodsType; @@ -16,10 +19,9 @@ import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; -import config.SGlobalActivity; -import config.SRechargeCommodityConfig; -import config.STreasureSunlongConfig; +import config.*; +import javax.lang.model.type.PrimitiveType; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -33,16 +35,19 @@ public class TreasureActivity extends AbstractActivity { @Override public void onResume(User user) throws Exception { - LOGGER.info("戒灵秘宝日常刷新..."); + LOGGER.info("青龙秘宝日常刷新..."); user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_WEEK_REFRESH, id); - user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH, id); + //TODO 周任务刷新需关联刷新每周补给特权状态,活动开启时同样需要清除之前的特权状态 + //戒灵秘宝改为青龙秘宝,只有周任务和月任务 2020.8.14 + //user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH, id); } @Override public void initActivity(User user) throws Exception { - LOGGER.info("戒灵秘宝初始化..."); + + LOGGER.info("[青龙秘宝初始化] [uid:{}]",user.getId()); if(user.getPlayerInfoManager().getHadBuyTreasure() == 1){ - LOGGER.info("戒灵秘宝初始化...reset buy"); + LOGGER.info("[青龙秘宝初始化] [重置秘宝解锁状态] [uid:{}]",user.getId()); user.getPlayerInfoManager().setHadBuyTreasure(0); int id=0; for(SRechargeCommodityConfig sRechargeCommodityConfig : SRechargeCommodityConfig.rechargeCommodityConfigMap.values()){ @@ -56,7 +61,8 @@ public class TreasureActivity extends AbstractActivity { SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_MONTH_REFRESH, sGlobalActivity.getId()); user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_WEEK_REFRESH, sGlobalActivity.getId()); - user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH, sGlobalActivity.getId()); + //戒灵秘宝改为青龙秘宝,只有周任务和月任务 2020.8.14 + //user.getUserMissionManager().onGameEvent(user, GameEvent.TREASH_REFRESH, sGlobalActivity.getId()); ActivityMission activityMission = new ActivityMission(); List levels = new ArrayList<>(STreasureSunlongConfig.levelTreasureConfigMap.get(id).keySet()); if(levels.contains(0)){ @@ -79,20 +85,45 @@ public class TreasureActivity extends AbstractActivity { return true; } + /** + * 领取活动奖励 + * @param session + * @param user + * @param activityId + * @param missionId -2:每日补给,-1:全部奖励,其他为特定的奖励 + * @throws Exception + */ private void takeTreasureReward(ISession session, User user, int activityId, int missionId) throws Exception { int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE; ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(activityId); int changeState = getChangerState(user); List dropList = new ArrayList<>(2); // Set missionIds = new HashSet<>(); - if(missionId==-1){ - getAllTreasureRewards(user,activityMission,changeState,dropList); - }else{ + if (missionId == -2) { + if (user.getPlayerInfoManager().getHadBuyTreasure() == 0) { + throw new ErrorCodeException(ErrorCode.newDefineCode("请先解锁秘宝")); + } + boolean received = false; + VipInfo vipInfo = user.getPlayerInfoManager().getVipInfo().get(VipPrivilegeType.DRAGON_TREASURE_SUPPLY); + if (vipInfo != null) { + if (vipInfo.getCount() > 0) { + received = true; + } + } + if (received) { + throw new ErrorCodeException(ErrorCode.newDefineCode("本周补给已领取")); + } + user.getPlayerInfoManager().updateVipPrivilage(VipPrivilegeType.DRAGON_TREASURE_SUPPLY,1); + int[][] rewards = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.SUNLONG_REWARD); + dropList.add(rewards); + } else if (missionId == -1) { + getAllTreasureRewards(user, activityMission, changeState, dropList); + } else { int state = activityMission.getActivityMissionMap().get(missionId).getState(); - if(state==changeState||state==ActivityType.FINISH_TAKED){ + if (state == changeState || state == ActivityType.FINISH_TAKED) { throw new ErrorCodeException(ErrorCode.newDefineCode("该奖励已领取过")); } - dropByState(dropList,state,changeState,missionId); + dropByState(dropList, state, changeState, missionId); ActivityProgressInfo progressInfo = new ActivityProgressInfo(); progressInfo.setState(changeState); progressInfo.setProgrss(0); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java index 47868bbab..df2d4f4fc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java @@ -53,6 +53,7 @@ public class CumulationData { private int arenaScore; + private int consumeGem ; private Map storyFightInfo =new HashMap<>(3); @@ -150,6 +151,14 @@ public class CumulationData { public int car_play_time;// public int car_play_loot_time;// + //指定品质魂印获取数量 + private Map qualitySoulMarkMap = new HashMap<>(); + + //竞技场连胜,正的代表上一场赢了,负的代表上一场输了 + private int arenaConsecutiveWin; + + //巅峰联赛名次 + private int championshipRank; public Result updateData(MissionType missionType, Object...parm) throws Exception { return DataManagerDistributor.updateData(this, missionType,parm); @@ -294,4 +303,55 @@ public class CumulationData { public Map getStoryFightInfo() { return storyFightInfo; } + + public Map getQualitySoulMarkMap() { + if (qualitySoulMarkMap == null) { + qualitySoulMarkMap = new HashMap<>(); + } + return qualitySoulMarkMap; + } + + public void setQualitySoulMarkMap(Map qualitySoulMarkMap) { + this.qualitySoulMarkMap = qualitySoulMarkMap; + } + + /** + * 增加指定品质魂印获取数量 + * @param quality + * @param num + */ + public void addQualitySoulMarkNum(int quality, int num){ + if (qualitySoulMarkMap == null) { + qualitySoulMarkMap = new HashMap<>(); + } + qualitySoulMarkMap.merge(quality, num, (oldV, newV) -> oldV + newV); + } + + /** + * 获取指定品质的魂印获得的数量 + * @param quality + * @return + */ + public int getQualitySoulMarkNum(int quality){ + if (qualitySoulMarkMap == null) { + qualitySoulMarkMap = new HashMap<>(); + } + return qualitySoulMarkMap.getOrDefault(quality,0); + } + + public int getArenaConsecutiveWin() { + return arenaConsecutiveWin; + } + + public void setArenaConsecutiveWin(int arenaConsecutiveWin) { + this.arenaConsecutiveWin = arenaConsecutiveWin; + } + + public int getChampionshipRank() { + return championshipRank; + } + + public void setChampionshipRank(int championshipRank) { + this.championshipRank = championshipRank; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java index 01f3e3a3e..7a1c4bca5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserMissionManager.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.clazzStaticCfg.TaskStaticConfig; +import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; @@ -103,9 +104,10 @@ public class UserMissionManager extends MongoBase { break; case TREASH_WEEK_REFRESH: int[] weekRefreshIds = resetTreasureTaskInfo(2,missionTypeEnumListMap,treasureWeekCumulationData); - if(weekRefreshIds!=null){ + if(weekRefreshIds != null){ treasureWeekCumulationData = new CumulationData(); int weekRefreshTime = (int)(TimeUtils.getNextWeekendStartTime(1,5)/1000); + user.getPlayerInfoManager().clearVipCount(VipPrivilegeType.DRAGON_TREASURE_SUPPLY); CommonProto.RefreshTask.Builder task2= treasureIndicationBuild(2, weekRefreshIds).setRefreshTime(weekRefreshTime); PlayerInfoProto.TreasureRefreshIndication indication2 = PlayerInfoProto.TreasureRefreshIndication.newBuilder().addTasks(task2.build()).build(); MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.TREASURE_REFRESH_INDICATION_VALUE,indication2,true); @@ -379,15 +381,15 @@ public class UserMissionManager extends MongoBase { if(!treasureMissionIdsType.getDoingMissionIds().isEmpty() ){ List sTreasureTaskConfigs = STreasureSunlongTaskConfig.sTreasureTaskConfigListByTypeMapTmp.get(missionType.getMissionTypeValue()); if(sTreasureTaskConfigs!=null){ - CumulationData.Result result = treasureCumulationData.updateData(missionType, parm); + //CumulationData.Result result = treasureCumulationData.updateData(missionType, parm); CumulationData.Result weekResult = treasureWeekCumulationData.updateData(missionType, parm); CumulationData.Result monthResult = treasureMonthCumulationData.updateData(missionType, parm); - if(result!=null){ + /*if(result!=null){ result.setMissionTimeType(1); treasureMissionIdsType.calCumulationDataResult(user,result,missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION),treasureCumulationData); updateString("treasureCumulationData",treasureCumulationData); updateString("treasureMissionIdsType",treasureMissionIdsType); - } + }*/ if(weekResult!=null){ weekResult.setMissionTimeType(2); treasureMissionIdsType.calCumulationDataResult(user,weekResult,missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION),treasureWeekCumulationData); @@ -489,6 +491,7 @@ public class UserMissionManager extends MongoBase { } return tasks; } + private CommonProto.RefreshTask.Builder treasureIndicationBuild(int type,int[] refreshIds){ CommonProto.RefreshTask.Builder task = CommonProto.RefreshTask.newBuilder().setType(type); for(int i = 0;i= 0) { + data.setArenaConsecutiveWin(data.getArenaConsecutiveWin() + 1); + }else{ + //为负代表上一场输了 + data.setArenaConsecutiveWin(1); + } + } else if (data.getArenaConsecutiveWin() > 0) { + data.setArenaConsecutiveWin(-data.getArenaConsecutiveWin()); + } + result = new CumulationData.Result(missionType); + } + return result; + } + + @Override + public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) { + if(data.getArenaConsecutiveWin() < 0) return false; + return data.getArenaConsecutiveWin() >= cfgValue[1][0]; + } + + @Override + public int getProcess(User user, CumulationData data, int[] missionSubType) { + return data.getArenaConsecutiveWin() > 0 ? data.getArenaConsecutiveWin() : 0; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ChampionshipRankManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ChampionshipRankManager.java new file mode 100644 index 000000000..c53530efa --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ChampionshipRankManager.java @@ -0,0 +1,36 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.MissionType; + +/** + * @author lilei + * @description 巅峰联赛排名 + * @create 2020-08-17 14:51 + */ +public class ChampionshipRankManager extends AbstractDataManager { + + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + CumulationData.Result result = null; + if (missionType == MissionType.CHAMPIONSHIP_RANK) { + int rank = (int)parm[0]; + if (data.getChampionshipRank() == 0 || data.getChampionshipRank() > rank) { + data.setChampionshipRank(rank); + result = new CumulationData.Result(missionType); + } + } + return result; + } + + @Override + public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) { + return super.isFinish(user, data, cfgValue, parm); + } + + @Override + public int getProcess(User user, CumulationData data, int[] missionSubType) { + return super.getProcess(user, data, missionSubType); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java index 4892625ff..79b81849e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DataManagerDistributor.java @@ -1,7 +1,6 @@ package com.ljsd.jieling.logic.mission.data; import com.ljsd.jieling.logic.dao.CumulationData; -import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mission.MissionType; import java.util.HashMap; @@ -136,8 +135,10 @@ public class DataManagerDistributor { judges.put(MissionType.RANDOM_All_TIMES,new RandomAllTypeTimes()); judges.put(MissionType.ITEMUSE,new ItemUseDataManager()); + judges.put(MissionType.GOT_SOUL_MARK, new GotSoulMarkManager()); + judges.put(MissionType.ARENA_CONSECUTIVE_WIN, new ArenaConsecutiveWinManager()); - + judges.put(MissionType.CHAMPIONSHIP_RANK, new ChampionshipRankManager()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GotSoulMarkManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GotSoulMarkManager.java new file mode 100644 index 000000000..976e530bc --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/GotSoulMarkManager.java @@ -0,0 +1,37 @@ +package com.ljsd.jieling.logic.mission.data; + +import com.ljsd.jieling.logic.dao.CumulationData; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mission.MissionType; +import config.SItem; +import manager.STableManager; + +/** + * @author lilei + * @create 2020-08-14 20:35 + * @description 获取指定品质魂印任务 + */ +public class GotSoulMarkManager extends AbstractDataManager { + + @Override + public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + CumulationData.Result result = null; + int itemId = (int)parm[0]; + int num = (int)parm[1]; + if(missionType == MissionType.GOT_SOUL_MARK){ + data.addQualitySoulMarkNum(STableManager.getConfig(SItem.class).get(itemId).getQuantity(),num); + result = new CumulationData.Result(missionType); + } + return result; + } + + @Override + public boolean isFinish(User user, CumulationData data, int[][] cfgValue, Object... parm) { + return data.getQualitySoulMarkNum(cfgValue[0][0]) >= cfgValue[1][0]; + } + + @Override + public int getProcess(User user, CumulationData data, int[] missionSubType) { + return data.getQualitySoulMarkNum(missionSubType[0]); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java index 8662e6afe..66f7ec4bd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/event/MissionEventDistributor.java @@ -89,6 +89,7 @@ public class MissionEventDistributor { typeList.add(MissionType.ARENA_CHALLENEGE_NUMS); typeList.add(MissionType.ARENA_SCORE); typeList.add(MissionType.ARENA_FIGHTSUCCES_TIMES); + typeList.add(MissionType.ARENA_CONSECUTIVE_WIN); eventEnumListMap.put(GameEvent.ARENA_CHALLENGE,typeList); eventProcessor.put(GameEvent.ARENA_CHALLENGE,new CumulationDataEventProcessor()); @@ -397,6 +398,16 @@ public class MissionEventDistributor { eventEnumListMap.put(GameEvent.CAR_PLAY_LOOT,typeList); eventProcessor.put(GameEvent.CAR_PLAY_LOOT,new CumulationDataEventProcessor()); + typeList = new ArrayList<>(); + typeList.add(MissionType.GOT_SOUL_MARK); + eventEnumListMap.put(GameEvent.GOT_SOUL_MARK, typeList); + eventProcessor.put(GameEvent.GOT_SOUL_MARK, new CumulationDataEventProcessor()); + + typeList = new ArrayList<>(); + typeList.add(MissionType.CHAMPIONSHIP_RANK); + eventEnumListMap.put(GameEvent.CHAMPIONSHIP_RANK, typeList); + eventProcessor.put(GameEvent.CHAMPIONSHIP_RANK, new CumulationDataEventProcessor()); + } public static final ThreadLocal>> threadMissionChangeList = 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 2c92e8842..b42869f45 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -619,6 +619,8 @@ public class ItemUtil { user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),itemNum); ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),itemNum,reason); } + } else if (sItem.getItemType() == GlobalItemType.SOUL_MARK) { + user.getUserMissionManager().onGameEvent(user, GameEvent.GOT_SOUL_MARK, sItem.getId(), itemNum); } } if (dropBuilder != null) { diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 02d82dab3..c950ea8bc 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -50,7 +50,7 @@ public class SSpecialConfig implements BaseConfig { public static final String SUNLONG_DAILYTASKS = "Sunlong_DailyTasks";//孙龙的宝藏每日、每周、每月任务个数 public static final String SUNLONG_COST = "Sunlong_Cost";//孙龙的宝藏购买等级 public static final String SUNLONG_INTEGRAL = "Sunlong_Integral";//孙龙的宝藏每日积分礼包 - public static final String SUNLONG_REWARD = "Sunlong_Reward";//孙龙的宝藏礼包\ + public static final String SUNLONG_REWARD = "Sunlong_Reward";//青龙秘宝每周补给 public static final String LAMP_TEXT_SPEED = "lamp_text_speed";//跑马灯速度 public static final String TIME_LIMIT_RECRUITMENT_INTEGRAL = "time_limit_recruitment_integral";//限时抽卡一次积分 public static final String TIME_LIMIT_RECRUITMENT_FREEINTEGRAL = "time_limit_recruitment_FreeIntegral";//东海寻仙每获得150分赠送一次免费招募 diff --git a/tablemanager/src/main/java/config/STreasureSunlongTaskConfig.java b/tablemanager/src/main/java/config/STreasureSunlongTaskConfig.java index 95f39eda3..4839bea3f 100644 --- a/tablemanager/src/main/java/config/STreasureSunlongTaskConfig.java +++ b/tablemanager/src/main/java/config/STreasureSunlongTaskConfig.java @@ -30,6 +30,13 @@ public class STreasureSunlongTaskConfig implements BaseConfig { public static Map> taskTypeMap; public static Map> sTreasureTaskConfigListByTypeMapTmp; + + /** + * 提出来一本轮配置任务奖励的积分道具的ID + * 用来在活动开始的时候,清除玩家背包里上一轮相同的积分道具 + */ + private static int TASK_INTEGRAL; + @Override public void init() throws Exception { treasureTaskConfig = STableManager.getConfig(STreasureSunlongTaskConfig.class); @@ -39,6 +46,9 @@ public class STreasureSunlongTaskConfig implements BaseConfig { STreasureSunlongTaskConfig entryValue = entry.getValue(); taskTypeMap.computeIfAbsent(entryValue.getType(),v->new ArrayList<>()).add(entry.getKey()); sTreasureTaskConfigListByTypeMapTmp.computeIfAbsent(entryValue.getTaskType(),v->new ArrayList<>()).add(entryValue); + if (TASK_INTEGRAL == 0) { + TASK_INTEGRAL = entryValue.integral[0][0]; + } } } @@ -71,5 +81,7 @@ public class STreasureSunlongTaskConfig implements BaseConfig { return weight; } - + public static int getTaskIntegral() { + return TASK_INTEGRAL; + } } \ No newline at end of file