feat(engine): add story arc system for narrative-driven world

- Add StoryArc and StoryEventResult models
- Create story_arcs.py with progress tracking logic
- Implement two story arcs: civil_unrest and golden_age
- Progress updates based on faction power balance
- Trigger story events when progress reaches threshold
- Add 3 tests for story arc system

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
empty
2025-12-30 12:06:14 +08:00
parent 1fd318c9e3
commit cec3e95a4b
5 changed files with 178 additions and 1 deletions

View File

@@ -3,6 +3,7 @@ from .models import StepRequest, StepResponse
from .state import load_state, save_state
from .engine import process_events, generate_actions, check_and_trigger_global_event
from .factions import check_and_trigger_faction_event
from .story_arcs import update_story_progress, check_and_trigger_story_event
app = FastAPI(title="AI Town Engine", version="0.1.0")
@@ -22,6 +23,12 @@ def step(request: StepRequest) -> StepResponse:
# 检查并触发阵营事件
faction_event_result = check_and_trigger_faction_event(state)
# 更新剧情进度
update_story_progress(state)
# 检查并触发剧情事件
story_event_result = check_and_trigger_story_event(state)
# 生成 agent 行动
actions = generate_actions(state)
@@ -32,7 +39,8 @@ def step(request: StepRequest) -> StepResponse:
world_state=state,
actions=actions,
global_event=global_event_result,
triggered_faction_event=faction_event_result
triggered_faction_event=faction_event_result,
story_event=story_event_result
)