安慰订单链
This commit is contained in:
parent
30af5939ba
commit
b6dd03ce6a
@ -259,3 +259,13 @@ func ShuffleArray(s []int) []int {
|
|||||||
}
|
}
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsContain(s []int, s2 []int) bool {
|
||||||
|
for _, v := range s2 {
|
||||||
|
if !InArray(v, s) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
s = SubSlices(s, []int{v})
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|||||||
@ -233,6 +233,11 @@ func ReqGmCommand(args []interface{}) error {
|
|||||||
case "addFriendStar":
|
case "addFriendStar":
|
||||||
FriendTreasureMod := player.PlayMod.getFriendTreasureMod()
|
FriendTreasureMod := player.PlayMod.getFriendTreasureMod()
|
||||||
FriendTreasureMod.AddStar(200)
|
FriendTreasureMod.AddStar(200)
|
||||||
|
case "comfortOrder":
|
||||||
|
BaseMod := player.PlayMod.getBaseMod()
|
||||||
|
BaseMod.LogoutTime = GoUtil.Now() - 7*86400
|
||||||
|
TriggerComfortOrder(player)
|
||||||
|
player.PushClientRes(player.PlayMod.getOrderMod().BackData())
|
||||||
case "setDecorateArea":
|
case "setDecorateArea":
|
||||||
S, _ := strconv.Atoi(arg[1])
|
S, _ := strconv.Atoi(arg[1])
|
||||||
DecorateMod := player.PlayMod.getDecorateMod()
|
DecorateMod := player.PlayMod.getDecorateMod()
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
package game
|
package game
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"server/GoUtil"
|
||||||
"server/MergeConst"
|
"server/MergeConst"
|
||||||
"server/conf"
|
"server/conf"
|
||||||
"server/db"
|
"server/db"
|
||||||
|
"server/game/mod/order"
|
||||||
"server/msg"
|
"server/msg"
|
||||||
"server/pkg/github.com/name5566/leaf/log"
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
"time"
|
"time"
|
||||||
@ -67,3 +69,38 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) {
|
|||||||
player.Kafka("pay", orderDataMap)
|
player.Kafka("pay", orderDataMap)
|
||||||
player.SendClientRes()
|
player.SendClientRes()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TriggerComfortOrder(p *Player) {
|
||||||
|
BaseMod := p.PlayMod.getBaseMod()
|
||||||
|
Now := GoUtil.Now()
|
||||||
|
Lv := BaseMod.GetLevel()
|
||||||
|
|
||||||
|
if Now-BaseMod.GetLogoutTime() < 7*86400 || Lv < 6 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
OrderMod := p.PlayMod.getOrderMod()
|
||||||
|
ChessMod := p.PlayMod.getChessMod()
|
||||||
|
ChessList := ChessMod.GetUnlockChessList()
|
||||||
|
TriggerType := 1
|
||||||
|
for _, Order := range OrderMod.GetOrderList() {
|
||||||
|
if GoUtil.IsContain(ChessList, Order.MergeId) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if Order.Diff == order.DIFF_LOW {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if Order.Diff == order.DIFF_MID {
|
||||||
|
TriggerType = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EmitList := ChessMod.GetEmitList()
|
||||||
|
EnergyMul := BaseMod.GetEnergyMul()
|
||||||
|
if TriggerType == 1 {
|
||||||
|
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_LOW, 2)
|
||||||
|
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_LOW, 3)
|
||||||
|
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_MID, 2)
|
||||||
|
} else {
|
||||||
|
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_LOW, 2)
|
||||||
|
OrderMod.CreateComfortOrder(Lv, EmitList, EnergyMul, order.DIFF_LOW, 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -47,7 +47,7 @@ func (b *Base) InitData(Uid int) {
|
|||||||
|
|
||||||
func (b *Base) Login() {
|
func (b *Base) Login() {
|
||||||
b.LoginTime = GoUtil.Now()
|
b.LoginTime = GoUtil.Now()
|
||||||
b.LogoutTime = 0
|
// b.LogoutTime = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Base) GetNickName() string {
|
func (b *Base) GetNickName() string {
|
||||||
@ -118,6 +118,10 @@ func (b *Base) GetLoginTime() int64 {
|
|||||||
return b.LoginTime
|
return b.LoginTime
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *Base) GetLogoutTime() int64 {
|
||||||
|
return b.LogoutTime
|
||||||
|
}
|
||||||
|
|
||||||
func (b *Base) GetRecoverTime() int64 {
|
func (b *Base) GetRecoverTime() int64 {
|
||||||
return b.RecoverTime
|
return b.RecoverTime
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,12 +40,14 @@ const (
|
|||||||
Super_type = 3 // 超级订单
|
Super_type = 3 // 超级订单
|
||||||
Preheat_type = 4 // 预热订单
|
Preheat_type = 4 // 预热订单
|
||||||
Trigger_type = 5 // 触发订单
|
Trigger_type = 5 // 触发订单
|
||||||
Clean_type = 6 // 清理订单
|
Clean_type = 6 // 退役发射器清理订单
|
||||||
Clean_Order_type = 7 // 清理无法生成订单的棋子
|
Clean_Order_type = 7 // 清理无法生成订单的棋子
|
||||||
|
Clean_type2 = 8 // 棋盘空格不足清理棋子的订单
|
||||||
|
COMFORT_TYPE = 9 // 安慰订单
|
||||||
|
|
||||||
diff_low = 1 // 低难度
|
DIFF_LOW = 1 // 低难度
|
||||||
diff_mid = 2 // 中难度
|
DIFF_MID = 2 // 中难度
|
||||||
diff_high = 3 // 高难度
|
DIFF_HIGH = 3 // 高难度
|
||||||
)
|
)
|
||||||
|
|
||||||
func (o *OrderMod) InitData() {
|
func (o *OrderMod) InitData() {
|
||||||
@ -60,7 +62,7 @@ func (o *OrderMod) InitData() {
|
|||||||
Cfg := startOrderCfg.GetStartOrderByStep(o.Step + 1)
|
Cfg := startOrderCfg.GetStartOrderByStep(o.Step + 1)
|
||||||
o.Step = 1
|
o.Step = 1
|
||||||
o.Auto_id = 0
|
o.Auto_id = 0
|
||||||
o.LastDiff = diff_low
|
o.LastDiff = DIFF_LOW
|
||||||
for _, v := range Cfg {
|
for _, v := range Cfg {
|
||||||
o.Auto_id++
|
o.Auto_id++
|
||||||
o.OrderList[o.Auto_id] = Order{
|
o.OrderList[o.Auto_id] = Order{
|
||||||
@ -120,7 +122,7 @@ func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error {
|
|||||||
if NewChessId == 0 {
|
if NewChessId == 0 {
|
||||||
return fmt.Errorf("CreateOrder: NewChessId is 0, EnergyMul: %d, PreheatStep: %d, ChessColor: %s", EnergyMul, PreheatStep, ChessColor)
|
return fmt.Errorf("CreateOrder: NewChessId is 0, EnergyMul: %d, PreheatStep: %d, ChessColor: %s", EnergyMul, PreheatStep, ChessColor)
|
||||||
}
|
}
|
||||||
o.addOrder([]int{NewChessId}, diff_low, Preheat_type)
|
o.addOrder([]int{NewChessId}, DIFF_LOW, Preheat_type)
|
||||||
o.PreheatStep[ChessColor]++
|
o.PreheatStep[ChessColor]++
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -137,7 +139,7 @@ func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error {
|
|||||||
Cfg := startOrderCfg.GetStartOrderByStep(o.Step + 1)
|
Cfg := startOrderCfg.GetStartOrderByStep(o.Step + 1)
|
||||||
o.Step++
|
o.Step++
|
||||||
for _, v := range Cfg {
|
for _, v := range Cfg {
|
||||||
o.addOrder(v.MergeList, diff_low, Common_type)
|
o.addOrder(v.MergeList, DIFF_LOW, Common_type)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
} else {
|
} else {
|
||||||
@ -196,13 +198,13 @@ func (o *OrderMod) CreatePriorityOrder(lv int, Emit []int) bool {
|
|||||||
B := GoUtil.RandMap(map[int]int{0: 80, 1: 20})
|
B := GoUtil.RandMap(map[int]int{0: 80, 1: 20})
|
||||||
if B == 1 {
|
if B == 1 {
|
||||||
NewColor := GoUtil.RandStringSlice(Produce[1:])
|
NewColor := GoUtil.RandStringSlice(Produce[1:])
|
||||||
DiffLv := GoUtil.RandMap(map[int]int{diff_low: 70, diff_mid: 30})
|
DiffLv := GoUtil.RandMap(map[int]int{DIFF_LOW: 70, DIFF_MID: 30})
|
||||||
NewChessId := 0
|
NewChessId := 0
|
||||||
switch DiffLv {
|
switch DiffLv {
|
||||||
case diff_low:
|
case DIFF_LOW:
|
||||||
NewLv := GoUtil.RandNum(4, 3+DurLv)
|
NewLv := GoUtil.RandNum(4, 3+DurLv)
|
||||||
NewChessId = mergeDataCfg.GetChessIdByLvAndColor(NewLv, NewColor)
|
NewChessId = mergeDataCfg.GetChessIdByLvAndColor(NewLv, NewColor)
|
||||||
case diff_mid:
|
case DIFF_MID:
|
||||||
NewLv := GoUtil.RandNum(4+DurLv, 3+DurLv*2)
|
NewLv := GoUtil.RandNum(4+DurLv, 3+DurLv*2)
|
||||||
NewChessId = mergeDataCfg.GetChessIdByLvAndColor(NewLv, NewColor)
|
NewChessId = mergeDataCfg.GetChessIdByLvAndColor(NewLv, NewColor)
|
||||||
}
|
}
|
||||||
@ -223,7 +225,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error {
|
|||||||
}
|
}
|
||||||
randNum := 0
|
randNum := 0
|
||||||
mergeList := make([]int, 0)
|
mergeList := make([]int, 0)
|
||||||
OrderDiff := diff_low
|
OrderDiff := DIFF_LOW
|
||||||
var err error
|
var err error
|
||||||
for {
|
for {
|
||||||
if randNum > 50 {
|
if randNum > 50 {
|
||||||
@ -259,7 +261,7 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int, EnergyMul int) error {
|
|||||||
}
|
}
|
||||||
randNum := 0
|
randNum := 0
|
||||||
mergeList := make([]int, 0)
|
mergeList := make([]int, 0)
|
||||||
OrderDiff := diff_low
|
OrderDiff := DIFF_LOW
|
||||||
var err error
|
var err error
|
||||||
for {
|
for {
|
||||||
if randNum > 50 {
|
if randNum > 50 {
|
||||||
@ -364,7 +366,7 @@ func (o *OrderMod) CreateTriggerOrder(lv int, Emit []int, EnergyMul int) (int, e
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(mergeList) > 0 {
|
if len(mergeList) > 0 {
|
||||||
o.addOrder(mergeList, diff_low, Trigger_type)
|
o.addOrder(mergeList, DIFF_LOW, Trigger_type)
|
||||||
return getOrderStar(mergeList), nil
|
return getOrderStar(mergeList), nil
|
||||||
} else {
|
} else {
|
||||||
for k, v := range o.OrderList {
|
for k, v := range o.OrderList {
|
||||||
@ -402,12 +404,12 @@ func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (o *OrderMod) CreateCleanOrder(ChessList []int) bool {
|
func (o *OrderMod) CreateCleanOrder(ChessList []int) bool {
|
||||||
o.addOrder(ChessList, diff_low, Clean_type)
|
o.addOrder(ChessList, DIFF_LOW, Clean_type)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *OrderMod) CreateCleanOrder2(ChessList []int) bool {
|
func (o *OrderMod) CreateCleanOrder2(ChessList []int) bool {
|
||||||
o.addOrder(ChessList, diff_low, Clean_Order_type)
|
o.addOrder(ChessList, DIFF_LOW, Clean_Order_type)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -445,7 +447,7 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ
|
|||||||
ChessId := mergeDataCfg.GetChessIdByLvAndColor(EnergyMul+1, ChessColor[0])
|
ChessId := mergeDataCfg.GetChessIdByLvAndColor(EnergyMul+1, ChessColor[0])
|
||||||
if ChessId != 0 {
|
if ChessId != 0 {
|
||||||
o.PreheatStep[ChessColor[0]] = 1
|
o.PreheatStep[ChessColor[0]] = 1
|
||||||
o.addOrder([]int{ChessId}, diff_low, Preheat_type)
|
o.addOrder([]int{ChessId}, DIFF_LOW, Preheat_type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//额外订单补充2;当玩家的棋盘中出现三个相同的满级产物时,立刻生成一个对应的收购订单;
|
//额外订单补充2;当玩家的棋盘中出现三个相同的满级产物时,立刻生成一个对应的收购订单;
|
||||||
@ -453,7 +455,7 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ
|
|||||||
ChessNum := GoUtil.GetElemNum(ChessList, k)
|
ChessNum := GoUtil.GetElemNum(ChessList, k)
|
||||||
if ChessNum == 3 {
|
if ChessNum == 3 {
|
||||||
b1 = true
|
b1 = true
|
||||||
o.addOrder([]int{k, k, k}, diff_low, Extra_type)
|
o.addOrder([]int{k, k, k}, DIFF_LOW, Extra_type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return b1
|
return b1
|
||||||
@ -523,7 +525,7 @@ func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
delete(o.OrderList, k)
|
delete(o.OrderList, k)
|
||||||
o.addOrder([]int{NewChessId}, diff_low, Preheat_type)
|
o.addOrder([]int{NewChessId}, DIFF_LOW, Preheat_type)
|
||||||
}
|
}
|
||||||
if v.Type != Common_type {
|
if v.Type != Common_type {
|
||||||
continue
|
continue
|
||||||
@ -566,3 +568,26 @@ func (o *OrderMod) DelOrder(OrderId int) error {
|
|||||||
delete(o.OrderList, OrderId)
|
delete(o.OrderList, OrderId)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *OrderMod) CreateComfortOrder(lv int, Emit []int, EnergyMul, Diff, ChessNum int) error {
|
||||||
|
if len(Emit) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
randNum := 0
|
||||||
|
mergeList := make([]int, 0)
|
||||||
|
var err error
|
||||||
|
for {
|
||||||
|
if randNum > 50 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
randNum++
|
||||||
|
mergeList, _, err = randOrderChessWithDiff(o, lv, Emit, EnergyMul, Diff, ChessNum)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
o.addOrder(mergeList, Diff, COMFORT_TYPE)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@ -22,23 +22,23 @@ func getChessNumRand(OrderN int) map[int]int {
|
|||||||
func getOrderDiffRand(Diff, OrderN int) map[int]int {
|
func getOrderDiffRand(Diff, OrderN int) map[int]int {
|
||||||
var d map[int]int
|
var d map[int]int
|
||||||
switch Diff {
|
switch Diff {
|
||||||
case diff_low:
|
case DIFF_LOW:
|
||||||
d = map[int]int{
|
d = map[int]int{
|
||||||
diff_low: int(10 - OrderN),
|
DIFF_LOW: int(10 - OrderN),
|
||||||
diff_mid: int(30),
|
DIFF_MID: int(30),
|
||||||
diff_high: int(60 + OrderN),
|
DIFF_HIGH: int(60 + OrderN),
|
||||||
}
|
}
|
||||||
case diff_mid:
|
case DIFF_MID:
|
||||||
d = map[int]int{
|
d = map[int]int{
|
||||||
diff_low: int(21 - 3*OrderN),
|
DIFF_LOW: int(21 - 3*OrderN),
|
||||||
diff_mid: int(49 + 1.5*float64(OrderN)),
|
DIFF_MID: int(49 + 1.5*float64(OrderN)),
|
||||||
diff_high: int(30 + 1.5*float64(OrderN)),
|
DIFF_HIGH: int(30 + 1.5*float64(OrderN)),
|
||||||
}
|
}
|
||||||
case diff_high:
|
case DIFF_HIGH:
|
||||||
d = map[int]int{
|
d = map[int]int{
|
||||||
diff_low: int(60 - 5*OrderN),
|
DIFF_LOW: int(60 - 5*OrderN),
|
||||||
diff_mid: int(30 + 3*float64(OrderN)),
|
DIFF_MID: int(30 + 3*float64(OrderN)),
|
||||||
diff_high: int(10 + 2*float64(OrderN)),
|
DIFF_HIGH: int(10 + 2*float64(OrderN)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return d
|
return d
|
||||||
@ -54,85 +54,85 @@ func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int {
|
|||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
switch OrderDiff {
|
switch OrderDiff {
|
||||||
case diff_low:
|
case DIFF_LOW:
|
||||||
rand := map[int]int{
|
rand := map[int]int{
|
||||||
diff_low: 99 - OrderN,
|
DIFF_LOW: 99 - OrderN,
|
||||||
diff_mid: 1 + OrderN,
|
DIFF_MID: 1 + OrderN,
|
||||||
}
|
}
|
||||||
secondDiff := GoUtil.RandMap(rand)
|
secondDiff := GoUtil.RandMap(rand)
|
||||||
rs = map[int]int{
|
rs = map[int]int{
|
||||||
1: diff_low,
|
1: DIFF_LOW,
|
||||||
2: secondDiff,
|
2: secondDiff,
|
||||||
}
|
}
|
||||||
case diff_mid:
|
case DIFF_MID:
|
||||||
rand := map[int]int{
|
rand := map[int]int{
|
||||||
diff_low: 5 + OrderN,
|
DIFF_LOW: 5 + OrderN,
|
||||||
diff_mid: 95 - OrderN,
|
DIFF_MID: 95 - OrderN,
|
||||||
}
|
}
|
||||||
secondDiff := GoUtil.RandMap(rand)
|
secondDiff := GoUtil.RandMap(rand)
|
||||||
rs = map[int]int{
|
rs = map[int]int{
|
||||||
1: diff_low,
|
1: DIFF_LOW,
|
||||||
2: secondDiff,
|
2: secondDiff,
|
||||||
}
|
}
|
||||||
case diff_high:
|
case DIFF_HIGH:
|
||||||
rand := map[int]int{
|
rand := map[int]int{
|
||||||
diff_low: int(95 - 10*OrderN),
|
DIFF_LOW: int(95 - 10*OrderN),
|
||||||
diff_mid: int(4 + 6*OrderN),
|
DIFF_MID: int(4 + 6*OrderN),
|
||||||
diff_high: int(1 + 4*OrderN),
|
DIFF_HIGH: int(1 + 4*OrderN),
|
||||||
}
|
}
|
||||||
secondDiff := GoUtil.RandMap(rand)
|
secondDiff := GoUtil.RandMap(rand)
|
||||||
rs = map[int]int{
|
rs = map[int]int{
|
||||||
1: diff_low,
|
1: DIFF_LOW,
|
||||||
2: secondDiff,
|
2: secondDiff,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
switch OrderDiff {
|
switch OrderDiff {
|
||||||
case diff_low:
|
case DIFF_LOW:
|
||||||
rand := map[int]int{
|
rand := map[int]int{
|
||||||
diff_low: 95 - OrderN,
|
DIFF_LOW: 95 - OrderN,
|
||||||
diff_mid: 5 + OrderN,
|
DIFF_MID: 5 + OrderN,
|
||||||
}
|
}
|
||||||
secondDiff := GoUtil.RandMap(rand)
|
secondDiff := GoUtil.RandMap(rand)
|
||||||
rand = map[int]int{
|
rand = map[int]int{
|
||||||
diff_low: 60 - 4*OrderN,
|
DIFF_LOW: 60 - 4*OrderN,
|
||||||
diff_mid: 40 + 4*OrderN,
|
DIFF_MID: 40 + 4*OrderN,
|
||||||
}
|
}
|
||||||
thirdDiff := GoUtil.RandMap(rand)
|
thirdDiff := GoUtil.RandMap(rand)
|
||||||
rs = map[int]int{
|
rs = map[int]int{
|
||||||
1: diff_low,
|
1: DIFF_LOW,
|
||||||
2: secondDiff,
|
2: secondDiff,
|
||||||
3: thirdDiff,
|
3: thirdDiff,
|
||||||
}
|
}
|
||||||
case diff_mid:
|
case DIFF_MID:
|
||||||
rand := map[int]int{
|
rand := map[int]int{
|
||||||
diff_low: 50 - 3*OrderN,
|
DIFF_LOW: 50 - 3*OrderN,
|
||||||
diff_mid: 50 + 3*OrderN,
|
DIFF_MID: 50 + 3*OrderN,
|
||||||
}
|
}
|
||||||
secondDiff := GoUtil.RandMap(rand)
|
secondDiff := GoUtil.RandMap(rand)
|
||||||
rand = map[int]int{
|
rand = map[int]int{
|
||||||
diff_mid: 95 - 4*OrderN,
|
DIFF_MID: 95 - 4*OrderN,
|
||||||
diff_high: 5 + 4*OrderN,
|
DIFF_HIGH: 5 + 4*OrderN,
|
||||||
}
|
}
|
||||||
thirdDiff := GoUtil.RandMap(rand)
|
thirdDiff := GoUtil.RandMap(rand)
|
||||||
rs = map[int]int{
|
rs = map[int]int{
|
||||||
1: diff_low,
|
1: DIFF_LOW,
|
||||||
2: secondDiff,
|
2: secondDiff,
|
||||||
3: thirdDiff,
|
3: thirdDiff,
|
||||||
}
|
}
|
||||||
case diff_high:
|
case DIFF_HIGH:
|
||||||
rand := map[int]int{
|
rand := map[int]int{
|
||||||
diff_low: int(95 - 10*OrderN),
|
DIFF_LOW: int(95 - 10*OrderN),
|
||||||
diff_mid: int(5 + 10*OrderN),
|
DIFF_MID: int(5 + 10*OrderN),
|
||||||
}
|
}
|
||||||
secondDiff := GoUtil.RandMap(rand)
|
secondDiff := GoUtil.RandMap(rand)
|
||||||
rand = map[int]int{
|
rand = map[int]int{
|
||||||
diff_mid: int(95 - 8*OrderN),
|
DIFF_MID: int(95 - 8*OrderN),
|
||||||
diff_high: int(5 + 8*OrderN),
|
DIFF_HIGH: int(5 + 8*OrderN),
|
||||||
}
|
}
|
||||||
thirdDiff := GoUtil.RandMap(rand)
|
thirdDiff := GoUtil.RandMap(rand)
|
||||||
rs = map[int]int{
|
rs = map[int]int{
|
||||||
1: diff_low,
|
1: DIFF_LOW,
|
||||||
2: secondDiff,
|
2: secondDiff,
|
||||||
3: thirdDiff,
|
3: thirdDiff,
|
||||||
}
|
}
|
||||||
@ -146,12 +146,12 @@ func getChessLv(Min, Max, Diff int) int {
|
|||||||
Start := Min
|
Start := Min
|
||||||
End := Max
|
End := Max
|
||||||
switch Diff {
|
switch Diff {
|
||||||
case diff_low:
|
case DIFF_LOW:
|
||||||
End = Min + (Max-Min+1)/3 - 1
|
End = Min + (Max-Min+1)/3 - 1
|
||||||
case diff_mid:
|
case DIFF_MID:
|
||||||
Start = Min + (Max-Min+1)/3
|
Start = Min + (Max-Min+1)/3
|
||||||
End = Min + (Max-Min+1)/3*2 - 1
|
End = Min + (Max-Min+1)/3*2 - 1
|
||||||
case diff_high:
|
case DIFF_HIGH:
|
||||||
Start = Min + (Max-Min+1)/3*2
|
Start = Min + (Max-Min+1)/3*2
|
||||||
}
|
}
|
||||||
Start = max(Min, Start)
|
Start = max(Min, Start)
|
||||||
@ -217,11 +217,38 @@ func randSuperOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int,
|
|||||||
3: 30 + OrderN,
|
3: 30 + OrderN,
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, diff_low, err
|
return nil, DIFF_LOW, err
|
||||||
}
|
}
|
||||||
// 生成订单难度和棋子数量
|
// 生成订单难度和棋子数量
|
||||||
ChessNum := GoUtil.RandMap(RandChessNum)
|
ChessNum := GoUtil.RandMap(RandChessNum)
|
||||||
OrderDiff := diff_high
|
OrderDiff := DIFF_HIGH
|
||||||
|
ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN)
|
||||||
|
mergeList := make([]int, 0, len(ChessDiff))
|
||||||
|
// 根据订单棋子难度生成棋子
|
||||||
|
for _, v := range ChessDiff {
|
||||||
|
ChessId := 0
|
||||||
|
for {
|
||||||
|
ChessId = getChessFromPoolByDiff(o, v, Emit, EnergyMul)
|
||||||
|
if ChessId == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !GoUtil.InArray(ChessId, mergeList) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mergeList = append(mergeList, ChessId)
|
||||||
|
}
|
||||||
|
return mergeList, OrderDiff, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 随机生成超级订单棋子
|
||||||
|
func randOrderChessWithDiff(o *OrderMod, lv int, Emit []int, EnergyMul, OrderDiff, ChessNum int) ([]int, int, error) {
|
||||||
|
initReflectChess(Emit, EnergyMul)
|
||||||
|
filterPool(o)
|
||||||
|
OrderN, err := userCfg.GetOrderNByLv(lv)
|
||||||
|
if err != nil {
|
||||||
|
return nil, DIFF_LOW, err
|
||||||
|
}
|
||||||
ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN)
|
ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN)
|
||||||
mergeList := make([]int, 0, len(ChessDiff))
|
mergeList := make([]int, 0, len(ChessDiff))
|
||||||
// 根据订单棋子难度生成棋子
|
// 根据订单棋子难度生成棋子
|
||||||
@ -248,7 +275,7 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int,
|
|||||||
OrderN, err := userCfg.GetOrderNByLv(lv)
|
OrderN, err := userCfg.GetOrderNByLv(lv)
|
||||||
RandChessNum := getChessNumRand(OrderN)
|
RandChessNum := getChessNumRand(OrderN)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, diff_low, err
|
return nil, DIFF_LOW, err
|
||||||
}
|
}
|
||||||
// 生成订单难度和棋子数量
|
// 生成订单难度和棋子数量
|
||||||
ChessNum := GoUtil.RandMap(RandChessNum)
|
ChessNum := GoUtil.RandMap(RandChessNum)
|
||||||
@ -422,19 +449,19 @@ func initReflectChess(Emits []int, EnergyMul int) {
|
|||||||
End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3 - 1
|
End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3 - 1
|
||||||
for _, v := range Product {
|
for _, v := range Product {
|
||||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
||||||
initReflectChess2(v, Start, End, diff_low, Adjust)
|
initReflectChess2(v, Start, End, DIFF_LOW, Adjust)
|
||||||
}
|
}
|
||||||
Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3
|
Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3
|
||||||
End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2 - 1
|
End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2 - 1
|
||||||
for _, v := range Product {
|
for _, v := range Product {
|
||||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
||||||
initReflectChess2(v, Start, End, diff_mid, Adjust)
|
initReflectChess2(v, Start, End, DIFF_MID, Adjust)
|
||||||
}
|
}
|
||||||
Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2
|
Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2
|
||||||
End = ChessMaxLv
|
End = ChessMaxLv
|
||||||
for _, v := range Product {
|
for _, v := range Product {
|
||||||
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
Adjust := mergeDataCfg.DynamicAdjust(Emit, v)
|
||||||
initReflectChess2(v, Start, End, diff_high, Adjust)
|
initReflectChess2(v, Start, End, DIFF_HIGH, Adjust)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user