forked from shinianj/nonebot_plugin_horserace
-
Notifications
You must be signed in to change notification settings - Fork 0
/
事件详细模板.txt
73 lines (67 loc) · 5.51 KB
/
事件详细模板.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{
"event_name": "事件xxx" #必要值,此项目为事件名称,logger输出,方便查故障用
"describe": "xxx", #必要值,此项目为效果描述,<0>指代自己,<1>指代目标,(若无必要描述事件发起人,<0>也可省略)
"target": 0, #必要值,0目标为自己,1为随机选择一个非自己的目标(即<1>),2为全部,3为除自身外全部
#4为全场随机一个目标,5自己和一位其他目标(该目标为<1>)
#6为随机一侧赛道的马儿(即<1>),7为两侧赛道的马儿(即<1>,此<1>为马1和马2)
"target_is_buff": "die", #既定target指定的单位中,有该buff_tag的单位才能成为目标,(即排除掉没有特定buff_tag的单位作为目标)
"target_no_buff": "die", #既定target指定的单位中,无该buff_tag的单位才能成为目标,(即排除掉有特定buff_tag的单位作为目标)
"race_only": "xxxyyyzzz", #事件触发限定标识:若有值,则同一次比赛,相同此值的事件只会触发其中一个,且最多触发一次
=========一次性事件参数,单次执行==========
"live": 0, #复活事件:为1则目标复活(P.S.由于死者无法触发事件,即若"buff_target"为0则必然无效)
"move": 0, #位移事件:目标立即进行相当于参数值的位移
"track_to_location": 0, #随机位置事件:有值则让目标移动到指定位置
"track_random_location": 0, #随机位置事件:为1则让目标随机位置(位置范围为可设定值,见setting.py)
"buff_time_add": 0, #buff持续时间调整事件:目标所有buff增加/减少回合数
#此tag会导致延时事件提前延后
"del_buff": "die" #删除buff事件:下回合删除目标含特定buff_tag的所有buff
"track_exchange_location": 0,
#换位事件:值为1则与目标更换位置 (仅target为1,6时生效)
"random_event_once": [[概率值1, {事件}], [概率值2, {事件}], ......],
#此事件为一次性随机事件,随机事件相关详见文末
==========死亡与离开buff,此项目内的死亡与离开为独立的buff,且有相同buff_tag时无法生效==========
"die": 0, #buff_tag,死亡:为1则目标死亡,此参数生成的buff默认持续999回合
"die_name": "死亡", #buff_tag:die的自定义名称,不填为“死亡”
"away": 0, #buff_tag,离开:为1则目标离开,此参数生成的buff默认持续999回合
"away_name": "离开", #buff_tag:away的自定义名称,不填为“离开”
==========buff参数(若有turn和name参数,则buff部分有效)此项目内参数为一个buff的不同参数==========
"rounds": 0, #buff持续回合数
"name": "xxx", #buff名称,turn值>0时为必要值
"move_max": 0, #该buff提供马儿每回合位移值区间的最大值(move_max若小于move_min,则move_max以move_min值为准)
"move_min": 0, #该buff提供马儿每回合位移值区间的最小值
"locate_lock": 0, #buff_tag,止步:若为1则目标无法移动
"vertigo": 0, #buff_tag,眩晕:若为1则目标无法移动,且不主动执行事件
"hiding": 0, #buff_tag,隐身:不显示目标移动距离及位置
"other_buff": ["buff1", "buff2", ....]
#自定义buff_tag,仅标识用buff_tag填写处,也可以填入常规buff_tag并正常生效
"random_event": [[概率值1, {事件}], [概率值2, {事件}], ......],
#此为持续性随机事件,以buff形式存在,部分详见文末
==========延迟/同步事件==========
"delay_event": [1, {事件}] #延迟事件(以当前事件的targets为发起人的事件):前者为多少回合后,需>1
"delay_event_self": [1, {事件}]
#延迟事件(以当前事件发起人为发起人的事件):前者为多少回合后,需>1
"another_event": {事件} #同步事件(以当前事件的targets为发起人的事件),执行此事件后立马执行该事件
"another_event_self": {事件}
#同步事件(以当前事件发起人为发起人的事件),执行此事件后立马执行该事件
==========永久事件2,换赛道/加马==========
"add_horse": {"horsename": "the_horse", "uid": 114514, "owner": "the_player", "location": 0 }:
#增加一匹马,horsename与owner必须填入
"replace_horse": {"horsename": "the_horse", "uid": 114514, "owner": "the_player"}:
#替换一匹马,target=0146时有效
},
==========关于{事件}参数==========
按普通事件写就行,唯一的区别是,这类参数事件不会因为本体死亡/离开/眩晕而不执行
==========关于rate_event事件==========
#如"random_event": [[50, {事件1}], [100, {事件2}]
#事件可以是正常事件,也可以为纯描述事件,如{"rate": xxx, "describe": "<0>进行了xxx判定,但没有生效", }
#rate:第一个概率值必须大于等于0,后面事件的概率值必须大于前者,判定详细逻辑如下:
key = random.randint(0, 最后一个概率值)
if key <= 概率值1:
执行事件1
elif key <= 概率值2:
执行事件2
elif key <= 概率值3:
执行事件3
......
elif key <= 最后一个概率值:
执行最后一个事件