This commit is contained in:
bridge
2025-10-05 02:34:08 +08:00
parent e32a941f53
commit ae6e151098
4 changed files with 33 additions and 7 deletions

View File

@@ -40,6 +40,7 @@
- ✅ 角色性格
- ✅ 境界突破机制
- ✅ 角色间的相互关系
- ✅ 角色感知范围
- [ ] 角色特殊能力
- [ ] 角色绰号
- [ ] 角色Buffs系统增益/减益效果、状态管理
@@ -70,6 +71,7 @@
- ✅ 动作完成时的自动结算机制
- ✅ 多人动作:动作发起与动作响应
- ✅ 影响人际关系的LLM动作(LLM Action)
- ✅ 系统性的动作注册与运行逻辑
- [ ] 更丰富的角色动作
### 🎭 事件系统
@@ -109,6 +111,8 @@
- ✅ 长期规划和目标导向行为
- ✅ 突发动作响应系统(对外界刺激的即时反应)
- ✅ LLM驱动的NPC对话、思考、互动
- ✅ LLM生成小片段剧情
- ✅ 根据任务需求分别接入max/flash模型
- [ ] 动态剧情生成
- [ ] NPC观测空间设计
@@ -118,12 +122,12 @@
- [ ] 背景故事框架
### 特殊
- [ ] 夺舍
- [ ] 重生
- [ ] 夺舍 & 重生
- [ ] 阵法
- [ ] 机缘
- [ ] 天劫 & 心魔
- [ ] 可灵活自定义的世界法则
- [ ] 占卜 & 谶纬
## 使用方法

View File

@@ -4,6 +4,7 @@ from src.classes.action import TimedAction
from src.classes.event import Event
from src.classes.region import CityRegion
from src.classes.alignment import Alignment
from src.classes.technique import TechniqueAttribute
class DevourMortals(TimedAction):
@@ -12,8 +13,8 @@ class DevourMortals(TimedAction):
与普通修炼相比,经验获取显著更高。
"""
COMMENT = "在城镇吞噬凡人,获得大量修行经验(邪"
DOABLES_REQUIREMENTS = "仅限城市区域,且角色阵营为‘邪’,且未处于瓶颈"
COMMENT = "在城镇吞噬凡人,获得大量修行经验(邪功法"
DOABLES_REQUIREMENTS = "仅限城市区域,且当前功法为‘邪’,且未处于瓶颈"
PARAMS = {}
duration_months = 2
@@ -31,7 +32,8 @@ class DevourMortals(TimedAction):
region = self.avatar.tile.region
if not isinstance(region, CityRegion):
return False
if self.avatar.alignment != Alignment.EVIL:
tech = self.avatar.technique
if tech.attribute != TechniqueAttribute.EVIL:
return False
return not self.avatar.cultivation_progress.is_in_bottleneck()

View File

@@ -102,4 +102,23 @@ extra_breakthrough_success_rate = defaultdict(
{
Root.HEAVEN: 0.1,
},
)
)
def format_root_cn(root: "Root") -> str:
"""
将 Root 显示为中文短名 + 组成,例如:
- 天(金、木、水、火、土)
- 风(木、水)
- 金(金)
回退:若无法获取组成则仅显示短名。
"""
# Root 成员的 value 为中文名(如“风灵根”、“天灵根”)
name = getattr(root, "value", str(root))
short_name = name.replace("灵根", "") if isinstance(name, str) else str(root)
elements = getattr(root, "elements", None)
if not elements:
return short_name
# RootElement.__str__ 返回其中文值,因此直接 str(e)
elements_cn = "".join(str(e) for e in elements)
return f"{short_name}{elements_cn}"

View File

@@ -4,6 +4,7 @@ from src.classes.avatar import Avatar, Gender
from src.classes.tile import TileType
from src.utils.text_wrap import wrap_text
from src.classes.relation import Relation
from src.classes.root import format_root_cn
# 顶部状态栏高度(像素)
STATUS_BAR_HEIGHT = 32
@@ -156,7 +157,7 @@ def draw_tooltip_for_avatar(pygame_mod, screen, colors, font, avatar: Avatar):
f"境界: {str(avatar.cultivation_progress)}",
f"HP: {avatar.hp}",
f"MP: {avatar.mp}",
f"灵根: {str(avatar.root)}",
f"灵根: {format_root_cn(avatar.root)}",
f"功法: {avatar.technique.name}{avatar.technique.attribute}·{avatar.technique.grade.value}",
f"个性: {', '.join([persona.name for persona in avatar.personas])}",
f"位置: ({avatar.pos_x}, {avatar.pos_y})",