diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java index d5ddca8c1..0f7947c8d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java @@ -122,6 +122,9 @@ public interface GlobalsDef { int LIKABLE_UNLOCK=6;//好感度解锁类型 int WEEKCARD_UNLOCK=8;//周卡解锁类型 + int GOD_LV_UNLOCK = 9;//神尊解锁 + int RENOWN_LV_UNLOCK = 10;//名望解锁 + //特殊商店id int DAILY_GOODS_FAST_ID = 1004;//每日礼包一键购买的礼包ID diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 92822e7b8..5444a6bfb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -1565,6 +1565,12 @@ public class PlayerLogic { case GlobalsDef.WEEKCARD_UNLOCK: cond = user.getPlayerInfoManager().getMonthCard().getOrDefault(1, -1); break; + case GlobalsDef.GOD_LV_UNLOCK: + cond = getGodPrivilegeLv(user); + break; + case GlobalsDef.RENOWN_LV_UNLOCK: + cond = getRenownPrivilegeLv(user); + break; default:{ break; } @@ -1949,4 +1955,53 @@ public class PlayerLogic { builder.setHero(heroBuilder); return builder.build(); } + + /** + * 获取神尊特权等级 + * @param user + * @return + */ + public int getGodPrivilegeLv(User user){ + Map typeMap = SPrestigeConfig.getTypeMap(SPrestigeConfig.godPrivilege); + if (typeMap == null || typeMap.isEmpty()){ + return 0; + } + int lv = 0; + List list = typeMap.values().stream().collect(Collectors.toList()); + Item item = user.getItemManager().getItem(list.get(0).getExperience()[0]); + long num = Optional.ofNullable(item).map(Item::getItemNum).orElse(0L); + for (SPrestigeConfig value : list) { + if (num >= value.getExperience()[1]){ + lv = value.getLevel(); + }else { + break; + } + } + return lv; + } + + /** + * 获取名望特权等级 + * @param user + * @return + */ + public int getRenownPrivilegeLv(User user){ + Map typeMap = SPrestigeConfig.getTypeMap(SPrestigeConfig.renownPrivilege); + if (typeMap == null || typeMap.isEmpty()){ + return 0; + } + int lv = 0; + List list = typeMap.values().stream().collect(Collectors.toList()); + Item item = user.getItemManager().getItem(list.get(0).getExperience()[0]); + long num = Optional.ofNullable(item).map(Item::getItemNum).orElse(0L); + for (SPrestigeConfig value : list) { + if (num >= value.getExperience()[1]){ + lv = value.getLevel(); + }else { + break; + } + } + return lv; + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index e5e5dc9f5..826153be1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -621,18 +621,14 @@ public class StoreLogic implements IEventHandler { } break; case 2: - SPrestigeConfig prestigeConfig = SPrestigeConfig.getTypeMap(1).get(buyRule[1]); - Item item = user.getItemManager().getItem(prestigeConfig.getExperience()[0]); - long num = item == null ? 0 : item.getItemNum(); - if (num < prestigeConfig.getExperience()[1]){ + int godPrivilegeLv = PlayerLogic.getInstance().getGodPrivilegeLv(user); + if (godPrivilegeLv < buyRule[1]){ err = "神尊等级不足,无权购买"; } break; case 3: - SPrestigeConfig prestigeConfig2 = SPrestigeConfig.getTypeMap(2).get(buyRule[1]); - Item item2 = user.getItemManager().getItem(prestigeConfig2.getExperience()[0]); - long num2 = item2 == null ? 0 : item2.getItemNum(); - if (num2 < prestigeConfig2.getExperience()[1]){ + int renownPrivilegeLv = PlayerLogic.getInstance().getRenownPrivilegeLv(user); + if (renownPrivilegeLv < buyRule[1]){ err = "名望等级不足,无权购买"; } break;