礼物装备

master_ob2
PC-202302260912\Administrator 2023-09-13 15:07:45 +08:00
parent 630a719c7d
commit ba818ad0a1
15 changed files with 514 additions and 251 deletions

View File

@ -100,7 +100,7 @@ public class CheckFight {
//todo type //todo type
args.set("type",fightType.getType()); args.set("type",fightType.getType());
args.set("maxRound",maxTime); args.set("maxRound",maxTime);
LuaValue result = func.call( args,fightData,optionData); LuaValue result = func.call(args,fightData,optionData);
long[] resultCache = new long[9];//对方阵容走配置 Todo 后面结构走配置 long[] resultCache = new long[9];//对方阵容走配置 Todo 后面结构走配置
resultCache[0]= result.get("result").tolong(); resultCache[0]= result.get("result").tolong();
resultCache[1]= result.get("duration").tolong(); resultCache[1]= result.get("duration").tolong();

View File

@ -441,4 +441,7 @@ public interface BIReason {
int GEM_NEW_LOTTERY_REWARD = 1331;//命格抽卡奖励 int GEM_NEW_LOTTERY_REWARD = 1331;//命格抽卡奖励
int GEM_NEW_LOTTERY_COST = 1332;//命格抽卡消耗 int GEM_NEW_LOTTERY_COST = 1332;//命格抽卡消耗
int GIFT_EQUIP_UP_COST = 1333;//礼物穿戴消耗
int GIFT_EQUIP_DOWN_REWARD = 1334;//礼物脱卸获得
} }

View File

@ -154,7 +154,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
faBaoJuLingHandler(user);//法宝修改 faBaoJuLingHandler(user);//法宝修改
//森罗幻境自动挂机返回掉落展示清除 //森罗幻境自动挂机返回掉落展示清除
Map<Integer,Integer> dropShow = mapManager.getTowerGetRewardInfoShowMap(); Map<Integer,Integer> dropShow = mapManager.getTowerGetRewardInfoShowMap();
if(dropShow != null && dropShow.size() > 0){ if(dropShow != null && !dropShow.isEmpty()){
dropShow.clear(); dropShow.clear();
} }
@ -236,6 +236,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
.addAllPracticeSkillInfos(practiceSkillInfos) .addAllPracticeSkillInfos(practiceSkillInfos)
.addAllFaBaoSoulInfos(faBaoSoulInfos) .addAllFaBaoSoulInfos(faBaoSoulInfos)
.addAllLifeGridInfos(getLifeGridInfos(heroManager)) .addAllLifeGridInfos(getLifeGridInfos(heroManager))
.addAllGiftIds(user.getPlayerInfoManager().getPlayerGiftEquipList())
.build(); .build();
try { try {

View File

@ -0,0 +1,21 @@
package com.ljsd.jieling.handler.equip;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.equip.EquipLogic;
import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.HeroInfoProto;
import rpc.protocols.MessageTypeProto;
/**
* 穿
*/
public class WearGiftEquipHandler extends BaseHandler<HeroInfoProto.GiftEquipWearRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.GiftEquipWearRequest;
}
@Override
public void processWithProto(ISession iSession, HeroInfoProto.GiftEquipWearRequest proto) throws Exception {
EquipLogic.getInstance().wearGiftEquip(iSession, proto);
}
}

View File

