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

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 {
// 初始值

View File

@ -143,6 +143,9 @@ public class HeroManager extends MongoBase {
return heroLikableMap;
}
public int drawFiveStarHeroNum;//点将招募获取5星英雄的抽中次数
public int drawFabaoNum;//法宝招募获取法宝的抽中次数
/**
*
*/
@ -711,5 +714,23 @@ public class HeroManager extends MongoBase {
}
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) {
// 查找物品
SItem sItem = SItem.getsItemMap().get(item[0]);
// 非英雄奖励直接返回
// 非5星英雄奖励直接返回
if (sItem.getXinyuan() != 1) {
return item;
}
int weight = getWeightByDraw(user, type);
int randomInt = MathUtils.randomInt(10000);
if (randomInt <= weight) {
//记录抽中5星英雄或法宝的数量
int fiveStarHeroCount = 0;
if(type == 4){//法宝
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);
// null表示未中心愿, 该格子已锁定, 是空格子