From 9fe8dd3e5fcce721b7e8c1b74e4a7f167a766672 Mon Sep 17 00:00:00 2001 From: mengchengzhen <13682025901@163.com> Date: Wed, 10 Mar 2021 10:28:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E9=97=B9=E5=A4=A9=E5=AE=AB=E5=9C=A3?= =?UTF-8?q?=E7=89=A9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EndExpeditionBattleRequest.java | 2 + .../HeroNodeGetInfoRequestHandler.java | 1 + .../ReliveExpeditionHeroRequest.java | 2 + .../Expedition/TakeHolyEquipRequest.java | 4 ++ .../com/ljsd/jieling/kefu/Cmd_addholy.java | 4 ++ .../jieling/logic/dao/ExpeditionItem.java | 37 +++++++++++ .../jieling/logic/dao/ExpeditionManager.java | 38 +++++++++-- .../jieling/logic/expedition/BattleNode.java | 14 ++-- .../logic/expedition/ExpeditionLogic.java | 34 ++++++++++ .../specialparm/ExpetionSpecialProcessor.java | 66 ++++++++++++------- .../ljsd/jieling/logic/hero/HeroLogic.java | 5 +- 11 files changed, 167 insertions(+), 40 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java index ade76df78..a6a7022a8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/EndExpeditionBattleRequest.java @@ -188,6 +188,8 @@ public class EndExpeditionBattleRequest extends BaseHandler nodeInfo.getBossHP().put(s, 0d) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java index 38e463aa9..cf0e5a0db 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java @@ -114,6 +114,7 @@ public class HeroNodeGetInfoRequestHandler extends BaseHandler 0){ + expeditionManager.getHeroItems().put(sExpeditionHolyConfig.getHeroId(),sExpeditionHolyConfig); + } //notify client Expedition.ExpeditionEquipIndication.Builder indication = Expedition.ExpeditionEquipIndication.newBuilder(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_addholy.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_addholy.java index b4fd5731b..8dc2b1c26 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_addholy.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_addholy.java @@ -52,6 +52,10 @@ public class Cmd_addholy extends GmRoleAbstract{ effectItems.put(sExpeditionHolyConfig.geteffect(),sExpeditionHolyConfig); } } + //添加专属英雄圣物缓存 + if(sExpeditionHolyConfig.getHeroId() > 0){ + expeditionManager.getHeroItems().put(sExpeditionHolyConfig.getHeroId(),sExpeditionHolyConfig); + } //notify client Expedition.ExpeditionEquipIndication.Builder indication = Expedition.ExpeditionEquipIndication.newBuilder(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionItem.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionItem.java index cb1488bf6..8ee41a411 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionItem.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionItem.java @@ -32,6 +32,10 @@ public class ExpeditionItem extends MongoBase { private int isLocked; + private int countVictory; + + private int judgePen; + public ExpeditionItem(String id, int equipId, int level, String heroId, Map propertyValueByIdMap, Map secondValueByIdMap, int createTime, int skill, int isLocked) { this.id = id; this.equipId = equipId; @@ -134,8 +138,41 @@ public class ExpeditionItem extends MongoBase { return isLocked; } + public int getCountVictory() { + return countVictory; + } + + public void setCountVictory(int countVictory) { + this.countVictory = countVictory; + } + + public int getJudgePen() { + return judgePen; + } + + public void setJudgePen(int judgePen) { + this.judgePen = judgePen; + } + public void updateIsLocked(int isLocked) { updateString("isLocked", isLocked); this.isLocked = isLocked; } + + public void victory(){ + if(equipId == 16 || equipId == 17 || equipId == 53 || equipId == 54 || + equipId == 95 || equipId == 96){ + if(countVictory<5){ + countVictory++; + } + } + } + + public void usejudgePen(){ + if(equipId == 79 || equipId == 120){ + if(judgePen<3){ + judgePen++; + } + } + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionManager.java index 50113da23..e6bbebf53 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ExpeditionManager.java @@ -3,12 +3,10 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.logic.dao.root.User; import config.SExpeditionHolyConfig; +import manager.STableManager; import org.springframework.data.annotation.Transient; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * Description: @@ -33,6 +31,8 @@ public class ExpeditionManager extends MongoBase { private int freshTime;//刷新时间 @Transient private Map effectItems = new HashMap<>();//圣物叠加 不入库 + private Map heroItems = new HashMap<>();//英雄专属圣物 不入库 + private Set getHeroSet = new HashSet<>();//招募英雄id组 不入库 private Map heroMap = new HashMap<>(); private Map equipMap = new HashMap<>(); @@ -271,4 +271,34 @@ public class ExpeditionManager extends MongoBase { updateString("getHolyTiem" , getHolyTiem); this.getHolyTiem = getHolyTiem; } + + public void victory(){ + for(ExpeditionItem propertyItem : propertyItems){ + propertyItem.victory(); + } + } + + public void useJudgePen(){ + for(ExpeditionItem propertyItem : propertyItems){ + propertyItem.usejudgePen(); + } + } + + public ExpeditionItem getExpeditionItem(int id){ + for(ExpeditionItem propertyItem : propertyItems){ + if(propertyItem.getEquipId() == id){ + return propertyItem; + } + } + return null; + } + + public Map getHeroItems() { + return heroItems; + } + + public Set getGHeroSet(){ + return getHeroSet; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/BattleNode.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/BattleNode.java index e20bbb3e0..0b6cca130 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/BattleNode.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/BattleNode.java @@ -224,21 +224,17 @@ public class BattleNode extends AbstractExpedition { return new HashMap<>(); } Map valueMap = new HashMap<>(weight); - + ExpeditionManager expeditionManager = user.getExpeditionManager(); // 已拥有的圣物 - Set items = user.getExpeditionManager().getPropertyItems(); + Set items = expeditionManager.getPropertyItems(); Set ids = new HashSet<>(); items.forEach(id->ids.add(id.getEquipId())); - // 已拥有英雄 - Map heroMap = user.getHeroManager().getHeroMap(); - Set heroIds = new HashSet<>(); - heroMap.values().forEach(v->heroIds.add(v.getTemplateId())); - // 大闹天宫临时英雄 - Map expeditonHeroMap = user.getExpeditionManager().getHeroMap(); + Map expeditonHeroMap = expeditionManager.getHeroMap(); Set expeditonHeroIds = new HashSet<>(); expeditonHeroMap.values().forEach(v->expeditonHeroIds.add(v.getTemplateId())); + expeditionManager.getGHeroSet().forEach(v->expeditonHeroIds.add(v)); // 已生成得节点圣物信息 Set nodeHolyInfo = getNodeHolyInfo(user); @@ -255,7 +251,7 @@ public class BattleNode extends AbstractExpedition { } // 不存在的英雄,专属圣物 if (holyConfig.getHeroId() != 0){ - if (!heroIds.contains(holyConfig.getHeroId()) || !expeditonHeroIds.contains(holyConfig.getHeroId())){ + if (!expeditonHeroIds.contains(holyConfig.getHeroId())){ iterator.remove(); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index c1f800e24..ae5cfa312 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -115,6 +115,8 @@ public class ExpeditionLogic { manager.clearEquipToTemp(); manager.clearEquip();//删除多余装备 manager.getEffectItems().clear(); + manager.getHeroItems().clear(); + manager.getGHeroSet().clear(); manager.setFreshTime((int)(openTimeOfFuntionCacheByType.getStartTime()/1000)); SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.Expedition.getFunctionType()); @@ -816,6 +818,8 @@ public class ExpeditionLogic { StringBuilder skillSb = new StringBuilder(); StringBuilder propertySb = new StringBuilder(); HeroLogic.getInstance().getHeroSkills(user,hero,skillSb); + //处理圣物英雄技能 + disposeWithHeroHoly(user,hero,skillSb); if(teamId==GlobalsDef.EXPEDITION_TEAM){ ExpeditionManager expeditionManager = user.getExpeditionManager(); @@ -889,4 +893,34 @@ public class ExpeditionLogic { MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } + + /** + * 处理圣物英雄技能 + */ + private static void disposeWithHeroHoly(User user,Hero hero,StringBuilder skillSb){ + SExpeditionHolyConfig con = user.getExpeditionManager().getHeroItems().get(hero.getTemplateId()); + if( con != null ){ + int[][] skillModify = con.getSkillModify(); + for(int i = 0 ; i < skillModify.length ; i++){ + int star = skillModify[i][0]; + if(hero.getStar() < star){ + continue; + } + int oper = skillModify[i][1]; + if(oper == 1 || oper == 2){ + String beReplace = skillModify[i][2]+""; + String replace = skillModify[i][3]+""; + int index = skillSb.indexOf(beReplace); + if(index!=-1){ + skillSb.replace(index,index+beReplace.length(),replace); + } + }else if(oper == 3){ + int add = skillModify[i][3]; + skillSb.append(add).append("#"); + }else{ + continue; + } + } + } + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/specialparm/ExpetionSpecialProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/specialparm/ExpetionSpecialProcessor.java index c280cb59c..3f2775418 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/specialparm/ExpetionSpecialProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/specialparm/ExpetionSpecialProcessor.java @@ -20,6 +20,10 @@ import java.util.Set; * 5:神秘药水使用次数 */ public class ExpetionSpecialProcessor implements SpecialBuildProcessor{ + private final int HP_INCREASE = 16; + private final int DAMAGE_INCREASE = 17; + private final int HOLY_INCREASE = 35; + private final int JUDGE_INCREASE = 43; @Override public String getSpecialParm(User user) { Map config = STableManager.getConfig(SExpeditionHolyConfig.class); @@ -28,36 +32,48 @@ public class ExpetionSpecialProcessor implements SpecialBuildProcessor{ ExpeditionManager expeditionManager = user.getExpeditionManager(); Set propertyItems = user.getExpeditionManager().getPropertyItems(); propertyItems.forEach(e->{ - int type = config.get(e.getEquipId()).gettype(); - //掉落战力品 - if( type == 2 || type == 3){ - cache.put(type,cache.getOrDefault(type,0) + 1); - } //夜明珠 - if(e.getEquipId() == 35){ + if(e.getEquipId() == HOLY_INCREASE){ cache.put(e.getEquipId(),cache.getOrDefault(e.getEquipId(),0) + 1); } }); - result.append("1#"); - result.append(cache.getOrDefault(35,0)); - // result.append(expeditionManager.getLay()); - result.append("|2#"); - if(expeditionManager.getExpeditionLeve()>3||expeditionManager.getExpeditionLeve()<1){ - result.append(3); - }else { - result.append(expeditionManager.getExpeditionLeve()); + SExpeditionHolyConfig con35 = expeditionManager.getEffectItems().get(HOLY_INCREASE); + if(con35 != null){ + result.append(con35.getPassiveSkillId()+"#"); + result.append(cache.getOrDefault(HOLY_INCREASE,0)); +// result.append(expeditionManager.getGetHolyTiem()); + } + //每场战斗胜利增加生命上限 + SExpeditionHolyConfig con16 = expeditionManager.getEffectItems().get(HP_INCREASE); + if(con16 != null){ + if(result.length()>0){ + result.append("|"); + } + result.append(con16.getPassiveSkillId()+"#"); + ExpeditionItem item = expeditionManager.getExpeditionItem(con16.getId()); + result.append(item==null?0:item.getCountVictory()); + } + //每场战斗胜利增加攻击力 + SExpeditionHolyConfig con17 = expeditionManager.getEffectItems().get(DAMAGE_INCREASE); + if(con17 != null){ + if(result.length()>0){ + result.append("|"); + } + result.append(con17.getPassiveSkillId()+"#"); + ExpeditionItem item = expeditionManager.getExpeditionItem(con17.getId()); + result.append(item==null?0:item.getCountVictory()); + } + //每使用一次判官笔 + expeditionManager.getEffectItems().get(JUDGE_INCREASE); + SExpeditionHolyConfig con43 = expeditionManager.getEffectItems().get(JUDGE_INCREASE); + if(con43 != null){ + if(result.length()>0){ + result.append("|"); + } + result.append(con43.getPassiveSkillId()+"#"); + ExpeditionItem item = expeditionManager.getExpeditionItem(con43.getId()); + result.append(item==null?0:item.getJudgePen()); } - result.append("|3#"); - result.append(cache.getOrDefault(2,0)); - result.append("|4#"); - result.append(cache.getOrDefault(3,0)); - result.append("|5#"); - //* 5:神秘药水使用次数 - result.append(expeditionManager.getReliveItemTime()); - result.append("|6#"); - //* 6:获得圣物的次数 - result.append(expeditionManager.getGetHolyTiem()); - return result.toString(); } } 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 4ddabe3c3..f146d95da 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 @@ -1880,7 +1880,9 @@ public class HeroLogic{ ExpeditionManager expeditionManager = user.getExpeditionManager(); Set expeditionHolyConfigs = ExpeditionLogic.getFirstRankHoly(expeditionManager); for (SExpeditionHolyConfig config:expeditionHolyConfigs) { - heroSkillList.add(config.getPassiveSkillId()); + if(config.getPassiveSkillId()>0){ + heroSkillList.add(config.getPassiveSkillId()); + } } } @@ -1893,7 +1895,6 @@ public class HeroLogic{ passiveskillCalEnum.getPassiveSkillProcessor().process(config,hero,heroSkillAdMap); } } - });