@ -66,7 +66,9 @@ public class Hero extends MongoBase implements Comparable<Hero>,Cloneable {
private int propertyId; // 阵营id人 佛 妖 道) private int propertyId; // 阵营id人 佛 妖 道)
//被神魂绑定英雄 英雄动态id:英雄神魂等级(反绑) //被神魂绑定英雄 英雄动态id:英雄神魂等级(反绑)
private Map<String,Integer>godSoulBeBindMap=new HashMap<>(); private Map<String,Integer> godSoulBeBindMap = new HashMap<>();
private Set<Integer> heroGiftEquipList = new HashSet<>();//礼物装备列表
public Hero() { public Hero() {
//绑定关系 //绑定关系
@ -111,10 +113,6 @@ public class Hero extends MongoBase implements Comparable<Hero>,Cloneable {
/** /**
* , * ,
* @param uid
* @param heroTid
* @param level
* @param hero
*/ */
public Hero(Hero hero,int uid,int heroTid,int level) { public Hero(Hero hero,int uid,int heroTid,int level) {
this.setRootCollection(User._COLLECTION_NAME); this.setRootCollection(User._COLLECTION_NAME);
@ -614,6 +612,45 @@ public class Hero extends MongoBase implements Comparable<Hero>,Cloneable {
updateString("equipAdvanceLv", equipAdvanceLv); updateString("equipAdvanceLv", equipAdvanceLv);
} }
public void setSoulEquipByPositionMap(Map<Integer, Integer> soulEquipByPositionMap) {
this.soulEquipByPositionMap = soulEquipByPositionMap;
updateString("soulEquipByPositionMap", soulEquipByPositionMap);
}
public void setGodSealByPositionMap(Map<Integer, Integer> godSealByPositionMap) {
this.godSealByPositionMap = godSealByPositionMap;
updateString("godSealByPositionMap", godSealByPositionMap);
}
public void setFaxiangList(Set<String> faxiangList) {
this.faxiangList = faxiangList;
updateString("faxiangList", faxiangList);
}
public void setGodSoulBindMap(Map<Integer, List<String>> godSoulBindMap) {
this.godSoulBindMap = godSoulBindMap;
updateString("godSoulBindMap", godSoulBindMap);
}
public void setGodSoulBeBindMap(Map<String, Integer> godSoulBeBindMap) {
this.godSoulBeBindMap = godSoulBeBindMap;
updateString("godSoulBeBindMap", godSoulBeBindMap);
}
public void setHeroGiftEquipList(Set<Integer> heroGiftEquipList) {
this.heroGiftEquipList = heroGiftEquipList;
updateString("heroGiftEquipList", heroGiftEquipList);
}
public void addHeroGiftEquip(int giftEquip) {
this.heroGiftEquipList.add(giftEquip);
updateString("heroGiftEquipList", heroGiftEquipList);
}
public Set<Integer> getHeroGiftEquipList() {
return heroGiftEquipList;
}
@Override @Override
public Object clone(){ public Object clone(){
Hero clone = null; Hero clone = null;

View File

@ -173,7 +173,6 @@ public class HeroManager extends MongoBase {
/** /**
* *
* @return
*/ */
public int getTotalLikeLv() { public int getTotalLikeLv() {
int allHeroLikableNum = HeroUpLikableRequestHandler.GetAllHeroLikableNum(getHeroLikableMap()); int allHeroLikableNum = HeroUpLikableRequestHandler.GetAllHeroLikableNum(getHeroLikableMap());
@ -184,7 +183,7 @@ public class HeroManager extends MongoBase {
public int getLikableSendTime() { return likableSendTime; } public int getLikableSendTime() { return likableSendTime; }
private Map<Integer,Integer>faBaoSoulMap= new HashMap<>();//法宝之魂数据 private Map<Integer,Integer> faBaoSoulMap= new HashMap<>();//法宝之魂数据
public Map<Integer, Integer> getFaBaoSoulMap() { public Map<Integer, Integer> getFaBaoSoulMap() {
return faBaoSoulMap; return faBaoSoulMap;
@ -339,8 +338,7 @@ public class HeroManager extends MongoBase {
} }
public Hero getHero(String heroId) { public Hero getHero(String heroId) {
Hero hero = heroMap.get(heroId); return heroMap.get(heroId);
return hero;
} }
public void removeHero(int uid,String heroId) { public void removeHero(int uid,String heroId) {

View File

@ -212,6 +212,8 @@ public class PlayerManager extends MongoBase {
private Set<Integer> desireOpenFabaoList = new HashSet<>();//心愿可以选择的法宝列表 private Set<Integer> desireOpenFabaoList = new HashSet<>();//心愿可以选择的法宝列表
private final Map<Integer, Integer> desireDraw = new HashMap<>();//选择的心愿 private final Map<Integer, Integer> desireDraw = new HashMap<>();//选择的心愿
private Map<Integer, int[]> duoduiTower = new HashMap<>();//多对塔记录
//挑战副本等级 //挑战副本等级
private int endlessNewReplica; //无尽副本 private int endlessNewReplica; //无尽副本
private int treasureReplica; //宝物副本 private int treasureReplica; //宝物副本
@ -220,6 +222,8 @@ public class PlayerManager extends MongoBase {
private Map<Integer, Integer> gemDrawCountMap = new HashMap<>();// 命格抽卡次数记录 private Map<Integer, Integer> gemDrawCountMap = new HashMap<>();// 命格抽卡次数记录
private Set<Integer> playerGiftEquipList = new HashSet<>();//礼物装备列表
public PlayerManager(){ public PlayerManager(){
this.setRootCollection(User._COLLECTION_NAME); this.setRootCollection(User._COLLECTION_NAME);
} }
@ -255,12 +259,26 @@ public class PlayerManager extends MongoBase {
updateString("desireOpenFabaoList", desireOpenFabaoList); updateString("desireOpenFabaoList", desireOpenFabaoList);
} }
/** public Set<Integer> getPlayerGiftEquipList() {
* return playerGiftEquipList;
*/ }
private Map<Integer, int[]> duoduiTower = new HashMap<>();
public void setDuoduiTowerTier(int key,int tier) { public void setPlayerGiftEquipList(Set<Integer> playerGiftEquipList) {
this.playerGiftEquipList = playerGiftEquipList;
updateString("playerGiftEquipList", playerGiftEquipList);
}
public void addPlayerGiftEquip(int giftEquip) {
this.playerGiftEquipList.add(giftEquip);
updateString("playerGiftEquipList", playerGiftEquipList);
}
public void setDuoduiTower(Map<Integer, int[]> duoduiTower) {
this.duoduiTower = duoduiTower;
updateString("duoduiTower", duoduiTower);
}
public void setDuoduiTowerTier(int key, int tier) {
int[] ints = this.duoduiTower.get(key); int[] ints = this.duoduiTower.get(key);
if (ints == null || ints.length == 0){ if (ints == null || ints.length == 0){
ints = new int[2]; ints = new int[2];

View File

@ -19,15 +19,18 @@ import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil; import com.ljsd.jieling.util.ToolsUtil;
import config.*; import config.*;
import manager.STableManager;
import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.RandomUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import rpc.protocols.CommonProto; import rpc.protocols.CommonProto;
import rpc.protocols.HeroInfoProto;
import rpc.protocols.MessageTypeProto; import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto; import rpc.protocols.PlayerInfoProto;
import util.StringUtil; import util.StringUtil;
import util.TimeUtils; import util.TimeUtils;
import java.text.MessageFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -452,4 +455,209 @@ public class EquipLogic {
return value; return value;
} }
/**
* 穿
*/
public void wearGiftEquip(ISession iSession, HeroInfoProto.GiftEquipWearRequest proto) throws Exception {
User user = UserManager.getUser(iSession.getUid());
int operate = proto.getOperate();
String role = proto.getRole();
List<Integer> giftIds = proto.getGiftIdsList();
HashSet<Integer> set = new HashSet<>(giftIds);
if (set.size() != giftIds.size()){
String format = MessageFormat.format("礼物穿戴报错,存在重复礼物, uid{0}list{1}", user.getId(), giftIds);
throw new ErrorCodeException(format);
}
PlayerManager playerManager = user.getPlayerInfoManager();
HeroManager heroManager = user.getHeroManager();
int[][] items = ToolsUtil.convertListTo2DArray(giftIds);
if (operate == 1){
// 穿戴
boolean checked = ItemUtil.checkCostLong(user, items, 1);
if (!checked){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
if (role.equals("0")){
// 主角礼物
Set<Integer> playerGifts = playerManager.getPlayerGiftEquipList();
if (hasDuplicates(playerGifts, set)){
String format = MessageFormat.format("礼物穿戴报错, 主角礼物已穿戴uid{0}list{1}, roleList:{2}", user.getId(), giftIds, playerGifts);
throw new ErrorCodeException(format);
}
playerGifts.addAll(giftIds);
playerManager.setPlayerGiftEquipList(playerGifts);
}else {
// 英雄礼物
Hero hero = heroManager.getHero(role);
if (hero == null){
String format = MessageFormat.format("礼物穿戴报错, 英雄不存在uid{0}role{1}", user.getId(), role);
throw new ErrorCodeException(format);
}
Set<Integer> heroGifts = hero.getHeroGiftEquipList();
if (hasDuplicates(heroGifts, set)){
String format = MessageFormat.format("礼物穿戴报错, 英雄礼物已穿戴uid{0}list{1}, roleList:{2}", user.getId(), giftIds, heroGifts);
throw new ErrorCodeException(format);
}
int boxNum = getHeroGiftBoxNum(user);
if (heroGifts.size() + set.size() > boxNum){
String format = MessageFormat.format("礼物穿戴报错, 英雄礼物超出格子数量uid{0}wear{1}, allow:{2}", user.getId(), heroGifts.size() + set.size(), boxNum);
throw new ErrorCodeException(format);
}
int templateId = hero.getTemplateId();
SCHero scHero = SCHero.getsCHero().get(templateId);
if (scHero == null){
String format = MessageFormat.format("礼物穿戴报错, 英雄配置不存在uid{0}id{1}", user.getId(), templateId);
throw new ErrorCodeException(format);
}
Map<Integer, SEquipConfig> equipConfig = SEquipConfig.equipConfigMap;
for (Integer id : set) {
SEquipConfig config = equipConfig.get(id);
if (config == null){
String format = MessageFormat.format("礼物穿戴报错, 英雄礼物配置不存在uid{0}id{1}", user.getId(), id);
throw new ErrorCodeException(format);
}
if (config.getRangeHeroTids() != null && !config.getRangeHeroTids().contains(templateId)){
String format = MessageFormat.format("礼物穿戴报错, 该礼物无法配置给改英雄uid{0}id{1}hero:{2}", user.getId(), id, scHero.getId());
throw new ErrorCodeException(format);
}
boolean profession = EquipLogic.getInstance().verifyEquipProfessionLimit(templateId, id);
if (!profession){
throw new ErrorCodeException(ErrorCode.HERO_UN_MATCH,"职业不满足条件:"+id);
}
}
heroGifts.addAll(giftIds);
hero.setHeroGiftEquipList(heroGifts);
}
ItemUtil.itemCost(user, items, BIReason.GIFT_EQUIP_UP_COST ,1);
}
else {
// 脱下
if (role.equals("0")){
String format = MessageFormat.format("礼物脱卸报错, 主角礼物无法脱卸uid{0}", user.getId());
throw new ErrorCodeException(format);
}
// 英雄礼物
Hero hero = heroManager.getHero(role);
if (hero == null){
String format = MessageFormat.format("礼物脱卸报错, 英雄不存在uid{0}role{1}", user.getId(), role);
throw new ErrorCodeException(format);
}
Set<Integer> heroGifts = hero.getHeroGiftEquipList();
if (!heroGifts.containsAll(set)){
String format = MessageFormat.format("礼物脱卸报错, 英雄礼物不存在uid{0}list{1}, roleList:{2}", user.getId(), giftIds, heroGifts);
throw new ErrorCodeException(format);
}
heroGifts.removeAll(set);
hero.setHeroGiftEquipList(heroGifts);
ItemUtil.drop(user, items, BIReason.GIFT_EQUIP_DOWN_REWARD);
}
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GiftEquipWearResponse_VALUE, null, true);
}
public static boolean hasDuplicates(Set<Integer> list1, Set<Integer> list2) {
for (Integer element : list2) {
if (list1.contains(element)) {
return true;
}
}
return false;
}
/**
*
*/
public boolean verifyEquipProfessionLimit(int heroId, int equipId){
// 默认值
boolean result = false;
// 装备信息
SEquipConfig equip = STableManager.getConfig(SEquipConfig.class).get(equipId);
// 英雄信息
SCHero hero = SCHero.getsCHero().get(heroId);
if (equip == null || hero == null){
LOGGER.error("装备神印装备ID或者英雄ID错误表内容查询失败,equip:{},hero:{}",equipId,heroId);
return false;
}
// 判断条件查表去
switch (equip.getProfessionLimit()){
case 0:
result = true;
break;
case 1:
if (hero.getProfession() == 1){
result = true;
}
break;
case 2:
if (hero.getProfession() == 2){
result = true;
}
break;
case 3:
if (hero.getProfession() == 4){
result = true;
}
break;
case 4:
if (hero.getProfession() == 3){
result = true;
}
break;
case 5:
if (hero.getJob() == 1){
result = true;
}
break;
case 6:
if (hero.getJob() == 2){
result = true;
}
break;
case 7:
if (hero.getProfession() == 2 || hero.getProfession() == 3){
result = true;
}
break;
default:
break;
}
return result;
}
/**
*
* @param user
* @return
*/
public int getGiftProsperityNum(User user){
Set<Integer> giftEquipList = user.getPlayerInfoManager().getPlayerGiftEquipList();
Map<Integer, SEquipConfig> configMap = SEquipConfig.equipConfigMap;
int num = 0;
for (Integer id : giftEquipList) {
SEquipConfig config = configMap.get(id);
if (config == null){
continue;
}
num += config.getGift();
}
return num;
}
/**
*
* @param user
* @return
*/
public int getHeroGiftBoxNum(User user){
int prosperityNum = getGiftProsperityNum(user);
int resultBox = 0;
for (SGiftConfig value : SGiftConfig.map.values()) {
if (prosperityNum <= value.getGift()){
resultBox = value.getBox();
break;
}
}
return resultBox;
}
} }

View File

@ -225,7 +225,7 @@ public class FightUtil {
meCrossFightTeam, heCrossFightTeam, FightUtil.getFightSeed(), false, fightType, mostTime); meCrossFightTeam, heCrossFightTeam, FightUtil.getFightSeed(), false, fightType, mostTime);
} }
public static CommonProto.FightTeamInfo getCrossFightTeam(CSPlayer csPlayer, int teamId) throws Exception { public static CommonProto.FightTeamInfo getCrossFightTeam(CSPlayer csPlayer, int teamId) throws ErrorCodeException {
User user = PlayerLogic.getInstance().getUserByRpc(csPlayer.getUserId()); User user = PlayerLogic.getInstance().getUserByRpc(csPlayer.getUserId());
if (user == null){ if (user == null){
throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT); throw new ErrorCodeException(ErrorCode.USE_NOT_EXIT);

View File

@ -24,11 +24,11 @@ import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.event.*; import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.activity.eventhandler.HeroFiveStarGetEventHandler; import com.ljsd.jieling.logic.activity.eventhandler.HeroFiveStarGetEventHandler;
import com.ljsd.jieling.logic.activity.eventhandler.PokemonFiveStarGetEventHandler; import com.ljsd.jieling.logic.activity.eventhandler.PokemonFiveStarGetEventHandler;
import com.ljsd.jieling.logic.activity.eventhandler.SaveHeroForceEventHandler;
import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic; import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.dao.vo.HeroVo; import com.ljsd.jieling.logic.dao.vo.HeroVo;
import com.ljsd.jieling.logic.equip.EquipLogic;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic; import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.logic.fight.CombatLogic; import com.ljsd.jieling.logic.fight.CombatLogic;
import com.ljsd.jieling.logic.fight.passiveSkillCal.PassiveskillCalEnum; import com.ljsd.jieling.logic.fight.passiveSkillCal.PassiveskillCalEnum;
@ -481,7 +481,7 @@ public class HeroLogic {
index = index % count; index = index % count;
} }
///天地洪炉默认没选择up道具特殊处理(奇数为普通卡池) ///天地洪炉默认没选择up道具特殊处理(奇数为普通卡池)
if (user.getHeroManager().getTrumpSelectItemMap().size() == 0 && sLotteryRewardConfig.getPool() % 2 == 1) { if (user.getHeroManager().getTrumpSelectItemMap().isEmpty() && sLotteryRewardConfig.getPool() % 2 == 1) {
HashMap<Integer, Integer> map = new HashMap<>(); HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
map.put(i + 1, list.get(i).getReward()[0]); map.put(i + 1, list.get(i).getReward()[0]);
@ -1457,7 +1457,7 @@ public class HeroLogic {
.filter(v -> v.getType() == 1) .filter(v -> v.getType() == 1)
.forEach(v -> heroIdsList.add(v.getItemId())); .forEach(v -> heroIdsList.add(v.getItemId()));
ErrorCode err = null; ErrorCode err = null;
if (heroIdsList.size() > 0) { if (!heroIdsList.isEmpty()) {
err = ItemLogic.getInstance().checkHeroResolve(heroIdsList, user); err = ItemLogic.getInstance().checkHeroResolve(heroIdsList, user);
} }
if (null != err) { if (null != err) {
@ -2081,7 +2081,7 @@ public class HeroLogic {
///法宝之魂共鸣技能 ///法宝之魂共鸣技能
Map<Integer, Integer> faBaoGongMingSkillMap = heroVo.getFaBaoGongMingSkillMap(); Map<Integer, Integer> faBaoGongMingSkillMap = heroVo.getFaBaoGongMingSkillMap();
if (faBaoGongMingSkillMap.size() > 0) { if (!faBaoGongMingSkillMap.isEmpty()) {
List<Integer> faBaoSoulSkills=new ArrayList<>(); List<Integer> faBaoSoulSkills=new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : faBaoGongMingSkillMap.entrySet()) { for (Map.Entry<Integer, Integer> entry : faBaoGongMingSkillMap.entrySet()) {
SXiuXianSkill sXiuXianSkill = STableManager.getConfig(SXiuXianSkill.class).get(entry.getValue()); SXiuXianSkill sXiuXianSkill = STableManager.getConfig(SXiuXianSkill.class).get(entry.getValue());
@ -2102,7 +2102,7 @@ public class HeroLogic {
} }
} }
} }
if (faBaoSoulSkills.size()>0) { if (!faBaoSoulSkills.isEmpty()) {
skillList.addAll(faBaoSoulSkills); skillList.addAll(faBaoSoulSkills);
} }
} }
@ -2692,6 +2692,8 @@ public class HeroLogic {
applyEquipSuiteAttribute(heroAllAttribute, hero); applyEquipSuiteAttribute(heroAllAttribute, hero);
// 魂灵宝加成 // 魂灵宝加成
applyJewelAttribute(heroAllAttribute, hero, user); applyJewelAttribute(heroAllAttribute, hero, user);
// 礼物装备加成
applyGiftEquipAttribute(heroAllAttribute, hero, user);
// 法宝,法相加成 // 法宝,法相加成
applyEquipTalismanaAndFaxiangAttribute(heroAllAttribute, hero, user); applyEquipTalismanaAndFaxiangAttribute(heroAllAttribute, hero, user);
// 魂印和神印属性加成 // 魂印和神印属性加成
@ -2877,7 +2879,7 @@ public class HeroLogic {
} }
//英雄总好感度属性加成 //英雄总好感度属性加成
Map<Integer, Integer> allLikablePropAddMap = heroManager.getAllLikablePropAddMap(); Map<Integer, Integer> allLikablePropAddMap = heroManager.getAllLikablePropAddMap();
if (allLikablePropAddMap.size() > 0) { if (!allLikablePropAddMap.isEmpty()) {
int[][] allLikableProp = ItemUtil.mapToArray(allLikablePropAddMap); int[][] allLikableProp = ItemUtil.mapToArray(allLikablePropAddMap);
combinedAttribute(allLikableProp, heroAllAttribute); combinedAttribute(allLikableProp, heroAllAttribute);
} }
@ -3020,6 +3022,23 @@ public class HeroLogic {
} }
} }
private void applyGiftEquipAttribute(Map<Integer, Long> heroAllAttribute, Hero hero, User user){
// ... 礼物装备 ...
Set<Integer> heroGiftEquipList = hero.getHeroGiftEquipList();
Set<Integer> playerGiftEquipList = user.getPlayerInfoManager().getPlayerGiftEquipList();
HashSet<Integer> set = new HashSet<>();
set.addAll(heroGiftEquipList);
set.addAll(playerGiftEquipList);
Map<Integer, SEquipConfig> configMap = SEquipConfig.equipConfigMap;
for (Integer id : set) {
SEquipConfig config = configMap.get(id);
if (config == null){
continue;
}
combinedAttribute(config.getProperty(), heroAllAttribute);
}
}
private void applyJewelAttribute(Map<Integer, Long> heroAllAttribute, Hero hero, User user){ private void applyJewelAttribute(Map<Integer, Long> heroAllAttribute, Hero hero, User user){
// ... 魂灵宝属性 ... // ... 魂灵宝属性 ...
EquipManager equipManager = user.getEquipManager(); EquipManager equipManager = user.getEquipManager();
@ -3548,7 +3567,7 @@ public class HeroLogic {
if (null == equip || null == hero) { if (null == equip || null == hero) {
throw new ErrorCodeException(ErrorCode.HERO_EQUIP_ERR); throw new ErrorCodeException(ErrorCode.HERO_EQUIP_ERR);
} }
if (null != equip.getHeroId() && !equip.getHeroId().equals("")) { if (null != equip.getHeroId() && !equip.getHeroId().isEmpty()) {
if (heroManager.getHero(equip.getHeroId()) == null) { if (heroManager.getHero(equip.getHeroId()) == null) {
equip.setHeroId(""); equip.setHeroId("");
} }
@ -3668,7 +3687,7 @@ public class HeroLogic {
Map<Integer, Integer> randomMap = new ConcurrentHashMap<>(); Map<Integer, Integer> randomMap = new ConcurrentHashMap<>();
randomMap.put(itemId, composeNum); randomMap.put(itemId, composeNum);
CommonProto.Drop.Builder drop = ItemUtil.useRandomItem(user, randomMap, BIReason.COMPOS_HERO_REWARD); CommonProto.Drop.Builder drop = ItemUtil.useRandomItem(user, randomMap, BIReason.COMPOS_HERO_REWARD);
if (drop.getPokemonList().size() > 0) { if (!drop.getPokemonList().isEmpty()) {
fiveStarPokemonPushByCombine(user, drop.getPokemonList().get(0).getTempId(), composeNum); fiveStarPokemonPushByCombine(user, drop.getPokemonList().get(0).getTempId(), composeNum);
} }
HeroInfoProto.HeroComposeResponse heroComposeResponse = HeroInfoProto.HeroComposeResponse HeroInfoProto.HeroComposeResponse heroComposeResponse = HeroInfoProto.HeroComposeResponse
@ -3714,7 +3733,7 @@ public class HeroLogic {
long totalForce = 0; long totalForce = 0;
targetUser.getTeamPosManager().setCurTeamPosId(teamId); targetUser.getTeamPosManager().setCurTeamPosId(teamId);
Map<Integer, List<TeamPosHeroInfo>> teamPosForHero = targetUser.getTeamPosManager().getTeamPosForHero(); Map<Integer, List<TeamPosHeroInfo>> teamPosForHero = targetUser.getTeamPosManager().getTeamPosForHero();
if (teamPosForHero == null || teamPosForHero.size() == 0) { if (teamPosForHero == null || teamPosForHero.isEmpty()) {
return totalForce; return totalForce;
} }
List<TeamPosHeroInfo> teamPosHeroInfoList = teamPosForHero.get(teamId); List<TeamPosHeroInfo> teamPosHeroInfoList = teamPosForHero.get(teamId);
@ -3945,7 +3964,7 @@ public class HeroLogic {
Map<Integer, SChangingCardLevel> poolConfig = SChangingCardLevel.getConfigByPoolId(card.getLevelUpPool()); Map<Integer, SChangingCardLevel> poolConfig = SChangingCardLevel.getConfigByPoolId(card.getLevelUpPool());
if (poolConfig != null) { if (poolConfig != null) {
List<SChangingCardLevel> levelList = poolConfig.values().stream().filter(n -> n.getLevel() == level).collect(Collectors.toList()); List<SChangingCardLevel> levelList = poolConfig.values().stream().filter(n -> n.getLevel() == level).collect(Collectors.toList());
if (levelList.size() > 0) { if (!levelList.isEmpty()) {
combinedAttribute(levelList.get(0).getPropList(), attrMap); combinedAttribute(levelList.get(0).getPropList(), attrMap);
} }
} }
@ -4346,12 +4365,12 @@ public class HeroLogic {
if (reason == BIReason.UPHERO_DECOMPOS_HERO_REWARD) { if (reason == BIReason.UPHERO_DECOMPOS_HERO_REWARD) {
// 装备 // 装备
Map<Integer, Integer> equipByPositionMap = hero.getEquipByPositionMap(); Map<Integer, Integer> equipByPositionMap = hero.getEquipByPositionMap();
if (equipByPositionMap != null && equipByPositionMap.size() > 0) { if (equipByPositionMap != null && !equipByPositionMap.isEmpty()) {
equipByPositionMap.forEach((k, v) -> returnItemMap.put(v, returnItemMap.getOrDefault(v, 0) + 1)); equipByPositionMap.forEach((k, v) -> returnItemMap.put(v, returnItemMap.getOrDefault(v, 0) + 1));
} }
// 魂印 // 魂印
Map<Integer, Integer> soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); Map<Integer, Integer> soulEquipByPositionMap = hero.getSoulEquipByPositionMap();
if (soulEquipByPositionMap != null && soulEquipByPositionMap.size() > 0) { if (soulEquipByPositionMap != null && !soulEquipByPositionMap.isEmpty()) {
soulEquipByPositionMap.forEach((k, v) -> returnItemMap.put(v, returnItemMap.getOrDefault(v, 0) + 1)); soulEquipByPositionMap.forEach((k, v) -> returnItemMap.put(v, returnItemMap.getOrDefault(v, 0) + 1));
} }
// 宝器 // 宝器
@ -4403,7 +4422,7 @@ public class HeroLogic {
} }
//返还法宝修炼材料 //返还法宝修炼材料
Map<Integer, Integer> especialEquipReturnItem = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero); Map<Integer, Integer> especialEquipReturnItem = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero);
if (especialEquipReturnItem != null && especialEquipReturnItem.size() > 0) { if (especialEquipReturnItem != null && !especialEquipReturnItem.isEmpty()) {
for (Map.Entry<Integer, Integer> entry : especialEquipReturnItem.entrySet()) { for (Map.Entry<Integer, Integer> entry : especialEquipReturnItem.entrySet()) {
returnItemMap.put(entry.getKey(), returnItemMap.getOrDefault(entry.getKey(), 0) + entry.getValue()); returnItemMap.put(entry.getKey(), returnItemMap.getOrDefault(entry.getKey(), 0) + entry.getValue());
} }
@ -6261,7 +6280,7 @@ public class HeroLogic {
if (!indexBox.contains(position)){ if (!indexBox.contains(position)){
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE,"位置未解锁:"+position); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE,"位置未解锁:"+position);
} }
boolean profession = verifyProfessionByGodSeal(hero.getTemplateId(), equipId); boolean profession = EquipLogic.getInstance().verifyEquipProfessionLimit(hero.getTemplateId(), equipId);
if (!profession){ if (!profession){
throw new ErrorCodeException(ErrorCode.HERO_UN_MATCH,"职业不满足条件:"+equipId); throw new ErrorCodeException(ErrorCode.HERO_UN_MATCH,"职业不满足条件:"+equipId);
} }
@ -6356,69 +6375,6 @@ public class HeroLogic {
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.UpGodSealResponse_VALUE, builder.build()); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.UpGodSealResponse_VALUE, builder.build());
} }
/**
*
* @param heroId
* @param equipId
* @return
*/
private boolean verifyProfessionByGodSeal(int heroId,int equipId){
// 默认值
boolean result = false;
// 装备信息
SEquipConfig equip = STableManager.getConfig(SEquipConfig.class).get(equipId);
// 英雄信息
SCHero hero = SCHero.getsCHero().get(heroId);
if (equip == null || hero == null){
LOGGER.error("装备神印装备ID或者英雄ID错误表内容查询失败,equip:{},hero:{}",equipId,heroId);
return false;
}
// 判断条件查表去
switch (equip.getProfessionLimit()){
case 0:
result = true;
break;
case 1:
if (hero.getProfession() == 1){
result = true;
}
break;
case 2:
if (hero.getProfession() == 2){
result = true;
}
break;
case 3:
if (hero.getProfession() == 4){
result = true;
}
break;
case 4:
if (hero.getProfession() == 3){
result = true;
}
break;
case 5:
if (hero.getJob() == 1){
result = true;
}
break;
case 6:
if (hero.getJob() == 2){
result = true;
}
break;
case 7:
if (hero.getProfession() == 2 || hero.getProfession() == 3){
result = true;
}
break;
default:
break;
}
return result;
}
/** /**
* *
*/ */

View File

@ -272,9 +272,6 @@ public class CBean2Proto {
/** /**
* heroredis * heroredis
* redis * redis
* @param user
* @param hero
* @return
*/ */
public static HelpHero heroToHelpHero(User user,Hero hero) throws Exception { public static HelpHero heroToHelpHero(User user,Hero hero) throws Exception {
// 获取神将类型 // 获取神将类型
@ -284,7 +281,7 @@ public class CBean2Proto {
Hero heroVo = getHeroVoToHero(user, hero); Hero heroVo = getHeroVoToHero(user, hero);
// 魂宝灵宝镜像 // 魂宝灵宝镜像
List<Jewel> jewels = new ArrayList<>(); List<Jewel> jewels = new ArrayList<>();
if (heroVo.getJewelInfo() != null && heroVo.getJewelInfo().size() > 0){ if (heroVo.getJewelInfo() != null && !heroVo.getJewelInfo().isEmpty()){
// 装备列表 // 装备列表
Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap(); Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
for (String id:heroVo.getJewelInfo()){ for (String id:heroVo.getJewelInfo()){
@ -298,7 +295,7 @@ public class CBean2Proto {
// 法相 // 法相
List<Faxiang> faxiang = new ArrayList<>(); List<Faxiang> faxiang = new ArrayList<>();
Set<String> faxiangList = heroVo.getFaxiangList(); Set<String> faxiangList = heroVo.getFaxiangList();
if (faxiangList != null && faxiangList.size() > 0){ if (faxiangList != null && !faxiangList.isEmpty()){
// 装备列表 // 装备列表
Map<String, Faxiang> faxiangMap = user.getEquipManager().getFaxiangMap(); Map<String, Faxiang> faxiangMap = user.getEquipManager().getFaxiangMap();
for (String id : faxiangList) { for (String id : faxiangList) {
@ -321,9 +318,6 @@ public class CBean2Proto {
/** /**
* *
* @param user
* @param hero
* @return
*/ */
private static Hero getHeroVoToHero(User user,Hero hero) throws Exception { private static Hero getHeroVoToHero(User user,Hero hero) throws Exception {
Hero clone = (Hero) hero.clone(); Hero clone = (Hero) hero.clone();
@ -338,9 +332,6 @@ public class CBean2Proto {
/** /**
* *
* @param user
* @param hero
* @return
*/ */
private static Jewel getJewelVoToJewel(User user,Hero hero,Jewel jewel){ private static Jewel getJewelVoToJewel(User user,Hero hero,Jewel jewel){
Jewel clone = jewel.clone(); Jewel clone = jewel.clone();
@ -351,9 +342,6 @@ public class CBean2Proto {
/** /**
* *
* @param everyUser
* @param function
* @return
*/ */
// public static CommonProto.UserRank.Builder getOneUserRank(User everyUser, int function, ArenaRecord arenaRecord){ // public static CommonProto.UserRank.Builder getOneUserRank(User everyUser, int function, ArenaRecord arenaRecord){
// return CommonProto.UserRank.newBuilder() // return CommonProto.UserRank.newBuilder()
@ -382,7 +370,7 @@ public class CBean2Proto {
public static CommonProto.Hero getHero(Hero hero,HeroManager heroManager){ public static CommonProto.Hero getHero(Hero hero,HeroManager heroManager){
// 鸿蒙阵装备同步 // 鸿蒙阵装备同步
Collection<Integer> equipList =hero.getEquipByPositionMap().values(); Collection<Integer> equipList =hero.getEquipByPositionMap().values();
if(equipList.size() ==0 ){ if(equipList.isEmpty()){
equipList = hero.getEquipByHongmengPositionMap(heroManager).values(); equipList = hero.getEquipByHongmengPositionMap(heroManager).values();
} }
@ -458,14 +446,12 @@ public class CBean2Proto {
.addAllGodSeals(godSeals) .addAllGodSeals(godSeals)
.addAllEquipStrong(equipStrongList) .addAllEquipStrong(equipStrongList)
.setEquipAdvanceLv(hero.getEquipAdvanceLv()) .setEquipAdvanceLv(hero.getEquipAdvanceLv())
.addAllGiftEquipIds(hero.getHeroGiftEquipList())
.build(); .build();
} }
/*** /***
* 鸿 * 鸿
* @param hero
* @param heroManager
* @return
*/ */
public static CommonProto.Hero getHeroByHongMeng(Hero hero,HeroManager heroManager){ public static CommonProto.Hero getHeroByHongMeng(Hero hero,HeroManager heroManager){
CommonProto.Hero hero1 = getHero(hero,heroManager); CommonProto.Hero hero1 = getHero(hero,heroManager);
@ -516,8 +502,6 @@ public class CBean2Proto {
/** /**
* *
* @param equip
* @return
*/ */
public static CommonProto.Equip getEquipProto(PropertyItem equip){ public static CommonProto.Equip getEquipProto(PropertyItem equip){
CommonProto.Equip.Builder equipProto = CommonProto.Equip.newBuilder(); CommonProto.Equip.Builder equipProto = CommonProto.Equip.newBuilder();
@ -534,8 +518,6 @@ public class CBean2Proto {
/** /**
* *
* @param faxiang
* @return
*/ */
public static CommonProto.Equip getFaxiangEquipProto(Faxiang faxiang){ public static CommonProto.Equip getFaxiangEquipProto(Faxiang faxiang){
CommonProto.Equip.Builder equipProto = CommonProto.Equip.newBuilder(); CommonProto.Equip.Builder equipProto = CommonProto.Equip.newBuilder();
@ -548,9 +530,6 @@ public class CBean2Proto {
/** /**
* *
* @param equip
* @param user
* @return
*/ */
public static CommonProto.Equip getEquipProto(PropertyItem equip,User user){ public static CommonProto.Equip getEquipProto(PropertyItem equip,User user){
CommonProto.Equip.Builder proto = getEquipProto(equip).toBuilder(); CommonProto.Equip.Builder proto = getEquipProto(equip).toBuilder();
@ -564,8 +543,6 @@ public class CBean2Proto {
/** /**
* id * id
* @param equipId
* @return
*/ */
public static CommonProto.Equip getEquipProto(int equipId) { public static CommonProto.Equip getEquipProto(int equipId) {
return CommonProto.Equip.newBuilder().setEquipId(equipId).build(); return CommonProto.Equip.newBuilder().setEquipId(equipId).build();

View File

@ -608,11 +608,7 @@ public class ItemUtil {
int itemType = getItemType(sItem); int itemType = getItemType(sItem);
long amount = MathUtils.numRount((itemNum * MathUtils.floatToDouble(dropRatio))); long amount = MathUtils.numRount((itemNum * MathUtils.floatToDouble(dropRatio)));
switch (itemType) { switch (itemType) {
case GlobalItemType.SOUL_MARK:
case GlobalItemType.GOD_SEAL:
case GlobalItemType.ITEM: case GlobalItemType.ITEM:
case GlobalItemType.ESPECIAL_EQUIP:
case GlobalItemType.EQUIP:
putCountLongMap(itemId,amount, itemObj.getItemMap()); putCountLongMap(itemId,amount, itemObj.getItemMap());
break; break;
case GlobalItemType.CARD: case GlobalItemType.CARD:
@ -672,6 +668,10 @@ public class ItemUtil {
case GlobalItemType.GENERAL_DEBRIS: case GlobalItemType.GENERAL_DEBRIS:
case GlobalItemType.HERO_CHANGE_CARD: case GlobalItemType.HERO_CHANGE_CARD:
case GlobalItemType.MAGIC_SOLDIER_FRAGMENTS: case GlobalItemType.MAGIC_SOLDIER_FRAGMENTS:
case GlobalItemType.SOUL_MARK:
case GlobalItemType.GOD_SEAL:
case GlobalItemType.ESPECIAL_EQUIP:
case GlobalItemType.EQUIP:
itemType = GlobalItemType.ITEM; itemType = GlobalItemType.ITEM;
break; break;
default: default:
@ -697,150 +697,164 @@ public class ItemUtil {
/** /**
* *
*/ */
public static int addItemByMail(User user, Map<Integer, Long> itemMap,CommonProto.Drop.Builder dropBuilder,int reason) throws Exception { public static int addItemByMail(User user, Map<Integer, Long> itemMap, CommonProto.Drop.Builder dropBuilder, int reason) throws Exception {
if (itemMap.isEmpty()) { if (itemMap.isEmpty()) {
return 1; return 1;
} }
EquipManager equipManager=user.getEquipManager();
List<CommonProto.Item> itemProtoList = new CopyOnWriteArrayList<>(); EquipManager equipManager = user.getEquipManager();
ItemManager itemManager = user.getItemManager(); ItemManager itemManager = user.getItemManager();
List<CommonProto.Item> sendToFront = new CopyOnWriteArrayList<>(); List<CommonProto.Item> itemProtoList = new ArrayList<>();
//超过上限不能直接获得 List<CommonProto.Item> sendToFront = new ArrayList<>();
Map<Integer,Integer> extraItem = new HashMap<>(itemMap.size()); Map<Integer, Integer> extraItem = new HashMap<>(itemMap.size());
List<Integer>changeEquipList=null; List<Integer> changeEquipList = null;
for (Map.Entry<Integer, Long> entry : itemMap.entrySet()) { for (Map.Entry<Integer, Long> entry : itemMap.entrySet()) {
SItem sItem = SItem.getsItemMap().get (entry.getKey()); int itemId = entry.getKey();
if (sItem.getItemBaseType()==6){ long itemNum = entry.getValue();
equipManager.addEquipList(entry.getKey());
SItem sItem = SItem.getsItemMap().get(itemId);
if (sItem.getItemBaseType() == 6) {
equipManager.addEquipList(itemId);
} }
if (sItem.getItemType()==3 && reason != BIReason.EQUIP_UNLOAD_REWARD && reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD){
if (changeEquipList==null) { if (sItem.getItemType() == 3 && reason != BIReason.EQUIP_UNLOAD_REWARD && reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD) {
changeEquipList=new ArrayList<>(); if (changeEquipList == null) {
changeEquipList = new ArrayList<>();
} }
itemManager.setEquipBookMap(entry.getKey(),entry.getValue()); itemManager.setEquipBookMap(itemId, itemNum);
changeEquipList.add(entry.getKey()); changeEquipList.add(itemId);
} }
long itemNumlimit = sItem.getItemNumlimit(); long itemNumlimit = sItem.getItemNumlimit();
long itemNum = entry.getValue().intValue(); if (itemNum <= 0) {
if(itemNum <= 0){
continue; continue;
} }
if (itemNum >= itemNumlimit){
if (itemNum >= itemNumlimit) {
itemNum = itemNumlimit; itemNum = itemNumlimit;
} }
Item item = itemManager.getItem(entry.getKey());
Item item = itemManager.getItem(itemId);
if (item == null) { if (item == null) {
item = itemManager.newItem(entry.getKey(), itemNum); item = itemManager.newItem(itemId, itemNum);
} else { } else {
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){ if (sItem.getId() == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
itemNumlimit = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getMazeTreasureMax(); itemNumlimit = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getMazeTreasureMax();
} }
//数量超过了
if(item.getItemNum()> itemNumlimit){
//如果是寻龙玉,直接返回不给 if (item.getItemNum() > itemNumlimit) {
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){ if (sItem.getId() == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
continue; continue;
} }
if(reason==BIReason.TAKE_MAIL_REWARD){ if (reason == BIReason.TAKE_MAIL_REWARD) {
return 2; return 2;
}else{ } else {
extraItem.put(entry.getKey(), (int) (extraItem.getOrDefault(entry.getKey(),0)+entry.getValue())); extraItem.put(itemId, extraItem.getOrDefault(itemId, 0) + (int) itemNum);
} }
continue; continue;
} }
if (item.getItemNum() + entry.getValue() > itemNumlimit){
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){ if (item.getItemNum() + itemNum > itemNumlimit) {
item.setItemNum((int) (item.getItemNum() + entry.getValue())); if (sItem.getId() == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) {
}else{ item.setItemNum((int) (item.getItemNum() + itemNum));
if(reason==BIReason.TAKE_MAIL_REWARD){ } else {
if (reason == BIReason.TAKE_MAIL_REWARD) {
return 2; return 2;
}else{ } else {
extraItem.put(entry.getKey(), (int) (extraItem.getOrDefault(entry.getKey(),0)+entry.getValue())); extraItem.put(itemId, extraItem.getOrDefault(itemId, 0) + (int) itemNum);
continue; continue;
} }
} }
}else{ } else {
item.setItemNum(item.getItemNum() + entry.getValue()); item.setItemNum(item.getItemNum() + itemNum);
} }
} }
if(itemNum>=0){
itemProtoList.add(CBean2Proto.getItem(item,itemNum)); if (itemNum >= 0) {
itemProtoList.add(CBean2Proto.getItem(item, itemNum));
} }
// 触发任务,东海寻仙 // 触发任务,东海寻仙
if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD){ if (sItem.getItemType() == GlobalItemType.TRANSFORMATION_CARD) {
long count = itemNum; long count = itemNum;
while (count >= Integer.MAX_VALUE){ while (count >= Integer.MAX_VALUE) {
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),Integer.MAX_VALUE); user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GET_TRANSFIGURATION_CARD_NUM, sItem.getQuantity(), Integer.MAX_VALUE);
count-=Integer.MAX_VALUE; count -= Integer.MAX_VALUE;
} }
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.GET_TRANSFIGURATION_CARD_NUM,sItem.getQuantity(),(int)count); user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GET_TRANSFIGURATION_CARD_NUM, sItem.getQuantity(), (int) count);
} }
int eventType = ParamEventBean.UserItemEvent; int eventType = ParamEventBean.UserItemEvent;
if(currencyMap.contains(entry.getKey())){ if (currencyMap.contains(itemId)) {
eventType = ParamEventBean.UserCurrencyEvent; eventType = ParamEventBean.UserCurrencyEvent;
} }
KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.addReason,entry.getKey(),itemNum,item.getItemNum()); KtEventUtils.onKtEvent(user, eventType, reason, GlobalsDef.addReason, itemId, itemNum, item.getItemNum());
baseItemReport(user,item.getItemId(),(int)itemNum,1,reason); baseItemReport(user, itemId, (int) itemNum, 1, reason);
if(sItem.getId() == Global.EXP){ if (sItem.getId() == Global.EXP) {
userLevelUp(user,itemNum); userLevelUp(user, itemNum);
} }
if(sItem.getId() == Global.TREASURE_SCORE){ if (sItem.getId() == Global.TREASURE_SCORE) {
treasureLevelUp(user); treasureLevelUp(user);
} }
extraDropAop(user,dropBuilder,sItem);
sendToFront.add(CBean2Proto.getItem(item,-1)); extraDropAop(user, dropBuilder, sItem);
if(sItem.getItemType()==GlobalItemType.EQUIP){ sendToFront.add(CBean2Proto.getItem(item, -1));
if(reason!=BIReason.EQUIP_UNLOAD_REWARD&&reason!=BIReason.DECOMPOS_HERO_REWARD&&reason!=BIReason.UPHERO_DECOMPOS_HERO_REWARD){
user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),(int)itemNum); if (sItem.getItemType() == GlobalItemType.EQUIP) {
ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),(int)itemNum,reason); if (reason != BIReason.EQUIP_UNLOAD_REWARD && reason != BIReason.DECOMPOS_HERO_REWARD && reason != BIReason.UPHERO_DECOMPOS_HERO_REWARD) {
user.getUserMissionManager().onGameEvent(user, GameEvent.GET_EQUIP, sItem.getId(), (int) itemNum);
ReportUtil.onReportEvent(user, ReportEventEnum.GET_EQUIP.getType(), sItem.getId(), (int) itemNum, reason);
} }
} }
if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GOT_SOUL_MARK, sItem.getId(), (int)itemNum);
}
if(sItem.getId()==Global.DAILY_TASK_REMOVE_ITEM){
user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.DAILY_TASK_FINISH,(int)itemNum);
}
//日志记录
ItemLogic.getInstance().addItemLog(new ItemLog(user,0,reason,item,itemNum));
}
//发送装备图鉴修改推送
SendEquipBookIndication(user.getId(),itemManager,changeEquipList);
for(Map.Entry<Integer,Integer> entry:extraItem.entrySet()){ if (sItem.getItemType() == GlobalItemType.SOUL_MARK) {
itemProtoList.add(CBean2Proto.getItem(itemManager.getItemMap().get(entry.getKey()),entry.getValue())); user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.GOT_SOUL_MARK, sItem.getId(), (int) itemNum);
}
if (sItem.getId() == Global.DAILY_TASK_REMOVE_ITEM) {
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.DAILY_TASK_FINISH, (int) itemNum);
}
// 日志记录
ItemLogic.getInstance().addItemLog(new ItemLog(user, 0, reason, item, itemNum));
} }
// 发送装备图鉴修改推送
SendEquipBookIndication(user.getId(), itemManager, changeEquipList);
for (Map.Entry<Integer, Integer> entry : extraItem.entrySet()) {
itemProtoList.add(CBean2Proto.getItem(itemManager.getItemMap().get(entry.getKey()), entry.getValue()));
}
if (dropBuilder != null) { if (dropBuilder != null) {
dropBuilder.addAllItemlist(itemProtoList); dropBuilder.addAllItemlist(itemProtoList);
} }
if(!sendToFront.isEmpty()||extraItem.size()>0){ boolean extraBol = !extraItem.isEmpty();
MessageUtil.sendBagIndication(user.getId(),0,sendToFront,extraItem.size()>0); if (!sendToFront.isEmpty() || extraBol) {
MessageUtil.sendBagIndication(user.getId(), 0, sendToFront, extraBol);
} }
if(extraItem.size()>0){
if (extraBol) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
for(Map.Entry<Integer,Integer> entry:extraItem.entrySet()){ for (Map.Entry<Integer, Integer> entry : extraItem.entrySet()) {
builder.append(entry.getKey()).append("#").append(entry.getValue()); builder.append(entry.getKey()).append("#").append(entry.getValue()).append(",");
String title = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_title");
SItem item = SItem.getsItemMap().get(entry.getKey());
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())},new int[]{1,0},"#");
MailLogic.getInstance().sendMail(user.getId(),title,content,builder.toString(),TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
builder = new StringBuilder();
} }
builder.deleteCharAt(builder.length() - 1);
String title = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_title");
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("item_max_mail_content", new String[]{}, new int[]{}, "#");
MailLogic.getInstance().sendMail(user.getId(), title, content, builder.toString(), TimeUtils.nowInt(), GlobalsDef.addReason);
} }
Poster.getPoster().dispatchEvent(new AddItemEvent(user.getId(),itemMap)); return 0;
return 1;
} }
/** /**
* *
*/ */
private static void SendEquipBookIndication(int _uid,ItemManager _itemManage, List<Integer>_equipList){ private static void SendEquipBookIndication(int _uid,ItemManager _itemManage, List<Integer>_equipList){
if (_equipList==null||_equipList.isEmpty())return; if (_equipList==null||_equipList.isEmpty())return;
List<CommonProto.EquipBookInfo>equipList=new ArrayList<>(); List<CommonProto.EquipBookInfo>equipList=new ArrayList<>();
@ -1559,32 +1573,19 @@ public class ItemUtil {
} }
SItem sItem = SItem.getsItemMap().get(itemId); SItem sItem = SItem.getsItemMap().get(itemId);
int itemType = getItemType(sItem); int itemType = getItemType(sItem);
switch (itemType) {
case GlobalItemType.ITEM:
case GlobalItemType.SOUL_MARK:
case GlobalItemType.GOD_SEAL:
case GlobalItemType.EQUIP:
case GlobalItemType.ESPECIAL_EQUIP:
putCountMap(itemId,itemNum,itemMap);
break;
default:
break;
}
}
}
private static void selectCost(int[][] costItems, Map<Integer, Integer> itemMap,int times) {
for (int[] costItem : costItems){
int itemId = costItem[0];
int itemNum = costItem[1]*times;
SItem sItem = SItem.getsItemMap().get(itemId);
int itemType = getItemType(sItem);
if (itemType == GlobalItemType.ITEM) { if (itemType == GlobalItemType.ITEM) {
putCountMap(itemId, itemNum, itemMap); putCountMap(itemId, itemNum, itemMap);
} }
} }
} }
private static void selectCost(int[][] costItems, Map<Integer, Integer> itemMap, int times) {
for (int[] item : costItems) {
item[1] = item[1]*times;
}
selectCost(costItems, itemMap);
}
/** /**
* 使 * 使
*/ */

View File

@ -5,6 +5,7 @@ import com.ljsd.jieling.logic.activity.ActivityType;
import util.TimeUtils; import util.TimeUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Random; import java.util.Random;
public class ToolsUtil { public class ToolsUtil {
@ -70,29 +71,26 @@ public class ToolsUtil {
// System.out.println("Random Value: " + randomValue); // System.out.println("Random Value: " + randomValue);
// System.out.println("Start Index: " + startIndex); // System.out.println("Start Index: " + startIndex);
return startIndex; return startIndex;
} }
// /**
// /** * list
// * */
// * @param type 获取1 开始时间2 结束时间 public static int[][] convertListTo2DArray(List<Integer> list) {
// */ int[][] array2D = new int[list.size()][2];
// public long getTimeLong(long createUserTime,int type) {
// long baseTime = startTimeLong; for (int i = 0; i < list.size(); i++) {
// if(type == 2){ int num = list.get(i);
// baseTime = endTimeLong;
// } // 创建一个新的一维数组,并将数值添加到数组中
// long startTime=0; int[] newArray = {num, 1};
// if(time ==1){
// startTime = baseTime; // 将新的一维数组添加到二维数组中
// }else if(time == 3){ array2D[i] = newArray;
// long serverOpenTime = GameApplication.serverConfig.getCacheOpenTime(); }
// startTime = serverOpenTime + baseTime*1000;
// }else if(time == 2){ return array2D;
// startTime = TimeUtils.getAppointTimeInXDay(createUserTime,0) + baseTime*1000; }
// }
// return startTime;
// }
} }

View File

@ -59,6 +59,8 @@ public class SEquipConfig implements BaseConfig,Comparable<SEquipConfig> {
private int shenYinType; private int shenYinType;
private int gift;
/** /**
* *
*/ */
@ -201,6 +203,10 @@ public class SEquipConfig implements BaseConfig,Comparable<SEquipConfig> {
return shenYinType; return shenYinType;
} }
public int getGift() {
return gift;
}
@Override @Override
public int compareTo(SEquipConfig o) { public int compareTo(SEquipConfig o) {
return this.getStar() - o.getStar(); return this.getStar() - o.getStar();

View File

@ -0,0 +1,39 @@
package config;
import manager.STableManager;
import manager.Table;
import java.util.HashMap;
import java.util.Map;
@Table(name ="GiftConfig")
public class SGiftConfig implements BaseConfig {
private int id;
private int gift;
private int box;
public static Map<Integer, SGiftConfig> map = new HashMap<>();
@Override
public void init() throws Exception {
map = STableManager.getConfig(SGiftConfig.class);
}
public int getId() {
return id;
}
public int getGift() {
return gift;
}
public int getBox() {
return box;
}
}