同一个卡包内不能开出重复卡牌
This commit is contained in:
parent
0f732904be
commit
d4dc459192
@ -271,3 +271,14 @@ func IsContain(s []int, s2 []int) bool {
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsSameElem(s []int) bool {
|
||||||
|
r := make(map[int]struct{})
|
||||||
|
for _, v := range s {
|
||||||
|
if _, ok := r[v]; ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
r[v] = struct{}{}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|||||||
@ -134,3 +134,11 @@ func UnitLimitedTimeEvent(p *Player) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UnitCard(p *Player) error {
|
||||||
|
CardMod := p.PlayMod.getCardMod()
|
||||||
|
for i := 0; i < 1000; i++ {
|
||||||
|
CardMod.OpenCardPack(4)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@ -157,9 +157,8 @@ func (c *CardMod) OpenCardPack(Star int) ([]int, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mustHaveStar := cardCfg.GetPackMustHave(Star)
|
mustHaveStar := cardCfg.GetPackMustHave(Star)
|
||||||
|
|
||||||
if mustHaveStar != 0 {
|
if mustHaveStar != 0 {
|
||||||
cardId = randCard(c.Round, mustHaveStar, 0)
|
cardId = randCard(c.Round, mustHaveStar, 0, newCard)
|
||||||
if cardId == 0 {
|
if cardId == 0 {
|
||||||
return newCard, fmt.Errorf("OpenCardPack card id err")
|
return newCard, fmt.Errorf("OpenCardPack card id err")
|
||||||
}
|
}
|
||||||
@ -177,11 +176,11 @@ func (c *CardMod) OpenCardPack(Star int) ([]int, error) {
|
|||||||
CardStar := GoUtil.RandMap(randList)
|
CardStar := GoUtil.RandMap(randList)
|
||||||
switch CardStar {
|
switch CardStar {
|
||||||
case 5:
|
case 5:
|
||||||
cardId = randCard(c.Round, 4, 1)
|
cardId = randCard(c.Round, 4, 1, newCard)
|
||||||
case 6:
|
case 6:
|
||||||
cardId = randCard(c.Round, 5, 1)
|
cardId = randCard(c.Round, 5, 1, newCard)
|
||||||
default:
|
default:
|
||||||
cardId = randCard(c.Round, CardStar, 0)
|
cardId = randCard(c.Round, CardStar, 0, newCard)
|
||||||
}
|
}
|
||||||
if cardId == 0 {
|
if cardId == 0 {
|
||||||
return newCard, fmt.Errorf("OpenCardPack card id err")
|
return newCard, fmt.Errorf("OpenCardPack card id err")
|
||||||
@ -539,7 +538,7 @@ func (c *CardMod) GetHandbookReward(CardId int) ([]*item.Item, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *CardMod) RandCard(Star int) int {
|
func (c *CardMod) RandCard(Star int) int {
|
||||||
return randCard(c.Round, Star, 0)
|
return randCard(c.Round, Star, 0, []int{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *CardMod) SeasonFirstReward() ([]*item.Item, error) {
|
func (c *CardMod) SeasonFirstReward() ([]*item.Item, error) {
|
||||||
|
|||||||
@ -5,12 +5,15 @@ import (
|
|||||||
cardCfg "server/conf/card"
|
cardCfg "server/conf/card"
|
||||||
)
|
)
|
||||||
|
|
||||||
func randCard(Round, Star, IsGold int) int {
|
func randCard(Round, Star, IsGold int, Except []int) int {
|
||||||
cardList := cardCfg.GetCardListByStar(Round, Star, IsGold)
|
cardList := cardCfg.GetCardListByStar(Round, Star, IsGold)
|
||||||
|
cardList = GoUtil.SubSlices(cardList, Except)
|
||||||
cardId := GoUtil.RandSlice(cardList)
|
cardId := GoUtil.RandSlice(cardList)
|
||||||
return cardId
|
return cardId
|
||||||
}
|
}
|
||||||
|
|
||||||
func RankGoldCard() (int, int) {
|
func RankGoldCard() (int, int) {
|
||||||
return randCard(0, 4, 1), randCard(0, 5, 1)
|
Card1 := randCard(0, 4, 1, []int{})
|
||||||
|
Card2 := randCard(0, 5, 1, []int{Card1})
|
||||||
|
return Card1, Card2
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user