调整目录结构

增加 结束赛马 在进行过程中可以结束赛马(需要管理身份)
调整 占位符不再支持中文问号(因为事件消息内包含中文问号)
This commit is contained in:
筱傑 2022-01-11 21:43:34 +08:00
parent 6fb3ee99ce
commit e0095de5b1
6 changed files with 117 additions and 9 deletions

View File

@ -27,3 +27,40 @@
等待比赛结束,结算奖励。 等待比赛结束,结算奖励。
发送`我有多少钱`或者其它查询余额命令来查询当前余额。(可私聊查询) 发送`我有多少钱`或者其它查询余额命令来查询当前余额。(可私聊查询)
### 道具池
```
巧克力
作用60%几率使马下一步多走1格
价格8$
兴奋剂
作用60%几率使马下一步多走3格10%几率使马过于兴奋回到起点
价格10$
强效兴奋剂
作用60%几率使马下一步多走5格30%几率使马过于兴奋回到起点
价格15$
冰淇淋
作用30%几率使马滑到下一步走0格
价格10$
香蕉皮
作用50%几率使马滑到下一步走0格
价格5$
肥皂
作用70%几率使马滑到下一步走0格
价格7$
祈祷符
作用5%几率使马下一步多走10格
价格7$
使用指令:物品名称+马的序号
巧克力1为马1使用巧克力
注:本商店物品无需买入,在赛马进行中,只要有足够的$,直接用指令发动即可自动使用
注:如果物品名称后面不跟马的序号,视为对随机一匹马发动,购入价格减半
注:物品效果可累计
```

View File

@ -17,6 +17,8 @@ import net.mamoe.mirai.message.data.MessageChainBuilder
import net.mamoe.mirai.message.data.MessageSource.Key.quote import net.mamoe.mirai.message.data.MessageSource.Key.quote
import net.mamoe.mirai.message.data.PlainText import net.mamoe.mirai.message.data.PlainText
import net.mamoe.mirai.utils.info import net.mamoe.mirai.utils.info
import top.jie65535.jhr.game.Bet
import top.jie65535.jhr.game.Horse
import java.util.* import java.util.*
import kotlin.random.Random import kotlin.random.Random
@ -55,8 +57,6 @@ object JHorseRacing : KotlinPlugin(
// region 赛马 // region 赛马
private data class Bet(val id: Long, val number: Int, val score: Int)
private data class Horse(val type: Int, var position: Int = 0)
private data class Rank(val horses: List<Horse>, val job: Job) private data class Rank(val horses: List<Horse>, val job: Job)
/** /**
@ -117,11 +117,7 @@ object JHorseRacing : KotlinPlugin(
JHRPluginConfig.badEvents[Random.nextInt(JHRPluginConfig.badEvents.size)] JHRPluginConfig.badEvents[Random.nextInt(JHRPluginConfig.badEvents.size)]
} }
val number = (eventHorseIndex + 1).toString() val number = (eventHorseIndex + 1).toString()
subject.sendMessage( subject.sendMessage(eventMsg.replace("?", number))
eventMsg
.replace("?", number)
.replace("", number)
)
// 所有马前进 // 所有马前进
for ((i, horse) in rank.horses.withIndex()) { for ((i, horse) in rank.horses.withIndex()) {
@ -199,7 +195,22 @@ object JHorseRacing : KotlinPlugin(
} }
} }
} }
msg.startsWith("开始赛马") -> launch { startRank(subject) } msg.startsWith("开始赛马") -> launch {
startRank(subject)
}
msg.startsWith("结束赛马") -> {
if (sender.permission.isOperator()) {
val rank = ranks[subject.id]
if (rank != null) {
rank.job.cancel()
ranks.remove(subject.id)
pools.remove(subject.id)
subject.sendMessage("已结束比赛")
} else {
subject.sendMessage("没有正在进行中的赛马")
}
}
}
msg == "关闭赛马" -> { msg == "关闭赛马" -> {
if (sender.permission.isOperator()) { if (sender.permission.isOperator()) {
JHRPluginConfig.enabledGroups.remove(subject.id) JHRPluginConfig.enabledGroups.remove(subject.id)

View File

@ -0,0 +1,10 @@
package top.jie65535.jhr.game
/**
* 赌注
*
* @param id 下注用户
* @param number 马号
* @param score 下注点数
*/
data class Bet(val id: Long, val number: Int, val score: Int)

View File

@ -0,0 +1,5 @@
package top.jie65535.jhr.game
//class Game {
// // TODO
//}

View File

@ -0,0 +1,16 @@
package top.jie65535.jhr.game
/**
* 赛马
*
* @param type 赛马类型样式
*/
data class Horse(val type: Int) {
/**
* 马的位置 设置为小于0的值时会重置为0
*/
var position: Int = 0
set(value) {
field = if (value < 0) 0 else value
}
}

View File

@ -0,0 +1,29 @@
package top.jie65535.jhr.game
// TODO("游戏道具")
//class Item(
// val name: String,
// val price: Int,
// val description: String,
//) {
// fun handle(horse: Horse) {
// when (name) {
// "巧克力" -> {
//
// }
//
// }
// }
//
// companion object {
// val ITEMS = listOf(
// Item("巧克力", 100, "60%几率使马下一步多走1格"),
// Item("兴奋剂", 100, "60%几率使马下一步多走3格10%几率使马过于兴奋回到起点"),
// Item("强效兴奋剂", 100, "60%几率使马下一步多走5格30%几率使马过于兴奋回到起点"),
// Item("冰淇淋", 100, "30%几率使马滑到下一步走0格"),
// Item("香蕉皮", 100, "50%几率使马滑到下一步走0格"),
// Item("肥皂", 100, "70%几率使马滑到下一步走0格"),
// Item("祈祷符", 100, "5%几率使马下一步多走10格"),
// )
// }
//}