挂机奖励回滚

master_dev
grimm 2024-04-26 18:43:06 +08:00
parent b4934dafe5
commit 477f22e7c5
8 changed files with 174 additions and 164 deletions

View File

@ -8,7 +8,6 @@ import rpc.protocols.FightInfoProto;
import rpc.protocols.MessageTypeProto;
import org.springframework.stereotype.Component;
@Deprecated
@Component
public class TakeAdventureRewardHandler extends BaseHandler {
@Override
@ -18,7 +17,7 @@ public class TakeAdventureRewardHandler extends BaseHandler {
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
// FightInfoProto.TakeAventureRewardRequest takeAventureRewardRequest = FightInfoProto.TakeAventureRewardRequest.parseFrom(netData.parseClientProtoNetData());
// CombatLogic.getInstance().takeNewAdventureReward(iSession,takeAventureRewardRequest.getType(),takeAventureRewardRequest.getPosition());
FightInfoProto.TakeAventureRewardRequest takeAventureRewardRequest = FightInfoProto.TakeAventureRewardRequest.parseFrom(netData.parseClientProtoNetData());
CombatLogic.getInstance().takeNewAdventureReward(iSession,takeAventureRewardRequest.getType(),takeAventureRewardRequest.getPosition());
}
}

View File

@ -603,7 +603,7 @@ public class Hero extends MongoBase implements Comparable<Hero>,Cloneable {
public void setBauBlesId(String bauBles) {
this.bauBlesId = bauBles;
updateString("bauBlesId", bauBlesId);
updateString("bauBlesId", bauBles);
}
public String getBauBlesId() {

View File

@ -296,15 +296,17 @@ public class HeroManager extends MongoBase {
updateString("randomPoolByType." + type, map);
}
public Map<String, Hero> getItemMap() {
return heroMap;
}
public void setItemMap(Map<String, Hero> heroMap) {
public void setHeroMap(Map<String, Hero> heroMap) {
this.heroMap = heroMap;
updateString("heroMap", heroMap);
}
public void addHero(Hero hero) throws Exception {
public void updateHero(Hero hero) {
this.heroMap.put(hero.getId(), hero);
updateString("heroMap", heroMap);
}
public void addHero(Hero hero) {
//绑定关系
hero.init(this.getRootId(),getMongoKey() + ".heroMap." + hero.getId());
updateString("heroMap." + hero.getId(), hero);

View File

@ -630,16 +630,21 @@ public class EquipLogic {
if (config == null){
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
int[][] formula = config.getFormula();
int[][] resource = config.getResource();
if (formula == null || formula.length == 0){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
}
// 消耗道具
ArrayList<int[][]> costList = new ArrayList<>();
costList.add(config.getFormula());
costList.add(config.getResource());
boolean cost = ItemUtil.checkCost(user, costList);
costList.add(formula);
costList.add(resource);
boolean cost = ItemUtil.itemCost(user, costList, BIReason.GIFT_UP_STAR_COST, 0);;
if (!cost){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[][]{{giftId, 1}}, BIReason.GIFT_UP_STAR_GET);
ItemUtil.itemCost(user, costList, BIReason.GIFT_UP_STAR_COST, 0);
// 掉落道具
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{giftId, 1}, 1, BIReason.GIFT_UP_STAR_GET);
HeroInfoProto.GiftEquipUpStarResponse.Builder builder = HeroInfoProto.GiftEquipUpStarResponse.newBuilder().setDrop(drop);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GiftEquipUpStarResponse_VALUE, builder.build(), true);
}
@ -833,17 +838,17 @@ public class EquipLogic {
User user = UserManager.getUser(session.getUid());
EquipManager equipManager = user.getEquipManager();
HeroManager heroManager = user.getHeroManager();
String baublesId = proto.getBaublesId();
String heroId = proto.getHeroId();
String baublesId = proto.getBaublesId();
Hero hero = heroManager.getHero(heroId);
if (hero == null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE, "英雄不存在");
}
String heroBauBlesId = hero.getBauBlesId();
if (baublesId.isEmpty()){
if (StringUtil.isEmpty(baublesId)){
// 卸下
Baubles baubles = equipManager.getBaubles(heroBauBlesId);
Baubles baubles = equipManager.getBaubles(hero.getBauBlesId());
hero.setBauBlesId("");
baubles.setHeroId("");
}
@ -854,6 +859,7 @@ public class EquipLogic {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE, "法宝不存在或者处于庇佑状态");
}
// 检查英雄和法宝是否各有装备
String heroBauBlesId = hero.getBauBlesId();
if (!StringUtil.isEmpty(heroBauBlesId)){
hero.setBauBlesId("");
Baubles heroBauBles = equipManager.getBaubles(heroBauBlesId);
@ -873,7 +879,6 @@ public class EquipLogic {
hero.setBauBlesId(baublesId);
baubles.setHeroId(heroId);
}
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.BaublesWearResponse_VALUE, null, true);
}

View File

@ -213,84 +213,84 @@ public class CombatLogic {
public void takeNewAdventureReward(ISession session,int type,int position) throws Exception {
User user = UserManager.getUser(session.getUid());
// Map<Integer, CommonProto.Drop> adventureFastReward;
// if(type == 2){
// adventureFastReward = getNewAdventureReward(user,false,TimeUtils.nowInt());
// if(adventureFastReward.get(1).getItemlistCount()==0){
// throw new ErrorCodeException(ErrorCode.REWARD_COLLECTING);
// }
// user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.TAKE_ADVENTUREREWARD_TIMES,1);
// }else{
// boolean update = true;
// if(position == 0){
// if(!PlayerLogic.getInstance().checkAndUpdate(user,VipPrivilegeType.FAST_MAP_LIMIT,1)) {
// update = StoreLogic.getInstance().checkBuyGoodsAndUpdate(user,7,10008,1);
// }
// }else{
// update = StoreLogic.getInstance().checkBuyGoodsAndUpdate(user,7,10015,1);
// }
// if (!update){
// throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
// }
// adventureFastReward = getNewAdventureFastReward(user, STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getAdventureFastBattle());
// user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,9999,1);
// Poster.getPoster().dispatchEvent(new SecretEvent(user.getId()));
// user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.TAKE_ADVENTURE_REWARD_COUNT, 1);
// Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.EXPLORE.getType(),1));
// }
Map<Integer, CommonProto.Drop> adventureFastReward;
if(type == 2){
adventureFastReward = getNewAdventureReward(user,false,TimeUtils.nowInt());
if(adventureFastReward.get(1).getItemlistCount()==0){
throw new ErrorCodeException(ErrorCode.REWARD_COLLECTING);
}
user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.TAKE_ADVENTUREREWARD_TIMES,1);
}else{
boolean update = true;
if(position == 0){
if(!PlayerLogic.getInstance().checkAndUpdate(user,VipPrivilegeType.FAST_MAP_LIMIT,1)) {
update = StoreLogic.getInstance().checkBuyGoodsAndUpdate(user,7,10008,1);
}
}else{
update = StoreLogic.getInstance().checkBuyGoodsAndUpdate(user,7,10015,1);
}
if (!update){
throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE);
}
adventureFastReward = getNewAdventureFastReward(user, STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getAdventureFastBattle());
user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,9999,1);
Poster.getPoster().dispatchEvent(new SecretEvent(user.getId()));
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.TAKE_ADVENTURE_REWARD_COUNT, 1);
Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.EXPLORE.getType(),1));
}
FightInfoProto.TakeAventureRewardResponse build = FightInfoProto.TakeAventureRewardResponse.newBuilder()
// .setDrop(adventureFastReward.get(1))
// .setRandomDrop(adventureFastReward.get(2))
.setDrop(adventureFastReward.get(1))
.setRandomDrop(adventureFastReward.get(2))
.build();
// KtEventUtils.onKtEvent(user,ParamEventBean.UserGameType,KTGameType.TAKE_SECURE_REWARD.getIndex(),type*10);
KtEventUtils.onKtEvent(user,ParamEventBean.UserGameType,KTGameType.TAKE_SECURE_REWARD.getIndex(),type*10);
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,build,true);
}
public Map<Integer,CommonProto.Drop> getNewAdventureReward(User user,boolean sendMail,int time) throws Exception {
// GetNewAdventureData getNewAdventureData = new GetNewAdventureData(user, sendMail,false).invoke(time);
// if (getNewAdventureData.is()) return null;
// CommonProto.Drop.Builder baseBuilder = getNewAdventureData.getBaseBuilder();
// CommonProto.Drop.Builder randomBuilder = getNewAdventureData.getRandomBuilder();
GetNewAdventureData getNewAdventureData = new GetNewAdventureData(user, sendMail,false).invoke(time);
if (getNewAdventureData.is()) return null;
CommonProto.Drop.Builder baseBuilder = getNewAdventureData.getBaseBuilder();
CommonProto.Drop.Builder randomBuilder = getNewAdventureData.getRandomBuilder();
Map<Integer, CommonProto.Drop> result = new HashMap<>(2);
// result.put(1,baseBuilder.build());
// result.put(2,randomBuilder.build());
result.put(1,baseBuilder.build());
result.put(2,randomBuilder.build());
return result;
}
private Map<Integer,CommonProto.Drop> getNewAdventureFastReward(User user,int timeDuration) throws Exception {
// MainLevelManager mainLevelManager = user.getMainLevelManager();
// SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
// int adventureRefresh = gameSetting.getAdventureRefresh();
// int times = timeDuration / adventureRefresh;
// ItemMap itemObj = new ItemMap();
// ItemMap itemRandomObj = new ItemMap();
// CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder();
// CommonProto.Drop.Builder randomBuilder = CommonProto.Drop.newBuilder();
// int fightId = mainLevelManager.getFightId();
// SMainLevelConfig mainLevelConfig = SMainLevelConfig.config.get(fightId);
// if(mainLevelManager.getState()==-1){
// for( SMainLevelConfig sMainLevelConfig : SMainLevelConfig.config.values() ){
// if(sMainLevelConfig.getNextLevel() == mainLevelManager.getFightId()){
// mainLevelConfig = sMainLevelConfig;
// break;
// }
// }
// }
// ItemUtil.combineRewardByMainLine(user,false, mainLevelConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
// ItemUtil.combineRewardByMainLine(user,true, mainLevelConfig.getRandomReward(), times,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD);
// // 小兵关卡
// SSoldierStageConfig stageConfig = SSoldierStageConfig.idMap.get(mainLevelManager.getSoldierLayerId());
// ItemUtil.combineRewardByMainLine(user,false, stageConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
//
// itemRandomObj.setEquipMap(equipAutoCombine(itemRandomObj.getEquipMap()));
// //清除无用活动道具
// removeNoUseItem(user,itemRandomObj.getItemMap());
// ItemUtil.drop(user,baseBuilder,itemObj,BIReason.ADVENTURE_BASE_REWARD);
// ItemUtil.drop(user,randomBuilder,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD);
MainLevelManager mainLevelManager = user.getMainLevelManager();
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
int adventureRefresh = gameSetting.getAdventureRefresh();
int times = timeDuration / adventureRefresh;
ItemMap itemObj = new ItemMap();
ItemMap itemRandomObj = new ItemMap();
CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder();
CommonProto.Drop.Builder randomBuilder = CommonProto.Drop.newBuilder();
int fightId = mainLevelManager.getFightId();
SMainLevelConfig mainLevelConfig = SMainLevelConfig.config.get(fightId);
if(mainLevelManager.getState()==-1){
for( SMainLevelConfig sMainLevelConfig : SMainLevelConfig.config.values() ){
if(sMainLevelConfig.getNextLevel() == mainLevelManager.getFightId()){
mainLevelConfig = sMainLevelConfig;
break;
}
}
}
ItemUtil.combineRewardByMainLine(user,false, mainLevelConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.combineRewardByMainLine(user,true, mainLevelConfig.getRandomReward(), times,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD);
// 小兵关卡
SSoldierStageConfig stageConfig = SSoldierStageConfig.idMap.get(mainLevelManager.getSoldierLayerId());
ItemUtil.combineRewardByMainLine(user,false, stageConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD);
itemRandomObj.setEquipMap(equipAutoCombine(itemRandomObj.getEquipMap()));
//清除无用活动道具
removeNoUseItem(user,itemRandomObj.getItemMap());
ItemUtil.drop(user,baseBuilder,itemObj,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.drop(user,randomBuilder,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD);
Map<Integer, CommonProto.Drop> result = new HashMap<>(2);
// result.put(1,baseBuilder.build());
// result.put(2,randomBuilder.build());
result.put(1,baseBuilder.build());
result.put(2,randomBuilder.build());
return result;
}
@ -929,74 +929,74 @@ public class CombatLogic {
}
public GetNewAdventureData invoke(int time) throws Exception {
// MainLevelManager mainLevelManager = user.getMainLevelManager();
// Map<Integer, Integer> fightStateInfo = mainLevelManager.getFightStateInfo();
// SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
// int adventureRefresh = gameSetting.getAdventureRefresh();
// int vipTimeAdd = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user, VipPrivilegeType.ADVENTURE_ADD_TIME);
// int adventureOffline = (gameSetting.getAdventureOffline()+vipTimeAdd)*60*60/adventureRefresh;
// baseBuilder = CommonProto.Drop.newBuilder();
// randomBuilder = CommonProto.Drop.newBuilder();
// int takeTimes = 0;
// ArrayList<int[][]> baseList = new ArrayList<>();
// ArrayList<int[][]> randomList = new ArrayList<>();
// Map<Integer, SMainLevelConfig> mainLevelConfigMap = SMainLevelConfig.config;
// for(Map.Entry<Integer,Integer> fightStateInfoItem : fightStateInfo.entrySet()){
// Integer fightId = fightStateInfoItem.getKey();
// Integer times = fightStateInfoItem.getValue();
// SMainLevelConfig sMainLevelConfig = mainLevelConfigMap.get(fightId);
// baseList.add(new int[][]{sMainLevelConfig.getRandomRewardMin(),new int[]{times}});
// randomList.add(new int[][]{sMainLevelConfig.getRandomReward(),new int[]{times}});
// takeTimes+=times;
// }
// int fightId = mainLevelManager.getFightId();
// SMainLevelConfig mainLevelConfig = mainLevelConfigMap.get(fightId);
// int lastTime = mainLevelManager.getLastTime();
// int times = (time - lastTime)/gameSetting.getAdventureRefresh();
// int maxTimes = adventureOffline - takeTimes;
// int lastTimeTakes=0;
// boolean reset = maxTimes<times;
// if(maxTimes>0){
// times = reset?maxTimes:times;
// baseList.add(new int[][]{mainLevelConfig.getRandomRewardMin(),new int[]{times}});
// randomList.add(new int[][]{mainLevelConfig.getRandomReward(),new int[]{times}});
// lastTimeTakes=times;
// }
// // 小兵奖励
// getSoldierBaseReward(baseList);
// ItemMap itemObj = new ItemMap();
// ItemMap itemRandom = new ItemMap();
// ItemUtil.combineRewardByMainLineNotCycle(user,true,baseList,itemObj,BIReason.ADVENTURE_BASE_REWARD);
// if (viewBaseReward){
// myResult = true;
// rewardStr = ItemUtil.getReward(itemObj);
// return this;
// }
// ItemUtil.combineRewardByMainLineNotCycle(user, false, randomList,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
// //装备合成
// itemRandom.setEquipMap(equipAutoCombine(itemRandom.getEquipMap()));
// removeNoUseItem(user,itemRandom.getItemMap());
// if(sendMail){
// if(!itemObj.getItemMap().isEmpty()){
// int vipLevel = user.getPlayerInfoManager().getVipLevel();
// String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_title");
// String reward = ItemUtil.getReward(itemObj);
// String randomReward = ItemUtil.getReward(itemRandom);
// String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("adventuren_reward_of_viplevel_content",new Object[]{vipLevel},new int[0],"#");
// if(!randomReward.isEmpty()){
// reward = reward + "|" + randomReward;
// MailLogic.getInstance().sendMail(user.getId(),title,content,reward,time, Global.MAIL_EFFECTIVE_TIME);
// mainLevelManager.afterTakeStateReward(true,0,time);
// System.out.printf("================在线奖励升级vip发送邮件{%s},{%s}\n",mainLevelManager.getStartTime(),mainLevelManager.getLastTime());
// }
// }
// myResult = true;
// }else {
// mainLevelManager.afterTakeStateReward(reset,lastTimeTakes,time);
// ItemUtil.drop(user,baseBuilder,itemObj, BIReason.ADVENTURE_BASE_REWARD);
// ItemUtil.drop(user,randomBuilder,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
// myResult = false;
// }
MainLevelManager mainLevelManager = user.getMainLevelManager();
Map<Integer, Integer> fightStateInfo = mainLevelManager.getFightStateInfo();
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
int adventureRefresh = gameSetting.getAdventureRefresh();
int vipTimeAdd = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user, VipPrivilegeType.ADVENTURE_ADD_TIME);
int adventureOffline = (gameSetting.getAdventureOffline()+vipTimeAdd)*60*60/adventureRefresh;
baseBuilder = CommonProto.Drop.newBuilder();
randomBuilder = CommonProto.Drop.newBuilder();
int takeTimes = 0;
ArrayList<int[][]> baseList = new ArrayList<>();
ArrayList<int[][]> randomList = new ArrayList<>();
Map<Integer, SMainLevelConfig> mainLevelConfigMap = SMainLevelConfig.config;
for(Map.Entry<Integer,Integer> fightStateInfoItem : fightStateInfo.entrySet()){
Integer fightId = fightStateInfoItem.getKey();
Integer times = fightStateInfoItem.getValue();
SMainLevelConfig sMainLevelConfig = mainLevelConfigMap.get(fightId);
baseList.add(new int[][]{sMainLevelConfig.getRandomRewardMin(),new int[]{times}});
randomList.add(new int[][]{sMainLevelConfig.getRandomReward(),new int[]{times}});
takeTimes+=times;
}
int fightId = mainLevelManager.getFightId();
SMainLevelConfig mainLevelConfig = mainLevelConfigMap.get(fightId);
int lastTime = mainLevelManager.getLastTime();
int times = (time - lastTime)/gameSetting.getAdventureRefresh();
int maxTimes = adventureOffline - takeTimes;
int lastTimeTakes=0;
boolean reset = maxTimes<times;
if(maxTimes>0){
times = reset?maxTimes:times;
baseList.add(new int[][]{mainLevelConfig.getRandomRewardMin(),new int[]{times}});
randomList.add(new int[][]{mainLevelConfig.getRandomReward(),new int[]{times}});
lastTimeTakes=times;
}
// 小兵奖励
getSoldierBaseReward(baseList);
ItemMap itemObj = new ItemMap();
ItemMap itemRandom = new ItemMap();
ItemUtil.combineRewardByMainLineNotCycle(user,true,baseList,itemObj,BIReason.ADVENTURE_BASE_REWARD);
if (viewBaseReward){
myResult = true;
rewardStr = ItemUtil.getReward(itemObj);
return this;
}
ItemUtil.combineRewardByMainLineNotCycle(user, false, randomList,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
//装备合成
itemRandom.setEquipMap(equipAutoCombine(itemRandom.getEquipMap()));
removeNoUseItem(user,itemRandom.getItemMap());
if(sendMail){
if(!itemObj.getItemMap().isEmpty()){
int vipLevel = user.getPlayerInfoManager().getVipLevel();
String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_title");
String reward = ItemUtil.getReward(itemObj);
String randomReward = ItemUtil.getReward(itemRandom);
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("adventuren_reward_of_viplevel_content",new Object[]{vipLevel},new int[0],"#");
if(!randomReward.isEmpty()){
reward = reward + "|" + randomReward;
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,time, Global.MAIL_EFFECTIVE_TIME);
mainLevelManager.afterTakeStateReward(true,0,time);
System.out.printf("================在线奖励升级vip发送邮件{%s},{%s}\n",mainLevelManager.getStartTime(),mainLevelManager.getLastTime());
}
}
myResult = true;
}else {
mainLevelManager.afterTakeStateReward(reset,lastTimeTakes,time);
ItemUtil.drop(user,baseBuilder,itemObj, BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.drop(user,randomBuilder,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD);
myResult = false;
}
return this;
}

View File

@ -3437,7 +3437,6 @@ public class HeroLogic {
attribute.put(id, attribute.getOrDefault(id, 0L) + num);
}
}
LOGGER.info("===助阵属性:{}",attribute);
combinedAttribute(attribute, heroAllAttribute);
return totalAdd;
}

