diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 4910e998b..a406b44e0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -279,16 +279,18 @@ public class GetPlayerInfoHandler extends BaseHandler{ */ private void finalActivityReset(User user){ Map missionMap = user.getActivityManager().getActivityMissionMap(); + int choiceDrawId = 20012; + int specialMonsterId = 14501; // 限时招募 - ActivityMission mission = missionMap.get(20012); + ActivityMission mission = missionMap.get(choiceDrawId); if (mission != null){ - ChoiceDrawCardActivity activity = (ChoiceDrawCardActivity)ActivityTypeEnum.getActicityType(20012); + ChoiceDrawCardActivity activity = (ChoiceDrawCardActivity)ActivityTypeEnum.getActicityType(choiceDrawId); activity.checkResetProgress(user,mission); } // 灵兽招募 - ActivityMission mission2 = missionMap.get(14501); + ActivityMission mission2 = missionMap.get(specialMonsterId); if (mission2 != null){ - LimitRandomSpecialMonsterActivityNew activity = (LimitRandomSpecialMonsterActivityNew)ActivityTypeEnum.getActicityType(14501); + LimitRandomSpecialMonsterActivityNew activity = (LimitRandomSpecialMonsterActivityNew)ActivityTypeEnum.getActicityType(specialMonsterId); activity.checkResetProgress(user,mission2); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetTrumpSelectItemHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetTrumpSelectItemHandler.java new file mode 100644 index 000000000..030cbbd25 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/GetTrumpSelectItemHandler.java @@ -0,0 +1,40 @@ +package com.ljsd.jieling.handler.activity; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; +import rpc.protocols.ActivityProto; +import rpc.protocols.CommonProto; +import rpc.protocols.MessageTypeProto; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class GetTrumpSelectItemHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GET_TRUMP_SELECT_ITEM_REQUEST; + } + + /** + * 获取天地洪炉抽奖选择up道具协议 + * @param session + * @param proto + * @throws Exception + */ + @Override + public void processWithProto(ISession session, ActivityProto.GetTrumpSelectItemRequest proto) throws Exception{ + ActivityProto.GetTrumpSelectItemResponse.Builder builder = ActivityProto.GetTrumpSelectItemResponse.newBuilder(); + User user = UserManager.getUser(session.getUid()); + ListselectList=new ArrayList<>(); + for (Map.Entry entry : user.getHeroManager().getTrumpSelectItemMap().entrySet()) { + selectList.add(entry.getValue()); + } + builder.addAllSelectIds(selectList); + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GET_TRUMP_SELECT_ITEM_RESPONSE_VALUE, builder.build(), true); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/TrumpGachaSelectItemRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/TrumpGachaSelectItemRequestHandler.java new file mode 100644 index 000000000..ea7460388 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/TrumpGachaSelectItemRequestHandler.java @@ -0,0 +1,46 @@ +package com.ljsd.jieling.handler.activity; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; +import org.springframework.stereotype.Component; +import rpc.protocols.ActivityProto; +import rpc.protocols.MessageTypeProto; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/11/11 + * @discribe + */ +@Component +public class TrumpGachaSelectItemRequestHandler extends BaseHandler{ + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.TRUMP_GACHA_SELECT_ITEM_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, ActivityProto.TrumpGachaSelectItemRequest proto) throws Exception { + User user = UserManager.getUser(iSession.getUid()); + Map activityMissionMap = user.getActivityManager().getActivityMissionMap(); + ActivityMission activityMission = activityMissionMap.get(proto.getActivityId()); + if(activityMission==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + HashMap map = new HashMap<>(); + for (int i = 0; i < proto.getSelectIdsList().size(); i++) { + map.put(i+1,proto.getSelectIdsList().get(i)); + } + user.getHeroManager().setTrumpSelectItemMap(map); + MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.TRUMP_GACHA_SELECT_ITEM_RESPONSE_VALUE,null,true); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java index 7eff9f92c..1008e465b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java @@ -118,6 +118,7 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler0){ + lingMaiSecretArea.setScore1((int) disappearScore); + } + } RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(id), lingMaiSecretArea); } res.setResult(fightResult.getResult()); @@ -190,33 +206,44 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler 10 ? 10 : ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) / 60); minute = ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) / 60); - second =((TimeUtils.nowInt() - (int)oldOwner.getGetAwardTimeOrOccupyTime()) % 60) >60 ? - 60 : ((TimeUtils.nowInt() - (int)oldOwner.getGetAwardTimeOrOccupyTime()) % 60); + second =((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) % 60) >60 ? + 60 : ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) % 60); LOGGER.info("uid:"+uid+"pvp owner occupy id:"+myLingmaiId+" minute:"+minute+"second:"+second); tempScore =(second*config.getRewardList()[0][1]/60); - myLingmai.setScore1(myLingmai.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore); + score1 = myLingmai.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore; + //long newScore = score1+ + //myLingmai.setScore1(myLingmai.getScore1()+minute*config.getRewardList()[0][1]+(int)tempScore); myLingmai.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt()); - score = myLingmai.getScore1() + config.getRewardList()[0][1] * (long)myLingmai.getOccupyTime()/60; + //我的 + long score = score1 + config.getRewardList()[0][1] * (long)myLingmai.getOccupyTime()/60; rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType()); rank.addRank(user.getId(), String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, score); + myLingmai.setScore1((int)score); //两边都计算分 置换 //oldOwner.setScore1(score); oldOwner.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt()); oldOwner.setId(myLingmaiId); oldOwner.setBeginOccupyTime(TimeUtils.nowInt()); + oldOwner.setOccupyTime(0); + oldOwner.setScore1((int)scoreOld); RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(myLingmaiId), oldOwner); } //易主 LingMaiSecretArea lingMaiSecretArea = CrossLingmaiLogic.getLingaMaiData(id, uid,crossGroup,group); + if(myLingmai!=null){ + lingMaiSecretArea.setScore1(myLingmai.getScore1()); + } RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(id), lingMaiSecretArea); //挑战者记录 String key1 = RedisKey.getKey(RedisKey.CROSS_LINGMAISECRET_RECORD, String.valueOf(user.getId()), false); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index ca67d3d8b..86ec55453 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -88,6 +88,7 @@ public enum ActivityTypeEnum { LING_LONG_PAVILION(ActivityType.LING_LONG_PAVILION,DefaultEmptyActivity::new), RIDING_SWARD(ActivityType.RIDING_SWARD,RidingSwardActivity::new), ITEMS_STORE_NEW(ActivityType.ITEMS_STORE_NEW,SuperBoxActivity::new), + TRUMP_GACHA_ACTIVITY(ActivityType.TRUMP_GACHA_ACTIVITY,LimitRandomCardActivity::new), ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomSpecialMonsterActivityNew.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomSpecialMonsterActivityNew.java index a71378f81..2afc05e3f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomSpecialMonsterActivityNew.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomSpecialMonsterActivityNew.java @@ -151,7 +151,6 @@ public class LimitRandomSpecialMonsterActivityNew extends LimitRandomCardActivit mission.getActivityMissionMap().put(0, progressInfo); mission.setOpenType(1); - mission.setV(0); mission.setActivityState(ActivityType.OPEN_STATE); } } @@ -160,7 +159,7 @@ public class LimitRandomSpecialMonsterActivityNew extends LimitRandomCardActivit * 检查活动是否完成或者可以领取 * @param uid * @param activityId - * @param activityMission4 + * @param activityMission * @return */ @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/CrossLingmaiLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/CrossLingmaiLogic.java index a07da74f5..4b50ea88f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/CrossLingmaiLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/CrossLingmaiLogic.java @@ -55,7 +55,10 @@ public class CrossLingmaiLogic { lingMaiSecretArea.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt()); lingMaiSecretArea.setBeginOccupyTime(TimeUtils.nowInt()); if(disappearScore>0){ - lingMaiSecretArea.setScore1((int) disappearScore); + Map lingMaiMap = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.class, LingMaiSecretArea.class); + if(!lingMaiMap.values().stream().anyMatch(n->n.getUid()==uid)){ + lingMaiSecretArea.setScore1((int) disappearScore); + } } return lingMaiSecretArea; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index ae56e5846..3212829b0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -94,6 +94,10 @@ public class HeroManager extends MongoBase { */ private HashMap beautyBagCardInfoMap = new HashMap<>(); + /** + * 天地洪炉-许愿道具 + */ + private HashMap trumpSelectItemMap = new HashMap<>(); /** * 抽奖次数记录 * key: 招募类型 value: 次数 @@ -601,6 +605,17 @@ public class HeroManager extends MongoBase { this.beautyBagCardInfoMap = beautyBagCardInfoMap; updateString("beautyBagCardInfoMap", beautyBagCardInfoMap); } + + public HashMap getTrumpSelectItemMap() { + return trumpSelectItemMap; + } + + public void setTrumpSelectItemMap(HashMap trumpSelectItemMap) { + this.trumpSelectItemMap = trumpSelectItemMap; + updateString("trumpSelectItemMap", trumpSelectItemMap); + } + + public void putBeautyBagCardInfoMap(Integer key,Integer val) { this.beautyBagCardInfoMap.put(key,val); updateString("beautyBagCardInfoMap", beautyBagCardInfoMap); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index d3558c2f5..ac92d7b7d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -422,7 +422,10 @@ public class HeroLogic { } else if (sLotterySetting.getLotteryType() == 3 && isActivityBeautyBag(sLotterySetting.getActivityId())) {//乾坤宝盒-许愿魂印 result = BeautyBagDrawCard(user, sLotteryRewardConfig); - } else { + }else if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){ + result = TrumpGachaDrawCard(user, sLotteryRewardConfig); + } + else { result = reward; } //活动抽奖计数 @@ -432,6 +435,9 @@ public class HeroLogic { } else if (isActivityByIdAndType(sLotterySetting.getActivityId(), ActivityType.SPECIAL_MONSTER_RANDOM_ACTIVITY)) { //灵兽招募 计次数 user.getUserMissionManager().onGameEvent(user, GameEvent.SOUL_RECRUIT, 1); + }else if(isActivityByIdAndType(sLotterySetting.getActivityId(),ActivityType.TRUMP_GACHA_ACTIVITY)){ + //天地洪炉抽奖 计次数 + user.getUserMissionManager().onGameEvent(user, GameEvent.TRUMP_GACHA, 1); } //记录卡池抽奖次数 heroManager.putRandomType(type, num + result[1]); @@ -466,6 +472,30 @@ public class HeroLogic { return result; } + ///天地洪炉抽奖处理 + private int[] TrumpGachaDrawCard(User user, SLotteryRewardConfig sLotteryRewardConfig) { + int count = 4; + List list = SLotteryRewardConfig.getSLotteryRewardConfigListByPoolId(sLotteryRewardConfig.getPool()); + if (list == null) { + return sLotteryRewardConfig.getReward(); + } + + int index = list.indexOf(sLotteryRewardConfig); + if (index >= count) { + return sLotteryRewardConfig.getReward(); + } + + if (!user.getHeroManager().getTrumpSelectItemMap().containsKey(index + 1)) { + return sLotteryRewardConfig.getReward(); + } + + int[] result = new int[2]; + result[0] = user.getHeroManager().getTrumpSelectItemMap().get(index + 1); + result[1] = sLotteryRewardConfig.getReward()[1]; + LOGGER.info("天地洪炉抽到了UP---->" + sLotteryRewardConfig.getReward()[0] + "替换为---->" + result[0]); + return result; + } + private boolean isActivityBeautyBag(int activityId) { SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId); if (activity == null) { @@ -2308,9 +2338,6 @@ public class HeroLogic { public void getPracticeSkill(List infoList, Map practiceSkillMap, long maxForce,int sex,int userLv,List tfInfoList) { - if (practiceSkillMap.isEmpty()) { - return; - } StringBuilder skillStr = new StringBuilder(); // 修行技能 for (Map.Entry entry : practiceSkillMap.entrySet()) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java index 2a43a8341..7a6eaa15d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/GameEvent.java @@ -137,5 +137,6 @@ public enum GameEvent { DAILY_CHALLENGE_COUNT,//日常副本挑战次数 HARSTAGE_PARTICIPATION_REWARD,//山河社稷图参与奖励 NEW_HERO_ZHAOMU,//新将招募次数 + TRUMP_GACHA,//天地洪炉 } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index ad5e07f57..3c51b6934 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -336,12 +336,12 @@ public class MinuteTask extends Thread { } //bug 修复 - if(w==4){ + /*if(w==4){ if(hour ==10 && minute ==50){ LOGGER.error("lingmaimijing0 000000"); CrossLingmaiLogic.getInstance().fixBug(); } - } + }*/ } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java index 94251aa95..bd704e3a4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java @@ -268,14 +268,14 @@ public class FightDataUtil { for (int i = 0; i < pokemonUnitList.size(); i++) { CommonProto.FightUnitInfo unitInfo=pokemonUnitList.get(i); String skillId = unitInfo.getUnitSkillIds(); - if(skillId.equals("0")||skillId==""){ + if(skillId.equals("0")|| StringUtil.isEmpty(skillId)){ continue; } ///100代表是修行技能 if (unitInfo.getPosition()==100){ LuaValue monster = new LuaTable(); monster.set("id",0); - monster.set("star",0); + monster.set("star",unitInfo.getStar()); monster.set("teamDamage",unitInfo.getForceScore()); monster.set("camp",camp); monster.set("position",unitInfo.getPosition());