Skip to content

feat(opy): resolve the 53 missing OverPy values - #393

Merged
Teakowa merged 2 commits into
mainfrom
feat/386-missing-values
Sep 26, 2026
Merged

Teakowa merged 2 commits into
mainfrom
feat/386-missing-values

Conversation

@e54-bot

@e54-bot e54-bot commented Sep 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Resolves the 53 OverPy values the pinned OverPy 9.7.10 accepts and opy-rs rejected.

  • 52 value functions get manifest entries (catalog ids equal the OverPy names, so no aliases and no workshop-rs data), evidenced by the new missing-values oracle probe.
  • createWorkshopSettingHero lowers with the other createWorkshopSetting* forms (sort order defaults to 0).
  • eventDirection, eventWasEnvironment and eventWasHealthPack resolve as bare event values.
  • Reference-matching behavior found by the builtin probe: literal folding for acos/asin/atan2/tan (and Deg forms), crossProduct, normalize and strLen; the First Of wrap in a Boolean slot for the player/vector/array/team results; and the First Of wrap of a null Boolean argument for a value nested in any action (previously only action calls).
  • getNumberOfHeroes keeps team required: the reference's default TEAM is rejected by the reference itself (Unknown team 'TEAM').

Verification

  • probe_builtins.py, all manifest functions: 4436 probes, 0 unexplained, no new probe-gaps.json entries.
  • validate.py: all 51 probes match the oracle.
  • fmt, clippy -D warnings, workspace tests, tools/overpy/tests, run_native.py, structural_gate.py: pass.

Notes

  • Pre-existing, out of scope: createWorkshopSettingBool/Int with the sort order omitted emit no trailing 0, while the reference appends it.

Closes #386

Add manifest entries and the missing-values oracle probe for the 52 value
functions the pinned OverPy 9.7.10 accepts and opy-rs rejected, and lower
createWorkshopSettingHero with the other createWorkshopSetting* forms.
eventDirection, eventWasEnvironment and eventWasHealthPack resolve as bare
event values.

Match the reference output for these names: fold literal arguments of the
trigonometric, crossProduct, normalize and strLen values, wrap the
player, vector, array and team results the reference wraps in First Of in a
Boolean slot, and wrap a null Boolean argument of a value nested in any
action, not only in an action call.

Closes #386

@Teakowa Teakowa left a comment

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.

One compatibility finding blocks approval.

Comment thread crates/opy-rs/src/compiler/operator_optimization.rs
The pinned OverPy 9.7.10 writes normalize(vectorTowards(a, b)) as
Direction Towards(a, b). Add the rewrite and a probe case and regression
test for it.

@Teakowa Teakowa left a comment

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.

LGTM. The previously reported normalize(vectorTowards(...)) compatibility gap is fixed, covered by a focused regression test and the oracle probe. CI passes on the updated head.

@Teakowa
Teakowa merged commit e32a69b into main Sep 26, 2026
5 checks passed
@Teakowa
Teakowa deleted the feat/386-missing-values branch September 26, 2026 06:54
@e54-bot e54-bot mentioned this pull request Sep 26, 2026
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.

Add the 53 missing OverPy values

2 participants