View File

@ -1080,10 +1080,10 @@ public class CBean2Proto {
if(update){
mainLevelManager.directUpdateDb();
}
// CombatLogic.GetNewAdventureData getNewAdventureData = new CombatLogic.GetNewAdventureData(user, false,true).invoke(TimeUtils.nowInt());
// if (!StringUtil.isEmpty(getNewAdventureData.getRewardStr())){
// builder.setReward(getNewAdventureData.getRewardStr());
// }
CombatLogic.GetNewAdventureData getNewAdventureData = new CombatLogic.GetNewAdventureData(user, false,true).invoke(TimeUtils.nowInt());
if (!StringUtil.isEmpty(getNewAdventureData.getRewardStr())){
builder.setReward(getNewAdventureData.getRewardStr());
}
return builder.build();
}

View File

@ -679,6 +679,7 @@ public class ItemUtil {
*/
public static int addItemByMail(User user, Map<Integer, Long> itemMap, CommonProto.Drop.Builder dropBuilder, int reason) throws Exception {
if (itemMap.isEmpty()) {
LOGGER.info("掉落道具退出itemMap为空uid{}",user.getId());
return 1;
}
@ -693,24 +694,25 @@ public class ItemUtil {
int itemId = entry.getKey();
long itemNum = entry.getValue();
if (itemNum <= 0) {
LOGGER.info("掉落道具跳过itemNum数量错误uid{}itemid{}itemnum{}",user.getId(),itemId,itemNum);
continue;
}
SItem sItem = SItem.getsItemMap().get(itemId);
int id = sItem.getId();
long itemNumlimit = sItem.getItemNumlimit();
itemNum = Math.min(itemNum, itemNumlimit);
int missingRoomItem = Global.MISSING_ROOM_ITEM;//道具寻龙钰
int baseReward = BIReason.ADVENTURE_BASE_REWARD;//挂机基础奖励
Item item = itemManager.getItem(itemId);
if (item == null) {
item = itemManager.newItem(itemId, itemNum);
} else {
if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
if (id == missingRoomItem && reason == baseReward) {
itemNumlimit = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getMazeTreasureMax();
}
if (item.getItemNum() > itemNumlimit) {
if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
if (id == missingRoomItem && reason == baseReward) {
continue;
}
if (reason == BIReason.TAKE_MAIL_REWARD) {
@ -723,7 +725,7 @@ public class ItemUtil {
long num = item.getItemNum() + itemNum;
if (num > itemNumlimit) {
if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
if (id == missingRoomItem && reason == baseReward) {
item.setItemNum(num);
} else {
if (reason == BIReason.TAKE_MAIL_REWARD) {
@ -1542,6 +1544,9 @@ public class ItemUtil {
}
private static void selectCost(int[][] costItems, Map<Integer, Integer> itemMap) {
if (costItems == null){
return;
}
for (int[] costItem : costItems){
int itemId = costItem[0];
int itemNum = costItem[1];