feat: add tower npc-npc relationships (#515) #854

Open
Rockachopa wants to merge 2 commits from fix/515 into main
Owner

Closes #515

Summary:

  • seed each Tower-world NPC with trust values for every other NPC
  • add offscreen NPC-NPC relationship scenes when Timmy is not present
  • let Marcus/Kimi friendship and Bezalel/ClawCode tension cross visible thresholds in-world
  • expose those relationship milestones in room descriptions so the social graph is inspectable by proximity

Verification:

  • python3 -m pytest tests/test_tower_game_npc_relationships.py tests/test_evennia_local_world_game.py -q
  • python3 -m py_compile evennia/timmy_world/game.py tests/test_tower_game_npc_relationships.py

Acceptance criteria checked:

  • each NPC now carries trust entries for all other NPCs
  • NPCs converse when Timmy is absent
  • at least one friendship emerges
  • at least one tension emerges
Closes #515 Summary: - seed each Tower-world NPC with trust values for every other NPC - add offscreen NPC-NPC relationship scenes when Timmy is not present - let Marcus/Kimi friendship and Bezalel/ClawCode tension cross visible thresholds in-world - expose those relationship milestones in room descriptions so the social graph is inspectable by proximity Verification: - `python3 -m pytest tests/test_tower_game_npc_relationships.py tests/test_evennia_local_world_game.py -q` - `python3 -m py_compile evennia/timmy_world/game.py tests/test_tower_game_npc_relationships.py` Acceptance criteria checked: - each NPC now carries trust entries for all other NPCs - NPCs converse when Timmy is absent - at least one friendship emerges - at least one tension emerges
Rockachopa added 2 commits 2026-04-22 06:15:26 +00:00
feat: add tower npc relationship graph for #515
Some checks failed
Agent PR Gate / gate (pull_request) Failing after 13s
Self-Healing Smoke / self-healing-smoke (pull_request) Failing after 17s
Smoke Test / smoke (pull_request) Failing after 18s
Agent PR Gate / report (pull_request) Successful in 15s
f68f110d0e

Agent PR Gate

Check Status
Syntax / parse skipped
Test suite skipped
PR criteria skipped
Risk level

Failure details

  • syntax reported failure. Inspect the workflow logs for that step.
  • tests reported failure. Inspect the workflow logs for that step.
  • criteria reported failure. Inspect the workflow logs for that step.

Recommendation: human review.
Low-risk documentation/test-only PRs may be auto-merged. Operational changes stay in human review.

## Agent PR Gate | Check | Status | |-------|--------| | Syntax / parse | skipped | | Test suite | skipped | | PR criteria | skipped | | Risk level | | ### Failure details - syntax reported failure. Inspect the workflow logs for that step. - tests reported failure. Inspect the workflow logs for that step. - criteria reported failure. Inspect the workflow logs for that step. Recommendation: human review. Low-risk documentation/test-only PRs may be auto-merged. Operational changes stay in human review.
Rockachopa reviewed 2026-04-22 13:48:34 +00:00
Rockachopa left a comment
Author
Owner

Review: APPROVED (with note)

NPC-NPC relationship system is well-designed: trust maps, friendship/tension thresholds, offscreen conversations, milestone recording, and room-description hints.

Note: same hardcoded WORLD_DIR path issue as PR #861/Users/apayne/.timmy/evennia/timmy_world. Merge #843 first.

The test properly validates that relationships form and appear in room descriptions. The seed-based initialization with threshold-based milestone triggering is a clean pattern.

**Review: APPROVED (with note)** NPC-NPC relationship system is well-designed: trust maps, friendship/tension thresholds, offscreen conversations, milestone recording, and room-description hints. Note: same hardcoded WORLD_DIR path issue as PR #861 — `/Users/apayne/.timmy/evennia/timmy_world`. Merge #843 first. The test properly validates that relationships form and appear in room descriptions. The seed-based initialization with threshold-based milestone triggering is a clean pattern.
Rockachopa reviewed 2026-04-22 14:13:07 +00:00
Rockachopa left a comment
Author
Owner

VERDICT: APPROVE with note

Adds NPC-to-NPC relationship mechanics to the Evennia game world. The system includes friendship/tension thresholds, seeded relationship pairs (Kimi-Marcus friendship, Bezalel-ClawCode tension), mutual trust adjustment, milestone tracking, and room-aware relationship hints. The implementation is clean: _adjust_mutual_trust clamps to [-1, 1], _record_relationship_milestone deduplicates, and relationship_hint_for_room only shows hints for NPCs currently in the same room. The relationship seeds with their conversation/milestone/hint text add narrative depth.

Same note as PR 861: the hardcoded WORLD_DIR = Path("/Users/apayne/.timmy/evennia/timmy_world") on line 12 should eventually use an env var. Not blocking.

VERDICT: APPROVE with note Adds NPC-to-NPC relationship mechanics to the Evennia game world. The system includes friendship/tension thresholds, seeded relationship pairs (Kimi-Marcus friendship, Bezalel-ClawCode tension), mutual trust adjustment, milestone tracking, and room-aware relationship hints. The implementation is clean: _adjust_mutual_trust clamps to [-1, 1], _record_relationship_milestone deduplicates, and relationship_hint_for_room only shows hints for NPCs currently in the same room. The relationship seeds with their conversation/milestone/hint text add narrative depth. Same note as PR 861: the hardcoded WORLD_DIR = Path("/Users/apayne/.timmy/evennia/timmy_world") on line 12 should eventually use an env var. Not blocking.
Some checks failed
Agent PR Gate / gate (pull_request) Failing after 13s
Self-Healing Smoke / self-healing-smoke (pull_request) Failing after 17s
Smoke Test / smoke (pull_request) Failing after 18s
Agent PR Gate / report (pull_request) Successful in 15s
Checking for merge conflicts…
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/515:fix/515
git checkout fix/515
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/timmy-home#854