点将招募和法宝招募心愿改为固定某些次数的概率抽取

master_yuenan
DESKTOP-C3M45P4\dengdan 2025-11-04 20:11:57 +08:00
parent 1d3845d981
commit 3da44b7d3b
3 changed files with 35 additions and 6 deletions

View File

@ -1615,7 +1615,7 @@ public class ActivityLogic implements IEventHandler{
} }
/** /**
* *
*/ */
public void choiceDrawCard(ISession iSession,User user,int activityId,int type) throws Exception { public void choiceDrawCard(ISession iSession,User user,int activityId,int type) throws Exception {
// 初始值 // 初始值

View File

@ -143,6 +143,9 @@ public class HeroManager extends MongoBase {
return heroLikableMap; return heroLikableMap;
} }
public int drawFiveStarHeroNum;//点将招募获取5星英雄的抽中次数
public int drawFabaoNum;//法宝招募获取法宝的抽中次数
/** /**
* *
*/ */
@ -711,5 +714,23 @@ public class HeroManager extends MongoBase {
} }
return map; return map;
} }
public void setDrawFiveStarHeroNum(int drawFiveStarHeroNum){
this.drawFiveStarHeroNum = drawFiveStarHeroNum;
updateString("drawFiveStarHeroNum", drawFiveStarHeroNum);
}
public int getDrawFiveStarHeroNum(){
return this.drawFiveStarHeroNum;
}
public void setDrawFabaoNum(int drawFabaoNum){
this.drawFabaoNum = drawFabaoNum;
updateString("drawFabaoNum", drawFabaoNum);
}
public int getDrawFabaoNum(){
return this.drawFabaoNum;
}
} }

View File

@ -943,14 +943,22 @@ public class HeroLogic {
private int[] wishDrawCardCheck(User user, int[] item, int type) { private int[] wishDrawCardCheck(User user, int[] item, int type) {
// 查找物品 // 查找物品
SItem sItem = SItem.getsItemMap().get(item[0]); SItem sItem = SItem.getsItemMap().get(item[0]);
// 非英雄奖励直接返回 // 非5星英雄奖励直接返回
if (sItem.getXinyuan() != 1) { if (sItem.getXinyuan() != 1) {
return item; return item;
} }
//记录抽中5星英雄或法宝的数量
int weight = getWeightByDraw(user, type); int fiveStarHeroCount = 0;
int randomInt = MathUtils.randomInt(10000); if(type == 4){//法宝
if (randomInt <= weight) { fiveStarHeroCount = user.getHeroManager().getDrawFabaoNum()+ 1;
user.getHeroManager().setDrawFabaoNum(fiveStarHeroCount);
}else if(type == 1){//英雄
fiveStarHeroCount = user.getHeroManager().getDrawFiveStarHeroNum() + 1;
user.getHeroManager().setDrawFiveStarHeroNum(fiveStarHeroCount);
}
//固定30%概率,次数个位数在3,6,9时固定出
int value = fiveStarHeroCount % 10;
if(value == 3 || value == 6 || value == 9){
// 读取格子信息 // 读取格子信息
Integer integer = user.getPlayerInfoManager().getDesireDraw().getOrDefault(type, 0); Integer integer = user.getPlayerInfoManager().getDesireDraw().getOrDefault(type, 0);
// null表示未中心愿, 该格子已锁定, 是空格子 // null表示未中心愿, 该格子已锁定, 是空格子