无尽副本,自动回复提交
parent
f187a5043b
commit
e5110e48e5
|
@ -28,6 +28,8 @@ public class SChallengeSetting implements BaseConfig{
|
|||
|
||||
private int[] cost;
|
||||
|
||||
private int actionPowerId;
|
||||
|
||||
public int getDailyLimitPrivilege() {
|
||||
return dailyLimitPrivilege;
|
||||
}
|
||||
|
@ -36,6 +38,7 @@ public class SChallengeSetting implements BaseConfig{
|
|||
return buyTimesPrivilege;
|
||||
}
|
||||
|
||||
|
||||
public int[] getCost() {
|
||||
return cost;
|
||||
}
|
||||
|
@ -47,4 +50,12 @@ public class SChallengeSetting implements BaseConfig{
|
|||
public int getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
public static SChallengeSetting getChallengeSetting() {
|
||||
return challengeSetting;
|
||||
}
|
||||
|
||||
public int getActionPowerId() {
|
||||
return actionPowerId;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
package com.ljsd.jieling.config;
|
||||
|
||||
import com.ljsd.jieling.logic.STableManager;
|
||||
import com.ljsd.jieling.logic.Table;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Table(name ="EndlessMapConfig")
|
||||
public class SEndlessMapConfig implements BaseConfig {
|
||||
|
||||
private int id;
|
||||
|
||||
private int mapId;
|
||||
|
||||
private int teleportCost;
|
||||
|
||||
private int walkCost;
|
||||
|
||||
private int deathCost;
|
||||
|
||||
public static Map<Integer,SEndlessMapConfig> sEndlessMapConfigMap;
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
sEndlessMapConfigMap = STableManager.getConfig(SEndlessMapConfig.class);
|
||||
}
|
||||
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public int getMapId() {
|
||||
return mapId;
|
||||
}
|
||||
|
||||
public int getTeleportCost() {
|
||||
return teleportCost;
|
||||
}
|
||||
|
||||
public int getWalkCost() {
|
||||
return walkCost;
|
||||
}
|
||||
|
||||
public int getDeathCost() {
|
||||
return deathCost;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -2,7 +2,9 @@ package com.ljsd.jieling.config;
|
|||
|
||||
import com.ljsd.jieling.logic.STableManager;
|
||||
import com.ljsd.jieling.logic.Table;
|
||||
import com.ljsd.jieling.util.ItemUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Table(name ="GameSetting")
|
||||
|
@ -92,13 +94,27 @@ public class SGameSetting implements BaseConfig {
|
|||
private int[][] sevenDaysLastReward;
|
||||
|
||||
|
||||
private int[][] itemAdd;
|
||||
|
||||
private Map<Integer,int[]> itemRecoveryMap;
|
||||
|
||||
|
||||
|
||||
|
||||
private static SGameSetting gameSetting;
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
Map<Integer, SGameSetting> config = STableManager.getConfig(SGameSetting.class);
|
||||
gameSetting = config.get(1);
|
||||
SGameSetting gameSettingTmp = config.get(1);
|
||||
int[][] itemAdd = gameSettingTmp.getItemAdd();
|
||||
Map<Integer,int[]> itemReTmp = new HashMap<>(itemAdd.length);
|
||||
for(int[] items : itemAdd){
|
||||
itemReTmp.put(items[0],items);
|
||||
}
|
||||
gameSettingTmp.setItemRecoveryMap(itemReTmp);
|
||||
gameSetting = gameSettingTmp;
|
||||
ItemUtil.initNoDelete();
|
||||
}
|
||||
|
||||
public static SGameSetting getGameSetting() {
|
||||
|
@ -258,4 +274,17 @@ public class SGameSetting implements BaseConfig {
|
|||
public int[][] getSevenDaysLastReward() {
|
||||
return sevenDaysLastReward;
|
||||
}
|
||||
|
||||
public int[][] getItemAdd() {
|
||||
return itemAdd;
|
||||
}
|
||||
|
||||
|
||||
public Map<Integer, int[]> getItemRecoveryMap() {
|
||||
return itemRecoveryMap;
|
||||
}
|
||||
|
||||
public void setItemRecoveryMap(Map<Integer, int[]> itemRecoveryMap) {
|
||||
this.itemRecoveryMap = itemRecoveryMap;
|
||||
}
|
||||
}
|
|
@ -114,6 +114,7 @@ public interface BIReason {
|
|||
int LUCKYCAT_CONSUME = 1030;
|
||||
|
||||
|
||||
int CREATE_GUILD_CONSUME = 1030; // 创建宗门消耗
|
||||
int CREATE_GUILD_CONSUME = 1031; // 创建宗门消耗
|
||||
int ENDLESS_CONSUME_EXECUTION = 1032; //无尽副本消耗行动力
|
||||
|
||||
}
|
|
@ -2,6 +2,7 @@ package com.ljsd.jieling.globals;
|
|||
|
||||
public interface Global {
|
||||
int STAMINA = 2; // 体力id
|
||||
int EXECUTION = 3;//行动力id
|
||||
int HEROSTORY_TICKET = 28; //精英入场券
|
||||
int GENERALSTORY_TICKET = 27; //普通入场券
|
||||
int INVASIONBOSS_TICKET = 44; //外敌挑战券
|
||||
|
|
|
@ -62,6 +62,7 @@ public class GMRequestHandler extends BaseHandler{
|
|||
prarm1 = Integer.parseInt(commandArray[1]);
|
||||
if (prarm1 ==1){
|
||||
prarm3 = commandArray[2].replace(",","#");
|
||||
prarm2 = Integer.parseInt(commandArray[2]);
|
||||
}else{
|
||||
if (gmCommandType == GlobalGm.RESET_USER_NAME){
|
||||
prarm3 = commandArray[2];
|
||||
|
|
|
@ -238,7 +238,11 @@ public class MapLogic {
|
|||
SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(mapManager.getCurMapId());
|
||||
mapEnterResponse.setDieCount(mapManager.getDieCount());
|
||||
mapEnterResponse.addAllMapList(cells);
|
||||
mapEnterResponse.setCurXY(CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1]));
|
||||
if(type==4&&mapManager.getEndlessMapInfo().getCurCell()!=0){
|
||||
mapEnterResponse.setCurXY(mapManager.getEndlessMapInfo().getCurCell());
|
||||
}else{
|
||||
mapEnterResponse.setCurXY(CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1]));
|
||||
}
|
||||
mapEnterResponse.addAllWakeCells(mapManager.getWalkCells() == null ? new ArrayList<>() : mapManager.getWalkCells());
|
||||
if (mapManager.getTemporaryItems() != null) {
|
||||
mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems()));
|
||||
|
@ -520,7 +524,17 @@ public class MapLogic {
|
|||
MapInfoProto.MapUpdateResponse.Builder mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder();
|
||||
mapUpdateResponse.setLeftTime(getLeftTime(user, true));
|
||||
mapUpdateResponse.setEventId(cell.getEventId());
|
||||
|
||||
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4){
|
||||
int[][] cost = new int[1][];
|
||||
int costId = SChallengeSetting.getChallengeSetting().getActionPowerId();
|
||||
int costNum = cells.size();;
|
||||
cost[0]= new int[]{costId,costNum};
|
||||
boolean costResult = ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1);
|
||||
if(!costResult){
|
||||
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"行动力不足!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// LOGGER.info("updateMap() uid=>{} mapId =>{} eventId=>{}", uid, mapManager.getCurMapId(), cell.getEventId());
|
||||
mapManager.updateFoodBufferByStep(cells.size());
|
||||
|
@ -880,7 +894,7 @@ public class MapLogic {
|
|||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public void outMap(ISession session, int mapId,int outType, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
public void outMap(ISession session, int mapId,int outType, int curXY,MessageTypeProto.MessageType messageType) throws Exception {
|
||||
int uid = session.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
MapManager mapManager = user.getMapManager();
|
||||
|
@ -934,8 +948,21 @@ public class MapLogic {
|
|||
}
|
||||
}
|
||||
}
|
||||
//无尽副本
|
||||
if(challengeConfig.getType()==4) {
|
||||
mapManager.updateEndlessLocation(mapManager.getCurXY());
|
||||
mapManager.updateEndlessLocation(curXY);
|
||||
if(outType==0){
|
||||
int[][] cost = new int[1][];
|
||||
int costId = SChallengeSetting.getChallengeSetting().getActionPowerId();
|
||||
int costNum = SEndlessMapConfig.sEndlessMapConfigMap.get(mapId).getTeleportCost();
|
||||
cost[0]= new int[]{costId,costNum};
|
||||
boolean costResult = ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1);
|
||||
if(!costResult){
|
||||
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"行动力不足!");
|
||||
return;
|
||||
}
|
||||
LOGGER.info("传送消耗{}行动力"+costNum);
|
||||
}
|
||||
}
|
||||
MessageUtil.sendMessage(session, 1, messageType.getNumber(), builder.build(), true);
|
||||
return;
|
||||
|
@ -1290,6 +1317,18 @@ public class MapLogic {
|
|||
}
|
||||
mapManager.setLastFightResult(resultCode);
|
||||
if (resultCode == 0) {
|
||||
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4){
|
||||
//消耗行动力
|
||||
int [][] cost = new int[1][];
|
||||
int costId = SChallengeSetting.getChallengeSetting().getActionPowerId();
|
||||
int costNum = SEndlessMapConfig.sEndlessMapConfigMap.get(mapManager.getCurMapId()).getDeathCost();
|
||||
int [] cost1 = new int[]{costId,costNum};
|
||||
cost[0] = cost1;
|
||||
if(ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1)) {
|
||||
costNum = user.getItemManager().getItem(costId).getItemNum();
|
||||
ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1);
|
||||
}
|
||||
}
|
||||
// 失败需要等待n秒后复活所有英雄
|
||||
int dieCount = user.getMapManager().getDieCount();
|
||||
dieCount++;
|
||||
|
@ -1322,6 +1361,7 @@ public class MapLogic {
|
|||
if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==2){
|
||||
fightEndResponse.setLastTowerTime((int)(mapManager.getCurrTowerTime()/1000));
|
||||
}
|
||||
|
||||
if(sOptionConfig!=null){
|
||||
int[][] jumpTypeValues = sOptionConfig.getJumpTypeValues();
|
||||
if(jumpTypeValues.length>0 && jumpTypeValues[0][0] == 3){
|
||||
|
@ -2795,6 +2835,7 @@ public class MapLogic {
|
|||
iterator.remove();
|
||||
}
|
||||
}
|
||||
|
||||
user.getTeamPosManager().updateTeamPosByTeamId(401,team);
|
||||
}
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true);
|
||||
|
@ -2817,6 +2858,7 @@ public class MapLogic {
|
|||
mapManager.updateHeroOneAttribute(entry.getKey(),HeroAttributeEnum.CurHP.getPropertyId(),entry.getValue().get(HeroAttributeEnum.Hp.getPropertyId()));
|
||||
}
|
||||
|
||||
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
||||
}
|
||||
|
||||
|
@ -2860,4 +2902,16 @@ public class MapLogic {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新获取行动力
|
||||
* @param session
|
||||
* @param messageType
|
||||
* @throws Exception
|
||||
*/
|
||||
public void refreshEndlessExecution(ISession session, MessageTypeProto.MessageType messageType) throws Exception {
|
||||
User user = UserManager.getUser(session.getUid());
|
||||
MapInfoProto.ExecutionRefreshResponse response = MapInfoProto.ExecutionRefreshResponse.newBuilder().setExeValue(user.getItemManager().getItem(1).getItemNum()).build();
|
||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.ljsd.jieling.handler.map;
|
|||
|
||||
|
||||
import com.ljsd.common.mogodb.MongoBase;
|
||||
import com.ljsd.jieling.config.SChallengeSetting;
|
||||
import com.ljsd.jieling.config.SGameSetting;
|
||||
import com.ljsd.jieling.config.SVipLevelConfig;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
|
@ -242,30 +243,29 @@ public class MapManager extends MongoBase {
|
|||
int itemNum = item.getItemNum();
|
||||
int updateTime = (int) (System.currentTimeMillis() / 1000);
|
||||
int lastUpdateEnergyTime = item.getEndingTime();
|
||||
int recoveryTime = SGameSetting.getGameSetting().getRecoveryTime();
|
||||
int heroTimes = SGameSetting.getGameSetting().getHeroTimes();
|
||||
|
||||
if(itemId == Global.INVASIONBOSS_TICKET){
|
||||
recoveryTime = SGameSetting.getGameSetting().getInvasionBossTimesAdd();
|
||||
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(user.getPlayerInfoManager().getVipLevel());
|
||||
Map<Integer, Integer> privilegeMap = sVipLevelConfig.getPrivilegeMap();
|
||||
heroTimes = privilegeMap.get(VipPrivilegeType.CHALLENGE_INVASIONBOSS_LIMIT);
|
||||
int[] recoveryItemInfo = SGameSetting.getGameSetting().getItemRecoveryMap().get(itemId);
|
||||
if(recoveryItemInfo == null){
|
||||
return;
|
||||
}
|
||||
SVipLevelConfig sVipLevelConfig = SVipLevelConfig.getsVipLevelConfigMap().get(user.getPlayerInfoManager().getVipLevel());
|
||||
Map<Integer, Integer> privilegeMap = sVipLevelConfig.getPrivilegeMap();
|
||||
Integer heroTimes = privilegeMap.get(recoveryItemInfo[3]);
|
||||
|
||||
int recoveryTimes = (updateTime - lastUpdateEnergyTime)/recoveryTime;
|
||||
int recoveryTimes = (updateTime - lastUpdateEnergyTime)/recoveryItemInfo[2];
|
||||
if(itemNum>=heroTimes){
|
||||
item.setEndingTime(updateTime);
|
||||
return;
|
||||
}
|
||||
if( recoveryTimes>0){
|
||||
if(itemNum<heroTimes ){
|
||||
int addValue = MathUtils.setBetweenWithMax(itemNum+recoveryTimes,0,heroTimes);
|
||||
int addValue = MathUtils.setBetweenWithMax(itemNum+recoveryTimes*recoveryItemInfo[1],0,heroTimes);
|
||||
if(addValue!=0){
|
||||
item.setItemNum(addValue);
|
||||
KtEventUtils.onKtEvent(user, ParamEventBean.UserItemEvent, BIReason.TIME_REWARD,GlobalsDef.subReason,item.getItemId(),addValue,item.getItemNum());
|
||||
}
|
||||
}
|
||||
int time = lastUpdateEnergyTime + recoveryTimes*recoveryTime;
|
||||
int time = lastUpdateEnergyTime + recoveryTimes*recoveryItemInfo[2];
|
||||
item.setEndingTime(time);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
package com.ljsd.jieling.handler.map.mapHandler;
|
||||
|
||||
import com.ljsd.jieling.handler.BaseHandler;
|
||||
import com.ljsd.jieling.handler.map.MapLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class EndlessRefreshExecutionHandler extends BaseHandler {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.ENDLESS_EXECUTION_REFRESH_REQUEST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
MapLogic.getInstance().refreshEndlessExecution(iSession,MessageTypeProto.MessageType.ENDLESS_EXECUTION_REFRESH_RESPONSE);
|
||||
}
|
||||
}
|
|
@ -21,6 +21,7 @@ public class MapOutRequestHandler extends BaseHandler{
|
|||
MapInfoProto.MapOutRequest mapOutRequest = MapInfoProto.MapOutRequest.parseFrom(bytes);
|
||||
int mapId = mapOutRequest.getMapId();
|
||||
int outType = mapOutRequest.getOutType();
|
||||
MapLogic.getInstance().outMap(iSession, mapId,outType,MessageTypeProto.MessageType.MAP_OUT_RESPONSE);
|
||||
int curXY = mapOutRequest.getCurXY();
|
||||
MapLogic.getInstance().outMap(iSession, mapId,outType,curXY,MessageTypeProto.MessageType.MAP_OUT_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -298,7 +298,7 @@ public class ItemLogic {
|
|||
MapManager.getEnergy(user);
|
||||
itemList.add(itemMap.get(itemId));
|
||||
}
|
||||
if (itemId == Global.HEROSTORY_TICKET || itemId == Global.INVASIONBOSS_TICKET ){
|
||||
if (SGameSetting.getGameSetting().getItemRecoveryMap().containsKey(itemId) ){
|
||||
MapManager.getTimesRecoveryTicket(user,itemId);
|
||||
itemList.add(itemMap.get(itemId));
|
||||
}
|
||||
|
|
|
@ -32,10 +32,9 @@ public class ItemUtil {
|
|||
private static Set<Integer> currencyMap = new HashSet<>(2);
|
||||
|
||||
static {
|
||||
|
||||
notDelete.add(Global.STAMINA);
|
||||
notDelete.add(Global.HEROSTORY_TICKET);
|
||||
notDelete.add(Global.GENERALSTORY_TICKET);
|
||||
notDelete.add(Global.INVASIONBOSS_TICKET);
|
||||
|
||||
equipQulityNameMap.put(5,"传说");
|
||||
equipQulityNameMap.put(6,"史诗");
|
||||
currencyMap.add(Global.GEM);
|
||||
|
@ -43,6 +42,10 @@ public class ItemUtil {
|
|||
currencyMap.add(Global.SOULCRYSTAL);
|
||||
}
|
||||
|
||||
public static void initNoDelete(){
|
||||
notDelete.addAll(SGameSetting.getGameSetting().getItemRecoveryMap().keySet());
|
||||
}
|
||||
|
||||
//指定道具掉落(如:邮件,初始化物品)
|
||||
public static CommonProto.Drop.Builder drop(User user, int[][] itemArr,int reason) throws Exception {
|
||||
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
|
||||
|
@ -713,7 +716,7 @@ public class ItemUtil {
|
|||
if (entry.getKey() ==Global.STAMINA){
|
||||
MapManager.getEnergy(user);
|
||||
}
|
||||
if (entry.getKey() == Global.HEROSTORY_TICKET || entry.getKey() == Global.INVASIONBOSS_TICKET ){
|
||||
if (SGameSetting.getGameSetting().getItemRecoveryMap().containsKey(entry.getKey())){
|
||||
MapManager.getTimesRecoveryTicket(user,entry.getKey());
|
||||
needUpdateHero = false;
|
||||
}
|
||||
|
@ -721,15 +724,13 @@ public class ItemUtil {
|
|||
}
|
||||
}
|
||||
if (needUpdateHero){
|
||||
Item item = itemMap.get(Global.HEROSTORY_TICKET);
|
||||
if(item == null){
|
||||
MapManager.getTimesRecoveryTicket(user,Global.HEROSTORY_TICKET);
|
||||
itemList.add(CBean2Proto.getItem(item,-1));
|
||||
}
|
||||
item = itemMap.get(Global.INVASIONBOSS_TICKET);
|
||||
if(item == null){
|
||||
MapManager.getTimesRecoveryTicket(user,Global.INVASIONBOSS_TICKET);
|
||||
itemList.add(CBean2Proto.getItem(item,-1));
|
||||
Set<Integer> itemForTimeRecoverys = SGameSetting.getGameSetting().getItemRecoveryMap().keySet();
|
||||
for(Integer itemId : itemForTimeRecoverys){
|
||||
Item item = itemMap.get(itemId);
|
||||
if(item == null){
|
||||
MapManager.getTimesRecoveryTicket(user,itemId);
|
||||
itemList.add(CBean2Proto.getItem(item,-1));
|
||||
}
|
||||
}
|
||||
}
|
||||
return itemList;
|
||||
|
@ -919,7 +920,7 @@ public class ItemUtil {
|
|||
if ((entry.getKey() == Global.STAMINA)){
|
||||
MapManager.getEnergy(user);
|
||||
}
|
||||
if (entry.getKey() == Global.HEROSTORY_TICKET || entry.getKey() == Global.INVASIONBOSS_TICKET ){
|
||||
if (SGameSetting.getGameSetting().getItemRecoveryMap().containsKey(entry.getKey()) ){
|
||||
MapManager.getTimesRecoveryTicket(user,entry.getKey());
|
||||
}
|
||||
Item item = user.getItemManager().getItem(entry.getKey());
|
||||
|
|
Loading…
Reference in New Issue