Merge branch 'master_test_gn' into master_prb_gn
commit
c898e80cd0
|
@ -4,7 +4,10 @@ import com.ljsd.jieling.exception.ErrorCode;
|
|||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.jbean.*;
|
||||
import com.ljsd.jieling.jbean.ActivityManager;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
import com.ljsd.jieling.jbean.ActivityProgressInfo;
|
||||
import com.ljsd.jieling.jbean.SubRewardPoolInfo;
|
||||
import com.ljsd.jieling.logic.activity.event.IEvent;
|
||||
import com.ljsd.jieling.logic.dao.Item;
|
||||
import com.ljsd.jieling.logic.dao.UserManager;
|
||||
|
@ -12,12 +15,12 @@ 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;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import config.*;
|
||||
import manager.STableManager;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.PlayerInfoProto;
|
||||
import util.MathUtils;
|
||||
import util.TimeUtils;
|
||||
|
||||
|
@ -56,13 +59,102 @@ public class SubActivity extends AbstractActivity {
|
|||
randomReward(user, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键挖宝
|
||||
* @param session
|
||||
* @param missionId 必须为-1
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public boolean takeAllReward(ISession session, int missionId) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
Map<Integer, ActivityProgressInfo> activityMissionMap = activityMission.getActivityMissionMap();
|
||||
List<Integer> subRewardPool = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool();
|
||||
// 奖励列表
|
||||
ArrayList<int[][]> rewardList = new ArrayList<>();
|
||||
|
||||
SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id);
|
||||
Map<Integer, SBlessingRewardPoolNew> poolNewMap = STableManager.getConfig(SBlessingRewardPoolNew.class);
|
||||
// 数据排序,并过滤非挖矿奖励id
|
||||
Map<Integer, ActivityProgressInfo> treeMap = activityMissionMap.entrySet().stream().filter(k -> k.getKey() < 100).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||
TreeMap<Integer, ActivityProgressInfo> collect = new TreeMap<>(treeMap);
|
||||
|
||||
// 消耗的数量
|
||||
int costItemNum = 1;
|
||||
int costItemId = sBlessingConfigNew.getCost()[0];
|
||||
|
||||
for (Map.Entry<Integer, ActivityProgressInfo> value : collect.entrySet()) {
|
||||
ActivityProgressInfo progressInfo = value.getValue();
|
||||
// 已领取的格子直接过滤
|
||||
if (progressInfo.getState() == ActivityType.HAD_TAKED || value.getKey() >= 100){
|
||||
continue;
|
||||
}
|
||||
// 校验消耗
|
||||
HashMap<Integer, Integer> costMap = new HashMap<>();
|
||||
costMap.put(costItemId,costItemNum);
|
||||
boolean checkCost = ItemUtil.checkCost(user, costMap);
|
||||
if (!checkCost) {
|
||||
costItemNum--;
|
||||
break;
|
||||
}
|
||||
|
||||
//get reward
|
||||
int size = subRewardPool.size();
|
||||
if (size == 0) {
|
||||
costItemNum--;
|
||||
break;
|
||||
}
|
||||
long count = activityMission.getActivityMissionMap().values().stream().filter(info -> info.getState() == ActivityType.HAD_TAKED).count();
|
||||
//后5个概率提前结束抽奖
|
||||
if (count != (size - 1) && count >= (size - 5) && ((Math.random() * 5) < 1)&& subRewardPool.get(subRewardPool.size() - 1)== activityMission.getV()) {
|
||||
subRewardPool.add((int) count, activityMission.getV());
|
||||
subRewardPool.remove(subRewardPool.size() - 1);
|
||||
}
|
||||
// 奖励
|
||||
Integer rewardId = subRewardPool.get((int) count);
|
||||
SBlessingRewardPoolNew sBlessingRewardPoolNew = poolNewMap.get(rewardId);
|
||||
rewardList.add(new int[][]{sBlessingRewardPoolNew.getReward()});
|
||||
|
||||
// mongodb update
|
||||
progressInfo.setProgrss(rewardId);
|
||||
progressInfo.setState(ActivityType.HAD_TAKED);
|
||||
activityMissionMap.put(value.getKey(),progressInfo);
|
||||
|
||||
// 是否挖到了最终奖励
|
||||
int curLay = user.getActivityManager().getSubRewardPoolInfo().getLay();
|
||||
if (curLay != sBlessingConfigNew.getFloorCount() && rewardId == activityMission.getV()) {
|
||||
ActivityLogic.getInstance().resumeActivity(user, ActivityType.SUB_ACTIVITY);
|
||||
break;
|
||||
}
|
||||
|
||||
costItemNum++;
|
||||
}
|
||||
|
||||
if (costItemNum <= 0 || rewardList.size() <= 0){
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
// 消耗道具
|
||||
ItemUtil.itemCost(user, new int[][]{{costItemId,costItemNum}}, BIReason.SUB_ACTIVITY_CONSUME, 0);
|
||||
// 获得奖励
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardList, BIReason.TAKE_ACTIVITY_REWARD);
|
||||
//任务,易经宝库翻牌子
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.SUB_ACTIVITY,costItemNum);
|
||||
// 领奖协议返回
|
||||
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
// 推送
|
||||
sendActivityProgress(session, activityMission, null);
|
||||
// 打点上报
|
||||
reportTakeActivityReward(user, rewardList, missionId);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean takeReward(ISession session, int missionId) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
|
||||
// //checkAndUpdate state
|
||||
ActivityManager activityManager = user.getActivityManager();
|
||||
// check state
|
||||
ActivityMission activityMission = activityManager.getActivityMissionMap().get(id);
|
||||
if (activityMission == null) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
|
@ -70,15 +162,20 @@ public class SubActivity extends AbstractActivity {
|
|||
if (activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) {
|
||||
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN);
|
||||
}
|
||||
ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId);
|
||||
if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) {
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
|
||||
}
|
||||
//check had select
|
||||
if (activityMission.getV() == 0) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
|
||||
}
|
||||
|
||||
// 一键领取
|
||||
if (missionId == -1){
|
||||
return takeAllReward(session,missionId);
|
||||
}
|
||||
|
||||
ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId);
|
||||
if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) {
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
|
||||
}
|
||||
|
||||
SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id);
|
||||
//check cost
|
||||
|
@ -89,6 +186,7 @@ public class SubActivity extends AbstractActivity {
|
|||
if (!b) {
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
int size = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size();
|
||||
if (size == 0) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
|
||||
|
@ -107,7 +205,6 @@ public class SubActivity extends AbstractActivity {
|
|||
|
||||
SBlessingRewardPoolNew sBlessingRewardPoolNew = STableManager.getConfig(SBlessingRewardPoolNew.class).get(rewardId);
|
||||
|
||||
|
||||
int[] reward = sBlessingRewardPoolNew.getReward();
|
||||
int[][] rewards = new int[1][];
|
||||
rewards[0] = reward;
|
||||
|
|
|
@ -2036,6 +2036,14 @@ public class HeroLogic {
|
|||
skillList.addAll(tempHero.getPassiveSkills(2, hero.getStarBreakId()));
|
||||
}
|
||||
|
||||
// 角色初始被动
|
||||
int[] skillLogicConfig = tempHero.getInitialPassiveSkillLogicConfig();
|
||||
if (skillLogicConfig != null && skillLogicConfig.length > 0){
|
||||
for (int skill : skillLogicConfig) {
|
||||
skillList.add(skill);
|
||||
}
|
||||
}
|
||||
|
||||
Map<Integer, SEquipConfig> config = STableManager.getConfig(SEquipConfig.class);
|
||||
|
||||
//魂印
|
||||
|
|
|
@ -22,7 +22,10 @@ import com.ljsd.jieling.logic.GlobleSystemLogic;
|
|||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
|
||||
import com.ljsd.jieling.logic.activity.event.*;
|
||||
import com.ljsd.jieling.logic.activity.event.GuildForceChangeEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
|
||||
import com.ljsd.jieling.logic.activity.event.UserForceChangeEvent;
|
||||
import com.ljsd.jieling.logic.activity.eventhandler.UserForceUpEventHandler;
|
||||
import com.ljsd.jieling.logic.dao.Pokemon;
|
||||
import com.ljsd.jieling.logic.dao.PropertyItem;
|
||||
|
@ -45,7 +48,6 @@ import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
|
|||
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
|
||||
import com.ljsd.jieling.logic.mission.main.ServenMissionIdsType;
|
||||
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag;
|
||||
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
|
||||
|
@ -53,7 +55,6 @@ import com.ljsd.jieling.network.session.ISession;
|
|||
import com.ljsd.jieling.thrift.idl.*;
|
||||
import com.ljsd.jieling.thrift.pool.ClientAdapterPo;
|
||||
import com.ljsd.jieling.util.*;
|
||||
import com.mongodb.Mongo;
|
||||
import config.*;
|
||||
import manager.STableManager;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -64,7 +65,6 @@ import rpc.protocols.PlayerInfoProto;
|
|||
import util.MathUtils;
|
||||
import util.TimeUtils;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
|
|
@ -80,6 +80,8 @@ public class SCHero implements BaseConfig{
|
|||
|
||||
private int version;
|
||||
|
||||
private int[] initialPassiveSkillLogicConfig;
|
||||
|
||||
// 觉醒增加的技能属性
|
||||
private Map<Integer,TreeMap<Integer,List<Integer>>> awakSkillMap;
|
||||
|
||||
|
@ -397,4 +399,8 @@ public class SCHero implements BaseConfig{
|
|||
public int getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public int[] getInitialPassiveSkillLogicConfig() {
|
||||
return initialPassiveSkillLogicConfig;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue