From 61cfce258f6c4466bbf1346d8e1154a647c19f71 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 3 Sep 2019 10:24:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E5=B0=BD=E5=89=AF=E6=9C=AC=E3=80=81?= =?UTF-8?q?=E6=B3=95=E5=AE=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/config/SEndlessMapConfig.java | 4 + .../ljsd/jieling/config/SEquipTalismana.java | 68 +++++++++ .../jieling/config/SEquipTalismanaRankup.java | 44 ++++++ .../com/ljsd/jieling/globals/BIReason.java | 1 + .../ljsd/jieling/globals/GlobalItemType.java | 1 + .../handler/EquipUnLoadOptHandler.java | 3 +- .../jieling/handler/EquipWearHandler.java | 2 +- .../jieling/handler/GetAllEquipHandler.java | 3 +- .../jieling/handler/GetPlayerInfoHandler.java | 6 +- .../ljsd/jieling/handler/map/MapLogic.java | 81 +++++++--- .../handler/map/behavior/BehaviorUtil.java | 1 + .../jieling/logic/GlobalDataManaager.java | 13 +- .../java/com/ljsd/jieling/logic/UpStar.java | 5 + .../jieling/logic/activity/ActivityLogic.java | 2 +- .../com/ljsd/jieling/logic/dao/Equip.java | 140 ++++-------------- .../ljsd/jieling/logic/dao/EquipManager.java | 12 ++ .../ljsd/jieling/logic/dao/EspecialEquip.java | 30 ++++ .../java/com/ljsd/jieling/logic/dao/Hero.java | 15 ++ .../ljsd/jieling/logic/dao/PropertyItem.java | 123 +++++++++++++++ .../ljsd/jieling/logic/hero/HeroLogic.java | 107 +++++++++---- .../com/ljsd/jieling/util/CBean2Proto.java | 25 ++-- .../java/com/ljsd/jieling/util/ItemUtil.java | 24 ++- .../com/ljsd/jieling/util/MonsterUtil.java | 23 +++ .../java/com/ljsd/jieling/util/UUIDEnum.java | 1 + 24 files changed, 542 insertions(+), 192 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/config/SEquipTalismana.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/config/SEquipTalismanaRankup.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/UpStar.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EspecialEquip.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SEndlessMapConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SEndlessMapConfig.java index 38bea05f0..4924a6cd5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SEndlessMapConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SEndlessMapConfig.java @@ -53,4 +53,8 @@ public class SEndlessMapConfig implements BaseConfig { public int[][] getEndlessPoint() { return endlessPoint; } + + public int[] getMapItem() { + return mapItem; + } } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SEquipTalismana.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SEquipTalismana.java new file mode 100644 index 000000000..75eb813f6 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SEquipTalismana.java @@ -0,0 +1,68 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name ="EquipTalismana") +public class SEquipTalismana implements BaseConfig { + + private int id; + + private int talismanaId; + + private int level; + + private int[][] rankupBasicMaterial; + + private int[][] rankupConsumeMaterial; + + private int[][] property; + + private int[][] specialProperty; + + private int[] openSkillRules; + + public static Map equipTalismanaMap ; + + @Override + public void init() throws Exception { + equipTalismanaMap = STableManager.getConfig(SEquipTalismana.class); + } + + + public int getId() { + return id; + } + + public int getTalismanaId() { + return talismanaId; + } + + public int getLevel() { + return level; + } + + public int[][] getRankupBasicMaterial() { + return rankupBasicMaterial; + } + + public int[][] getRankupConsumeMaterial() { + return rankupConsumeMaterial; + } + + public int[][] getProperty() { + return property; + } + + public int[][] getSpecialProperty() { + return specialProperty; + } + + public int[] getOpenSkillRules() { + return openSkillRules; + } + + +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SEquipTalismanaRankup.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SEquipTalismanaRankup.java new file mode 100644 index 000000000..3f7427a6b --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SEquipTalismanaRankup.java @@ -0,0 +1,44 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name ="EquipTalismanaRankup") +public class SEquipTalismanaRankup implements BaseConfig { + + private int id; + + private int issame; + + private int starLimit; + + private int isId; + + public static Map equipTalismanaRankupMap ; + + @Override + public void init() throws Exception { + equipTalismanaRankupMap = STableManager.getConfig(SEquipTalismanaRankup.class); + } + + + public int getId() { + return id; + } + + public int getIssame() { + return issame; + } + + public int getStarLimit() { + return starLimit; + } + + public int getIsId() { + return isId; + } + + +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index b15f9895f..d5c84007f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -79,6 +79,7 @@ public interface BIReason { int GM_CHANGENAME = 48; // gm改名赠送 int BIND_PHONE = 49; // 修改手机号 + int ENDLESS_REASON_CHANGE = 50;//无尽副本赛季更换 //道具消耗原因 1000开头 int ADVENTURE_UPLEVEL_CONSUME = 1000; //秘境升级 int SECRETBOX_CONSUME = 1001; //秘盒抽卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java index 5c2eb1354..181d11947 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/GlobalItemType.java @@ -21,6 +21,7 @@ public interface GlobalItemType { int SecretBox=10; // 宝箱 int HEAD_FRAME = 11;//头像框 int CHANGE_NAME_CARD = 12;//改名道具卡 + int ESPECIAL_EQUIP = 14;//法宝 //物品使用类型 int NO_USE = 0 ; //不使用 int RANDOM_USE = 1; // 随机使用 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/EquipUnLoadOptHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/EquipUnLoadOptHandler.java index c2d8066c8..9b8aa8f24 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/EquipUnLoadOptHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/EquipUnLoadOptHandler.java @@ -21,6 +21,7 @@ public class EquipUnLoadOptHandler extends BaseHandler { HeroInfoProto.EquipUnLoadOptRequest equipUnLoadOptRequest = HeroInfoProto.EquipUnLoadOptRequest.parseFrom(netData.parseClientProtoNetData()); List equipIdsList = equipUnLoadOptRequest.getEquipIdsList(); String heroId = equipUnLoadOptRequest.getHeroId(); - HeroLogic.getInstance().unloadEquipOpt(iSession,heroId,equipIdsList); + int type = equipUnLoadOptRequest.getType(); + HeroLogic.getInstance().unloadEquipOpt(iSession,heroId,equipIdsList,type); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/EquipWearHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/EquipWearHandler.java index 0992bc9d7..cf4c9a576 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/EquipWearHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/EquipWearHandler.java @@ -17,7 +17,7 @@ public class EquipWearHandler extends BaseHandler{ @Override public void process(ISession iSession, PacketNetData netData) throws Exception { HeroInfoProto.EquipWearRequest equipWearRequest = HeroInfoProto.EquipWearRequest.parseFrom(netData.parseClientProtoNetData()); - HeroLogic.getInstance().wearEquipOpt(iSession,equipWearRequest.getHeroId(),equipWearRequest.getEquipIdList()); + HeroLogic.getInstance().wearEquipOpt(iSession,equipWearRequest.getHeroId(),equipWearRequest.getEquipIdList(),equipWearRequest.getType()); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllEquipHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllEquipHandler.java index fccaf20df..cf07c4efa 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllEquipHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetAllEquipHandler.java @@ -20,6 +20,7 @@ public class GetAllEquipHandler extends BaseHandler{ HeroInfoProto.GetAllEquipRequest getAllEquipRequest = HeroInfoProto.GetAllEquipRequest.parseFrom(message); int index = getAllEquipRequest.getIndex(); - HeroLogic.getInstance().getAllEquipInfo(iSession,index); + int type = getAllEquipRequest.getType(); + HeroLogic.getInstance().getAllEquipInfo(iSession,index,type); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index e1a274478..3e67c2094 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -93,9 +93,9 @@ public class GetPlayerInfoHandler extends BaseHandler{ .setHadTakeDailyBox(playerInfoManager.getHadTakeDailyBoxVip()) .setHadTakeLevelBox(playerInfoManager.getHadTakeLevelBoxVip()) .setVipLevel(playerInfoManager.getVipLevel()).build(); - CommonProto.PlayerBindPhone playerBindPhone = CommonProto.PlayerBindPhone.newBuilder() - .setPhoneNum(user.getPlayerInfoManager().getPhoneBindInfo().getPhoneNum()) - .setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()).build(); + CommonProto.PlayerBindPhone playerBindPhone = CommonProto.PlayerBindPhone.newBuilder().build(); +// .setPhoneNum(user.getPlayerInfoManager().getPhoneBindInfo().getPhoneNum()) +// .setState(user.getPlayerInfoManager().getPhoneBindInfo().getState()).build(); RechargeInfo rechargeInfo = playerInfoManager.getRechargeInfo(); Map totalCountMap = user.getHeroManager().getTotalCount(); int alreadyCount =0; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 8831cfa31..b7d9ec88e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -1,6 +1,7 @@ package com.ljsd.jieling.handler.map; import com.googlecode.protobuf.format.JsonFormat; +import com.ljsd.jieling.battle.actor.Monster; import com.ljsd.jieling.config.*; import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.dataReport.reportBeans_37.ChatContentType; @@ -211,21 +212,21 @@ public class MapLogic { mapManager.addEndlessHero(teamPosForHero.get(i).getHeroId(),maxHp); } EndlessMapInfo endlessMapInfo = mapManager.getEndlessMapInfo(); -// if(endlessMapInfo.getSeason()!=endlessSeason){ -// mapManager.updateEndlessSeason(endlessSeason); -// mapManager.updateEndlessMapId(0); -// mapManager.endlessWalkCellSave(new HashSet<>()); -// mapManager.endlessMapInfoSave(new HashMap<>()); -// }else{ -// Map endlessMapCellInfo = mapManager.getEndlessMapInfo().getMapInfo(); -// if(endlessMapCellInfo !=null&&endlessMapCellInfo.size()>0){ -// mapManager.setMapInfo(endlessMapCellInfo); -// } -// Set walkCell = mapManager.getEndlessMapInfo().getWalkCell(); -// if(walkCell!=null&&walkCell.size()>0){ -// mapManager.setWalkCells(walkCell); -// } -// } + if(endlessMapInfo.getSeason()!=endlessSeason){ + mapManager.updateEndlessSeason(endlessSeason); + mapManager.updateEndlessMapId(0); + mapManager.endlessWalkCellSave(new HashSet<>()); + mapManager.endlessMapInfoSave(new HashMap<>()); + }else{ + Map endlessMapCellInfo = mapManager.getEndlessMapInfo().getMapInfo(); + if(endlessMapCellInfo !=null&&endlessMapCellInfo.size()>0){ + mapManager.setMapInfo(endlessMapCellInfo); + } + Set walkCell = mapManager.getEndlessMapInfo().getWalkCell(); + if(walkCell!=null&&walkCell.size()>0){ + mapManager.setWalkCells(walkCell); + } + } mapManager.updateEndlessMapId(mapId); for(Map.Entry> entry :endlessMapInfo.getMapSign().entrySet()){ int curMapId = entry.getKey(); @@ -419,12 +420,12 @@ public class MapLogic { continue; } Cell cellValue = new Cell(xy, mapPointConfig.getInitialEventId(), mapPointConfig.getId()); - if(mapPointConfig.getIsShowFightAbility()!=null&&mapPointConfig.getIsShowFightAbility().length>0){ - int force = 0; - for(int i = 0 ; i 0){ + if(isShowFightAbility[0]!=0){ + int force = MonsterUtil.getMonsterForce(isShowFightAbility); + cellValue.setForce(force); } - cellValue.setForce(force); } newMap.put(xy, cellValue); } @@ -1509,6 +1510,13 @@ public class MapLogic { fightEndResponse.addAllRemainHpList(remainHp); fightEndResponse.build(); + if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4){ + Cell cell = mapManager.getMapInfo().get(triggerXY); + MapPointConfig mapPointConfig = MapPointConfig.getScMapEventMap().get(cell.getPointId()); + if(mapPointConfig.getStyle()==1){ + BehaviorUtil.destoryApointXY(user, triggerXY); + } + } if (sOptionConfig != null) { int behaviorType = sOptionConfig.getBehaviorType(); int[][] behaviorTypeValues = sOptionConfig.getBehaviorTypeValues(); @@ -3217,7 +3225,8 @@ public class MapLogic { mapManager.updateEndlessConsumeExecution(mapManager.getEndlessMapInfo().getConsumeExecution()+costNum); int [] cost1 = new int[]{costId,costNum}; cost[0] = cost1; - if(!ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1)) { + boolean costResult = ItemUtil.itemCost(user, cost, BIReason.ENDLESS_CONSUME_EXECUTION, 1); + if(!costResult) { costNum = user.getItemManager().getItem(costId).getItemNum(); cost1[1]= costNum; cost[0] = cost1; @@ -3280,4 +3289,34 @@ public class MapLogic { } MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } + + /** + * 无尽副本赛季更换,用户信息清除 + * @throws Exception + */ + public void resetEndlessInfo() throws Exception { + Map onlineUserMap = OnlineUserManager.sessionMap; + SEndlessMapConfig config = SEndlessMapConfig.sEndlessMapConfigMap.get(MapLogic.getEndlessMapId()); + int[] mapItem = config.getMapItem(); + for(Map.Entry entry:onlineUserMap.entrySet()){ + User user = UserManager.getUser(entry.getValue().getUid()); + MapManager mapManager = user.getMapManager(); + mapManager.setEndlessMapInfo(new EndlessMapInfo()); + if(SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()).getType()==4){ + resetMapInfo(user,false); + MessageUtil.sendIndicationMessage(entry.getValue(),1,MessageTypeProto.MessageType.MAP_OUT_INDICATION_VALUE,null,true); + } + ItemManager itemManager = user.getItemManager(); + int [][] costItem = new int[mapItem.length][2]; + for(int i = 0 ; i propertyValueByIdMap; //主属性 key 对应PropertyConfig id - - private Map secondValueByIdMap; //副属性 - - private int createTime; - - private int skill; - - private int isLocked; - public Equip() { this.setRootCollection(User._COLLECTION_NAME); } public Equip(int uid, int equipTid) { + super(); this.setRootCollection(User._COLLECTION_NAME); - this.id = KeyGenUtils.produceIdByModule(UUIDEnum.EQUIP, uid); - this.equipId = equipTid; - this.propertyValueByIdMap = new HashMap<>(); + super.setId(KeyGenUtils.produceIdByModule(UUIDEnum.EQUIP, uid)); + super.setEquipId(equipTid); + Map propertyValueByIdMap = new HashMap<>(); SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipTid); SWorkShopSetting sWorkShopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(sEquipConfig.getInitialLevel()); Map promoteMap = new HashMap<>(); @@ -60,24 +41,25 @@ public class Equip extends MongoBase implements Cloneable{ propertyPromote = 0; } int finalProperValue = MathUtils.random(properMinNum * (100 + propertyPromote) / 100, properMaxNum* (100 + propertyPromote) / 100); - this.propertyValueByIdMap.put(properTyId, finalProperValue); + propertyValueByIdMap.put(properTyId, finalProperValue); + super.setPropertyValueByIdMap(propertyValueByIdMap); int secondNumMin = sEquipConfig.getSecondNumMin(); int secondNumMax = sEquipConfig.getSecondNumMax(); int secondValue = MathUtils.random(secondNumMin, secondNumMax); - this.secondValueByIdMap = getSecondValue(sEquipConfig.getPool(), secondValue,promoteMap); - this.createTime = (int)(TimeUtils.now()/1000); + Map secondValueByIdMap = getSecondValue(sEquipConfig.getPool(), secondValue,promoteMap); + super.setSecondValueByIdMap(secondValueByIdMap); + super.setCreateTime((int)(TimeUtils.now()/1000)); //skill库随机 - this.skill = getRandomSkill(sEquipConfig.getSkillPoolId()); - + super.setSkill(getRandomSkill(sEquipConfig.getSkillPoolId())); } //锻造 public Equip(int uid, int equipTid,int workShopLevle,List runneIds) { this.setRootCollection(User._COLLECTION_NAME); - this.id =KeyGenUtils.produceIdByModule(UUIDEnum.EQUIP,uid); - this.equipId = equipTid; - this.propertyValueByIdMap = new HashMap<>(); - this.secondValueByIdMap = new HashMap<>(); + super.setId(KeyGenUtils.produceIdByModule(UUIDEnum.EQUIP,uid)); + super.setEquipId(equipTid); + Map propertyValueByIdMap = new HashMap<>(); + Map secondValueByIdMap = new HashMap<>(); SWorkShopSetting sWorkShopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(workShopLevle); Map promoteMap = new HashMap<>(); if( sWorkShopSetting != null && sWorkShopSetting.getPromoteMap()!=null){ @@ -92,10 +74,12 @@ public class Equip extends MongoBase implements Cloneable{ int properMinNum = sEquipConfig.getPropertyMin()[1]; int properMaxNum = sEquipConfig.getPropertyMax()[1]; int finalProperValue = MathUtils.random(properMinNum * (100 + propertyPromote) / 100, properMaxNum* (100 + propertyPromote) / 100); - this.propertyValueByIdMap.put(properTyId,finalProperValue); + propertyValueByIdMap.put(properTyId,finalProperValue); + super.setPropertyValueByIdMap(propertyValueByIdMap); + super.setSecondValueByIdMap(secondValueByIdMap); setForRunnes(runneIds,promoteMap); - this.createTime = (int)(TimeUtils.now()/1000); - this.skill = getRandomSkill(sEquipConfig.getSkillPoolId()); + super.setCreateTime((int)(TimeUtils.now()/1000)); + super.setSkill(getRandomSkill(sEquipConfig.getSkillPoolId())); } @@ -118,7 +102,7 @@ public class Equip extends MongoBase implements Cloneable{ } } - secondValueByIdMap = result; + super.setSecondValueByIdMap(result); } private void randomForRunne(int poolId,int nums,Map secondValueByIdMap,Map promoteMap){ @@ -162,7 +146,7 @@ public class Equip extends MongoBase implements Cloneable{ sEquipPropertyPoolList.addAll(SEquipPropertyPool.getSEquipPropertyPool(pid)); } if(sEquipPropertyPoolList.size() promoteMap = null; @@ -242,7 +226,7 @@ public class Equip extends MongoBase implements Cloneable{ int properMinNum = sEquipConfig.getPropertyMin()[1]; int properMaxNum = sEquipConfig.getPropertyMax()[1]; int finalProperValue = MathUtils.random(properMinNum * (100 + propertyPromote) / 100, properMaxNum* (100 + propertyPromote) / 100); - this.propertyValueByIdMap.put(properTyId,finalProperValue); + super.getPropertyValueByIdMap().put(properTyId,finalProperValue); } List sEquipPropertyPoolList = new ArrayList<>(); for(Integer equipPool:sEquipConfig.getPool()){ @@ -250,7 +234,7 @@ public class Equip extends MongoBase implements Cloneable{ } for(SEquipPropertyPool sEquipPropertyPool : sEquipPropertyPoolList){ int secondPropertyId = sEquipPropertyPool.getPropertyId(); - if(!secondValueByIdMap.containsKey(secondPropertyId)){ + if(!super.getSecondValueByIdMap().containsKey(secondPropertyId)){ continue; } SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(secondPropertyId); @@ -266,94 +250,26 @@ public class Equip extends MongoBase implements Cloneable{ } int value = MathUtils.random(sEquipPropertyPool.getMin() * (100 + secondPropertyPromote) / 100, sEquipPropertyPool.getMax()* (100 + secondPropertyPromote) / 100); - secondValueByIdMap.put(secondPropertyId,value); + super.getSecondValueByIdMap().put(secondPropertyId,value); } setRebuildLevel(workShopLevle); - setSecondValueByIdMap(secondValueByIdMap); - setPropertyValueByIdMap(propertyValueByIdMap); - } - - - public String getId() { - return id; - } - - public int getEquipId() { - return equipId; - } - - public void setEquipId(int equipId) throws Exception { - updateString("equipId",equipId); - this.equipId = equipId; - } - - public int getLevel() { - return level; - } - - public void setLevel(int level) throws Exception { - updateString("level",level); - this.level = level; + super.setSecondValueByIdMap(super.getSecondValueByIdMap()); + super.setPropertyValueByIdMap(super.getSecondValueByIdMap()); } public int getRebuildLevel() { return rebuildLevel; } - public String getHeroId() { - return heroId; - } - - public void setHeroId(String heroId) throws Exception { - updateString("heroId",heroId); - this.heroId = heroId; - } - - public Map getPropertyValueByIdMap() { - return propertyValueByIdMap; - } - - public Map getSecondValueByIdMap() { - return secondValueByIdMap; - } - public void setRebuildLevel(int rebuildLevel) { updateString("rebuildLevel",rebuildLevel); this.rebuildLevel = rebuildLevel; } - public void setPropertyValueByIdMap(Map propertyValueByIdMap) { - updateString("propertyValueByIdMap",propertyValueByIdMap); - this.propertyValueByIdMap = propertyValueByIdMap; - } - - public void setSecondValueByIdMap(Map secondValueByIdMap) { - updateString("secondValueByIdMap",secondValueByIdMap); - this.secondValueByIdMap = secondValueByIdMap; - } - @Override public Object clone() throws CloneNotSupportedException { return (Equip) super.clone(); } - - public int getCreateTime() { - return createTime; - } - - - public int getSkill() { - return skill; - } - - public int getIsLocked() { - return isLocked; - } - - public void updateIsLocked(int isLocked) { - updateString("isLocked",isLocked); - this.isLocked = isLocked; - } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java index e5c92e157..f9abea113 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java @@ -15,6 +15,8 @@ public class EquipManager extends MongoBase { private Map equipMap; + private Map especialEquipMap; + private Equip unDetermined; private Map equipHandBook; @@ -23,6 +25,7 @@ public class EquipManager extends MongoBase { this.equipHandBook = new HashMap<>(); this.equipMap = new HashMap<>(); + this.especialEquipMap = new HashMap<>(); this.setRootCollection(User._COLLECTION_NAME); } @@ -34,6 +37,11 @@ public class EquipManager extends MongoBase { Poster.getPoster().dispatchEvent(new EquipEvent(user.getId(),equip.getEquipId())); } + public void addEspecialEquip(User user,EspecialEquip especialEquip){ + updateString("especialEquipMap." + especialEquip.getId(), especialEquip); + especialEquipMap.put(especialEquip.getId(), especialEquip); + } + public void remove(String equipId){ if (equipMap.containsKey(equipId)){ removeString(getMongoKey()+".equipMap." + equipId); @@ -45,6 +53,10 @@ public class EquipManager extends MongoBase { return equipMap; } + public Map getEspecialEquipMap() { + return especialEquipMap; + } + public Equip getUnDetermined() { return unDetermined; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EspecialEquip.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EspecialEquip.java new file mode 100644 index 000000000..66abf057d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EspecialEquip.java @@ -0,0 +1,30 @@ +package com.ljsd.jieling.logic.dao; + +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.util.KeyGenUtils; +import com.ljsd.jieling.util.UUIDEnum; + +public class EspecialEquip extends PropertyItem { + + private int star; + + public EspecialEquip(int uid,int equipTid) { + super(); + super.setId(KeyGenUtils.produceIdByModule(UUIDEnum.ESPECIAL_EQUIP, uid)); + super.setEquipId(equipTid); + this.star = 1; + } + public EspecialEquip() { + this.setRootCollection(User._COLLECTION_NAME); + } + + + public int getStar() { + return star; + } + + public void setStar(int star) { + updateString("star",star); + this.star = star; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index 360c83374..b11c0d263 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -42,6 +42,8 @@ public class Hero extends MongoBase { private int speed; + private String especialEquip; + public Hero(){ //绑定关系 this.setRootCollection(User._COLLECTION_NAME); @@ -57,6 +59,7 @@ public class Hero extends MongoBase { this.star = initStar; this.skillList = new ArrayList<>(); this.equipByPositionMap = new HashMap<>(); + this.especialEquip = ""; List skillIds = scHero.getSkillListByStar().get(star); if(skillIds!=null && !skillIds.isEmpty()){ this.skillList.addAll(skillIds); @@ -201,4 +204,16 @@ public class Hero extends MongoBase { updateString("starBreakId",starBreakId); this.starBreakId = starBreakId; } + public void updateEspecial(String especialEquip){ + this.especialEquip = especialEquip; + updateString("especialEquip",especialEquip); + } + public void removeEspecial() { + removeString(getMongoKey()+".especialEquip"); + especialEquip=""; + } + + public String getEspecialEquip() { + return especialEquip; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java new file mode 100644 index 000000000..ce76c0e13 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PropertyItem.java @@ -0,0 +1,123 @@ +package com.ljsd.jieling.logic.dao; + +import com.ljsd.common.mogodb.MongoBase; + +import java.util.Map; + +public class PropertyItem extends MongoBase { + private String id; + + private int equipId; + + private int level; + + private String heroId; + + private Map propertyValueByIdMap; //主属性 key 对应PropertyConfig id + + private Map secondValueByIdMap; //副属性 + + private int createTime; + + private int skill; + + private int isLocked; + + public PropertyItem(String id, int equipId, int level, String heroId, Map propertyValueByIdMap, Map secondValueByIdMap, int createTime, int skill, int isLocked) { + this.id = id; + this.equipId = equipId; + this.level = level; + this.heroId = heroId; + this.propertyValueByIdMap = propertyValueByIdMap; + this.secondValueByIdMap = secondValueByIdMap; + this.createTime = createTime; + this.skill = skill; + this.isLocked = isLocked; + } + + public String getId() { + return id; + } + + public void setId(String id) { + updateString("id",equipId); + this.id = id; + } + + public int getEquipId() { + return equipId; + } + + public void setEquipId(int equipId){ + updateString("equipId",equipId); + this.equipId = equipId; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level){ + updateString("level",level); + this.level = level; + } + + public PropertyItem() { + } + + public String getHeroId() { + return heroId; + } + + public void setHeroId(String heroId){ + updateString("heroId",heroId); + this.heroId = heroId; + } + + public Map getPropertyValueByIdMap() { + return propertyValueByIdMap; + } + + public Map getSecondValueByIdMap() { + return secondValueByIdMap; + } + + + public void setPropertyValueByIdMap(Map propertyValueByIdMap) { + updateString("propertyValueByIdMap",propertyValueByIdMap); + this.propertyValueByIdMap = propertyValueByIdMap; + } + + public void setSecondValueByIdMap(Map secondValueByIdMap) { + updateString("secondValueByIdMap",secondValueByIdMap); + this.secondValueByIdMap = secondValueByIdMap; + } + + public int getCreateTime() { + return createTime; + } + + public void setCreateTime(int createTime) { + updateString("createTime", createTime); + this.createTime = createTime; + } + + public int getSkill() { + return skill; + } + + public void setSkill(int skill) { + updateString("skill", skill); + + this.skill = skill; + } + + public int getIsLocked() { + return isLocked; + } + + public void updateIsLocked(int isLocked) { + updateString("isLocked", isLocked); + this.isLocked = isLocked; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 012e70b05..8f0a381fc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -93,16 +93,30 @@ public class HeroLogic { private static final String VERTICAL = "|"; private static final String DIVISION = "#"; - public void getAllEquipInfo(ISession iSession,int index) throws Exception { + /** + * 获取装备、法宝信息 + * @param iSession + * @param index + * @param type + * @throws Exception + */ + public void getAllEquipInfo(ISession iSession,int index,int type) throws Exception { int uid = iSession.getUid(); User user = UserManager.getUser(uid); - Map equipMap = user.getEquipManager().getEquipMap(); List equipList = new ArrayList<>(); - for(Equip equipInfo: equipMap.values()){ - equipList.add(CBean2Proto.getEquipProto(equipInfo)); + if(type==1){ + Map equipMap = user.getEquipManager().getEquipMap(); + for(Equip equipInfo: equipMap.values()){ + equipList.add(CBean2Proto.getEquipProto(equipInfo)); + } + }else{ + Map especialEquipMap = user.getEquipManager().getEspecialEquipMap(); + for(EspecialEquip especialEquipInfo: especialEquipMap.values()){ + equipList.add(CBean2Proto.getEquipProto(especialEquipInfo)); + } } boolean isSendFinish = false; - int endIndex = index + Global.SEND_EQUIP_COUNT ; + int endIndex = index + Global.SEND_EQUIP_COUNT; if (index < equipList.size()) { if (endIndex >= equipList.size()) { endIndex = equipList.size(); @@ -531,6 +545,13 @@ public class HeroLogic { } + /** + * 妖灵师进阶 + * @param session + * @param heroId + * @param consumeMaterialsList + * @throws Exception + */ public void upHeroStar(ISession session, String heroId, List consumeMaterialsList) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); @@ -1033,6 +1054,23 @@ public class HeroLogic { } } + //法宝加成 + String especialEquip = hero.getEspecialEquip(); + Map especialEquipMap = user.getEquipManager().getEspecialEquipMap(); + + int equipTempId = especialEquipMap.get(especialEquip).getEquipId(); + int tempStar = especialEquipMap.get(especialEquip).getStar(); + Map equipTalismanaMap = SEquipTalismana.equipTalismanaMap; + for(Map.Entry entry:equipTalismanaMap.entrySet()){ + if(entry.getValue().getTalismanaId()!=equipTempId){ + continue; + } + if(entry.getValue().getLevel()!=tempStar){ + continue; + } + + } + //阵营光环加成 if(!isForce){ if(teamId!=0){ @@ -1224,18 +1262,25 @@ public class HeroLogic { // equip TODO 装备会导致英雄属性发生变化 - public void wearEquipOpt(ISession session,String heroId,List equipIds) throws Exception { + public void wearEquipOpt(ISession session,String heroId,List equipIds,int type) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); Hero hero = user.getHeroManager().getHeroMap().get(heroId); - Map equipInfoTmp = new HashMap<>(6); - if(!checkEquipForWear(hero,user.getEquipManager(),equipIds,equipInfoTmp)){ - MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_WEAR_RESPONSE_VALUE,"equip.wrong"); - return; + if(type==1){ + Map equipInfoTmp = new HashMap<>(6); + if(!checkEquipForWear(hero,user.getEquipManager(),equipIds,equipInfoTmp)){ + MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_WEAR_RESPONSE_VALUE,"equip.wrong"); + return; + } + hero.updateMutliEquipPositionMap(equipInfoTmp); + user.getUserMissionManager().onGameEvent(user,GameEvent.WEAR_EQUIP,equipInfoTmp.size()); + }else if(type ==2){ + if(equipIds.size()!=1){ + MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_WEAR_RESPONSE.getNumber(),"法宝智能穿戴一个"); + }else{ + hero.updateEspecial(equipIds.get(0)); + } } - - hero.updateMutliEquipPositionMap(equipInfoTmp); - user.getUserMissionManager().onGameEvent(user,GameEvent.WEAR_EQUIP,equipInfoTmp.size()); // Map heroNotBufferAttribute = calHeroNotBufferAttribute(user, hero); // int force = calForce(heroNotBufferAttribute) + heroNotBufferAttribute.get(HeroAttributeEnum.EquipForce.getPropertyId()); // LOGGER.info("the heroTid={},the force={}",hero.getTemplateId(),force); @@ -1246,29 +1291,33 @@ public class HeroLogic { } - public void unloadEquipOpt(ISession session,String heroId,List equipIds) throws Exception { + public void unloadEquipOpt(ISession session,String heroId,List equipIds,int type) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); Hero hero = user.getHeroManager().getHero(heroId); - if( hero == null || equipIds.isEmpty()){ - MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_UNLOAD_OPT_RESPONSE_VALUE,""); - return; - } - List positions = new ArrayList<>(); - for(String equipId : equipIds){ - Equip equip = user.getEquipManager().getEquipMap().get(equipId); - if(null == equip || !StringUtil.isEmpty(equip.getHeroId())){ + if(type==1){ + if( hero == null || equipIds.isEmpty()){ MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_UNLOAD_OPT_RESPONSE_VALUE,""); return; } - int equipIdTid = equip.getEquipId(); - SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipIdTid); - int position = sEquipConfig.getPosition(); - positions.add(position); - } + List positions = new ArrayList<>(); + for(String equipId : equipIds){ + Equip equip = user.getEquipManager().getEquipMap().get(equipId); + if(null == equip || !StringUtil.isEmpty(equip.getHeroId())){ + MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.EQUIP_UNLOAD_OPT_RESPONSE_VALUE,""); + return; + } + int equipIdTid = equip.getEquipId(); + SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipIdTid); + int position = sEquipConfig.getPosition(); + positions.add(position); + } - for(Integer position : positions){ - hero.removeEquip(position); + for(Integer position : positions){ + hero.removeEquip(position); + } + }else if(type==2){ + hero.removeEspecial(); } //发送成功消息 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 7109f01d7..df5a6fb96 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -83,6 +83,7 @@ public class CBean2Proto { .setCreateTime(hero.getCreateTime()) .addAllSkillIdList(hero.getSkillList()) .addAllEquipIdList(equipList) + .addEspecialEquip(hero.getEspecialEquip()) .build(); } @@ -103,20 +104,26 @@ public class CBean2Proto { } - public static CommonProto.Equip getEquipProto(Equip equip){ + public static CommonProto.Equip getEquipProto(PropertyItem equip){ Map propertyValueByIdMap = equip.getPropertyValueByIdMap(); Map secondValueByIdMap = equip.getSecondValueByIdMap(); - CommonProto.Equip equipProto =CommonProto.Equip.newBuilder() + CommonProto.Equip.Builder equipProto =CommonProto.Equip.newBuilder() .setEquipId(equip.getEquipId()) .setId(equip.getId()) - .setMainAttribute(parseFromMap(propertyValueByIdMap).get(0)) - .addAllSecondAttribute(parseFromMap(secondValueByIdMap)) - .setRebuildLevel(equip.getRebuildLevel()) .setCreateTime(equip.getCreateTime()) - .setSkillId(equip.getSkill()) - .setIsLocked(equip.getIsLocked()) - .build(); - return equipProto; + .setIsLocked(equip.getIsLocked()); + if(equip instanceof Equip){ + Equip tempEquip =(Equip)equip; + equipProto.setMainAttribute(parseFromMap(propertyValueByIdMap).get(0)) + .addAllSecondAttribute(parseFromMap(secondValueByIdMap)) + .setRebuildLevel(tempEquip.getRebuildLevel()) + .setSkillId(tempEquip.getSkill()); + } + if(equip instanceof EspecialEquip){ + EspecialEquip tempEquip =(EspecialEquip)equip; + equipProto.setRebuildLevel(tempEquip.getStar()); + } + return equipProto.build(); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 81e620dab..b2abf0426 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -385,6 +385,7 @@ public class ItemUtil { putcountMap(itemId, itemNum, cardMap); break; case GlobalItemType.EQUIP: + case GlobalItemType.ESPECIAL_EQUIP: putcountMap(itemId, itemNum, equipMap); break; case GlobalItemType.RANDOM_ITME: @@ -771,15 +772,22 @@ public class ItemUtil { private static void addEquip(User user,int equipId ,List equipList) throws Exception { EquipManager equipManager = user.getEquipManager(); - Equip equip = new Equip(user.getId(),equipId); - equipManager.addEquip(user,equip); - equipList.add(CBean2Proto.getEquipProto(equip)); - SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipId); - if (sEquipConfig.getQuality() >= 5) { - String nickName = user.getPlayerInfoManager().getNickName(); - String message = SErrorCodeEerverConfig.getI18NMessage("lamp_lottery_equip_content", new Object[]{nickName, equipQulityNameMap.get(sEquipConfig.getQuality()),SItem.getsItemMap().get(equipId).getName()}); - ChatLogic.getInstance().sendSysChatMessage(message,Global.LUCKY_LUCK,equipId,0,0,0,0,0); + int itemType = SItem.getsItemMap().get(equipId).getItemType(); + if(itemType==GlobalItemType.EQUIP){ + Equip equip = new Equip(user.getId(),equipId); + equipManager.addEquip(user,equip); + equipList.add(CBean2Proto.getEquipProto(equip)); + SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(equipId); + if (sEquipConfig.getQuality() >= 5) { + String nickName = user.getPlayerInfoManager().getNickName(); + String message = SErrorCodeEerverConfig.getI18NMessage("lamp_lottery_equip_content", new Object[]{nickName, equipQulityNameMap.get(sEquipConfig.getQuality()),SItem.getsItemMap().get(equipId).getName()}); + ChatLogic.getInstance().sendSysChatMessage(message,Global.LUCKY_LUCK,equipId,0,0,0,0,0); + } + }else if(itemType==GlobalItemType.ESPECIAL_EQUIP){ + EspecialEquip especialEquip = new EspecialEquip(user.getId(),equipId); + equipManager.addEspecialEquip(user,especialEquip); } + } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java index c1edf5575..bf4bf20e8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java @@ -71,6 +71,29 @@ public class MonsterUtil { return hps; } + + + public static int getMonsterForce(int[] groupIds){ + Map integerSMonsterGroupMap = SMonsterGroup.getsMonsterGroupMap(); + Map integerSMonsterConfigMap = SMonsterConfig.getsMonsterConfigMap(); + int maxForce = 0; + for(int i = 0 ; i < groupIds.length;i++){ + SMonsterGroup sMonsterGroup = integerSMonsterGroupMap.get(groupIds[i]); + int[][] contents = sMonsterGroup.getContents(); + int totalMonsterForce = 0; + for(int j = 0; jmaxForce){ + maxForce = totalMonsterForce; + } + } + return (int)(maxForce*(0.8+groupIds.length*0.2)); + } public static String getMonsterSkillById(int monsterId){ CommonProto.FightUnitInfo monster = SMonsterConfig.getMonsterMap().get(monsterId); return monster.getUnitSkillIds(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/UUIDEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/util/UUIDEnum.java index 340a175b6..cc93da7cc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/UUIDEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/UUIDEnum.java @@ -7,6 +7,7 @@ public enum UUIDEnum { ARENARECORD(3), ADVENTUREBOSS(4), GUILDLOG(5), + ESPECIAL_EQUIP(6) ; private int value;