Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 36 additions & 30 deletions plugin/mcfish/fish.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,45 +171,51 @@ func init() {
ctx.SendChain(message.Text("[ERROR at fish.go.5.1]:", err))
return
}

localProbabilities := make(map[string]probabilityLimit, len(probabilities))
for k, v := range probabilities {
localProbabilities[k] = v
}

if number > 100 || equipInfo.Equip == "美西螈" { // 放大概率
probabilities["treasure"] = probabilityLimit{
localProbabilities["treasure"] = probabilityLimit{
Min: 0,
Max: 2,
}
probabilities["pole"] = probabilityLimit{
localProbabilities["pole"] = probabilityLimit{
Min: 2,
Max: 10,
}
probabilities["fish"] = probabilityLimit{
localProbabilities["fish"] = probabilityLimit{
Min: 10,
Max: 45,
}
probabilities["waste"] = probabilityLimit{
localProbabilities["waste"] = probabilityLimit{
Min: 45,
Max: 90,
}
}
if number2 != 0 {
info := probabilities["waste"]
info := localProbabilities["waste"]
info.Max = 100
probabilities["waste"] = info
localProbabilities["waste"] = info
}
for name, info := range probabilities {
for name, info := range localProbabilities {
switch name {
case "treasure":
info.Max += equipInfo.Favor
probabilities[name] = info
localProbabilities[name] = info
case "pole":
info.Min += equipInfo.Favor
info.Max += equipInfo.Favor * 2
probabilities[name] = info
localProbabilities[name] = info
case "fish":
info.Min += equipInfo.Favor * 2
info.Max += equipInfo.Favor * 3
probabilities[name] = info
localProbabilities[name] = info
case "waste":
info.Min += equipInfo.Favor * 3
probabilities[name] = info
localProbabilities[name] = info
}
}
// 钓鱼结算
Expand All @@ -221,34 +227,34 @@ func init() {
number := 1
dice := rand.Intn(100)
switch {
case dice >= probabilities["waste"].Min && dice < probabilities["waste"].Max: // 垃圾
case dice >= localProbabilities["waste"].Min && dice < localProbabilities["waste"].Max: // 垃圾
typeOfThing = "waste"
thingName = wasteList[rand.Intn(len(wasteList))]
picName = thingName
case dice >= probabilities["treasure"].Min && dice < probabilities["treasure"].Max: // 宝藏
case dice >= localProbabilities["treasure"].Min && dice < localProbabilities["treasure"].Max: // 宝藏
dice = rand.Intn(100)
switch {
case dice >= probabilities["美西螈"].Min && dice < probabilities["美西螈"].Max:
case dice >= localProbabilities["美西螈"].Min && dice < localProbabilities["美西螈"].Max:
typeOfThing = "pole"
picName = "美西螈"
thingName = "美西螈"
case dice >= probabilities["唱片"].Min && dice < probabilities["唱片"].Max:
case dice >= localProbabilities["唱片"].Min && dice < localProbabilities["唱片"].Max:
typeOfThing = "article"
picName = "唱片"
thingName = "唱片"
case dice >= probabilities["海之眷顾"].Min && dice < probabilities["海之眷顾"].Max:
case dice >= localProbabilities["海之眷顾"].Min && dice < localProbabilities["海之眷顾"].Max:
typeOfThing = "article"
picName = "book"
thingName = "海之眷顾"
case dice >= probabilities["净化书"].Min && dice < probabilities["净化书"].Max:
case dice >= localProbabilities["净化书"].Min && dice < localProbabilities["净化书"].Max:
typeOfThing = "article"
picName = "book"
thingName = "净化书"
case dice >= probabilities["宝藏诅咒"].Min && dice < probabilities["宝藏诅咒"].Max:
case dice >= localProbabilities["宝藏诅咒"].Min && dice < localProbabilities["宝藏诅咒"].Max:
typeOfThing = "article"
picName = "book"
thingName = "宝藏诅咒"
case dice >= probabilities["海豚"].Min && dice < probabilities["海豚"].Max:
case dice >= localProbabilities["海豚"].Min && dice < localProbabilities["海豚"].Max:
typeOfThing = "fish"
picName = "海豚"
thingName = "海豚"
Expand All @@ -257,35 +263,35 @@ func init() {
picName = "book"
thingName = "诱钓"
}
case dice >= probabilities["pole"].Min && dice < probabilities["pole"].Max: // 宝藏
case dice >= localProbabilities["pole"].Min && dice < localProbabilities["pole"].Max: // 鱼竿
typeOfThing = "pole"
dice := rand.Intn(100)
switch {
case dice >= probabilities["铁竿"].Min && dice < probabilities["铁竿"].Max:
case dice >= localProbabilities["铁竿"].Min && dice < localProbabilities["铁竿"].Max:
thingName = "铁竿"
case dice >= probabilities["金竿"].Min && dice < probabilities["金竿"].Max:
case dice >= localProbabilities["金竿"].Min && dice < localProbabilities["金竿"].Max:
thingName = "金竿"
case dice >= probabilities["钻石竿"].Min && dice < probabilities["钻石竿"].Max:
case dice >= localProbabilities["钻石竿"].Min && dice < localProbabilities["钻石竿"].Max:
thingName = "钻石竿"
case dice >= probabilities["下界合金竿"].Min && dice < probabilities["下界合金竿"].Max:
case dice >= localProbabilities["下界合金竿"].Min && dice < localProbabilities["下界合金竿"].Max:
thingName = "下界合金竿"
default:
thingName = "木竿"
}
picName = thingName
case dice >= probabilities["fish"].Min && dice < probabilities["fish"].Max:
case dice >= localProbabilities["fish"].Min && dice < localProbabilities["fish"].Max: // 鱼类
typeOfThing = "fish"
dice = rand.Intn(100)
switch {
case dice >= probabilities["墨鱼"].Min && dice < probabilities["墨鱼"].Max:
case dice >= localProbabilities["墨鱼"].Min && dice < localProbabilities["墨鱼"].Max:
thingName = "墨鱼"
case dice >= probabilities["鳕鱼"].Min && dice < probabilities["鳕鱼"].Max:
case dice >= localProbabilities["鳕鱼"].Min && dice < localProbabilities["鳕鱼"].Max:
thingName = "鳕鱼"
case dice >= probabilities["鲑鱼"].Min && dice < probabilities["鲑鱼"].Max:
case dice >= localProbabilities["鲑鱼"].Min && dice < localProbabilities["鲑鱼"].Max:
thingName = "鲑鱼"
case dice >= probabilities["热带鱼"].Min && dice < probabilities["热带鱼"].Max:
case dice >= localProbabilities["热带鱼"].Min && dice < localProbabilities["热带鱼"].Max:
thingName = "热带鱼"
case dice >= probabilities["河豚"].Min && dice < probabilities["河豚"].Max:
case dice >= localProbabilities["河豚"].Min && dice < localProbabilities["河豚"].Max:
thingName = "河豚"
default:
thingName = "鹦鹉螺"
Expand Down
57 changes: 52 additions & 5 deletions plugin/mcfish/pole.go
Original file line number Diff line number Diff line change
Expand Up @@ -419,12 +419,59 @@ func init() {
return
}
if nextcmd == "梭哈" {
// len(list)取3的倍数,表示能够用于合成鱼竿的最大数量,note:此处未对article.Number>1的情况做处理
for i := 3; i < (len(articles)/3)*3; i++ {
list = append(list, i)
totalBatches := maxCount / 3
success := 0
fail := 0
for batch := 0; batch < totalBatches; batch++ {
base := batch * 3
indices := []int{base, base + 1, base + 2}
sumInduce := 0
sumFavor := 0
for _, idx := range indices {
sumInduce += poles[idx].Induce
sumFavor += poles[idx].Favor
}
avgInduce := sumInduce / 3
avgFavor := sumFavor / 3
for _, idx := range indices {
thingInfo := articles[idx]
thingInfo.Number = 0
err = dbdata.updateUserThingInfo(uid, thingInfo)
if err != nil {
ctx.SendChain(message.Text("[ERROR at pole.go.12]:", err))
return
}
}
if rand.Intn(100) < 90 {
attribute := strconv.Itoa(durationList[thingName]) + "/0/" + strconv.Itoa(avgInduce) + "/" + strconv.Itoa(avgFavor)
newthing := article{
Duration: time.Now().Unix() + int64(batch*10),
Type: "pole",
Name: thingName,
Number: 1,
Other: attribute,
}
err = dbdata.updateUserThingInfo(uid, newthing)
if err != nil {
ctx.SendChain(message.Text("[ERROR at pole.go.12]:", err))
return
}
success++
} else {
fail++
}
}
check = true
break
remaining := maxCount % 3
msgText := "合成完成,成功:" + strconv.Itoa(success) + " 个,失败:" + strconv.Itoa(fail) + " 个"
if remaining > 0 {
msgText += ",剩余 " + strconv.Itoa(remaining) + " 根材料未参与合成"
}
ctx.Send(
message.ReplyWithMessage(ctx.Event.MessageID,
message.Text(msgText),
),
)
return
}
chooseList := strings.Split(nextcmd, " ")
first, err := strconv.Atoi(chooseList[0])
Expand Down
1 change: 0 additions & 1 deletion plugin/qqwife/function.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,6 @@ func init() {
message.Text(
"\n",
"[", ctx.CardOrNickName(fiancee), "]",
"(", fiancee, ")哒",
"(", fiancee, ")哒\n当前你们好感度为", favor,
),
)
Expand Down
12 changes: 8 additions & 4 deletions plugin/wife/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,19 @@ var (
func(ctx *zero.Ctx) bool {
data, err := engine.GetLazyData("wife.json", true)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return false
logrus.Warnf("[wife] 远程同步 wife.json 失败: %v,正在尝试读取本地缓存...", err)
data, err = engine.GetLazyData("wife.json", false)
if err != nil {
ctx.SendChain(message.Text("ERROR: 无法获取老婆库数据(同步及本地读取均失败): ", err))
return false
}
}
err = json.Unmarshal(data, &cards)
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
ctx.SendChain(message.Text("ERROR: 老婆库格式解析失败: ", err))
return false
}
logrus.Infof("[wife]加载%d个老婆", len(cards))
logrus.Infof("[wife] 已成功加载 %d 个老婆", len(cards))
return true
},
)
Expand Down
15 changes: 9 additions & 6 deletions plugin/wife/wifegame.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/wdvxdr1123/ZeroBot/message"

"github.com/FloatTech/imgfactory"
"github.com/sirupsen/logrus"
)

var (
Expand All @@ -33,22 +34,26 @@ func init() {
card := cards[rand.Intn(len(cards))]
pic, err := engine.GetLazyData("wives/"+card, true)
if err != nil {
ctx.SendChain(message.Text("[猜老婆]error:\n", err))
return
logrus.Warnf("[wife] 猜老婆图片同步失败: %v,尝试读取本地文件...", err)
pic, err = engine.GetLazyData("wives/"+card, false)
if err != nil {
ctx.SendChain(message.Text("[猜老婆] 远程下载及本地读取图片均失败:\n", err))
return
}
}
work, name := card2name(card)
name = strings.ToLower(name)
img, _, err := image.Decode(bytes.NewReader(pic))
if err != nil {
ctx.SendChain(message.Text("[猜老婆]error:\n", err))
ctx.SendChain(message.Text("[猜老婆] 图片解码失败:\n", err))
return
}
dst := imgfactory.Size(img, img.Bounds().Dx(), img.Bounds().Dy())
q, err := mosaic(dst, class)
if err != nil {
ctx.SendChain(
message.Reply(ctx.Event.MessageID),
message.Text("[猜老婆]图片生成失败:\n", err),
message.Text("[猜老婆] 图片生成失败:\n", err),
)
return
}
Expand Down Expand Up @@ -80,8 +85,6 @@ func init() {
)
return
case c := <-recv:
// tick.Reset(105 * time.Second)
// after.Reset(120 * time.Second)
msg := strings.ReplaceAll(c.Event.Message.String(), "酱", "")
if msg == "" {
continue
Expand Down
Loading