Delete plugins directory

This commit is contained in:
HibiKier
2021-05-20 19:18:32 +08:00
committed by GitHub
parent b4aef2bba6
commit a9f2035041
477 changed files with 0 additions and 12952 deletions
@@ -1,72 +0,0 @@
from .data_source import rd, help_message, st, en
from .madness import ti, li
from .create import Investigator
from .san_check import sc
from nonebot.plugin import on_startswith
from nonebot.adapters.cqhttp import Bot, Event
rdhelp = on_startswith("骰子娘帮助", priority=2)
stcommand = on_startswith(".st", priority=2)
encommand = on_startswith(".en", priority=2)
ticommand = on_startswith(".ti", priority=2)
licommand = on_startswith(".li", priority=2)
coc = on_startswith(".coc", priority=2)
sccommand = on_startswith(".sc", priority=2)
rdcommand = on_startswith(".r", priority=3)
@rdhelp.handle()
async def rdhelphandler(bot: Bot):
await rdhelp.finish(help_message())
@stcommand.handle()
async def stcommandhandler(bot: Bot):
await rdhelp.finish(st())
@encommand.handle()
async def enhandler(bot: Bot, event: Event):
args = str(event.get_message())[3:].strip()
await encommand.finish(en(args))
@rdcommand.handle()
async def rdcommandhandler(bot: Bot, event: Event):
args = str(event.get_message())[2:].strip()
uid = event.get_session_id()
if args and not("." in args):
rrd = rd(args)
if type(rrd) == str:
await rdcommand.finish(rrd)
elif type(rrd) == list:
await bot.send_private_msg(user_id=uid, message=rrd[0])
@coc.handle()
async def cochandler(bot: Bot, event: Event):
args = str(event.get_message())[4:].strip()
try:
args = int(args)
except:
args = 20
inv = Investigator()
inv.age_change(args)
await coc.finish(inv.output())
@ticommand.handle()
async def ticommandhandler(bot: Bot):
await ticommand.finish(ti())
@licommand.handle()
async def licommandhandler(bot: Bot):
await licommand.finish(li())
@sccommand.handle()
async def schandler(bot: Bot, event: Event):
args = str(event.get_message())[3:].strip()
await sccommand.finish(sc(args.lower()))
-147
View File
@@ -1,147 +0,0 @@
import random
build_dict = {64: -2, 84: -1, 124: 0, 164: 1,
204: 2, 284: 3, 364: 4, 444: 5, 524: 6}
db_dict = {-2: "-2", -1: "-1", 0: "0", 1: "1d4",
2: "1d6", 3: "2d6", 4: "3d6", 5: "4d6", 6: "5d6"}
def randattr(time: int = 3, ex: int = 0):
r = 0
for _ in range(time):
r += random.randint(1, 6)
return (r+ex)*5
class Investigator(object):
def __init__(self) -> None:
self.age = 20
self.str = randattr()
self.con = randattr()
self.siz = randattr(2, 6)
self.dex = randattr()
self.app = randattr()
self.int = randattr(2, 6)
self.pow = randattr()
self.edu = randattr(2, 6)
self.luc = randattr()
def body_build(self) -> int:
build = self.str + self.con
for i, j in build_dict.items():
if build <= i:
return j
return
def db(self) -> str:
return db_dict[self.body_build()]
def lp_max(self) -> int:
return (self.con+self.siz)//10
def mov(self) -> int:
r = 8
if self.age >= 80:
r -= 5
elif self.age >= 70:
r -= 4
elif self.age >= 60:
r -= 3
elif self.age >= 50:
r -= 2
elif self.age >= 40:
r -= 1
if self.str < self.siz and self.dex < self.siz:
return r-1
elif self.str > self.siz and self.dex > self.siz:
return r+1
else:
return r
def edu_up(self) -> str:
edu_check = random.randint(1, 100)
if edu_check > self.edu:
edu_en = random.randint(1, 10)
self.edu += edu_en
else:
return "教育成长检定D100=%d,小于%d,无增长。" % (edu_check, self.edu)
if self.edu > 99:
self.edu = 99
return "教育成长检定D100=%d,成长1D10=%d,成长到了最高值99!" % (edu_check, edu_en)
else:
return "教育成长检定D100=%d,成长1D10=%d,成长到了%d" % (edu_check, edu_en, self.edu)
def edu_ups(self, times) -> str:
r = ""
for _ in range(times):
r += self.edu_up()
return r
def sum_down(self, sum) -> str:
if self.str + self.con + self.dex-45 < sum:
self.str = 15
self.con = 15
self.dex = 15
else:
str_lost = random.randint(0, min(sum, self.str-15))
while sum - str_lost > self.con + self.dex-30:
str_lost = random.randint(0, min(sum, self.str-15))
self.str -= str_lost
sum -= str_lost
con_lost = random.randint(0, min(sum, self.con-15))
while sum - con_lost > self.dex-15:
con_lost = random.randint(0, min(sum, self.con-15))
self.con -= con_lost
sum -= con_lost
self.dex -= sum
return
def age_change(self, age: int = 20) -> str:
if age < 15:
return "年龄过小,无法担当调查员"
elif age >= 90:
return "该调查员已经作古。"
self.age = age
if 15 <= age < 20:
self.str -= 5
self.siz -= 5
self.edu -= 5
luc = randattr()
self.luc = luc if luc > self.luc else self.luc
return "力量、体型、教育值-5,幸运增强判定一次"
elif age < 40:
self.edu_up()
return "教育增强判定一次"
elif age < 50:
self.app -= 5
self.sum_down(5)
self.edu_ups(2)
return "外貌-5,力量、体型、敏捷合计降低5,教育增强判定两次"
elif age < 60:
self.app -= 10
self.sum_down(10)
self.edu_ups(3)
return "外貌-10,力量、体型、敏捷合计降低10,教育增强判定三次"
elif age < 70:
self.app -= 15
self.sum_down(20)
self.edu_ups(4)
return "外貌-15,力量、体型、敏捷合计降低20,教育增强判定四次"
elif age < 80:
self.app -= 20
self.sum_down(40)
self.edu_ups(4)
return "外貌-20,力量、体型、敏捷合计降低40,教育增强判定四次"
elif age < 90:
self.app -= 25
self.sum_down(80)
self.edu_ups(4)
return "外貌-25,力量、体型、敏捷合计降低80,教育增强判定四次"
def __repr__(self) -> str:
return "调查员 年龄:%d\n力量:%d 体质:%d 体型:%d\n敏捷:%d 外貌:%d 智力:%d\n意志:%d 教育:%d 幸运:%d\nDB:%s 生命值:%d 移动速度:%d" % (
self.age, self.str, self.con, self.siz, self.dex, self.app, self.int, self.pow, self.edu, self.luc, self.db(), self.lp_max(), self.mov())
def output(self) -> str:
return self.__repr__()
@@ -1,249 +0,0 @@
# 参考[OlivaDiceDocs](https://oliva.dicer.wiki/userdoc)实现的nonebot2骰娘插件
import re
import random
from .messages import *
class Mylist(list):
def next(self, index: int):
if index < self.__len__()-1:
return self[index+1]
else:
return ""
def help_message():
return main_help_message
def dhr(t, o):
if t == 0 and o == 0:
return 100
else:
return t*10+o
def st():
result = random.randint(1, 20)
if result < 4:
rstr = "右腿"
elif result < 7:
rstr = "左腿"
elif result < 11:
rstr = "腹部"
elif result < 16:
rstr = "胸部"
elif result < 18:
rstr = "右臂"
elif result < 20:
rstr = "左臂"
elif result < 21:
rstr = "头部"
return "D20=%d:命中了%s" % (result, rstr)
def en(arg: str) -> str:
try:
arg = int(arg)
except:
return en_help_message
check = random.randint(1, 100)
if check > arg or check > 95:
plus = random.randint(1, 10)
r = "判定值%d,判定成功,技能成长%d+%d=%d" % (check, arg, plus, arg+plus)
return r + "\n温馨提示:如果技能提高到90%或更高,增加2D6理智点数。"
else:
return "判定值%d,判定失败,技能无成长。" % check
class Dices(object):
def __init__(self):
self.dices = 1
self.faces = 100
self.a = False
self.anum = 0
self.h = False
self.times = 1
self.bp = 0
self._bp_result = ""
self._tens_place = None
self._ones_place = None
self._head = ""
self._mid = ""
self._end = ""
self.result = 0
self.a_check_mode = self.a_check
self._a_check_result = ""
self.ex_dice = None
self.ex_dice_type = 1
self._ex_result = ""
def real_dice(self):
if self.faces == 100:
self._tens_place = random.randint(0, 9)
self._ones_place = random.randint(0, 9)
self.result += dhr(self._tens_place, self._ones_place)
return dhr(self._tens_place, self._ones_place)
else:
rint = random.randint(1, self.faces)
self.result += rint
return rint
def bp_dice(self):
if not self.bp or self.faces != 100 or self.dices != 1:
self._bp_result = ""
return self._bp_result
self._bp_result = " -> 十位:%d,个位:%d" % (
self._tens_place, self._ones_place)
bp = self.bp
while bp > 0:
bd = random.randint(0, 9)
self._bp_result += ",奖励:%d" % bd
if dhr(bd, self._ones_place) < dhr(self._tens_place, self._ones_place):
self._tens_place = bd
self.result = dhr(self._tens_place, self._ones_place)
bp -= 1
while bp < 0:
bd = random.randint(0, 9)
self._bp_result += ",惩罚:%d" % bd
if dhr(bd, self._ones_place) > dhr(self._tens_place, self._ones_place):
self._tens_place = bd
self.set_result()
bp += 1
return self._bp_result
def a_check(self):
if not (self.a and self.anum and self.faces == 100 and self.dices == 1):
self._a_check_result = ""
return self._a_check_result
if self.result == 100:
self._a_check_result = " 大失败!"
elif self.anum < 50 and self.result > 95:
self._a_check_result = "\n检定值%d %d>95 大失败!" % (
self.anum, self.result)
elif self.result == 1:
self._a_check_result = " 大成功!"
elif self.result <= self.anum // 5:
self._a_check_result = "\n检定值%d %d≤%d 极难成功" % (
self.anum, self.result, self.anum // 5)
elif self.result <= self.anum // 2:
self._a_check_result = "\n检定值%d %d≤%d 困难成功" % (
self.anum, self.result, self.anum // 2)
elif self.result <= self.anum:
self._a_check_result = "\n检定值%d %d≤%d 成功" % (
self.anum, self.result, self.anum)
else:
self._a_check_result = "\n检定值%d %d>%d 失败" % (
self.anum, self.result, self.anum)
return self._a_check_result
def xdy(self):
self.result = 0
if self.dices == 1:
self.real_dice()
self.bp_dice()
self.a_check()
return ""
else:
dice_results = []
for _ in range(self.dices):
dice_result = self.real_dice()
dice_results.append(str(dice_result))
return "(%s)" % "+".join(dice_results)
def _ex_handle(self):
if not self.ex_dice:
self._ex_result = ""
elif type(self.ex_dice) == int:
ex_result = self.ex_dice_type*self.ex_dice
self._ex_result = "%s%s%d" % (str(
self.result) if self.dices == 1 else "", "+" if self.ex_dice_type == 1 else "-", self.ex_dice)
self.result += ex_result
elif type(self.ex_dice) == Dices:
self.ex_dice.roll
ex_result = self.ex_dice_type*self.ex_dice.result
self._ex_result = "%s%s%d" % (str(
self.result) if self.dices == 1 else "", "+" if self.ex_dice_type == 1 else "-", self.ex_dice)
self.result += ex_result
return self._ex_result
def roll(self):
r = "%d次投掷:" % self.times
if self.times != 1:
r += "\n"
for _ in range(self.times):
xdyr = self.xdy()
self._ex_handle()
self._head = "%sD%d%s=" % (
"" if self.dices == 1 else str(self.dices),
self.faces,
"" if not self.ex_dice else (
("+" if self.ex_dice_type == 1 else "-") + str(self.ex_dice) if type(self.ex_dice) == int else (str(self.ex_dice.dices)+"D"+self.ex_dice.faces))
)
self._mid = "%s%s=" % (xdyr, self._ex_result)
self._end = "%d%s%s" % (
self.result, self._bp_result, self._a_check_result)
r += "%s%s%s" % (self._head, self._mid if self.dices !=
1 or self.ex_dice else "", self._end)
self.times -= 1
if self.times:
r += "\n"
return r
def prework(args: list, start=0):
for i in range(start, len(args), 1):
if not re.search("\\d+", args[i]) and len(args[i]) > 1:
p = args.pop(i)
for j in list(p):
args.insert(i, j)
i += 1
if prework(args, i):
break
return True
def rd(arg: str):
try:
h = False
dices = Dices()
args = re.split("(\\d+)", arg.lower())
prework(args)
args = Mylist(args)
for i in range(len(args)):
if args[i] == "a":
dices.a = True
elif args[i] == "#" and re.search("\\d+", args.next(i)):
dices.times = int(args[i+1])
elif args[i] == "b":
dices.bp += 1
elif args[i] == "p":
dices.bp -= 1
elif args[i] == "d" and re.search("\\d+", args.next(i)):
dices.faces = int(args[i+1])
elif args[i] == " " and re.search("\\d+", args.next(i)) and dices.a:
dices.anum = int(args[i+1])
elif args[i] == "h":
h = True
elif re.search("\\d+", args[i]):
if args.next(i) == "d":
dices.dices = int(args[i])
elif args[i-1] == " " and dices.a:
dices.anum = int(args[i])
elif args[i] in ["-", "+"]:
dices.ex_dice_type = (-1 if args[i] == "-" else 1)
if args.next(i+1) == "d":
dices.ex_dice = Dices()
dices.ex_dice.dices = int(args.next(i))
dices.ex_dice.faces = int(args.next(i+2))
elif args.next(i):
dices.ex_dice = int(args.next(i))
if h:
return [dices.roll()]
return dices.roll()
except:
return r_help_message
if __name__ == "__main__":
rd("2d100")
@@ -1,36 +0,0 @@
import random
from .messages import temporary_madness, madness_end, phobias, manias
def ti():
i = random.randint(1, 10)
r = "临时疯狂判定1D10=%d\n" % i
r += temporary_madness[i-1]
if i == 9:
j = random.randint(1, 100)
r += "\n恐惧症状为:\n"
r += phobias[j-1]
elif i == 10:
j = random.randint(1, 100)
r += "\n狂躁症状为:\n"
r += manias[j-1]
r += "\n该症状将会持续1D10=%d" % random.randint(1, 10)
return r
def li():
i = random.randint(1, 10)
r = "总结疯狂判定1D10=%d\n" % i
r += madness_end[i-1]
if i in [2, 3, 6, 9, 10]:
r += "\n调查员将在1D10=%d小时后醒来" % random.randint(1, 10)
if i == 9:
j = random.randint(1, 100)
r += "\n恐惧症状为:\n"
r += phobias[j-1]
elif i == 10:
j = random.randint(1, 100)
r += "\n狂躁症状为:\n"
r += manias[j-1]
return r
-258
View File
@@ -1,258 +0,0 @@
main_help_message: str = "本骰娘由nonebot2强力驱动\n" \
".r 投掷指令 todo\n" \
" d 制定骰子面数\n" \
" a 检定\n" \
" h 暗骰\n" \
" # 多轮检定\n" \
" bp 奖励骰&惩罚骰\n" \
" +/- 附加计算 todo\n" \
".sc 疯狂检定\n" \
".st 射击命中判定\n" \
".ti 临时疯狂症状\n" \
".li 总结疯狂症状\n" \
".coc coc角色作成\n" \
".en 技能成长"
r_help_message: str = ".r[dah#bp] a_number [+/-]ex_number\n" \
"d:骰子设定指令,标准格式为xdy,x为骰子数量y为骰子面数;\n" \
"a:检定指令,根据后续a_number设定数值检定;\n" \
"h:暗骰指令,骰子结构将会私聊发送给该指令者;\n" \
"#:多轮投掷指令,#后接数字即可设定多轮投掷;\n" \
"bp:奖励骰与惩罚骰;\n" \
"+/-:附加计算指令,目前仅支持数字\n" \
"示例:\n" \
".r#2bba 70:两次投掷 1D100 ,附加两个奖励骰,判定值为70\n" \
".rah:D100暗骰,由于没有 a_number 参数,判定将被忽略\n" \
".ra2d8+10 70:2D8+10,由于非D100,判定将被忽略"
sc_help_message: str = ".sc success/failure san_number\n" \
"success:判定成功降低 san 值,支持 x 或 xdy 语法( x 与 y 为数字);\n" \
"failure:判定失败降低 san 值,支持语法如上;\n" \
"san_number:当前 san 值。"
en_help_message: str = ".en skill_level\nskill_level:需要成长的技能当前等级。"
temporary_madness = [
"1) 失忆: 调查员会发现自己身处于一个安全的地点却没有任何来到这里的记忆。例如,调查员前一刻还在家中吃着早饭,下一刻就已经直面着不知名的怪物。这将会持续1D10轮。",
"2) 假性残疾:调查员陷入了心理性的失明,失聪以及躯体缺失感中,持续1D10轮。",
"3) 暴力倾向: 调查员陷入了六亲不认的暴力行为中,对周围的敌人与友方进行着无差别的攻击,持续1D10轮。",
"4) 偏执: 调查员陷入了严重的偏执妄想之中,持续1D10轮。有人在暗中窥视着他们,同伴中有人背叛了他们,没有人可以信任,万事皆虚。",
"5) 人际依赖: 守密人适当参考调查员的背景中重要之人的条目,调查员因为一些原因而降他人误认为了他重要的人并且努力的会与那个人保持那种关系,持续1D10轮。",
"6) 昏厥: 调查员当场昏倒,并需要1D10轮才能苏醒。",
"7) 逃避行为: 调查员会用任何的手段试图逃离现在所处的位置,即使这意味着开走唯一一辆交通工具并将其它人抛诸脑后,调查员会试图逃离1D10轮。",
"8) 竭嘶底里:调查员表现出大笑,哭泣,嘶吼,害怕等的极端情绪表现,持续1D10轮。",
"9) 恐惧: 调查员通过一次D100或者由守密人选择,来从恐惧症状表中选择一个恐惧源,就算这一恐惧的事物是并不存在的,调查员的症状会持续1D10轮。",
"10) 躁狂: 调查员通过一次D100或者由守密人选择,来从躁狂症状表中选择一个躁狂的诱因,这个症状将会持续1D10轮。"
]
madness_end = [
"1) 失忆(Amnesia):回过神来,调查员们发现自己身处一个陌生的地方,并忘记了自己是谁。记忆会随时间恢复。",
"2) 被窃(Robbed):调查员在1D10小时后恢复清醒,发觉自己被盗,身体毫发无损。如果调查员携带着宝贵之物(见调查员背景),做幸运检定来决定其是否被盗。所有有价值的东西无需检定自动消失。",
"3) 遍体鳞伤(Battered):调查员在1D10小时后恢复清醒,发现自己身上满是拳痕和瘀伤。生命值减少到疯狂前的一半,但这不会造成重伤。调查员没有被窃。这种伤害如何持续到现在由守秘人决定。",
"4) 暴力倾向(Violence):调查员陷入强烈的暴力与破坏欲之中。调查员回过神来可能会理解自己做了什么也可能毫无印象。调查员对谁或何物施以暴力,他们是杀人还是仅仅造成了伤害,由守秘人决定。",
"5) 极端信念(Ideology/Beliefs):查看调查员背景中的思想信念,调查员会采取极端和疯狂的表现手段展示他们的思想信念之一。比如一个信教者会在地铁上高声布道。",
"6) 重要之人(Significant People):考虑调查员背景中的重要之人,及其重要的原因。在1D10小时或更久的时间中,调查员将不顾一切地接近那个人,并为他们之间的关系做出行动。",
"7) 被收容(Institutionalized):调查员在精神病院病房或警察局牢房中回过神来,他们可能会慢慢回想起导致自己被关在这里的事情。",
"8) 逃避行为(Flee in panic):调查员恢复清醒时发现自己在很远的地方,也许迷失在荒郊野岭,或是在驶向远方的列车或长途汽车上。",
"9) 恐惧(Phobia):调查员患上一个新的恐惧症状。在表Ⅸ:恐惧症状表上骰1个D100来决定症状,或由守秘人选择一个。调查员在1D10小时后回过神来,并开始为避开恐惧源而采取任何措施。",
"10) 狂躁(Mania):调查员患上一个新的狂躁症状。在表Ⅹ:狂躁症状表上骰1个D100来决定症状,或由守秘人选择一个。调查员会在1D10小时后恢复理智。在这次疯狂发作中,调查员将完全沉浸于其新的狂躁症状。这症状是否会表现给旁人则取决于守秘人和此调查员。"
]
phobias = [
"1) 洗澡恐惧症(Ablutophobia):对于洗涤或洗澡的恐惧。",
"2) 恐高症(Acrophobia):对于身处高处的恐惧。",
"3) 飞行恐惧症(Aerophobia):对飞行的恐惧。",
"4) 广场恐惧症(Agoraphobia):对于开放的(拥挤)公共场所的恐惧。",
"5) 恐鸡症(Alektorophobia):对鸡的恐惧。",
"6) 大蒜恐惧症(Alliumphobia):对大蒜的恐惧。",
"7) 乘车恐惧症(Amaxophobia):对于乘坐地面载具的恐惧。",
"8) 恐风症(Ancraophobia):对风的恐惧。",
"9) 男性恐惧症(Androphobia):对于成年男性的恐惧。",
"10) 恐英症(Anglophobia):对英格兰或英格兰文化的恐惧。",
"11) 恐花症(Anthophobia):对花的恐惧。",
"12) 截肢者恐惧症(Apotemnophobia):对截肢者的恐惧。",
"13) 蜘蛛恐惧症(Arachnophobia):对蜘蛛的恐惧。",
"14) 闪电恐惧症(Astraphobia):对闪电的恐惧。",
"15) 废墟恐惧症(Atephobia):对遗迹或残址的恐惧。",
"16) 长笛恐惧症(Aulophobia):对长笛的恐惧。",
"17) 细菌恐惧症(Bacteriophobia):对细菌的恐惧。",
"18) 导弹/子弹恐惧症(Ballistophobia):对导弹或子弹的恐惧。",
"19) 跌落恐惧症(Basophobia):对于跌倒或摔落的恐惧。",
"20) 书籍恐惧症(Bibliophobia):对书籍的恐惧。",
"21) 植物恐惧症(Botanophobia):对植物的恐惧。",
"22) 美女恐惧症(Caligynephobia):对美貌女性的恐惧。",
"23) 寒冷恐惧症(Cheimaphobia):对寒冷的恐惧。",
"24) 恐钟表症(Chronomentrophobia):对于钟表的恐惧。",
"25) 幽闭恐惧症(Claustrophobia):对于处在封闭的空间中的恐惧。",
"26) 小丑恐惧症(Coulrophobia):对小丑的恐惧。",
"27) 恐犬症(Cynophobia):对狗的恐惧。",
"28) 恶魔恐惧症(Demonophobia):对邪灵或恶魔的恐惧。",
"29) 人群恐惧症(Demophobia):对人群的恐惧。",
"30) 牙科恐惧症①(Dentophobia):对牙医的恐惧。",
"31) 丢弃恐惧症(Disposophobia):对于丢弃物件的恐惧(贮藏癖)。",
"32) 皮毛恐惧症(Doraphobia):对动物皮毛的恐惧。",
"33) 过马路恐惧症(Dromophobia):对于过马路的恐惧。",
"34) 教堂恐惧症(Ecclesiophobia):对教堂的恐惧。",
"35) 镜子恐惧症(Eisoptrophobia):对镜子的恐惧。",
"36) 针尖恐惧症(Enetophobia):对针或大头针的恐惧。",
"37) 昆虫恐惧症(Entomophobia):对昆虫的恐惧。",
"38) 恐猫症(Felinophobia):对猫的恐惧。",
"39) 过桥恐惧症(Gephyrophobia):对于过桥的恐惧。",
"40) 恐老症(Gerontophobia):对于老年人或变老的恐惧。",
"41) 恐女症(Gynophobia):对女性的恐惧。",
"42) 恐血症(Haemaphobia):对血的恐惧。",
"43) 宗教罪行恐惧症(Hamartophobia):对宗教罪行的恐惧。",
"44) 触摸恐惧症(Haphophobia):对于被触摸的恐惧。",
"45) 爬虫恐惧症(Herpetophobia):对爬行动物的恐惧。",
"46) 迷雾恐惧症(Homichlophobia):对雾的恐惧。",
"47) 火器恐惧症(Hoplophobia):对火器的恐惧。",
"48) 恐水症(Hydrophobia):对水的恐惧。",
"49) 催眠恐惧症(Hypnophobia):对于睡眠或被催眠的恐惧。",
"50) 白袍恐惧症(Iatrophobia):对医生的恐惧。",
"51) 鱼类恐惧症(Ichthyophobia):对鱼的恐惧。",
"52) 蟑螂恐惧症(Katsaridaphobia):对蟑螂的恐惧。",
"53) 雷鸣恐惧症(Keraunophobia):对雷声的恐惧。",
"54) 蔬菜恐惧症(Lachanophobia):对蔬菜的恐惧。",
"55) 噪音恐惧症(Ligyrophobia):对刺耳噪音的恐惧。",
"56) 恐湖症(Limnophobia):对湖泊的恐惧。",
"57) 机械恐惧症(Mechanophobia):对机器或机械的恐惧。",
"58) 巨物恐惧症(Megalophobia):对于庞大物件的恐惧。",
"59) 捆绑恐惧症(Merinthophobia):对于被捆绑或紧缚的恐惧。",
"60) 流星恐惧症(Meteorophobia):对流星或陨石的恐惧。",
"61) 孤独恐惧症(Monophobia):对于一人独处的恐惧。",
"62) 不洁恐惧症(Mysophobia):对污垢或污染的恐惧。",
"63) 黏液恐惧症(Myxophobia):对黏液(史莱姆)的恐惧。",
"64) 尸体恐惧症(Necrophobia):对尸体的恐惧。",
"65) 数字8恐惧症(Octophobia):对数字8的恐惧。",
"66) 恐牙症(Odontophobia):对牙齿的恐惧。",
"67) 恐梦症(Oneirophobia):对梦境的恐惧。",
"68) 称呼恐惧症(Onomatophobia):对于特定词语的恐惧。",
"69) 恐蛇症(Ophidiophobia):对蛇的恐惧。",
"70) 恐鸟症(Ornithophobia):对鸟的恐惧。",
"71) 寄生虫恐惧症(Parasitophobia):对寄生虫的恐惧。",
"72) 人偶恐惧症(Pediophobia):对人偶的恐惧。",
"73) 吞咽恐惧症(Phagophobia):对于吞咽或被吞咽的恐惧。",
"74) 药物恐惧症(Pharmacophobia):对药物的恐惧。",
"75) 幽灵恐惧症(Phasmophobia):对鬼魂的恐惧。",
"76) 日光恐惧症(Phenogophobia):对日光的恐惧。",
"77) 胡须恐惧症(Pogonophobia):对胡须的恐惧。",
"78) 河流恐惧症(Potamophobia):对河流的恐惧。",
"79) 酒精恐惧症(Potophobia):对酒或酒精的恐惧。",
"80) 恐火症(Pyrophobia):对火的恐惧。",
"81) 魔法恐惧症(Rhabdophobia):对魔法的恐惧。",
"82) 黑暗恐惧症(Scotophobia):对黑暗或夜晚的恐惧。",
"83) 恐月症(Selenophobia):对月亮的恐惧。",
"84) 火车恐惧症(Siderodromophobia):对于乘坐火车出行的恐惧。",
"85) 恐星症(Siderophobia):对星星的恐惧。",
"86) 狭室恐惧症(Stenophobia):对狭小物件或地点的恐惧。",
"87) 对称恐惧症(Symmetrophobia):对对称的恐惧。",
"88) 活埋恐惧症(Taphephobia):对于被活埋或墓地的恐惧。",
"89) 公牛恐惧症(Taurophobia):对公牛的恐惧。",
"90) 电话恐惧症(Telephonophobia):对电话的恐惧。",
"91) 怪物恐惧症①(Teratophobia):对怪物的恐惧。",
"92) 深海恐惧症(Thalassophobia):对海洋的恐惧。",
"93) 手术恐惧症(Tomophobia):对外科手术的恐惧。",
"94) 十三恐惧症(Triskadekaphobia):对数字13的恐惧症。",
"95) 衣物恐惧症(Vestiphobia):对衣物的恐惧。",
"96) 女巫恐惧症(Wiccaphobia):对女巫与巫术的恐惧。",
"97) 黄色恐惧症(Xanthophobia):对黄色或“黄”字的恐惧。",
"98) 外语恐惧症(Xenoglossophobia):对外语的恐惧。",
"99) 异域恐惧症(Xenophobia):对陌生人或外国人的恐惧。",
"100) 动物恐惧症(Zoophobia):对动物的恐惧。"
]
manias = [
"1) 沐浴癖(Ablutomania):执着于清洗自己。",
"2) 犹豫癖(Aboulomania):病态地犹豫不定。",
"3) 喜暗狂(Achluomania):对黑暗的过度热爱。",
"4) 喜高狂(Acromaniaheights):狂热迷恋高处。",
"5) 亲切癖(Agathomania):病态地对他人友好。",
"6) 喜旷症(Agromania):强烈地倾向于待在开阔空间中。",
"7) 喜尖狂(Aichmomania):痴迷于尖锐或锋利的物体。",
"8) 恋猫狂(Ailuromania):近乎病态地对猫友善。",
"9) 疼痛癖(Algomania):痴迷于疼痛。",
"10) 喜蒜狂(Alliomania):痴迷于大蒜。",
"11) 乘车癖(Amaxomania):痴迷于乘坐车辆。",
"12) 欣快癖(Amenomania):不正常地感到喜悦。",
"13) 喜花狂(Anthomania):痴迷于花朵。",
"14) 计算癖(Arithmomania):狂热地痴迷于数字。",
"15) 消费癖(Asoticamania):鲁莽冲动地消费。",
"16) 隐居癖(Automania):过度地热爱独自隐居(原文如此,存疑,Automania实际上是恋车癖)。",
"17) 芭蕾癖(Balletmania):痴迷于芭蕾舞。",
"18) 窃书癖(Biliokleptomania):无法克制偷窃书籍的冲动。",
"19) 恋书狂(Bibliomania):痴迷于书籍和/或阅读。",
"20) 磨牙癖(Bruxomania):无法克制磨牙的冲动。",
"21) 灵臆症(Cacodemomania):病态地坚信自己已被一个邪恶的灵体占据。",
"22) 美貌狂(Callomania):痴迷于自身的美貌。",
"23) 地图狂(Cartacoethes):在何时何处都无法控制查阅地图的冲动。",
"24) 跳跃狂(Catapedamania):痴迷于从高处跳下。",
"25) 喜冷症(Cheimatomania):对寒冷或寒冷的物体的反常喜爱。",
"26) 舞蹈狂(Choreomania):无法控制地起舞或发颤。",
"27) 恋床癖(Clinomania):过度地热爱待在床上。",
"28) 恋墓狂(Coimetormania):痴迷于墓地。",
"29) 色彩狂(Coloromania):痴迷于某种颜色。",
"30) 小丑狂(Coulromania):痴迷于小丑。",
"31) 恐惧狂(Countermania):执着于经历恐怖的场面。",
"32) 杀戮癖(Dacnomania):痴迷于杀戮。",
"33) 魔臆症(Demonomania):病态地坚信自己已被恶魔附身。",
"34) 抓挠癖(Dermatillomania):执着于抓挠自己的皮肤。",
"35) 正义狂(Dikemania):痴迷于目睹正义被伸张。",
"36) 嗜酒狂(Dipsomania):反常地渴求酒精。",
"37) 毛皮狂(Doramania):痴迷于拥有毛皮。(存疑)",
"38) 赠物癖(Doromania):痴迷于赠送礼物。",
"39) 漂泊症(Drapetomania):执着于逃离。",
"40) 漫游癖(Ecdemiomania):执着于四处漫游。",
"41) 自恋狂(Egomania):近乎病态地以自我为中心或自我崇拜。",
"42) 职业狂(Empleomania):对于工作的无尽病态渴求。",
"43) 臆罪症(Enosimania):病态地坚信自己带有罪孽。",
"44) 学识狂(Epistemomania):痴迷于获取学识。",
"45) 静止癖(Eremiomania):执着于保持安静。",
"46) 乙醚上瘾(Etheromania):渴求乙醚。",
"47) 求婚狂(Gamomania):痴迷于进行奇特的求婚。",
"48) 狂笑癖(Geliomania):无法自制地,强迫性的大笑。",
"49) 巫术狂(Goetomania):痴迷于女巫与巫术。",
"50) 写作癖(Graphomania):痴迷于将每一件事写下来。",
"51) 裸体狂(Gymnomania):执着于裸露身体。",
"52) 妄想狂(Habromania):近乎病态地充满愉快的妄想(而不顾现实状况如何)。",
"53) 蠕虫狂(Helminthomania):过度地喜爱蠕虫。",
"54) 枪械狂(Hoplomania):痴迷于火器。",
"55) 饮水狂(Hydromania):反常地渴求水分。",
"56) 喜鱼癖(Ichthyomania):痴迷于鱼类。",
"57) 图标狂(Iconomania):痴迷于图标与肖像。",
"58) 偶像狂(Idolomania):痴迷于甚至愿献身于某个偶像。",
"59) 信息狂(Infomania):痴迷于积累各种信息与资讯。",
"60) 射击狂(Klazomania):反常地执着于射击。",
"61) 偷窃癖(Kleptomania):反常地执着于偷窃。",
"62) 噪音癖(Ligyromania):无法自制地执着于制造响亮或刺耳的噪音。",
"63) 喜线癖(Linonomania):痴迷于线绳。",
"64) 彩票狂(Lotterymania):极端地执着于购买彩票。",
"65) 抑郁症(Lypemania):近乎病态的重度抑郁倾向。",
"66) 巨石狂(Megalithomania):当站在石环中或立起的巨石旁时,就会近乎病态地写出各种奇怪的创意。",
"67) 旋律狂(Melomania):痴迷于音乐或一段特定的旋律。",
"68) 作诗癖(Metromania):无法抑制地想要不停作诗。",
"69) 憎恨癖(Misomania):憎恨一切事物,痴迷于憎恨某个事物或团体。",
"70) 偏执狂(Monomania):近乎病态地痴迷与专注某个特定的想法或创意。",
"71) 夸大癖(Mythomania):以一种近乎病态的程度说谎或夸大事物。",
"72) 臆想症(Nosomania):妄想自己正在被某种臆想出的疾病折磨。",
"73) 记录癖(Notomania):执着于记录一切事物(例如摄影)。",
"74) 恋名狂(Onomamania):痴迷于名字(人物的、地点的、事物的)。",
"75) 称名癖(Onomatomania):无法抑制地不断重复某个词语的冲动。",
"76) 剔指癖(Onychotillomania):执着于剔指甲。",
"77) 恋食癖(Opsomania):对某种食物的病态热爱。",
"78) 抱怨癖(Paramania):一种在抱怨时产生的近乎病态的愉悦感。",
"79) 面具狂(Personamania):执着于佩戴面具。",
"80) 幽灵狂(Phasmomania):痴迷于幽灵。",
"81) 谋杀癖(Phonomania):病态的谋杀倾向。",
"82) 渴光癖(Photomania):对光的病态渴求。",
"83) 背德癖(Planomania):病态地渴求违背社会道德(原文如此,存疑,Planomania实际上是漂泊症)。",
"84) 求财癖(Plutomania):对财富的强迫性的渴望。",
"85) 欺骗狂(Pseudomania):无法抑制的执着于撒谎。",
"86) 纵火狂(Pyromania):执着于纵火。",
"87) 提问狂(Questiong-Asking Mania):执着于提问。",
"88) 挖鼻癖(Rhinotillexomania):执着于挖鼻子。",
"89) 涂鸦癖(Scribbleomania):沉迷于涂鸦。",
"90) 列车狂(Siderodromomania):认为火车或类似的依靠轨道交通的旅行方式充满魅力。",
"91) 臆智症(Sophomania):臆想自己拥有难以置信的智慧。",
"92) 科技狂(Technomania):痴迷于新的科技。",
"93) 臆咒狂(Thanatomania):坚信自己已被某种死亡魔法所诅咒。",
"94) 臆神狂(Theomania):坚信自己是一位神灵。",
"95) 抓挠癖(Titillomaniac):抓挠自己的强迫倾向。",
"96) 手术狂(Tomomania):对进行手术的不正常爱好。",
"97) 拔毛癖(Trichotillomania):执着于拔下自己的头发。",
"98) 臆盲症(Typhlomania):病理性的失明。",
"99) 嗜外狂(Xenomania):痴迷于异国的事物。",
"100) 喜兽癖(Zoomania):对待动物的态度近乎疯狂地友好。"
]
@@ -1,38 +0,0 @@
from .data_source import Dices
from .messages import sc_help_message
import re
def number_or_dice(arg: str):
if "d" in arg:
d = Dices()
if dices := re.search(r"\d+d", arg):
d.dices = int(dices.group()[:-1])
if faces := re.search(r"d\d+", arg):
d.faces = int(faces.group()[1:])
d.roll()
return d
else:
return int(arg)
def sc(arg: str) -> str:
a_num = re.search(r" \d+", arg)
success = re.search(r"\d*d\d+|\d+", arg)
failure = re.search(r"[\/]+(\d*d\d+|\d+)", arg)
if not (a_num and success and failure):
return sc_help_message
check_dice = Dices()
check_dice.a = True
check_dice.anum = int(a_num.group()[1:])
success = number_or_dice(success.group())
failure = number_or_dice(failure.group()[1:])
r = "San Check" + check_dice.roll()[4:]
result = success if check_dice.result <= check_dice.anum else failure
r += "\n理智降低了"
if type(result) == int:
r += "%d点" % result
else:
r = r + result._head + str(result.result)
return r