feat(engine): 实现阵营投票系统
- 新增 Votes 模型,包含 optimists/fearful 计数和 voted_users 去重列表 - 扩展 Event 模型,添加可选 faction 字段支持投票事件 - 新增 voting.py 模块处理投票逻辑 - 投票规则:每用户每 tick 限投一次,下一 tick 生效 - 投票累加到 factions.power,达到 threshold 触发阵营技能 - 添加 5 个投票系统测试用例,全部 26 个测试通过 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,7 @@ from .social_influence import apply_social_influence
|
||||
from .factions import (
|
||||
update_factions, apply_faction_influence, check_and_trigger_faction_event
|
||||
)
|
||||
from .voting import process_votes, apply_votes_to_factions
|
||||
|
||||
MAX_EVENTS = 20
|
||||
MAX_MEMORY_PER_AGENT = 3
|
||||
@@ -43,6 +44,9 @@ def process_events(state: WorldState, events: List[Event]) -> WorldState:
|
||||
# tick 递增
|
||||
state.tick += 1
|
||||
|
||||
# ★ 在 tick 开始时:将上一轮投票累加到阵营能量
|
||||
apply_votes_to_factions(state)
|
||||
|
||||
# cooldown 递减
|
||||
if state.global_meter.cooldown > 0:
|
||||
state.global_meter.cooldown -= 1
|
||||
@@ -50,6 +54,9 @@ def process_events(state: WorldState, events: List[Event]) -> WorldState:
|
||||
# 更新世界效果(持续影响)
|
||||
update_world_effects(state)
|
||||
|
||||
# ★ 处理投票事件(记录到 votes,下一 tick 生效)
|
||||
process_votes(state, events)
|
||||
|
||||
for event in events:
|
||||
text = event.text
|
||||
|
||||
|
||||
Reference in New Issue
Block a user