Alpha: Substitutions, Initiative Turns, Injury Model, FanZone & Reputation v1 - #16
Alpha: Substitutions, Initiative Turns, Injury Model, FanZone & Reputation v1#16AlexanderDaly wants to merge 11 commits into
Conversation
- Create TrainingConstants class with shared colors, XP values, and zone data - Create TrainingDrillBase class with common functionality: - Difficulty selector setup - Footer button styling - Power/timer bar color updates - XP calculation and reward application - Score display and best score saving - Refactor freekick_drill.gd to extend TrainingDrillBase (1069 → 768 LOC) - Refactor penalty_drill.gd to extend TrainingDrillBase (804 → 531 LOC) - Refactor rondo_drill.gd to extend TrainingDrillBase (880 → 674 LOC) Total reduction: ~780 lines of duplicated code eliminated Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add SocialFeedManager autoload with NPC persona-driven post generation, event-reactive feed (match results, injuries, milestones, season updates), player compose/reply with NPC auto-replies, and save/load persistence. Rewrite panel_social.gd with filter bar, typed post cards, thread view, and real-time updates. Add FanZone tile to dashboard grid. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
todo's should be updated to resolve billing issues with github to allow automated testing tools. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: aee03bcfc7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if save_roll.success: | ||
| if match_data: | ||
| match_data.record_event("shot", { |
There was a problem hiding this comment.
Record on-target shot events for goals
Because record_event("shot", {"on_target": true}) is now gated by if save_roll.success, successful shots that become goals no longer generate a shot event. In this codebase, MatchData derives both shots and shots_on_target from "shot" events, so goals are undercounted in post-match stats and can depress match rating/XP-related outputs for players who score.
Useful? React with 👍 / 👎.
| if "social_feed" in data: | ||
| SocialFeedManager.from_dict(data.social_feed) |
There was a problem hiding this comment.
Clear stale social feed when loading legacy saves
This restore path only hydrates SocialFeedManager when social_feed exists, but does nothing otherwise, so loading older save data (or any payload missing that key) keeps whatever feed was already in memory from a previous career/slot. Since SocialFeedManager is an autoload singleton, this leaks posts/reputation-thread state across saves instead of defaulting to an empty feed.
Useful? React with 👍 / 👎.
Summary
This PR prepares the first playable alpha of the soccer-rpg career loop, adding tactical substitutions, unit-level initiative turns, a training-driven injury model, and the initial FanZone social dashboard with player reputation.
Type of Change
Changes Made
MatchControllerhelpers and related scene wiring.SocialFeedManager, wiring post-match hooks so match results can drive social feed events and future narrative content.SocialFeedManager, debug flag forfanzone_v2_enabled) and desktop shell input handling to address the OS click-through issue.Related Issues
Testing
Additional Notes