新增菜园陷阱
This commit is contained in:
@@ -26,6 +26,22 @@ class GardenExtraReward(BaseModel):
|
||||
allow_mutation = False
|
||||
|
||||
|
||||
class GardenTrapDefinition(BaseModel):
|
||||
"""陷阱物品定义"""
|
||||
item_id: str
|
||||
display_name: str
|
||||
tier: str # common / rare / epic / legendary
|
||||
description: str
|
||||
trigger_rate: float = Field(..., ge=0.0, le=1.0, description="触发概率")
|
||||
fine_points: int = Field(..., ge=0, description="罚金积分")
|
||||
ban_hours: int = Field(..., ge=0, description="禁止偷盗时长(小时)")
|
||||
durability: int = Field(..., ge=1, description="耐久度(可触发次数)")
|
||||
trigger_message: str = Field(..., description="触发时发送给偷盗者的消息")
|
||||
|
||||
class Config:
|
||||
allow_mutation = False
|
||||
|
||||
|
||||
class GardenCropDefinition(BaseModel):
|
||||
seed_id: str
|
||||
fruit_id: str
|
||||
@@ -382,6 +398,57 @@ GARDEN_MISC_ITEMS = {
|
||||
}
|
||||
}
|
||||
|
||||
# 陷阱物品定义
|
||||
GARDEN_TRAPS: Tuple[GardenTrapDefinition, ...] = (
|
||||
GardenTrapDefinition(
|
||||
item_id="garden_trap_net",
|
||||
display_name="防盗网",
|
||||
tier="common",
|
||||
description="基础防护陷阱,50%概率触发,对偷盗者造成小额罚金并短时禁止偷盗。",
|
||||
trigger_rate=0.5,
|
||||
fine_points=1000,
|
||||
ban_hours=12,
|
||||
durability=1, # 普通陷阱1次使用
|
||||
trigger_message="🕸️ 你触发了防盗网!被罚款 {fine} 分,并且在 {hours} 小时内无法继续偷盗。",
|
||||
),
|
||||
GardenTrapDefinition(
|
||||
item_id="garden_trap_thorn",
|
||||
display_name="荆棘陷阱",
|
||||
tier="rare",
|
||||
description="带刺的防护陷阱,60%概率触发,造成中等罚金并禁止偷盗更长时间。",
|
||||
trigger_rate=0.6,
|
||||
fine_points=2500,
|
||||
ban_hours=24,
|
||||
durability=2, # 稀有陷阱2次使用
|
||||
trigger_message="🌵 你踩到了荆棘陷阱!被罚款 {fine} 分,并且在 {hours} 小时内无法继续偷盗。",
|
||||
),
|
||||
GardenTrapDefinition(
|
||||
item_id="garden_trap_magic",
|
||||
display_name="魔法结界",
|
||||
tier="epic",
|
||||
description="强大的魔法防护,70%概率触发,造成高额罚金并长时间禁止偷盗。",
|
||||
trigger_rate=0.7,
|
||||
fine_points=5000,
|
||||
ban_hours=48,
|
||||
durability=3, # 史诗陷阱4次使用
|
||||
trigger_message="✨ 你触碰到了魔法结界!被罚款 {fine} 分,并且在 {hours} 小时内无法继续偷盗。",
|
||||
),
|
||||
GardenTrapDefinition(
|
||||
item_id="garden_trap_legend",
|
||||
display_name="传奇守护",
|
||||
tier="legendary",
|
||||
description="传说级的防护装置,80%概率触发,造成巨额罚金并长期禁止偷盗。",
|
||||
trigger_rate=0.8,
|
||||
fine_points=10000,
|
||||
ban_hours=72,
|
||||
durability=4, # 传说陷阱4次使用
|
||||
trigger_message="⚡ 你惊醒了传奇守护!被罚款 {fine} 分,并且在 {hours} 小时内无法继续偷盗。",
|
||||
),
|
||||
)
|
||||
|
||||
# 陷阱物品字典(item_id -> GardenTrapDefinition)
|
||||
GARDEN_TRAPS_DICT: Dict[str, GardenTrapDefinition] = {trap.item_id: trap for trap in GARDEN_TRAPS}
|
||||
|
||||
|
||||
def get_garden_db_models() -> List[DatabaseModel]:
|
||||
return [
|
||||
@@ -402,18 +469,32 @@ def get_garden_db_models() -> List[DatabaseModel]:
|
||||
"remaining_fruit": "INTEGER NOT NULL",
|
||||
"theft_users": "TEXT DEFAULT '[]'",
|
||||
"scheduled_task_id": "INTEGER",
|
||||
"trap_item_id": "TEXT",
|
||||
"trap_config": "TEXT",
|
||||
"trap_durability": "INTEGER DEFAULT 0",
|
||||
"PRIMARY KEY (user_id, plot_index)": "",
|
||||
},
|
||||
),
|
||||
DatabaseModel(
|
||||
table_name="garden_theft_ban",
|
||||
column_defs={
|
||||
"user_id": "INTEGER NOT NULL",
|
||||
"banned_until": "TEXT NOT NULL",
|
||||
"PRIMARY KEY (user_id)": "",
|
||||
},
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
__all__ = [
|
||||
"GardenCropDefinition",
|
||||
"GardenExtraReward",
|
||||
"GardenTrapDefinition",
|
||||
"GARDEN_CROPS",
|
||||
"GARDEN_FRUITS",
|
||||
"GARDEN_MISC_ITEMS",
|
||||
"GARDEN_TRAPS",
|
||||
"GARDEN_TRAPS_DICT",
|
||||
"get_garden_db_models",
|
||||
"load_crops_from_config",
|
||||
"register_crop",
|
||||
|
||||
Reference in New Issue
Block a user