空调指数概率损坏与空调、骰子gif图的背景优化

This commit is contained in:
2025-10-26 01:06:26 +08:00
parent 16351792b6
commit 7a20c3fe2f
3 changed files with 26 additions and 14 deletions

View File

@ -9,6 +9,9 @@ from konabot.common.longtask import DepLongTaskTarget
from konabot.common.path import ASSETS_PATH
from konabot.plugins.air_conditioner.ac import AirConditioner, generate_ac_image
import random
import math
def get_ac(id: str) -> AirConditioner:
ac = AirConditioner.air_conditioners.get(id)
if ac is None:
@ -82,14 +85,17 @@ async def _(event: BaseEvent, target: DepLongTaskTarget):
return
ac.temperature += 1
if ac.temperature > 40:
# 打开爆炸图片
with open(ASSETS_PATH / "img" / "other" / "boom.jpg", "rb") as f:
output = BytesIO()
Image.open(f).save(output, format="GIF")
await evt.send(await UniMessage().image(raw=output).export())
ac.burnt = True
await evt.send("太热啦,空调炸了!")
return
# 根据温度随机出是否爆炸40度开始呈指数增长
possibility = -math.e ** ((40-ac.temperature) / 50) + 1
if random.random() < possibility:
# 打开爆炸图片
with open(ASSETS_PATH / "img" / "other" / "boom.jpg", "rb") as f:
output = BytesIO()
Image.open(f).save(output, format="GIF")
await evt.send(await UniMessage().image(raw=output).export())
ac.burnt = True
await evt.send("太热啦,空调炸了!")
return
await send_ac_image(evt, ac)
evt = on_alconna(Alconna(
@ -105,7 +111,10 @@ async def _(event: BaseEvent, target: DepLongTaskTarget):
return
ac.temperature -= 1
if ac.temperature < 0:
ac.frozen = True
# 根据温度随机出是否冻结0度开始呈指数增长
possibility = -math.e ** (ac.temperature / 50) + 1
if random.random() < possibility:
ac.frozen = True
await send_ac_image(evt, ac)
evt = on_alconna(Alconna(