back_recharge
parent
c770a95a09
commit
463d63a7fb
|
@ -3,6 +3,7 @@ package com.ljsd.jieling.config;
|
||||||
import com.ljsd.jieling.logic.STableManager;
|
import com.ljsd.jieling.logic.STableManager;
|
||||||
import com.ljsd.jieling.logic.Table;
|
import com.ljsd.jieling.logic.Table;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Table(name ="EquipTalismana")
|
@Table(name ="EquipTalismana")
|
||||||
|
@ -26,11 +27,22 @@ public class SEquipTalismana implements BaseConfig {
|
||||||
|
|
||||||
private int[] openSkillRules;
|
private int[] openSkillRules;
|
||||||
|
|
||||||
|
private int[][] resolve;
|
||||||
|
|
||||||
public static Map<Integer,SEquipTalismana> equipTalismanaMap ;
|
public static Map<Integer,SEquipTalismana> equipTalismanaMap ;
|
||||||
|
|
||||||
|
public static Map<Integer,Map<Integer,SEquipTalismana>> equipTalismanaStarMap;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() throws Exception {
|
public void init() throws Exception {
|
||||||
equipTalismanaMap = STableManager.getConfig(SEquipTalismana.class);
|
equipTalismanaMap = STableManager.getConfig(SEquipTalismana.class);
|
||||||
|
equipTalismanaStarMap = new HashMap<>();
|
||||||
|
for(Map.Entry<Integer,SEquipTalismana> entry: equipTalismanaMap.entrySet()){
|
||||||
|
if(equipTalismanaStarMap.get(entry.getValue().getTalismanaId())==null){
|
||||||
|
equipTalismanaStarMap.put(entry.getValue().getTalismanaId(),new HashMap<>());
|
||||||
|
}
|
||||||
|
equipTalismanaStarMap.get(entry.getValue().getTalismanaId()).put(entry.getValue().getLevel(),entry.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,4 +83,8 @@ public class SEquipTalismana implements BaseConfig {
|
||||||
public int[][] getSpecialSkill() {
|
public int[][] getSpecialSkill() {
|
||||||
return specialSkill;
|
return specialSkill;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int[][] getResolve() {
|
||||||
|
return resolve;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -139,4 +139,6 @@ public interface BIReason {
|
||||||
|
|
||||||
int CHANGE_NAME = 1034; // 改名消耗
|
int CHANGE_NAME = 1034; // 改名消耗
|
||||||
|
|
||||||
|
int ESPECIAL_EQUIP_UP_LEVEL_CONSUME = 1035;//法宝进阶消耗
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package com.ljsd.jieling.handler;
|
package com.ljsd.jieling.handler;
|
||||||
|
|
||||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||||
|
import com.ljsd.jieling.logic.item.ItemLogic;
|
||||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.HeroInfoProto;
|
import com.ljsd.jieling.protocols.HeroInfoProto;
|
||||||
|
@ -22,7 +23,11 @@ public class UpHeroStarHandler extends BaseHandler{
|
||||||
HeroInfoProto.UpHeroStarRequest upHeroStarRequest = HeroInfoProto.UpHeroStarRequest.parseFrom(bytes);
|
HeroInfoProto.UpHeroStarRequest upHeroStarRequest = HeroInfoProto.UpHeroStarRequest.parseFrom(bytes);
|
||||||
List<HeroInfoProto.ConsumeMaterial> consumeMaterialsList = upHeroStarRequest.getConsumeMaterialsList();
|
List<HeroInfoProto.ConsumeMaterial> consumeMaterialsList = upHeroStarRequest.getConsumeMaterialsList();
|
||||||
String heroId = upHeroStarRequest.getHeroId();
|
String heroId = upHeroStarRequest.getHeroId();
|
||||||
HeroLogic.getInstance().upHeroStar(iSession,heroId,consumeMaterialsList);
|
if(upHeroStarRequest.getType()==1){
|
||||||
|
HeroLogic.getInstance().upHeroStar(iSession,heroId,consumeMaterialsList);
|
||||||
|
}else{
|
||||||
|
ItemLogic.getInstance().especialEquipUpStar(iSession,heroId,consumeMaterialsList);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,10 +36,11 @@ public class UseAndPriceItemHandler extends BaseHandler {
|
||||||
ItemLogic.getInstance().priceItem(iSession,itemList);
|
ItemLogic.getInstance().priceItem(iSession,itemList);
|
||||||
} else if (type == 2){ //分解装备
|
} else if (type == 2){ //分解装备
|
||||||
ItemLogic.getInstance().decomposeEquip(iSession,equipIdsList);
|
ItemLogic.getInstance().decomposeEquip(iSession,equipIdsList);
|
||||||
}else{
|
} else if(type==3){
|
||||||
CommonProto.Drop.Builder baseBuilder =ItemLogic.getInstance().decomposeHero(iSession,heroIdsList,null, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE);
|
CommonProto.Drop.Builder baseBuilder =ItemLogic.getInstance().decomposeHero(iSession,heroIdsList,null, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE);
|
||||||
ItemLogic.sendUseAndPriceItemMessage(iSession, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE, baseBuilder);
|
ItemLogic.sendUseAndPriceItemMessage(iSession, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE, baseBuilder);
|
||||||
|
}else {//分解法宝
|
||||||
|
ItemLogic.getInstance().decomposeEspecialEquip(iSession, equipIdsList);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,7 +110,7 @@ public class EventType {
|
||||||
public static final int fourtySix = 46;
|
public static final int fourtySix = 46;
|
||||||
public static final int fourtySeven = 47;
|
public static final int fourtySeven = 47;
|
||||||
public static final int fourtyEight = 48;
|
public static final int fourtyEight = 48;
|
||||||
|
public static final int fourtyNine = 49;
|
||||||
|
|
||||||
public static final int updatePonintEvent = 1;
|
public static final int updatePonintEvent = 1;
|
||||||
public static final int fightEvent = 2;
|
public static final int fightEvent = 2;
|
||||||
|
|
|
@ -13,6 +13,7 @@ import com.ljsd.jieling.handler.map.MapLogic;
|
||||||
import com.ljsd.jieling.handler.map.MapManager;
|
import com.ljsd.jieling.handler.map.MapManager;
|
||||||
import com.ljsd.jieling.handler.mission.CheckMissionReturn;
|
import com.ljsd.jieling.handler.mission.CheckMissionReturn;
|
||||||
import com.ljsd.jieling.handler.mission.Mission;
|
import com.ljsd.jieling.handler.mission.Mission;
|
||||||
|
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||||
import com.ljsd.jieling.logic.dao.Hero;
|
import com.ljsd.jieling.logic.dao.Hero;
|
||||||
import com.ljsd.jieling.logic.dao.StoreInfo;
|
import com.ljsd.jieling.logic.dao.StoreInfo;
|
||||||
import com.ljsd.jieling.logic.dao.StoreManager;
|
import com.ljsd.jieling.logic.dao.StoreManager;
|
||||||
|
@ -24,8 +25,11 @@ import com.ljsd.jieling.logic.store.StoreLogic;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
import com.ljsd.jieling.protocols.FightInfoProto;
|
import com.ljsd.jieling.protocols.FightInfoProto;
|
||||||
import com.ljsd.jieling.protocols.MapInfoProto;
|
import com.ljsd.jieling.protocols.MapInfoProto;
|
||||||
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
import com.ljsd.jieling.util.CellUtil;
|
import com.ljsd.jieling.util.CellUtil;
|
||||||
|
import com.ljsd.jieling.util.MessageUtil;
|
||||||
import com.ljsd.jieling.util.MonsterUtil;
|
import com.ljsd.jieling.util.MonsterUtil;
|
||||||
|
import com.ljsd.jieling.util.TimeUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -428,4 +432,15 @@ public class BehaviorUtil {
|
||||||
}
|
}
|
||||||
return monsterTeamList;
|
return monsterTeamList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void refreshTimeMonster(User user,int[][] behaviorTypeValues){
|
||||||
|
user.getMapManager().updateEndlessCellTime(user.getMapManager().getCurXY(), (int)(TimeUtils.now()/1000)+behaviorTypeValues[0][1]);
|
||||||
|
Map<Integer, Integer> cellRefreshTime = user.getMapManager().getEndlessMapInfo().getCellRefreshTime();
|
||||||
|
MapInfoProto.EndlessTimeIndication.Builder indication = MapInfoProto.EndlessTimeIndication.newBuilder();
|
||||||
|
for(Map.Entry<Integer, Integer> entry:cellRefreshTime.entrySet()){
|
||||||
|
CommonProto.EndlessRefreshInfo info = CommonProto.EndlessRefreshInfo.newBuilder().setCellId(entry.getKey()).setTime(entry.getValue()).build();
|
||||||
|
indication.addInfos(info);
|
||||||
|
}
|
||||||
|
MessageUtil.sendIndicationMessage(OnlineUserManager.getSessionByUid(user.getId()),1, MessageTypeProto.MessageType.ENDLESS_REFRESH_INDICAITON_VALUE,indication.build(),true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,14 +34,7 @@ public class FourtyEightBehavior extends BaseBehavior{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse){
|
public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse){
|
||||||
user.getMapManager().updateEndlessCellTime(user.getMapManager().getCurXY(), (int)(TimeUtils.now()/1000)+behaviorTypeValues[0][1]);
|
BehaviorUtil.refreshTimeMonster(user,behaviorTypeValues);
|
||||||
Map<Integer, Integer> cellRefreshTime = user.getMapManager().getEndlessMapInfo().getCellRefreshTime();
|
|
||||||
MapInfoProto.EndlessTimeIndication.Builder indication = MapInfoProto.EndlessTimeIndication.newBuilder();
|
|
||||||
for(Map.Entry<Integer, Integer> entry:cellRefreshTime.entrySet()){
|
|
||||||
CommonProto.EndlessRefreshInfo info = CommonProto.EndlessRefreshInfo.newBuilder().setCellId(entry.getKey()).setTime(entry.getValue()).build();
|
|
||||||
indication.addInfos(info);
|
|
||||||
}
|
|
||||||
MessageUtil.sendIndicationMessage(OnlineUserManager.getSessionByUid(user.getId()),1, MessageTypeProto.MessageType.ENDLESS_REFRESH_INDICAITON_VALUE,indication.build(),true);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.ljsd.jieling.handler.map.behavior;
|
||||||
|
|
||||||
|
import com.ljsd.jieling.handler.map.EventType;
|
||||||
|
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||||
|
import com.ljsd.jieling.logic.dao.root.User;
|
||||||
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
|
import com.ljsd.jieling.protocols.MapInfoProto;
|
||||||
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
|
import com.ljsd.jieling.util.MessageUtil;
|
||||||
|
import com.ljsd.jieling.util.TimeUtils;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class FourtyNineBehavior extends BaseBehavior {
|
||||||
|
@Override
|
||||||
|
public int getBehaviorType() {
|
||||||
|
return EventType.fourtyNine;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
|
||||||
|
BehaviorUtil.refreshTimeMonster(user,behaviorTypeValues);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,6 +42,13 @@ public class EquipManager extends MongoBase {
|
||||||
especialEquipMap.put(especialEquip.getId(), especialEquip);
|
especialEquipMap.put(especialEquip.getId(), especialEquip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void removeEspecialEquip(String equip){
|
||||||
|
if(especialEquipMap.containsKey(equip)){
|
||||||
|
removeString(getMongoKey()+".especialEquipMap."+equip);
|
||||||
|
especialEquipMap.remove(equip);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
public void remove(String equipId){
|
public void remove(String equipId){
|
||||||
if (equipMap.containsKey(equipId)){
|
if (equipMap.containsKey(equipId)){
|
||||||
removeString(getMongoKey()+".equipMap." + equipId);
|
removeString(getMongoKey()+".equipMap." + equipId);
|
||||||
|
@ -76,4 +83,14 @@ public class EquipManager extends MongoBase {
|
||||||
public Map<Integer, Integer> getEquipHandBook() {
|
public Map<Integer, Integer> getEquipHandBook() {
|
||||||
return equipHandBook;
|
return equipHandBook;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void upStarEspecialEquip(String equipId){
|
||||||
|
EspecialEquip especialEquip = especialEquipMap.get(equipId);
|
||||||
|
if(especialEquip ==null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
especialEquip.setStar(especialEquip.getStar()+1);
|
||||||
|
especialEquipMap.put(equipId,especialEquip);
|
||||||
|
updateString("especialEquipMap."+equipId+".star",especialEquip.getStar()+1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ public class EspecialEquip extends PropertyItem {
|
||||||
super();
|
super();
|
||||||
super.setId(KeyGenUtils.produceIdByModule(UUIDEnum.ESPECIAL_EQUIP, uid));
|
super.setId(KeyGenUtils.produceIdByModule(UUIDEnum.ESPECIAL_EQUIP, uid));
|
||||||
super.setEquipId(equipTid);
|
super.setEquipId(equipTid);
|
||||||
this.star = 1;
|
this.star = 8;
|
||||||
}
|
}
|
||||||
public EspecialEquip() {
|
public EspecialEquip() {
|
||||||
this.setRootCollection(User._COLLECTION_NAME);
|
this.setRootCollection(User._COLLECTION_NAME);
|
||||||
|
|
|
@ -208,10 +208,6 @@ public class Hero extends MongoBase {
|
||||||
this.especialEquip = especialEquip;
|
this.especialEquip = especialEquip;
|
||||||
updateString("especialEquip",especialEquip);
|
updateString("especialEquip",especialEquip);
|
||||||
}
|
}
|
||||||
public void removeEspecial() {
|
|
||||||
removeString(getMongoKey()+".especialEquip");
|
|
||||||
especialEquip="";
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEspecialEquip() {
|
public String getEspecialEquip() {
|
||||||
return especialEquip;
|
return especialEquip;
|
||||||
|
|
|
@ -6,10 +6,8 @@ import com.ljsd.jieling.config.*;
|
||||||
import com.ljsd.jieling.core.GlobalsDef;
|
import com.ljsd.jieling.core.GlobalsDef;
|
||||||
import com.ljsd.jieling.core.HandlerLogicThread;
|
import com.ljsd.jieling.core.HandlerLogicThread;
|
||||||
import com.ljsd.jieling.core.VipPrivilegeType;
|
import com.ljsd.jieling.core.VipPrivilegeType;
|
||||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
|
||||||
import com.ljsd.jieling.globals.BIReason;
|
import com.ljsd.jieling.globals.BIReason;
|
||||||
import com.ljsd.jieling.globals.Global;
|
import com.ljsd.jieling.globals.Global;
|
||||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
|
||||||
import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent;
|
import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent;
|
||||||
import com.ljsd.jieling.logic.activity.event.Poster;
|
import com.ljsd.jieling.logic.activity.event.Poster;
|
||||||
import com.ljsd.jieling.logic.dao.*;
|
import com.ljsd.jieling.logic.dao.*;
|
||||||
|
@ -17,7 +15,6 @@ import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.logic.fight.CombatLogic;
|
import com.ljsd.jieling.logic.fight.CombatLogic;
|
||||||
import com.ljsd.jieling.logic.item.ItemLogic;
|
import com.ljsd.jieling.logic.item.ItemLogic;
|
||||||
import com.ljsd.jieling.logic.mission.GameEvent;
|
import com.ljsd.jieling.logic.mission.GameEvent;
|
||||||
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
|
|
||||||
import com.ljsd.jieling.network.server.ProtocolsManager;
|
import com.ljsd.jieling.network.server.ProtocolsManager;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
|
@ -843,6 +840,23 @@ public class HeroLogic {
|
||||||
}
|
}
|
||||||
return sb;
|
return sb;
|
||||||
}
|
}
|
||||||
|
//法宝技能
|
||||||
|
String especialEquipId = hero.getEspecialEquip();
|
||||||
|
if(!StringUtil.isEmpty(especialEquipId)){
|
||||||
|
EspecialEquip especialEquip = user.getEquipManager().getEspecialEquipMap().get(especialEquipId);
|
||||||
|
SEquipTalismana sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquip.getEquipId()).get(especialEquip.getStar());
|
||||||
|
for(int skill:sEquipTalismana.getOpenSkillRules()){
|
||||||
|
sb.append(skill).append(DIVISION);
|
||||||
|
}
|
||||||
|
SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId());
|
||||||
|
int[][] specialSkill = sEquipTalismana.getSpecialSkill();
|
||||||
|
for(int i = 0 ; i < specialSkill.length;i++){
|
||||||
|
if(tempHero.getProfession()==specialSkill[i][0]){
|
||||||
|
sb.append(specialSkill[i][1]).append(DIVISION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return sb;
|
return sb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1110,17 +1124,19 @@ public class HeroLogic {
|
||||||
Map<String, EspecialEquip> especialEquipMap = user.getEquipManager().getEspecialEquipMap();
|
Map<String, EspecialEquip> especialEquipMap = user.getEquipManager().getEspecialEquipMap();
|
||||||
int equipTempId = especialEquipMap.get(especialEquip).getEquipId();
|
int equipTempId = especialEquipMap.get(especialEquip).getEquipId();
|
||||||
int tempStar = especialEquipMap.get(especialEquip).getStar();
|
int tempStar = especialEquipMap.get(especialEquip).getStar();
|
||||||
Map<Integer, SEquipTalismana> equipTalismanaMap = SEquipTalismana.equipTalismanaMap;
|
Map<Integer, Map<Integer, SEquipTalismana>> equipTalismanaMap = SEquipTalismana.equipTalismanaStarMap;
|
||||||
for(Map.Entry<Integer, SEquipTalismana> entry:equipTalismanaMap.entrySet()){
|
|
||||||
SEquipTalismana equipTali = entry.getValue();
|
SEquipTalismana equipTali = equipTalismanaMap.get(equipTempId).get(tempStar);
|
||||||
if(equipTali.getTalismanaId()!=equipTempId){
|
combinedAttribute(equipTali.getProperty(),heroAllAttribute);
|
||||||
continue;
|
//法宝职业额外加成
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
if(equipTali.getLevel()!=tempStar){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
combinedAttribute(equipTali.getProperty(),heroAllAttribute);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1370,7 +1386,7 @@ public class HeroLogic {
|
||||||
hero.removeEquip(position);
|
hero.removeEquip(position);
|
||||||
}
|
}
|
||||||
}else if(type==2){
|
}else if(type==2){
|
||||||
hero.removeEspecial();
|
hero.updateEspecial("");
|
||||||
}
|
}
|
||||||
|
|
||||||
//发送成功消息
|
//发送成功消息
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
package com.ljsd.jieling.logic.item;
|
package com.ljsd.jieling.logic.item;
|
||||||
|
|
||||||
import com.ljsd.jieling.config.SCHeroRankUpConfig;
|
import com.ljsd.jieling.config.*;
|
||||||
import com.ljsd.jieling.config.SGameSetting;
|
|
||||||
import com.ljsd.jieling.config.SHeroLevlConfig;
|
|
||||||
import com.ljsd.jieling.config.SItem;
|
|
||||||
import com.ljsd.jieling.globals.BIReason;
|
import com.ljsd.jieling.globals.BIReason;
|
||||||
import com.ljsd.jieling.globals.Global;
|
import com.ljsd.jieling.globals.Global;
|
||||||
import com.ljsd.jieling.handler.map.MapManager;
|
import com.ljsd.jieling.handler.map.MapManager;
|
||||||
|
@ -12,6 +9,7 @@ import com.ljsd.jieling.logic.dao.root.User;
|
||||||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||||
import com.ljsd.jieling.network.session.ISession;
|
import com.ljsd.jieling.network.session.ISession;
|
||||||
import com.ljsd.jieling.protocols.CommonProto;
|
import com.ljsd.jieling.protocols.CommonProto;
|
||||||
|
import com.ljsd.jieling.protocols.HeroInfoProto;
|
||||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||||
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
import com.ljsd.jieling.protocols.PlayerInfoProto;
|
||||||
import com.ljsd.jieling.util.CBean2Proto;
|
import com.ljsd.jieling.util.CBean2Proto;
|
||||||
|
@ -182,6 +180,34 @@ public class ItemLogic {
|
||||||
sendUseAndPriceItemMessage(iSession, msgId, drop);
|
sendUseAndPriceItemMessage(iSession, msgId, drop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分解法宝
|
||||||
|
* @param iSession
|
||||||
|
* @param equipIdsList
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public void decomposeEspecialEquip(ISession iSession, List<String> equipIdsList) throws Exception {
|
||||||
|
int msgId = MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE;
|
||||||
|
int uid = iSession.getUid();
|
||||||
|
User user = UserManager.getUser(uid);
|
||||||
|
EquipManager equipManager = user.getEquipManager();
|
||||||
|
Map<Integer,Integer> reward = new HashMap<>();
|
||||||
|
for (String equipId : equipIdsList) {
|
||||||
|
EspecialEquip equip= equipManager.getEspecialEquipMap().get(equipId);
|
||||||
|
int[][] resolve = SEquipTalismana.equipTalismanaStarMap.get(equip.getEquipId()).get(equip.getStar()).getResolve();
|
||||||
|
for(int i = 0;i<resolve.length;i++){
|
||||||
|
if(reward.get(resolve[i][0])==null){
|
||||||
|
reward.put(resolve[i][0],resolve[i][1]);
|
||||||
|
}else{
|
||||||
|
reward.put(resolve[i][0],reward.get(resolve[i][0])+resolve[i][1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
equipManager.removeEspecialEquip(equipId);
|
||||||
|
}
|
||||||
|
CommonProto.Drop.Builder drop = ItemUtil.dropMap(user,reward,BIReason.DECOMPOS_EQUIP_REWARD);
|
||||||
|
sendUseAndPriceItemMessage(iSession, msgId, drop);
|
||||||
|
}
|
||||||
|
|
||||||
private String checkEquipResolve(List<String> equipIdsList,EquipManager equipManager) {
|
private String checkEquipResolve(List<String> equipIdsList,EquipManager equipManager) {
|
||||||
if (equipIdsList.size() == 0){
|
if (equipIdsList.size() == 0){
|
||||||
return "无可分解装备";
|
return "无可分解装备";
|
||||||
|
@ -351,4 +377,69 @@ public class ItemLogic {
|
||||||
}
|
}
|
||||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 法宝进阶
|
||||||
|
* @param session
|
||||||
|
* @param equipId
|
||||||
|
* @param materials
|
||||||
|
*/
|
||||||
|
public void especialEquipUpStar(ISession session, String equipId, List<HeroInfoProto.ConsumeMaterial> materials) throws Exception {
|
||||||
|
User user = UserManager.getUser(session.getUid());
|
||||||
|
EspecialEquip especialEquip = user.getEquipManager().getEspecialEquipMap().get(equipId);
|
||||||
|
SEquipTalismana sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquip.getEquipId()).get(especialEquip.getStar());
|
||||||
|
Map<Integer, SEquipTalismanaRankup> equipTalismanaRankupMap = SEquipTalismanaRankup.equipTalismanaRankupMap;
|
||||||
|
boolean success = true;
|
||||||
|
//按槽位遍历所需材料
|
||||||
|
for(int i = 0 ; i <sEquipTalismana.getRankupConsumeMaterial().length;i++){
|
||||||
|
//遍历前端传进材料
|
||||||
|
for(HeroInfoProto.ConsumeMaterial material:materials){
|
||||||
|
if(material.getPosition()!=sEquipTalismana.getRankupConsumeMaterial()[i][0]){
|
||||||
|
success=false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
SEquipTalismanaRankup sEquipTalismanaRankup = equipTalismanaRankupMap.get(sEquipTalismana.getRankupConsumeMaterial()[i][1]);
|
||||||
|
for(String materEquip:material.getHeroIdsList()){
|
||||||
|
EspecialEquip especialEquip1 = user.getEquipManager().getEspecialEquipMap().get(materEquip);
|
||||||
|
//材料种类判断
|
||||||
|
if(sEquipTalismanaRankup.getIssame()==1){
|
||||||
|
if(especialEquip1.getEquipId()!=especialEquip.getEquipId()){
|
||||||
|
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,"材料不足");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(especialEquip1.getStar()!=sEquipTalismanaRankup.getStarLimit()){
|
||||||
|
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,"材料不足");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(sEquipTalismanaRankup.getIsId()!=0&&sEquipTalismanaRankup.getIsId()!=especialEquip1.getEquipId()){
|
||||||
|
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,"材料不足");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//材料数量判断
|
||||||
|
if(material.getHeroIdsList().size()<sEquipTalismana.getRankupConsumeMaterial()[i][2]){
|
||||||
|
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,"材料不足");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
success=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
boolean b = ItemUtil.itemCost(user, sEquipTalismana.getRankupBasicMaterial(), BIReason.ESPECIAL_EQUIP_UP_LEVEL_CONSUME, 1);
|
||||||
|
if(success&&b){
|
||||||
|
for(HeroInfoProto.ConsumeMaterial material:materials){
|
||||||
|
List<String> heroIdsList = material.getHeroIdsList();
|
||||||
|
Iterator<String> iterator = heroIdsList.iterator();
|
||||||
|
while (iterator.hasNext()){
|
||||||
|
user.getEquipManager().removeEspecialEquip(iterator.next());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,null,true);
|
||||||
|
}else{
|
||||||
|
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,"材料不足");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue