主题活动增加活动的每日任务和周任务 新增7个任务类型

xuexinpeng 2021-07-29 15:57:31 +08:00
parent 491b703d95
commit b651a983b7
19 changed files with 325 additions and 5 deletions

View File

@ -14,6 +14,7 @@ import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.util.ItemUtil;
import config.SGodSacrificeSetting;
import manager.STableManager;
@ -100,6 +101,8 @@ public class CommitShejiActivityItemRequestHandler extends BaseHandler<ActivityP
CommonProto.Drop.Builder drop = ItemUtil.drop(user, _result, BIReason.SHEJI_ACTIVITY);
guildInfo.setGuildSheJiScore(score+guildInfo.getGuildSheJiScore());
Poster.getPoster().dispatchEvent(new CommitSheJiEvent(guildId,uid,score,proto.getItemId(),proto.getItemNum()));
//社稷捐献次数
user.getUserMissionManager().onGameEvent(user, GameEvent.SHEJI_DONATE,1);
return ActivityProto.CommitShejiActivityItemResponse.newBuilder().setDrop(drop).build();
}
}

View File

@ -3151,6 +3151,7 @@ public class MapLogic {
});
ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getType(),sDailyChallengeConfig.getMonsterId(),MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),new Date(),"",0,itemIdList,itemNumList,type==1?"挑战":"扫荡",isFailed?"失败":"通过");
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_CHALLENGE,sDailyChallengeConfig.getType());
user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_CHALLENGE_COUNT,1);
MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build());
}

View File

