易经宝库道具回收

zhangshanxue 2020-11-17 16:59:04 +08:00
parent f303840402
commit 16ded73f10
3 changed files with 84 additions and 37 deletions

View File

@ -157,6 +157,7 @@ public interface BIReason {
int SPECIAL_MONSTER_REWARD = 88;//灵兽涅槃获得
int SPECIAL_FREE_PIECE_REWARD = 89;//灵兽放生获得
int SKIN_USE_REWARD = 90;//激活皮肤获得头像
int SUB_ACTIVITY_FINISH = 91;//易经宝库活动结束补发
int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级
int SECRETBOX_CONSUME = 1001;//秘盒抽卡
@ -293,4 +294,5 @@ public interface BIReason {
int SKIN_USE_CONSUME = 1073;//激活皮肤消耗
int SUB_ACTIVITY_CONSUME = 1074;//易经宝库
int SUB_ACTIVITY_CONSUME_FINISH = 1075;//易经宝库活动结束补发消耗
}

View File

@ -3,10 +3,13 @@ package com.ljsd.jieling.logic.activity;
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.logic.activity.event.IEvent;
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.network.session.ISession;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
@ -15,6 +18,7 @@ import com.ljsd.jieling.util.MessageUtil;
import config.*;
import manager.STableManager;
import util.MathUtils;
import util.TimeUtils;
import java.util.*;
import java.util.stream.Collectors;
@ -28,22 +32,23 @@ public class SubActivity extends AbstractActivity {
public static final int LAY_INDEX = 100;
public static final int POOL_INDEX = 1000;
public SubActivity(int id) {
super(id);
}
@Override
public void initActivity(User user)throws Exception{
public void initActivity(User user) throws Exception {
//重置奖励
randomReward(user,true);
randomReward(user, true);
}
@Override
public void onResume(User user) throws Exception {
// super.onResume(user);
//重置奖励
randomReward(user,false);
randomReward(user, false);
}
@ -54,7 +59,7 @@ public class SubActivity extends AbstractActivity {
// //checkAndUpdate state
ActivityManager activityManager = user.getActivityManager();
ActivityMission activityMission = activityManager.getActivityMissionMap().get(id);
if (activityMission == null){
if (activityMission == null) {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
if (activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) {
@ -65,49 +70,52 @@ public class SubActivity extends AbstractActivity {
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
}
//check had select
if(activityMission.getV()==0){
if (activityMission.getV() == 0) {
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
}
SBlessingConfigNew sBlessingConfigNew =SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id);
SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id);
//check cost
int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.EXPEDITION_REBORN);
if(integerValue==0){
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
int[][] cost = new int[1][2];
cost[0]=sBlessingConfigNew.getCost();
cost[0] = sBlessingConfigNew.getCost();
boolean b = ItemUtil.itemCost(user, cost, BIReason.SUB_ACTIVITY_CONSUME, 1);
if(!b){
if (!b) {
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
int size = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size();
if(size==0){
if (size == 0) {
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
}
//get reward
long count = activityMission.getActivityMissionMap().values().stream().filter(activityProgressInfo1 -> activityProgressInfo1.getState() == ActivityType.HAD_TAKED).count();
//后5个概率提前结束抽奖
if (count != (size - 1) && count >= (size - 5) && (Math.random() * 5 < 1)) {
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().add((int) count, activityMission.getV());
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().remove(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size() - 1);
}
Integer rewardId = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().get((int) count);
SBlessingRewardPoolNew sBlessingRewardPoolNew = STableManager.getConfig(SBlessingRewardPoolNew.class).get(rewardId);
int[] reward = sBlessingRewardPoolNew.getReward();
int[][] rewards = new int[1][];
rewards[0]=reward;
rewards[0] = reward;
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards, BIReason.TAKE_ACTIVITY_REWARD);
//up miss
activityProgressInfo.setProgrss(rewardId);
activityProgressInfo.setState( ActivityType.HAD_TAKED);
activityProgressInfo.setState(ActivityType.HAD_TAKED);
int curLay = user.getActivityManager().getSubRewardPoolInfo().getLay();
if(curLay!=sBlessingConfigNew.getFloorCount()&&count==(size-1)){
if (curLay != sBlessingConfigNew.getFloorCount() && rewardId == activityMission.getV()) {
ActivityLogic.getInstance().resumeActivity(user, ActivityType.SUB_ACTIVITY);
sendActivityProgress(session, activityManager.getActivityMissionMap().get(id), null);
}else {
} else {
sendActivityProgress(session, activityMission, Collections.singleton(missionId));
}
reportTakeActivityReward(user,rewards,missionId);
reportTakeActivityReward(user, rewards, missionId);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
@ -123,16 +131,16 @@ public class SubActivity extends AbstractActivity {
/**
*
*/
private void randomReward(User user,boolean start) throws Exception{
private void randomReward(User user, boolean start) throws Exception {
//init lay
SubRewardPoolInfo subRewardPoolInfo = user.getActivityManager().getSubRewardPoolInfo();
if(subRewardPoolInfo==null){
if (subRewardPoolInfo == null) {
subRewardPoolInfo = new SubRewardPoolInfo();
user.getActivityManager().setSubRewardPoolInfo(subRewardPoolInfo);
}
int lay = user.getActivityManager().getSubRewardPoolInfo().getLay();
int curLay=lay+1;
int curLay = lay + 1;
user.getActivityManager().getSubRewardPoolInfo().setLay(curLay);
HashMap<Integer, HashSet<SBlessingRewardPoolNew>> integerHashSetHashMap = SBlessingRewardPoolNew.getsBlessingRewardPoolNewHashMap();
//init Activity
@ -149,24 +157,24 @@ public class SubActivity extends AbstractActivity {
//init reward
SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id);
if(null== sBlessingConfigNew){
if (null == sBlessingConfigNew) {
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
int[] basicPoolId = sBlessingConfigNew.getBasicPoolId();
if(basicPoolId.length<curLay){
if (basicPoolId.length < curLay) {
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
int poolID = basicPoolId[curLay-1];
int poolID = basicPoolId[curLay - 1];
HashSet<SBlessingRewardPoolNew> sBlessingRewardPoolNews = integerHashSetHashMap.get(poolID);
if(null == sBlessingRewardPoolNews){
if (null == sBlessingRewardPoolNews) {
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
List<int[]> ints = new LinkedList<>();
for (SBlessingRewardPoolNew sBlessingRewardPoolNew:sBlessingRewardPoolNews) {
for (int i = 0; i <sBlessingRewardPoolNew.getInitializeNum() ; i++) {
int[] reward= new int[2];
reward[0]=sBlessingRewardPoolNew.getId();
reward[1]=sBlessingRewardPoolNew.getInitializeNum();
for (SBlessingRewardPoolNew sBlessingRewardPoolNew : sBlessingRewardPoolNews) {
for (int i = 0; i < sBlessingRewardPoolNew.getInitializeNum(); i++) {
int[] reward = new int[2];
reward[0] = sBlessingRewardPoolNew.getId();
reward[1] = sBlessingRewardPoolNew.getInitializeNum();
ints.add(reward);
}
@ -179,26 +187,62 @@ public class SubActivity extends AbstractActivity {
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().clear();
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().addAll(list2);
for (int i = 0; i <=list2.size() ; i++) {
for (int i = 0; i <= list2.size(); i++) {
ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo();
activityProgressInfo1.setProgrss(0);
activityProgressInfo1.setState(0);
activityMission.getActivityMissionMap().put(i+1, activityProgressInfo1);
activityMission.getActivityMissionMap().put(i + 1, activityProgressInfo1);
}
//init finalRewards
if(start){
if (start) {
int finalPoolId = sBlessingConfigNew.getFinalPoolId();
HashSet<SBlessingRewardPoolNew> sBlessingRewardPoolNews1 = integerHashSetHashMap.get(finalPoolId);
for (SBlessingRewardPoolNew sBlessingRewardPoolNew:sBlessingRewardPoolNews1) {
for (SBlessingRewardPoolNew sBlessingRewardPoolNew : sBlessingRewardPoolNews1) {
ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo();
activityProgressInfo1.setProgrss(0);
activityProgressInfo1.setState(0);
activityMission.getActivityMissionMap().put(POOL_INDEX+sBlessingRewardPoolNew.getId(), activityProgressInfo1);
activityMission.getActivityMissionMap().put(POOL_INDEX + sBlessingRewardPoolNew.getId(), activityProgressInfo1);
}
}
}
@Override
public void onActivityEndOnMySelf(User user) throws Exception {
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id);
int removeItemId = sBlessingConfigNew.getCost()[0];
Item item = user.getItemManager().getItem(removeItemId);
if (item != null) {
int costNum = item.getItemNum();
//check cost
int[][] cost = new int[1][];
cost[0] = new int[]{item.getItemId(), item.getItemNum()};
ItemUtil.itemCost(user, cost, BIReason.SUB_ACTIVITY_CONSUME_FINISH, sGlobalActivity.getId());
SItem sItem = SItem.getsItemMap().get(removeItemId);
//give
int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.ITEM_1004_RETRIEVE);
if (integerValue == 0) {
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
int[][] rewards = new int[1][];
rewards[0] = new int[]{16, costNum*integerValue};
SItem getItem = SItem.getsItemMap().get(16);
String getName =costNum*integerValue+getItem.getName();
String title = SErrorCodeEerverConfig.getI18NMessage("activity_item_retrieve_mail_titile");
String content = SErrorCodeEerverConfig.getI18NMessage("activity_item_retrieve_mail_content", new Object[]{sGlobalActivity.getSesc(),sItem.getName(),costNum,getName});
String mailReward = ItemUtil.getMailReward(rewards);
int nowTime = (int) (TimeUtils.now() / 1000);
MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
}
}
}

View File

@ -83,6 +83,7 @@ public class SSpecialConfig implements BaseConfig {
public static final String DISCOUNT_MAIN = "discount_main";//关卡礼包
public static final String ANIMAL_BROADCAST_QUALITY = "animal_broadcast_quality";
public static final String ITEM_1004_RETRIEVE = "item_1004_retrieve";// 结算补发道具16 # 50
@Override
public void init() throws Exception {