法宝等级上限
parent
a1fcc56f01
commit
23e632dd30
|
@ -410,4 +410,5 @@ public interface BIReason {
|
|||
int COMPARENUM_LEVEL_REWARD = 1306; // 比数字小游戏过关奖励
|
||||
int COMPARENUM_TOTAL_REWARD = 1307; // 比数字小游戏章节累计奖励
|
||||
|
||||
int MAXESPECIALEQUIPHANDLE = 1309; //法宝最高上限回滚处理
|
||||
}
|
|
@ -1,10 +1,12 @@
|
|||
package com.ljsd.jieling.handler;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.HeroStaticConfig;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
import com.ljsd.jieling.globals.Global;
|
||||
import com.ljsd.jieling.handler.map.MapManager;
|
||||
import com.ljsd.jieling.jbean.ActivityMission;
|
||||
|
@ -49,6 +51,7 @@ import rpc.protocols.PlayerInfoProto;
|
|||
import util.TimeUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class GetPlayerInfoHandler extends BaseHandler{
|
||||
|
@ -120,13 +123,9 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
}
|
||||
CommonProto.Player player = CBean2Proto.getPlayer(userId, user.getPlayerInfoManager(), user.getPlayerInfoManager().getMapId(), user.getMapManager().getCurMapId(),user.getMapManager());
|
||||
CommonProto.SuddenlyBossInfo suddenlyBossInfo = CommonProto.SuddenlyBossInfo.newBuilder().setSuddBossId(mapManager.getSuddenlyBoss()).setEndTime(mapManager.getSuddenlyBossEndTime()).setFindMapId(mapManager.getFindSuddenlyBossMapId()).build();
|
||||
// CommonProto.VipBaseInfo vipInfoProto = CommonProto.VipBaseInfo.newBuilder()
|
||||
// .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip())
|
||||
// .setVipLevel(playerInfoManager.getVipLevel()).build();
|
||||
CommonProto.PlayerBindPhone playerBindPhone = CommonProto.PlayerBindPhone.newBuilder()
|
||||
.setPhoneNum(user.getPlayerInfoManager().getPhoneBindInfo().getPhoneNum())
|
||||
.setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()).build();
|
||||
NewRechargeInfo newRechargeInfo = playerInfoManager.getNewRechargeInfo();
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
Map<Integer, Integer> totalCountMap = heroManager.getTotalCount();
|
||||
int alreadyCount =0;
|
||||
|
@ -251,17 +250,8 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
PlayerLogic.getInstance().soulPrintHandBookDispose(user);
|
||||
// 心愿抽卡 旧玩家兼容
|
||||
wishOldUserRandomNumInit(user);
|
||||
//hotfix 月卡
|
||||
// PlayerLogic.getInstance().getMonthCardInfo(user);
|
||||
// int monthline = STableManager.getConfig(SMonthcardConfig.class).get(Global.MONTHCARDID).getPrice();
|
||||
// int lmonthline = STableManager.getConfig(SMonthcardConfig.class).get(Global.LMONTHCARDID).getPrice();
|
||||
// if(newRechargeInfo.getMonthRr()>=monthline&&playerInfoManager.getMonthCard().getOrDefault(1,0)==0){
|
||||
// user.getPlayerInfoManager().getMonthCard().put(Global.MONTHCARDID, (int) (System.currentTimeMillis() / 1000));
|
||||
// }
|
||||
// if(newRechargeInfo.getsMonthRr()>=lmonthline&&playerInfoManager.getMonthCard().getOrDefault(2,0)==0){
|
||||
// user.getPlayerInfoManager().getMonthCard().put(Global.LMONTHCARDID, (int) (System.currentTimeMillis() / 1000));
|
||||
// Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.RECHARGE_BUY.getType(),Global.LMONTHCARDID));
|
||||
// }
|
||||
// 法宝最高等级处理
|
||||
maxEspecialEquipHandle(user);
|
||||
|
||||
// 四灵试炼初始化
|
||||
FourChallengeLogic.getInstance().firstGetTimes(user);
|
||||
|
@ -559,4 +549,48 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 法宝最高等级处理
|
||||
* @param user
|
||||
* @throws Exception
|
||||
*/
|
||||
private void maxEspecialEquipHandle(User user) throws Exception {
|
||||
// 公用数据
|
||||
List<Hero> heroList = user.getHeroManager().getHeroMap().values().stream().collect(Collectors.toList());
|
||||
Map<Integer, SCHero> heroMap = SCHero.getsCHero();
|
||||
Map<Integer, Map<Integer, SEquipTalismana>> talismanaStarMap = SEquipTalismana.equipTalismanaStarMap;
|
||||
int maxLimit = SSpecialConfig.getIntegerValue(SSpecialConfig.EquipTalismanaUpperLimit);
|
||||
ArrayList<int[][]> itemList = new ArrayList<>();
|
||||
|
||||
for (Hero hero : heroList) {
|
||||
// 获取英雄的法宝信息
|
||||
int[] equipTalismana = heroMap.get(hero.getTemplateId()).getEquipTalismana();
|
||||
if (equipTalismana == null || equipTalismana.length < 2) {
|
||||
continue;
|
||||
}
|
||||
// 验证最高等级是否满足
|
||||
int level = hero.getOriginalEspecialEquipLevel();
|
||||
if (level <= maxLimit){
|
||||
continue;
|
||||
}
|
||||
// 获得道具
|
||||
TreeMap<Integer, SEquipTalismana> talismanaTreeMap = new TreeMap<>(talismanaStarMap.get(equipTalismana[1]));
|
||||
Map<Integer, SEquipTalismana> subMap = talismanaTreeMap.subMap(maxLimit, level);
|
||||
for (SEquipTalismana talismana : subMap.values()) {
|
||||
itemList.add(talismana.getRankupBasicMaterial());
|
||||
}
|
||||
// 设置等级到最高
|
||||
hero.updateEspecial(maxLimit);
|
||||
// 更新战力
|
||||
Poster.getPoster().dispatchEvent(new SaveHeroForceEvent(user.getId(),hero.getId()));
|
||||
LOGGER.info("===========法宝最高等级处理道具返还,玩家id:{},法宝:{},原始等级:{},当前等级:{},返还道具:{}",user.getId(),equipTalismana[1],level,maxLimit,JSON.toJSONString(itemList));
|
||||
}
|
||||
// 道具进入背包
|
||||
ItemUtil.drop(user,itemList, BIReason.MAXESPECIALEQUIPHANDLE);
|
||||
// 邮件提醒
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("fabao_mail_title");
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("fabao_mail_txt");
|
||||
MailLogic.getInstance().sendMail(user.getId(),title,content,"",TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package com.ljsd.jieling.kefu;
|
||||
|
||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
|
||||
import com.ljsd.jieling.logic.dao.Hero;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import config.SCHero;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
* @Date 2021/10/28 17:35:00
|
||||
* @Description: 英雄法宝 命令: \\fabaolv 角色id 英雄名#法宝等级
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class Cmd_fabaolv extends GmRoleAbstract {
|
||||
@Override
|
||||
public boolean exec(String[] args) throws Exception {
|
||||
String[] split = args[0].split("#");
|
||||
if (split.length < 2){
|
||||
return false;
|
||||
}
|
||||
User user = getUser();
|
||||
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
|
||||
for (Hero hero : heroMap.values()) {
|
||||
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
|
||||
if (scHero.getReadingName().equals(split[0])){
|
||||
hero.updateEspecial(Integer.parseInt(split[1]));
|
||||
// 更新战力
|
||||
Poster.getPoster().dispatchEvent(new SaveHeroForceEvent(user.getId(),hero.getId()));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -426,20 +426,25 @@ public class Hero extends MongoBase implements Comparable<Hero>,Cloneable {
|
|||
}
|
||||
|
||||
public int getEspecialEquipLevel() {
|
||||
int max = SSpecialConfig.getIntegerValue(SSpecialConfig.EquipTalismanaUpperLimit);
|
||||
return especialEquipLevel>max ? max : especialEquipLevel;
|
||||
}
|
||||
|
||||
public int getOriginalEspecialEquipLevel() {
|
||||
return especialEquipLevel;
|
||||
}
|
||||
|
||||
public int getEspecialEquipLevelByHongmeng(HeroManager heroManager, String heroId) {
|
||||
// 英雄在共鳴池中
|
||||
if (heroManager.getResonances().values().contains(heroId)) {
|
||||
// 法宝
|
||||
HongMengAddAttribute hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.MAGIC_WEAPON);
|
||||
if (hongMengAddAttribute != null) {
|
||||
// 对比本身和共鸣等级,选高的
|
||||
return especialEquipLevel >= hongMengAddAttribute.value ? especialEquipLevel : hongMengAddAttribute.value;
|
||||
}
|
||||
}
|
||||
return especialEquipLevel;
|
||||
// if (heroManager.getResonances().values().contains(heroId)) {
|
||||
// // 法宝
|
||||
// HongMengAddAttribute hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.MAGIC_WEAPON);
|
||||
// if (hongMengAddAttribute != null) {
|
||||
// // 对比本身和共鸣等级,选高的
|
||||
// return especialEquipLevel >= hongMengAddAttribute.value ? especialEquipLevel : hongMengAddAttribute.value;
|
||||
// }
|
||||
// }
|
||||
return getEspecialEquipLevel();
|
||||
}
|
||||
|
||||
public Set<String> getJewelInfo() {
|
||||
|
|
|
@ -5464,12 +5464,6 @@ public class HeroLogic {
|
|||
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.HONGMENG_STELE_NEW_HAND_INDICATION.getNumber(), builder.build(), true);
|
||||
}
|
||||
}
|
||||
|
||||
// 不够6个无法开启鸿蒙阵
|
||||
/*if (hongmengs.size() < Integer.parseInt(openLevel[0])) {
|
||||
return;
|
||||
}*/
|
||||
|
||||
// 守卫/使者英雄池
|
||||
Map<Integer, String> guards = heroManager.getHongmengGuards();
|
||||
// 英雄装备
|
||||
|
@ -5483,7 +5477,6 @@ public class HeroLogic {
|
|||
hongMengAddAttributeEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
soulEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
spiritEquip = new HongMengAddAttribute(0, defaultValue);
|
||||
especialEquipLevel = new HongMengAddAttribute(0, defaultValue);
|
||||
break;
|
||||
}
|
||||
// 装备
|
||||
|
@ -5491,8 +5484,6 @@ public class HeroLogic {
|
|||
// 魂宝 灵宝
|
||||
soulOrSpirit(soulEquip, 1, equipMap, hero);
|
||||
soulOrSpirit(spiritEquip, 2, equipMap, hero);
|
||||
// 法宝
|
||||
especialAdd(especialEquipLevel, hero);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5518,7 +5509,6 @@ public class HeroLogic {
|
|||
resonanceAddition.put(HongMengAttributeEnum.EQUIP, hongMengAddAttributeEquip);
|
||||
resonanceAddition.put(HongMengAttributeEnum.SOUL_EQUIP, soulEquip);
|
||||
resonanceAddition.put(HongMengAttributeEnum.SPIRIT_EQUIP, spiritEquip);
|
||||
resonanceAddition.put(HongMengAttributeEnum.MAGIC_WEAPON, especialEquipLevel);
|
||||
heroManager.setResonanceAddition(resonanceAddition);
|
||||
|
||||
/*** ============================= 开始组装鸿蒙阵信息 ==================================== **/
|
||||
|
|
|
@ -704,6 +704,10 @@ public class ItemLogic {
|
|||
}
|
||||
|
||||
int especialEquipId = scHero.getEquipTalismana()[1];
|
||||
int maxLimit = SSpecialConfig.getIntegerValue(SSpecialConfig.EquipTalismanaUpperLimit);
|
||||
if (hero.getEspecialEquipLevel() >= maxLimit){
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("法宝已最大限制等级"));
|
||||
}
|
||||
SEquipTalismana sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId).get(hero.getEspecialEquipLevel());
|
||||
if (sEquipTalismana == null || sEquipTalismana.getRankupBasicMaterial() == null|| sEquipTalismana.getRankupBasicMaterial().length==0) {
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("法宝已最大等级"));
|
||||
|
|
|
@ -132,6 +132,7 @@ public class SSpecialConfig implements BaseConfig {
|
|||
public static final String CHANGE_CAMP_COST = "ChangeCampCost";//神转换阵营消耗
|
||||
public static final String GodSignOpenStar = "GodSignOpenStar";//神印格子开启所需神将星级
|
||||
public static final String ChangingPosUnlock = "ChangingPosUnlock";//3个变身卡化身位解锁所需的化身之力等级
|
||||
public static final String EquipTalismanaUpperLimit = "EquipTalismanaUpperLimit ";//法宝等级上限
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
|
|
Loading…
Reference in New Issue