Skip to content

feat: mate and family experience services - #129

Merged
erwan-joly merged 2 commits into
NosCoreIO:masterfrom
denislauri1999:feat/mate-and-family-experience
Aug 23, 2026
Merged

feat: mate and family experience services#129
erwan-joly merged 2 commits into
NosCoreIO:masterfrom
denislauri1999:feat/mate-and-family-experience

Conversation

@denislauri1999

@denislauri1999 denislauri1999 commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Moving two curves out of NosCore, where you pointed out they do not belong (NosCoreIO/NosCore#2281 and NosCoreIO/NosCore#2283).

MateExperienceService — the published mate curve, divided by 20 for a pet and by 5 for a partner.

Those divisors are not a guess. Every XpLoad field of every sc_p and sc_n in a packet capture matches the published curve after dividing — eleven observations from level 1 to level 88:

kind level expected
pet 1 15
pet 3 90
pet 14 3 720
pet 86 29 312 950
pet 88 39 495 200
partner 24 117 720
partner 50 2 293 816

Two eight-digit numbers landing exactly is not curve-fitting. Used raw, a pet needs twenty times the experience it should — and nothing throws, it just reads as slow progress.

FamilyExperienceService — the published table unchanged. Worth flagging: a ginfo line from the same capture puts a level 7 family's bar at 640 000 where the table says 1 900 000. One observation cannot rebuild the other eighteen rows, so I left the published numbers and noted the disagreement in the remarks rather than inventing a correction.

Both follow the existing services and come with approval-test tables under documentation/.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added family experience progression for levels 1–19.
    • Added pet and partner experience progression for levels 1–99.
    • Experience requirements now handle invalid or out-of-range levels consistently.
  • Documentation

    • Added reference tables detailing family experience thresholds.
    • Added reference tables for pet and partner experience requirements.
  • Tests

    • Added automated checks to keep experience documentation tables accurate and up to date.

Two curves that were living in NosCore and belong here.

MateExperienceService is the published curve divided by 20 for a pet and by 5 for a partner.
Those divisors come from the XpLoad field of sc_p and sc_n in a packet capture: eleven
observations between level 1 and level 88 match to the unit, including 29 312 950 and
39 495 200. Without them a pet needs twenty times the experience it should, which raises
nothing and simply reads as slow progress.

FamilyExperienceService is the published table as-is. A ginfo line from the same capture puts
a level 7 family's bar at 640 000 where the table says 1 900 000, so at least that row is
wrong — but one observation cannot rebuild the other eighteen, so the published numbers stand
and the disagreement is noted where somebody will find it.

Both come with approval-test tables under documentation/.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d085c557-f666-48c2-ad9d-eeb3cf4ba53d

📥 Commits

Reviewing files that changed from the base of the PR and between b0e8bfe and ae9bf86.

📒 Files selected for processing (9)
  • .gitignore
  • documentation/DocumentationTest.FamilyExperienceDocumentation.approved.md
  • documentation/DocumentationTest.MateExperienceDocumentation.approved.md
  • src/NosCore.Algorithm/Constants.cs
  • src/NosCore.Algorithm/FamilyExperienceService/FamilyExperienceService.cs
  • src/NosCore.Algorithm/FamilyExperienceService/IFamilyExperienceService.cs
  • src/NosCore.Algorithm/MateExperienceService/IMateExperienceService.cs
  • src/NosCore.Algorithm/MateExperienceService/MateExperienceService.cs
  • test/NosCore.Algorithm.Tests/DocumentationTest.cs

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

Added family and mate experience services. The services expose level-based experience requirements, handle unsupported levels, and generate ApprovalTests documentation for the supported ranges.

Changes

Experience services

Layer / File(s) Summary
Family experience lookup
src/NosCore.Algorithm/FamilyExperienceService/*, test/NosCore.Algorithm.Tests/DocumentationTest.cs, documentation/DocumentationTest.FamilyExperienceDocumentation.approved.md
Added the IFamilyExperienceService contract and FamilyExperienceService implementation. The service returns thresholds for levels 1 through 19 and uint.MaxValue outside that range. ApprovalTests verifies the generated table.
Mate experience calculation
src/NosCore.Algorithm/MateExperienceService/*, src/NosCore.Algorithm/Constants.cs, test/NosCore.Algorithm.Tests/DocumentationTest.cs, documentation/DocumentationTest.MateExperienceDocumentation.approved.md
Added pet and partner experience contracts and cumulative level calculations for levels 1 through 99. The service clamps unsupported levels and applies separate pet and partner divisors. ApprovalTests verifies the generated table.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: ⚪ Minimal · up to ae9bf

This PR adds the mate and family experience services with documentation-backed tables. No actionable merge-blocking risk remains beyond normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the addition of the mate and family experience services.
Docstring Coverage ✅ Passed Docstring check was indeterminate for this PR — some files could not be analyzed in time. Not blocking.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Warning

⚠️ This pull request shows signs of AI-generated slop (redundant_comments). It has been flagged by CodeRabbit slop detection and should be reviewed carefully.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what are those files ?

Two Vim .swp files were checked in alongside the approved documentation, and
the two new approved files carried a BOM the generator does not emit - both are
artefacts of hand-editing them. Ignoring *.swp so they cannot come back.

Remarks cut back to the load-bearing facts, in line with the summary-only style
of the services already here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@erwan-joly
erwan-joly merged commit 1cce607 into NosCoreIO:master Aug 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants