修改法宝护佑相关系统

master_yuenan
DESKTOP-C3M45P4\dengdan 2025-10-29 11:15:19 +08:00
parent 3b1e6930d3
commit 1d3845d981
3 changed files with 59 additions and 4 deletions

View File

@ -899,8 +899,16 @@ public class EquipLogic {
if (!StringUtil.isEmpty(baubles.getMasterId()) || !StringUtil.isEmpty(blessBaubles.getMasterId())){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE, "法宝存在已庇佑情况");
}
int number = SSpecialConfig.getIntegerValue("Huyou_Number");
if (baubles.getBlessList().size() >= number){
int[][] number = SSpecialConfig.getTwiceArrayValue("Huyou_Number");
int num = 0;
//获取四灵试炼总层数
int count = user.getPlayerInfoManager().getFourChallengeTotal();
for(int[] position : number){
if(count >= position[0]){
num++;
}
}
if (baubles.getBlessList().size() >= num){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE, "法宝安装的庇佑数量以达到上限");
}
int openLevel = SSpecialConfig.getIntegerValue("Huyou_OpenLevel");

View File

@ -3111,14 +3111,60 @@ public class HeroLogic {
String heroBauBlesId = hero.getBauBlesId();
Baubles baubles = equipManager.getBaubles(heroBauBlesId);
if (baubles != null) {
//统计满级护佑法宝的个数,用于计算满级护佑被动技能
int maxLevelHuyuCount = 0;
Map<Integer, SEquipTalismana> talismanaMap = SEquipTalismana.equipTalismanaStarMap.get(baubles.getEquipId());
if (talismanaMap != null && !talismanaMap.isEmpty()) {
SEquipTalismana equipTalismana = talismanaMap.get(baubles.getLevel());
Map<Integer,Integer> add = new HashMap<Integer,Integer>();
if (equipTalismana != null) {
int increase = baubles.getBlessList().size() * SSpecialConfig.getIntegerValue("Huyou_UpAttribute");
//计算护佑法宝属性
if(baubles.getBlessList() != null && baubles.getBlessList().size() > 0){
double increase = ((double)baubles.getBlessList().size() * SSpecialConfig.getIntegerValue("Huyou_UpAttribute"))/10000;
for(String baublesId: baubles.getBlessList()){
Baubles huBaubles = equipManager.getBaubles(heroBauBlesId);
if(huBaubles != null){
Map<Integer, SEquipTalismana> huTalismanaMap = SEquipTalismana.equipTalismanaStarMap.get(baubles.getEquipId());
if (huTalismanaMap != null && !huTalismanaMap.isEmpty()) {
int huLevel = huBaubles.getLevel();
if(huLevel >= 50){
maxLevelHuyuCount ++;
}
SEquipTalismana huEquipTalismana = talismanaMap.get(huLevel);
if(huEquipTalismana != null){
for (int[] pp : huEquipTalismana.getProperty()) {
int addProp = 0;
if(add.containsKey(pp[0])){
addProp = add.get(pp[0]);
}
add.put(pp[0], (addProp + (int)(pp[1]*increase)));
}
}
}
}
}
}
HashMap<Integer, Long> map = new HashMap<>();
for (int[] pp : equipTalismana.getProperty()) {
map.put(pp[0], (long) (pp[1] + increase));
int addProp = 0;
if(add.containsKey(pp[0])){
addProp = add.get(pp[0]);
}
map.put(pp[0], (long) (pp[1] + addProp));
}
//计算满级护佑法宝激活的属性
if(maxLevelHuyuCount > 0){
int[][] huyouAddSkill = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.Huyou_Add_Skill);
if(huyouAddSkill != null && huyouAddSkill.length > 0){
for(int[] skillProps : huyouAddSkill){
if(!map.containsKey(skillProps[0])){
map.put(skillProps[0],(long)(skillProps[1]*maxLevelHuyuCount));
}else{
long prop = map.get(skillProps[0]);
map.put(skillProps[0],prop + (long)(skillProps[1]*maxLevelHuyuCount));
}
}
}
}
// LOGGER.error("法宝加成:{},{}",map, increase);
combinedAttribute(map, heroAllAttribute);

View File

@ -91,6 +91,7 @@ public class SSpecialConfig implements BaseConfig {
public static final String Gem_Senior_Lottery = "Gem_Senior_Lottery";//高级宝石单抽所需道具
public static final String Gem_Senior_Lottery10 = "Gem_Senior_Lottery10";//高级宝石十连所需道具
public static final String Sunlong_Add_Level = "Sunlong_Add_Level";//购买孙龙(青龙战令)增加的等级
public static final String Huyou_Add_Skill = "Huyou_AddSkill";//满级护佑法宝激活的被动技能
@Override
public void init() throws Exception {