zhangshanxue 2019-11-28 11:47:11 +08:00
commit 5338c735b1
5 changed files with 137 additions and 82 deletions

View File

@ -2154,7 +2154,7 @@ public class MapLogic {
.setUid(uidTmp)
.setLevel(playerInfoManager.getLevel())
.setName(playerInfoManager.getNickName())
.setFightId(SMainLevelConfig.sMainLevelConfigByVirtureIdMap.get(score).getId())
.setFightId(SMainLevelConfig.sMainLevelConfigByVirtureIdMap.get(score).getVirtureId())
.setHead(playerInfoManager.getHead())
.setRank(rank++)
.setTotalForce(userTmp.getPlayerInfoManager().getMaxForce())
@ -2178,6 +2178,7 @@ public class MapLogic {
int uid = session.getUid();
for(CommonProto.MainLevelRankInfo.Builder builder1 : mainLevelRankInfoList){
builder1.setRank(rank++);
builder1.setFightId(SMainLevelConfig.sMainLevelConfigByVirtureIdMap.get(builder1.getFightId()).getId());
builder.addMainLevelRankInfo(builder1.build());
if(builder1.getUid() == uid){
myRank = builder1.getRank();

View File

@ -798,6 +798,7 @@ public class GuildLogic {
case 4:
title = SErrorCodeEerverConfig.getI18NMessage("family_relieved_leader_title");
content = SErrorCodeEerverConfig.getI18NMessage("family_relieved_leader_txt");
position = 3;
break;
default:
break;

View File

@ -41,7 +41,6 @@ import util.StringUtil;
import util.TimeUtils;
import java.util.*;
import java.util.concurrent.TimeUnit;
public class CombatLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(CombatLogic.class);
@ -221,77 +220,17 @@ public class CombatLogic {
}
public Map<Integer,CommonProto.Drop> getNewAdventureReward(User user,boolean sendMail) throws Exception {
MainLevelManager mainLevelManager = user.getMainLevelManager();
Map<Integer, Integer> fightStateInfo = user.getMainLevelManager().getFightStateInfo();
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
int adventureRefresh = gameSetting.getAdventureRefresh();
int adventureOffline = gameSetting.getAdventureOffline()*60*60/adventureRefresh;
Map<Integer, Integer> baseItemMap = new HashMap<>();
Map<Integer, Integer> baseCardMap = new HashMap<>();
Map<Integer, Integer> baseEquipMap = new HashMap<>();
Map<Integer,Integer> baseRandomMap = new HashMap<>();
Map<Integer, Integer> randomItemMap = new HashMap<>();
Map<Integer, Integer> randomCardMap = new HashMap<>();
Map<Integer, Integer> randomEquipMap = new HashMap<>();
Map<Integer,Integer> randomRandomMap = new HashMap<>();
CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder();
CommonProto.Drop.Builder randomBuilder = CommonProto.Drop.newBuilder();
int takeTimes= 0;
for(Map.Entry<Integer,Integer> fightStateInfoItem : fightStateInfo.entrySet()){
Integer fightId = fightStateInfoItem.getKey();
Integer times = fightStateInfoItem.getValue();
SMainLevelConfig sMainLevelConfig = SMainLevelConfig.config.get(fightId);
int[] randomRewardMin = sMainLevelConfig.getRandomRewardMin();
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
int timesTemp =times;
while (timesTemp-->0){
ItemUtil.combineReward(user,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
}
takeTimes+=times;
}
int fightId = mainLevelManager.getFightId();
SMainLevelConfig targetMainLevelConfig = SMainLevelConfig.config.get(fightId);
int lastTime = mainLevelManager.getLastTime();
int now = (int) (System.currentTimeMillis() / 1000);
int times = (now - lastTime)/STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getAdventureRefresh();
int maxTimes = adventureOffline - takeTimes;
int lastTimeTakes=0;
boolean reset = maxTimes<times;
if(maxTimes>0){
times = times > maxTimes?maxTimes:times;
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
int timesTemp =times;
while (timesTemp-->0){
ItemUtil.combineReward(user,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
}
lastTimeTakes=times;
}
if(sendMail){
if(!baseItemMap.isEmpty()){
int vipLevel = user.getPlayerInfoManager().getVipLevel();
String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_title");
String content = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_content",new Object[]{vipLevel});
String reward = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap);
String randomReward = ItemUtil.getReward(randomItemMap, randomCardMap, randomEquipMap, randomRandomMap);
if(randomReward.length()!=0){
reward = reward + "|" + randomReward;
}
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,now,Global.MAIL_EFFECTIVE_TIME);
}
mainLevelManager.afterTakeStateReward(true,0);
return null;
}
mainLevelManager.afterTakeStateReward(reset,lastTimeTakes);
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
GetNewAdventureData getNewAdventureData = new GetNewAdventureData(user, sendMail,false).invoke();
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());
user.getUserMissionManager().onGameEvent(user,GameEvent.ADVENTURE_TAKEREWARD,1);
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();
@ -907,4 +846,111 @@ public class CombatLogic {
return result;
}
public static class GetNewAdventureData {
private boolean myResult;
private User user;
private boolean sendMail;
private boolean viewBaseReward;
private CommonProto.Drop.Builder baseBuilder;
private CommonProto.Drop.Builder randomBuilder;
private String rewardStr;
public GetNewAdventureData(User user, boolean sendMail,boolean viewBaseReward) {
this.user = user;
this.sendMail = sendMail;
this.viewBaseReward = viewBaseReward;
}
public boolean is() {
return myResult;
}
public CommonProto.Drop.Builder getBaseBuilder() {
return baseBuilder;
}
public CommonProto.Drop.Builder getRandomBuilder() {
return randomBuilder;
}
public String getRewardStr() {
return rewardStr;
}
public GetNewAdventureData invoke() throws Exception {
MainLevelManager mainLevelManager = user.getMainLevelManager();
Map<Integer, Integer> fightStateInfo = user.getMainLevelManager().getFightStateInfo();
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
int adventureRefresh = gameSetting.getAdventureRefresh();
int adventureOffline = gameSetting.getAdventureOffline()*60*60/adventureRefresh;
Map<Integer, Integer> baseItemMap = new HashMap<>();
Map<Integer, Integer> baseCardMap = new HashMap<>();
Map<Integer, Integer> baseEquipMap = new HashMap<>();
Map<Integer,Integer> baseRandomMap = new HashMap<>();
Map<Integer, Integer> randomItemMap = new HashMap<>();
Map<Integer, Integer> randomCardMap = new HashMap<>();
Map<Integer, Integer> randomEquipMap = new HashMap<>();
Map<Integer,Integer> randomRandomMap = new HashMap<>();
baseBuilder = CommonProto.Drop.newBuilder();
randomBuilder = CommonProto.Drop.newBuilder();
int takeTimes= 0;
for(Map.Entry<Integer,Integer> fightStateInfoItem : fightStateInfo.entrySet()){
Integer fightId = fightStateInfoItem.getKey();
Integer times = fightStateInfoItem.getValue();
SMainLevelConfig sMainLevelConfig = SMainLevelConfig.config.get(fightId);
int[] randomRewardMin = sMainLevelConfig.getRandomRewardMin();
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
int timesTemp =times;
while (!viewBaseReward&&timesTemp-->0){
ItemUtil.combineReward(user,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
}
takeTimes+=times;
}
int fightId = mainLevelManager.getFightId();
SMainLevelConfig targetMainLevelConfig = SMainLevelConfig.config.get(fightId);
int lastTime = mainLevelManager.getLastTime();
int now = (int) (System.currentTimeMillis() / 1000);
int times = (now - lastTime)/STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getAdventureRefresh();
int maxTimes = adventureOffline - takeTimes;
int lastTimeTakes=0;
boolean reset = maxTimes<times;
if(maxTimes>0){
times = times > maxTimes?maxTimes:times;
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
int timesTemp =times;
while (!viewBaseReward&&timesTemp-->0){
ItemUtil.combineReward(user,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
}
lastTimeTakes=times;
}
if(viewBaseReward){
myResult = true;
rewardStr = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap);
return this;
}
if(sendMail){
if(!baseItemMap.isEmpty()){
int vipLevel = user.getPlayerInfoManager().getVipLevel();
String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_title");
String content = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_content",new Object[]{vipLevel});
String reward = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap);
String randomReward = ItemUtil.getReward(randomItemMap, randomCardMap, randomEquipMap, randomRandomMap);
if(randomReward.length()!=0){
reward = reward + "|" + randomReward;
}
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,now, Global.MAIL_EFFECTIVE_TIME);
}
mainLevelManager.afterTakeStateReward(true,0);
myResult = true;
return this;
}
mainLevelManager.afterTakeStateReward(reset,lastTimeTakes);
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
myResult = false;
return this;
}
}
}

View File

@ -1168,20 +1168,22 @@ public class HeroLogic {
if(!StringUtil.isEmpty(especialEquip)){
Map<String, EspecialEquip> especialEquipMap = user.getEquipManager().getEspecialEquipMap();
int equipTempId = especialEquipMap.get(especialEquip).getEquipId();
int tempStar = especialEquipMap.get(especialEquip).getStar();
Map<Integer, Map<Integer, SEquipTalismana>> equipTalismanaMap = SEquipTalismana.equipTalismanaStarMap;
SEquipTalismana equipTali = equipTalismanaMap.get(equipTempId).get(tempStar);
combinedAttribute(equipTali.getProperty(),heroAllAttribute);
//法宝职业额外加成
SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId());
int[][] specialProperty = equipTali.getSpecialProperty();
for(int i = 0 ; i < specialProperty.length;i++){
if(tempHero.getProfession()==specialProperty[i][0]){
int [][] property = new int[1][];
property[0] = new int[]{specialProperty[i][1],specialProperty[i][2]};
combinedAttribute(property, heroAllAttribute);
EspecialEquip myEspecial = especialEquipMap.get(especialEquip);
if(myEspecial!=null){
int equipTempId = myEspecial.getEquipId();
int tempStar = myEspecial.getStar();
Map<Integer, Map<Integer, SEquipTalismana>> equipTalismanaMap = SEquipTalismana.equipTalismanaStarMap;
SEquipTalismana equipTali = equipTalismanaMap.get(equipTempId).get(tempStar);
combinedAttribute(equipTali.getProperty(),heroAllAttribute);
//法宝职业额外加成
SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId());
int[][] specialProperty = equipTali.getSpecialProperty();
for(int i = 0 ; i < specialProperty.length;i++){
if(tempHero.getProfession()==specialProperty[i][0]){
int [][] property = new int[1][];
property[0] = new int[]{specialProperty[i][1],specialProperty[i][2]};
combinedAttribute(property, heroAllAttribute);
}
}
}
}

View File

@ -12,6 +12,7 @@ import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.CombatLogic;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.protocols.*;
import config.SMainLevelConfig;
@ -458,7 +459,7 @@ public class CBean2Proto {
.build();
}
public static PlayerInfoProto.GetMainLevelInfoResponse getMainLevelInfoResponse( User user ){
public static PlayerInfoProto.GetMainLevelInfoResponse getMainLevelInfoResponse( User user ) throws Exception {
long nowMs = TimeUtils.now();
int now = (int)(nowMs/1000);
MainLevelManager mainLevelManager = user.getMainLevelManager();
@ -513,6 +514,10 @@ public class CBean2Proto {
if(update){
mainLevelManager.directUpdateDb();
}
CombatLogic.GetNewAdventureData getNewAdventureData = new CombatLogic.GetNewAdventureData(user, false,true).invoke();
if (!StringUtil.isEmpty(getNewAdventureData.getRewardStr())){
builder.setReward(getNewAdventureData.getRewardStr());
}
return builder.build();
}