1.在当前的降分公式的基础上×70%,对方获得的分数不变,挑战和被挑战时均做如此处理

2.一键领取
back_recharge
xuexinpeng 2021-10-21 18:00:54 +08:00
parent 091cf93f40
commit cf58cda027
3 changed files with 45 additions and 16 deletions

View File

@ -153,10 +153,19 @@ public class CrossYuxulundaoChallengeHandler extends BaseHandler<ArenaInfoProto.
//我赢了
winerGetScore = setting.getBattleWinReward()[0]+(defScores-ackScores);
loserGetScore = setting.getBattleLoseReward()[0]+(ackScores-defScores);
//降分公式的基础上×70%
if(loserGetScore<0){
loserGetScore = (int)Math.floor(-loserGetScore*0.7);
}
}else{
//我输了
winerGetScore = setting.getBattleWinReward()[0]+(ackScores-defScores);
loserGetScore = setting.getBattleLoseReward()[0]+(defScores-ackScores);
//降分公式的基础上×70%
if(loserGetScore<0){
loserGetScore = (int)Math.floor(-loserGetScore*0.7);
}
}
if(winerGetScore>setting.getScoreRange()[1]){ //35
winerGetScore = setting.getScoreRange()[1];

View File

@ -26,10 +26,9 @@ public class TakeMissionRewardHandler extends BaseHandler<PlayerInfoProto.TakeMi
public void processWithProto(ISession iSession, PlayerInfoProto.TakeMissionRewardRequest proto) throws Exception {
if(proto.getMissionId() == 0){
MissionLoigc.takeMissionRewardOnekey(iSession,proto.getType());
}else{
MissionLoigc.takeMissionReward(iSession,proto.getType(),proto.getMissionId());
}
}
}

View File

@ -711,29 +711,50 @@ public class MissionLoigc {
*
* @param session
* @param type
* @param missionId
* @throws Exception
*/
public static void takeMissionRewardOnekey(ISession session,int type,int missionId) throws Exception{
public static void takeMissionRewardOnekey(ISession session,int type) throws Exception{
int uid = session.getUid();
User user = UserManager.getUser(uid);
UserMissionManager userMissionManager = user.getUserMissionManager();
List<MissionStateChangeInfo> missionStateChangeInfos = null;
List<MissionStateChangeInfo> missionStateChangeInfos = new ArrayList<MissionStateChangeInfo>();
//日常 任务
//List<int[][]>rewardList = new ArrayList<int[][]>();
Map <Integer,Integer> rewardMap =new HashMap<Integer,Integer>();
if(type == GameMisionType.DAILYMISSION.getType()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap =
userMissionManager.onGameEvent(user, GameEvent.DAILY_MISSION_REWARD, missionId);
missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.DAILYMISSION);
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionId);
if(sDailyTasksConfig.getType() == MissionType.FINSIH_DAYILY_TIMES.getMissionTypeValue() && missionStateChangeInfos !=null && !missionStateChangeInfos.isEmpty()){
user.getUserMissionManager().onGameEvent(user,GameEvent.TAKE_DAILY_BOX_REWARD);
for(int missionId:SDailyTasksConfig.config.keySet()){
Map<GameMisionType, List<MissionStateChangeInfo>> gameMisionTypeListMap =
userMissionManager.onGameEvent(user, GameEvent.DAILY_MISSION_REWARD, missionId);
missionStateChangeInfos.addAll(gameMisionTypeListMap.get(GameMisionType.DAILYMISSION));
//missionStateChangeInfos = gameMisionTypeListMap.get(GameMisionType.DAILYMISSION);
SDailyTasksConfig sDailyTasksConfig = SDailyTasksConfig.getSDailyTasksConfigById(missionId);
if(sDailyTasksConfig.getType() == MissionType.FINSIH_DAYILY_TIMES.getMissionTypeValue() && missionStateChangeInfos !=null && !missionStateChangeInfos.isEmpty()){
user.getUserMissionManager().onGameEvent(user,GameEvent.TAKE_DAILY_BOX_REWARD);
}
}
}
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD);
ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type);
PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true);
if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){
//奖励汇总
PlayerInfoProto.TakeMissionRewardResponse.Builder res= PlayerInfoProto.TakeMissionRewardResponse.newBuilder();
for(MissionStateChangeInfo info:missionStateChangeInfos){
if(info.getRewwardGroups()!=null){
for(int[] reward:info.getRewwardGroups()){
if(rewardMap.containsKey(reward[0])){
rewardMap.put(reward[0],rewardMap.get(reward[0])+reward[1]);
}else{
rewardMap.put(reward[0],reward[1]);
}
res.addRewardId(info.getMissionId());
}
}
ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(info.getMissionId()),type);
}
int[][] itemArr = rewardMap.entrySet().stream().map(n->new int[] {n.getKey(),n.getValue()}).toArray(int[][]::new);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, itemArr, BIReason.TAKE_MISSION_REWARD);
//ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type);
//PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,res.build(),true);
}else{
throw new ErrorCodeException(ErrorCode.newDefineCode("mission can not get reward"));
}