@ -1606,6 +1606,8 @@ public class ActivityLogic implements IEventHandler{
Poster.getPoster().dispatchEvent(new ChoiceDrawCardEvent(user.getId(),activityId,num));
// 数数上报
int choiceRewardId = user.getActivityManager().getActivityMissionMap().get(activityId).getChoiceRewardId();
//限时招募 计次数
user.getUserMissionManager().onGameEvent(user, GameEvent.LIMIT_TIME_CHOICE_CARD,num);
List<String> list = rewardArrayToList(markRewards);
ReportUtil.onReportEvent(user, ReportEventEnum.CHOICE_DRAW_CARD.getType(), choiceRewardId, num, markReward[0], markReward[1], list);
// 返回奖励信息

View File

@ -10,6 +10,7 @@ import com.ljsd.jieling.logic.dao.Item;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
@ -83,6 +84,7 @@ public class SubActivity extends AbstractActivity {
//check cost
int[][] cost = new int[1][2];
cost[0] = sBlessingConfigNew.getCost();
boolean b = ItemUtil.itemCost(user, cost, BIReason.SUB_ACTIVITY_CONSUME, 1);
if (!b) {
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
@ -92,6 +94,8 @@ public class SubActivity extends AbstractActivity {
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
}
//易经宝库翻牌子
user.getUserMissionManager().onGameEvent(user, GameEvent.SUB_ACTIVITY,1);
//get reward
long count = activityMission.getActivityMissionMap().values().stream().filter(activityProgressInfo1 -> activityProgressInfo1.getState() == ActivityType.HAD_TAKED).count();
//后5个概率提前结束抽奖

View File

@ -197,6 +197,30 @@ public class CumulationData {
// 公会boss
public int guild_boss_room;
//限时招募次数
public int limit_time_choice_card_count;
// 乾坤宝盒次数
public int qian_kun_box_count;
// 灵兽招募次数
public int soul_recruit_count;
// 社稷大典捐献次数
public int sheji_activity_donate_count;
// 易经宝库翻牌子次数
public int sub_activity;
// 急速探索次数
public int take_adventure_reward_count;
//活动期间内日常副本挑战总次数
public int daily_challenge_count;
public Result updateData(MissionType missionType, Object...parm) throws Exception {
return DataManagerDistributor.updateData(this, missionType,parm);
}
@ -210,15 +234,15 @@ public class CumulationData {
public Result(MissionType subType) {
this.subType = subType;
}
public Result(MissionType subType, long value) {
this.subType = subType;
this.value = value;
}
public Result(MissionType subType) {
this.subType = subType;
}
public Result(MissionType subType, int param, long value) {
this.subType = subType;
this.param = param;

View File

@ -230,6 +230,7 @@ public class CombatLogic {
user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,9999,1);
Poster.getPoster().dispatchEvent(new SecretEvent(user.getId()));
}
user.getUserMissionManager().onGameEvent(user, GameEvent.TAKE_ADVENTURE_REWARD_COUNT,1);
FightInfoProto.TakeAventureRewardResponse build = FightInfoProto.TakeAventureRewardResponse.newBuilder().setDrop(adventureFastReward.get(1)).setRandomDrop(adventureFastReward.get(2)).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,build,true);
KtEventUtils.onKtEvent(user,ParamEventBean.UserGameType,KTGameType.TAKE_SECURE_REWARD.getIndex(),type*10);

View File

@ -382,7 +382,7 @@ public class HeroLogic{
* @param sLotterySetting
* @return
*/
private int[] drawCard(User user, SLotteryRewardConfig sLotteryRewardConfig, SLotterySetting sLotterySetting){
private int[] drawCard(User user, SLotteryRewardConfig sLotteryRewardConfig, SLotterySetting sLotterySetting)throws Exception{
HeroManager heroManager = user.getHeroManager();
// 参数
int type = sLotterySetting.getLotteryType();
@ -402,6 +402,14 @@ public class HeroLogic{
}else {
result = reward;
}
//活动抽奖计数
if(isActivityByIdAndType(sLotterySetting.getActivityId(), ActivityType.BEAUTY_BAG)){
//乾坤宝盒抽奖 计次数
user.getUserMissionManager().onGameEvent(user, GameEvent.QIAN_KUN_BOX,1);
}else if(isActivityByIdAndType(sLotterySetting.getActivityId(), ActivityType.SPECIAL_MONSTER_RANDOM_ACTIVITY)){
//灵兽招募 计次数
user.getUserMissionManager().onGameEvent(user, GameEvent.SOUL_RECRUIT,1);
}
//记录卡池抽奖次数
heroManager.putRandomType(type,num+result[1]);
return result;
@ -439,6 +447,14 @@ public class HeroLogic{
return activity.getType() == ActivityType.BEAUTY_BAG;
}
private boolean isActivityByIdAndType(int activityId,int activityType){
SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
if(activity==null){
return false;
}
return activity.getType() == activityType;
}
/**
*

View File

@ -127,4 +127,13 @@ public enum GameEvent {
GUILD_BOSS_ROOM,//公会boos副本
MISTY_TRIP_REFRESH,//缥缈之旅刷新
MISTY_TRIP,//缥缈之旅
LIMIT_TIME_CHOICE_CARD,//限时招募
QIAN_KUN_BOX,//乾坤宝盒
SOUL_RECRUIT,//灵兽招募
SHEJI_DONATE,//社稷大典捐献次数
SUB_ACTIVITY,//易经宝库翻牌子
TAKE_ADVENTURE_REWARD_COUNT,//急速探索次数
DAILY_CHALLENGE_COUNT,//日常副本挑战次数
}

View File

@ -1006,6 +1006,35 @@ public class MissionLoigc {
count = cumulationData.hardstage_node;
break;
//100以后类型继承 AbstractDataManager
case LIMIT_TIME_CHOICE_CARD:
//限时招募
count = cumulationData.limit_time_choice_card_count;
break;
case QIAN_KUN_BOX:
//乾坤宝盒
count = cumulationData.qian_kun_box_count;
break;
case SOUL_RECRUIT:
//灵兽招募
count = cumulationData.soul_recruit_count;
break;
case SHEJI_DONATE:
//社稷大典捐献次数
count = cumulationData.sheji_activity_donate_count;
break;
case SUB_ACTIVITY:
//易经宝库翻牌子
count = cumulationData.sub_activity;
break;
case TAKE_ADVENTURE_REWARD_COUNT:
//急速探索次数
count = cumulationData.take_adventure_reward_count;
break;
case DAILY_CHALLENGE_COUNT:
//副本挑战次数
count = cumulationData.daily_challenge_count;
break;
default:
count = 0;
break;

View File

@ -138,6 +138,14 @@ public enum MissionType {
ENDLESS_BIG_REWARD(130),
GUILD_BOSS_ROOM(131),//公会副本boss
LIMIT_TIME_CHOICE_CARD(132),//限时招募
QIAN_KUN_BOX(133),//乾坤宝盒
SOUL_RECRUIT(134),//灵兽招募
SHEJI_DONATE(135),//社稷大典捐献次数
SUB_ACTIVITY(136),//易经宝库翻牌子
TAKE_ADVENTURE_REWARD_COUNT(137),//急速探索次数
DAILY_CHALLENGE_COUNT(138),//日常副本挑战次
;
private int missionType;

View File

@ -0,0 +1,25 @@
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;
public class DailyChallengeManager extends AbstractDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int num = (int)parm[0];
data.daily_challenge_count += num;
return new CumulationData.Result(missionType);
}
@Override
public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) {
return data.daily_challenge_count >= value[1][0];
}
@Override
public int getProcess(User user, CumulationData data, int[] missionSubType) {
return data.daily_challenge_count;
}
}

View File

@ -161,6 +161,16 @@ public class DataManagerDistributor {
// 公会副本/boss
judges.put(MissionType.GUILD_BOSS_ROOM,new GuildBossRoomManager());
//主题活动中新增任务类型
judges.put(MissionType.LIMIT_TIME_CHOICE_CARD,new LimitTimeChoiceCard());//限时招募
judges.put(MissionType.QIAN_KUN_BOX,new QianKunBoxManager());//乾坤宝盒
judges.put(MissionType.SOUL_RECRUIT,new SoulRecruitManager());//灵兽招募
judges.put(MissionType.SHEJI_DONATE,new ShejiActivityDonateManager());//社稷大典捐献次数
judges.put(MissionType.SUB_ACTIVITY,new SubActivityManager());//社稷大典捐献次数
judges.put(MissionType.TAKE_ADVENTURE_REWARD_COUNT,new TakeAdventureRewardManager());//急速探索次数
judges.put(MissionType.DAILY_CHALLENGE_COUNT,new DailyChallengeManager());//副本挑战次数
}
public static CumulationData.Result updateData(CumulationData data, MissionType missionType, Object...parm) throws Exception {

View File

@ -0,0 +1,24 @@
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;
public class LimitTimeChoiceCard extends AbstractDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int num = (int)parm[0];
data.limit_time_choice_card_count+=num;
return new CumulationData.Result(missionType);
}
@Override
public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) {
return data.limit_time_choice_card_count>=value[1][0];
}
@Override
public int getProcess(User user, CumulationData data, int[] missionSubType) {
return data.limit_time_choice_card_count;
}
}

View File

@ -0,0 +1,25 @@
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;
public class QianKunBoxManager extends AbstractDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int num = (int)parm[0];
data.qian_kun_box_count+=num;
return new CumulationData.Result(missionType);
}
@Override
public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) {
return data.qian_kun_box_count>=value[1][0];
}
@Override
public int getProcess(User user, CumulationData data, int[] missionSubType) {
return data.qian_kun_box_count;
}
}

View File

@ -0,0 +1,25 @@
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;
//社稷大典捐献次数
public class ShejiActivityDonateManager extends AbstractDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int num = (int)parm[0];
data.sheji_activity_donate_count+=num;
return new CumulationData.Result(missionType);
}
@Override
public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) {
return data.sheji_activity_donate_count>=value[1][0];
}
@Override
public int getProcess(User user, CumulationData data, int[] missionSubType) {
return data.sheji_activity_donate_count;
}
}

View File

@ -0,0 +1,25 @@
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;
public class SoulRecruitManager extends AbstractDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int num = (int)parm[0];
data.soul_recruit_count += num;
return new CumulationData.Result(missionType);
}
@Override
public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) {
return data.soul_recruit_count>=value[1][0];
}
@Override
public int getProcess(User user, CumulationData data, int[] missionSubType) {
return data.soul_recruit_count;
}
}

View File

@ -0,0 +1,25 @@
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;
public class SubActivityManager extends AbstractDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int num = (int)parm[0];
data.sub_activity+=num;
return new CumulationData.Result(missionType);
}
@Override
public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) {
return data.sub_activity>=value[1][0];
}
@Override
public int getProcess(User user, CumulationData data, int[] missionSubType) {
return data.sub_activity;
}
}

View File

@ -0,0 +1,27 @@
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;
public class TakeAdventureRewardManager extends AbstractDataManager{
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int num = (int)parm[0];
data.take_adventure_reward_count += num;
return new CumulationData.Result(missionType);
}
@Override
public boolean isFinish(User user, CumulationData data, int[][] value, Object... parm) {
return data.take_adventure_reward_count >= value[1][0];
}
@Override
public int getProcess(User user, CumulationData data, int[] missionSubType) {
return data.take_adventure_reward_count;
}
}

View File

@ -500,6 +500,43 @@ public class MissionEventDistributor {
eventProcessor.put(GameEvent.HARSTAGE_NODE, new CumulationDataEventProcessor());
//限时招募
typeList = new ArrayList<>();
typeList.add(MissionType.LIMIT_TIME_CHOICE_CARD);
eventEnumListMap.put(GameEvent.LIMIT_TIME_CHOICE_CARD, typeList);
eventProcessor.put(GameEvent.LIMIT_TIME_CHOICE_CARD, new CumulationDataEventProcessor());
//乾坤宝盒
typeList = new ArrayList<>();
typeList.add(MissionType.QIAN_KUN_BOX);
eventEnumListMap.put(GameEvent.QIAN_KUN_BOX, typeList);
eventProcessor.put(GameEvent.QIAN_KUN_BOX, new CumulationDataEventProcessor());
//魂印招募
typeList = new ArrayList<>();
typeList.add(MissionType.SOUL_RECRUIT);
eventEnumListMap.put(GameEvent.SOUL_RECRUIT, typeList);
eventProcessor.put(GameEvent.SOUL_RECRUIT, new CumulationDataEventProcessor());
//社稷大典捐献次数
typeList = new ArrayList<>();
typeList.add(MissionType.SHEJI_DONATE);
eventEnumListMap.put(GameEvent.SHEJI_DONATE, typeList);
eventProcessor.put(GameEvent.SHEJI_DONATE, new CumulationDataEventProcessor());
//易经宝库翻牌子次数
typeList = new ArrayList<>();
typeList.add(MissionType.SUB_ACTIVITY);
eventEnumListMap.put(GameEvent.SUB_ACTIVITY, typeList);
eventProcessor.put(GameEvent.SUB_ACTIVITY, new CumulationDataEventProcessor());
//急速探索次数次数
typeList = new ArrayList<>();
typeList.add(MissionType.TAKE_ADVENTURE_REWARD_COUNT);
eventEnumListMap.put(GameEvent.TAKE_ADVENTURE_REWARD_COUNT, typeList);
eventProcessor.put(GameEvent.TAKE_ADVENTURE_REWARD_COUNT, new CumulationDataEventProcessor());
//日常副本挑战次数
typeList = new ArrayList<>();
typeList.add(MissionType.DAILY_CHALLENGE_COUNT);
eventEnumListMap.put(GameEvent.DAILY_CHALLENGE_COUNT, typeList);
eventProcessor.put(GameEvent.DAILY_CHALLENGE_COUNT, new CumulationDataEventProcessor());
}
public static final ThreadLocal<Map<GameMisionType, List<MissionStateChangeInfo>>> threadMissionChangeList =