逍遥游修改
parent
8f17bdc655
commit
4d3d9abf1e
|
@ -17,6 +17,7 @@ import com.ljsd.jieling.logic.fight.result.FightResult;
|
|||
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||
import com.ljsd.jieling.logic.mission.MissionType;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.sun.org.apache.bcel.internal.generic.NEW;
|
||||
import rpc.protocols.CommonProto;
|
||||
import rpc.protocols.MapInfoProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
|
@ -315,169 +316,147 @@ public class JourneyMap {
|
|||
}
|
||||
//取总点数和最大格子数,算出走的步数
|
||||
diceAmount =Math.min(diceAmount,pathInfo.getAllPathInfo().length-pathInfo.getCurrentPath());
|
||||
|
||||
// 服务器调试,一次走一格
|
||||
// diceAmount = 1;
|
||||
// randomNum.clear();
|
||||
// randomNum.add(1);
|
||||
|
||||
if(diceAmount==0){
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||
}
|
||||
|
||||
pathInfo.setCurrentPath(pathInfo.getCurrentPath()+diceAmount);
|
||||
Path arrivePath = pathInfo.getAllPathInfo()[pathInfo.getCurrentPath() - 1];
|
||||
int mapPointId = arrivePath.getMapPointId();
|
||||
// 服务器调试,一次走一格
|
||||
// int num = 4;
|
||||
// diceAmount = num;
|
||||
// randomNum.clear();
|
||||
// randomNum.add(num);
|
||||
|
||||
MapInfoProto.JourneyDoResponse.Builder builder = MapInfoProto.JourneyDoResponse.newBuilder().addAllPointes(randomNum);
|
||||
//基础奖励
|
||||
int[] common = travelConfig.getCommonReward();
|
||||
|
||||
int[] commonRewardArray= new int[randomNum.size()] ;
|
||||
for(int i=0;i<commonRewardArray.length;i++){
|
||||
commonRewardArray[i] = common[randomNum.get(i)-1];
|
||||
ArrayList<Integer> reward = new ArrayList<>();
|
||||
for (int i = 0; i < randomNum.size(); i++) {
|
||||
reward.add(common[randomNum.get(i)-1]);
|
||||
}
|
||||
|
||||
CommonProto.Drop.Builder drop = null;// ItemUtil.drop(user,commonRewardArray,1,0, BIReason.JOURNEY_COMMON_REWARD);
|
||||
|
||||
//地图点判断
|
||||
if(mapPointId==0){
|
||||
builder.setPathType(0);
|
||||
}else{
|
||||
int pathType = 0;
|
||||
MapPointConfig config = MapPointConfig.getScMapEventMap().get(mapPointId);
|
||||
switch (config.getStyle()){
|
||||
int pathType = 0;
|
||||
Path arrivePath = null;
|
||||
for (int i = 0; i < diceAmount; i++) {
|
||||
|
||||
case EventType.reward:
|
||||
//奖励节点完成
|
||||
commonRewardArray = new int[randomNum.size()+1];
|
||||
for(int i=0;i<commonRewardArray.length-1;i++){
|
||||
commonRewardArray[i] = common[randomNum.get(i)-1];
|
||||
}
|
||||
// int[][] treasureChest = travelConfig.getTreasureChest();
|
||||
// int[] reward = MathUtils.randomFromWeightWithTaking(treasureChest, 1);
|
||||
// commonRewardArray[commonRewardArray.length-1] = reward[0];
|
||||
commonRewardArray[commonRewardArray.length-1] = arrivePath.getRewardId();
|
||||
pathType = 1;
|
||||
break;
|
||||
case EventType.random:
|
||||
//转盘节点添加
|
||||
if(pathInfo.getRandomReward()==null){
|
||||
//初始化转盘数组
|
||||
pathInfo.setRandomReward(initRandom(travelConfig));
|
||||
}
|
||||
pathInfo.setCurrentPath(pathInfo.getCurrentPath()+1);
|
||||
arrivePath = pathInfo.getAllPathInfo()[pathInfo.getCurrentPath() - 1];
|
||||
int mapPointId = arrivePath.getMapPointId();
|
||||
|
||||
pathInfo.setRamainRandomAmount(pathInfo.getRamainRandomAmount()+1);
|
||||
|
||||
pathInfo.setRemainRandomTime((int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000));
|
||||
|
||||
List<Integer> rewardList = Arrays.stream(pathInfo.getRandomReward()).boxed().collect(Collectors.toList());
|
||||
|
||||
builder.addAllRandom(rewardList);
|
||||
|
||||
builder.setOverTime(pathInfo.getRemainRandomTime());
|
||||
pathType = 6;
|
||||
break;
|
||||
case EventType.journeyBoss:
|
||||
//怪物节点添加
|
||||
int[] freeTravelBoss = travelConfig.getFreeTravelBoss();
|
||||
int[] freeTravelBossReward = travelConfig.getFreeTravelBossReward();
|
||||
int bossId = MathUtils.randomFromArray(freeTravelBoss);
|
||||
int bossReward = MathUtils.randomFromArray(freeTravelBossReward);
|
||||
JourneyMonster monster = new JourneyMonster(bossId, (int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000),0,bossReward);
|
||||
Map<Integer, List<Long>> monsterHpByGroup = MonsterUtil.getMonsterHpByGroup(bossId);
|
||||
List<Long> list = monsterHpByGroup.get(0);
|
||||
Map<Integer,Long> hpMap = new HashMap<>();
|
||||
for(int i = 1;i<=list.size();i++){
|
||||
hpMap.put(i,list.get(i-1));
|
||||
}
|
||||
monster.setRemainHp(hpMap);
|
||||
long allHp =0;
|
||||
for(Map.Entry<Integer,Long> hp:monster.getRemainHp().entrySet()){
|
||||
allHp+=hp.getValue();
|
||||
}
|
||||
int monsterId = TimeUtils.nowInt();
|
||||
pathInfo.addMonster(monsterId,monster);
|
||||
builder.setMonster(CommonProto.JourneyMonsterInfo.newBuilder().setAttackNum(monster.getAttackNum())
|
||||
.setMonsterHp(allHp)
|
||||
.setMonsterId(monster.getMonsterId())
|
||||
.setMonsterIndex(monsterId)
|
||||
.setRemainTime(monster.getRemainTime())
|
||||
.setRewardShow(monster.getReward()));
|
||||
builder.setOverTime(monster.getRemainTime());
|
||||
pathType = 5;
|
||||
break;
|
||||
case EventType.journeyStore:
|
||||
List<SFreeTravelStore> sFreeTravelStores = SFreeTravelStore.storeMapByMapId.get(mapId);
|
||||
int[] goodsArray = new int[sFreeTravelStores.size()];
|
||||
for(int i = 0 ; i <sFreeTravelStores.size();i++){
|
||||
goodsArray[i] = sFreeTravelStores.get(i).getID();
|
||||
}
|
||||
int goodsId = MathUtils.randomFromArray(goodsArray);
|
||||
JourneyGoods journeyGoods = new JourneyGoods(goodsId, (int) ((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME)) / 1000));
|
||||
int index = TimeUtils.nowInt();
|
||||
pathInfo.addGoods(index,journeyGoods);
|
||||
|
||||
builder.setGoodsInfo(CommonProto.JourneyGoodsInfo.newBuilder().setGoodsId(goodsId).setGoodsIndex(index).setRemainTime(journeyGoods.getGoodsRemainTime()).build());
|
||||
pathType = 4;
|
||||
|
||||
break;
|
||||
case EventType.diceEvent:
|
||||
pathType = 3;
|
||||
pathInfo.setDiceNum(2);
|
||||
break;
|
||||
case EventType.doubleReward:
|
||||
//倍数
|
||||
int mutiNum = config.getInitialEventId();
|
||||
commonRewardArray = new int[randomNum.size()*mutiNum];
|
||||
for(int j=0;j<randomNum.size();j++){//1
|
||||
for(int i = 0;i<mutiNum;i++){//2
|
||||
commonRewardArray[i+j*mutiNum] = common[randomNum.get(j)-1];
|
||||
//地图点判断
|
||||
if(mapPointId!=0){
|
||||
MapPointConfig config = MapPointConfig.getScMapEventMap().get(mapPointId);
|
||||
switch (config.getStyle()){
|
||||
case EventType.reward:
|
||||
//奖励节点完成
|
||||
reward.add(arrivePath.getRewardId());
|
||||
pathType = 1;
|
||||
break;
|
||||
case EventType.random:
|
||||
//转盘节点添加
|
||||
if(pathInfo.getRandomReward()==null){
|
||||
//初始化转盘数组
|
||||
pathInfo.setRandomReward(initRandom(travelConfig));
|
||||
}
|
||||
}
|
||||
pathType = 2;
|
||||
break;
|
||||
case EventType.journeyFinal:
|
||||
pathType = 7;
|
||||
|
||||
commonRewardArray = new int[randomNum.size()+1];
|
||||
for(int i=0;i<commonRewardArray.length-1;i++){
|
||||
commonRewardArray[i] = common[randomNum.get(i)-1];
|
||||
}
|
||||
//int []finalReward = travelConfig.getFinalReward();
|
||||
//commonRewardArray[commonRewardArray.length-1] = finalReward;
|
||||
pathInfo.setRamainRandomAmount(pathInfo.getRamainRandomAmount()+1);
|
||||
|
||||
int []commonRewardArrayNew = Arrays.copyOf(commonRewardArray,commonRewardArray.length
|
||||
+travelConfig.getFinalReward().length);
|
||||
pathInfo.setRemainRandomTime((int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000));
|
||||
|
||||
System.arraycopy(travelConfig.getFinalReward(),0,commonRewardArrayNew,
|
||||
commonRewardArray.length,travelConfig.getFinalReward().length);
|
||||
commonRewardArray=commonRewardArrayNew;
|
||||
List<Integer> rewardList = Arrays.stream(pathInfo.getRandomReward()).boxed().collect(Collectors.toList());
|
||||
|
||||
builder.addAllRandom(rewardList);
|
||||
|
||||
if(!pathInfo.isFirstPass()){
|
||||
commonRewardArray = Arrays.copyOf(commonRewardArray,commonRewardArray.length+1);
|
||||
commonRewardArray[commonRewardArray.length-1] = travelConfig.getFirstReward();
|
||||
pathInfo.setFirstPass(true);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
builder.setOverTime(pathInfo.getRemainRandomTime());
|
||||
pathType = 6;
|
||||
break;
|
||||
case EventType.journeyBoss:
|
||||
//怪物节点添加
|
||||
int[] freeTravelBoss = travelConfig.getFreeTravelBoss();
|
||||
int[] freeTravelBossReward = travelConfig.getFreeTravelBossReward();
|
||||
int bossId = MathUtils.randomFromArray(freeTravelBoss);
|
||||
int bossReward = MathUtils.randomFromArray(freeTravelBossReward);
|
||||
JourneyMonster monster = new JourneyMonster(bossId, (int)((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME))/1000),0,bossReward);
|
||||
Map<Integer, List<Long>> monsterHpByGroup = MonsterUtil.getMonsterHpByGroup(bossId);
|
||||
List<Long> list = monsterHpByGroup.get(0);
|
||||
Map<Integer,Long> hpMap = new HashMap<>();
|
||||
for(int j = 1;j<=list.size();j++){
|
||||
hpMap.put(j,list.get(j-1));
|
||||
}
|
||||
monster.setRemainHp(hpMap);
|
||||
long allHp =0;
|
||||
for(Map.Entry<Integer,Long> hp:monster.getRemainHp().entrySet()){
|
||||
allHp+=hp.getValue();
|
||||
}
|
||||
int monsterId = TimeUtils.nowInt();
|
||||
pathInfo.addMonster(monsterId,monster);
|
||||
builder.setMonster(CommonProto.JourneyMonsterInfo.newBuilder().setAttackNum(monster.getAttackNum())
|
||||
.setMonsterHp(allHp)
|
||||
.setMonsterId(monster.getMonsterId())
|
||||
.setMonsterIndex(monsterId)
|
||||
.setRemainTime(monster.getRemainTime())
|
||||
.setRewardShow(monster.getReward()));
|
||||
builder.setOverTime(monster.getRemainTime());
|
||||
pathType = 5;
|
||||
break;
|
||||
case EventType.journeyStore:
|
||||
List<SFreeTravelStore> sFreeTravelStores = SFreeTravelStore.storeMapByMapId.get(mapId);
|
||||
int[] goodsArray = new int[sFreeTravelStores.size()];
|
||||
for(int j = 0 ; j <sFreeTravelStores.size();j++){
|
||||
goodsArray[j] = sFreeTravelStores.get(j).getID();
|
||||
}
|
||||
int goodsId = MathUtils.randomFromArray(goodsArray);
|
||||
JourneyGoods journeyGoods = new JourneyGoods(goodsId, (int) ((TimeUtils.now()+TimeUtils.ONE_MINUTE* SSpecialConfig.getIntegerValue(SSpecialConfig.FREETRAVEL_EVENT_TIME)) / 1000));
|
||||
int index = TimeUtils.nowInt();
|
||||
pathInfo.addGoods(index,journeyGoods);
|
||||
|
||||
builder.setGoodsInfo(CommonProto.JourneyGoodsInfo.newBuilder().setGoodsId(goodsId).setGoodsIndex(index).setRemainTime(journeyGoods.getGoodsRemainTime()).build());
|
||||
pathType = 4;
|
||||
|
||||
break;
|
||||
case EventType.diceEvent:
|
||||
pathType = 3;
|
||||
pathInfo.setDiceNum(2);
|
||||
break;
|
||||
case EventType.doubleReward:
|
||||
//倍数
|
||||
int mutiNum = config.getInitialEventId();
|
||||
for(int k=0; k<mutiNum; k++){//2
|
||||
reward.add(common[randomNum.get(0)-1]);
|
||||
}
|
||||
pathType = 2;
|
||||
break;
|
||||
case EventType.journeyFinal:
|
||||
pathType = 7;
|
||||
if(!pathInfo.isFirstPass()){
|
||||
reward.add(travelConfig.getFirstReward());
|
||||
pathInfo.setFirstPass(true);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
builder.setPathType(pathType);
|
||||
|
||||
// 逍遥游仙缘埋点
|
||||
if (pathType == 4 || pathType == 5 || pathType == 6){
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.START_IMMORTAL_BOOD.getType(), pathType, mapId);
|
||||
}
|
||||
// 逍遥游最终奖励埋点
|
||||
if (pathType == 7){
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.COMPLETE_TRAVEL.getType(), pathType, mapId);
|
||||
int finishNum=user.getMapManager().getJourneyFinishNum()+1;
|
||||
user.getMapManager().setJourneyFinishNum(finishNum);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
drop = ItemUtil.drop(user,commonRewardArray,1,0, BIReason.JOURNEY_COMMON_REWARD);
|
||||
builder.setPathType(pathType);
|
||||
|
||||
// 逍遥游仙缘埋点
|
||||
if (pathType == 4 || pathType == 5 || pathType == 6){
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.START_IMMORTAL_BOOD.getType(), pathType, mapId);
|
||||
}
|
||||
// 逍遥游最终奖励埋点
|
||||
if (pathType == 7){
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.COMPLETE_TRAVEL.getType(), pathType, mapId);
|
||||
int finishNum=user.getMapManager().getJourneyFinishNum()+1;
|
||||
user.getMapManager().setJourneyFinishNum(finishNum);
|
||||
}
|
||||
|
||||
Integer[] array = reward.toArray(new Integer[0]);
|
||||
int[] ints = Arrays.stream(array).mapToInt(Integer::intValue).toArray();
|
||||
drop = ItemUtil.drop(user,ints,1,0,BIReason.JOURNEY_COMMON_REWARD);
|
||||
builder.setDrop(drop);
|
||||
arrivePath.setMapPointId(0);
|
||||
user.getMapManager().updateJourneyInfoByMapId(mapId,pathInfo);
|
||||
|
@ -485,8 +464,9 @@ public class JourneyMap {
|
|||
|
||||
//消耗云游值任务
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.XIAOYAOYOU_CONSUME, MissionType.XIAOYAOYOU_CONSUME_NUM, consume[1]);
|
||||
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build(),true);
|
||||
|
||||
reward.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,9 +3,9 @@ package com.ljsd.jieling.handler.map.mapHandler;
|
|||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.handler.map.JourneyMap;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import org.springframework.stereotype.Component;
|
||||
import rpc.protocols.MapInfoProto;
|
||||
import rpc.protocols.MessageTypeProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
|
|
Loading…
Reference in New Issue