Added ramaining core API nodes.#40
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a large set of remaining “core API” Statescript building blocks, expanding both the resolver library (math/arrays/ability+effect queries) and the node library (state, condition, action nodes) while also extending underlying Ability/Effect runtime APIs and documentation/tests to support these new graph features.
Changes:
- Added many new Statescript resolvers for math operations, array utilities, and ability/effect inspection.
- Added new Statescript nodes (state/condition/action) to support timers, switching/state machines, ability activation, effect manipulation, and related workflows.
- Extended core runtime APIs (abilities/effects/random) and added tests + documentation for the new graph surface area.
Reviewed changes
Copilot reviewed 144 out of 144 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| Forge/Statescript/Properties/WrapResolver.cs | New wrap-into-range math resolver |
| Forge/Statescript/Properties/SmoothStepResolver.cs | New smoothstep interpolation resolver |
| Forge/Statescript/Properties/ShuffleResolver.cs | New array shuffle resolver (value lane) |
| Forge/Statescript/Properties/SetByCallerMagnitudeResolver.cs | Read SetByCaller magnitude from Effect |
| Forge/Statescript/Properties/RemapResolver.cs | New remap between numeric ranges |
| Forge/Statescript/Properties/RandomElementResolver.cs | Pick random element (value lane) |
| Forge/Statescript/Properties/QueryActiveEffectsResolver.cs | Query active effect handles from entity |
| Forge/Statescript/Properties/PingPongResolver.cs | Ping-pong numeric value resolver |
| Forge/Statescript/Properties/ObjectShuffleResolver.cs | New object-lane shuffle resolver |
| Forge/Statescript/Properties/ObjectRandomElementResolver.cs | Pick random element (object lane) |
| Forge/Statescript/Properties/ObjectIntersectResolver.cs | Object-lane intersect by reference |
| Forge/Statescript/Properties/InverseLerpResolver.cs | Inverse lerp (normalized position) |
| Forge/Statescript/Properties/IntersectResolver.cs | Value-lane intersect with type validation |
| Forge/Statescript/Properties/GetAbilityHandleResolver.cs | Lookup granted ability handle by data |
| Forge/Statescript/Properties/GameplayMathUtils.cs | Added shared math helpers for resolvers |
| Forge/Statescript/Properties/EffectResolverUtilities.cs | Added SetByCaller application helper |
| Forge/Statescript/Properties/EffectInfoType.cs | Enum for effect info aggregation |
| Forge/Statescript/Properties/EffectInfoResolver.cs | Aggregate effect application info resolver |
| Forge/Statescript/Properties/EffectFromDataResolver.cs | Add SetByCaller magnitude configuration |
| Forge/Statescript/Properties/EffectArrayFromDataResolver.cs | Apply SetByCaller magnitudes to arrays |
| Forge/Statescript/Properties/DeltaAngleResolver.cs | Shortest signed angle delta resolver |
| Forge/Statescript/Properties/CurveSampleResolver.cs | Sample an ICurve at resolved time |
| Forge/Statescript/Properties/ConditionalResolver.cs | Ternary select for value lane |
| Forge/Statescript/Properties/ConditionalObjectResolver.cs | Ternary select for object lane |
| Forge/Statescript/Properties/CanActivateAbilityResolver.cs | Check ability activation readiness |
| Forge/Statescript/Properties/ApproximatelyResolver.cs | Approximate numeric equality resolver |
| Forge/Statescript/Properties/ActiveEffectTargetResolver.cs | Resolve target entity from effect handle |
| Forge/Statescript/Properties/ActiveEffectEffectResolver.cs | Resolve live Effect from handle |
| Forge/Statescript/Properties/ActiveEffectDataType.cs | Enum for active-effect data selection |
| Forge/Statescript/Properties/ActiveEffectDataResolver.cs | Read runtime fields from effect handle |
| Forge/Statescript/Properties/AbilityStateType.cs | Enum for ability state selection |
| Forge/Statescript/Properties/AbilityStateResolver.cs | Read ability state flags resolver |
| Forge/Statescript/Properties/AbilityResolverUtilities.cs | Shared ability-handle resolution helper |
| Forge/Statescript/Properties/AbilityCostResolver.cs | Read evaluated ability cost resolver |
| Forge/Statescript/Properties/AbilityCooldownResolver.cs | Read ability cooldown values resolver |
| Forge/Statescript/Properties/AbilityCooldownDataType.cs | Enum for cooldown data selection |
| Forge/Statescript/Nodes/State/TagListenerNodeContext.cs | Context for tag listener node |
| Forge/Statescript/Nodes/State/StateMachineNodeContext.cs | Context for state machine node |
| Forge/Statescript/Nodes/State/LoopTimerNodeContext.cs | Context for loop timer node |
| Forge/Statescript/Nodes/State/LoopTimerNode.cs | New repeating interval state node |
| Forge/Statescript/Nodes/State/GrantAbilityNodeContext.cs | Context for grant-ability state node |
| Forge/Statescript/Nodes/State/EventListenerNode.cs | Add optional deactivate-on-event behavior |
| Forge/Statescript/Nodes/State/EffectLevelListenerNodeContext.cs | Context for effect level listener |
| Forge/Statescript/Nodes/State/EffectLevelListenerNode.cs | Listen for Effect.OnLevelChanged |
| Forge/Statescript/Nodes/State/ConditionMonitorNodeContext.cs | Context for condition monitor node |
| Forge/Statescript/Nodes/State/AttributeListenerNodeContext.cs | Context for attribute listener |
| Forge/Statescript/Nodes/State/AttributeListenerNode.cs | Listen for attribute value changes |
| Forge/Statescript/Nodes/State/AbilityEndListenerNodeContext.cs | Context for ability-end listener |
| Forge/Statescript/Nodes/EffectApplicationUtilities.cs | Add helpers to resolve handles/tags |
| Forge/Statescript/Nodes/Condition/TryActivateAbilityNode.cs | Condition node to activate ability |
| Forge/Statescript/Nodes/Condition/TryActivateAbilitiesByTagNode.cs | Activate abilities selected by tags |
| Forge/Statescript/Nodes/Condition/RandomBranchNode.cs | Random branch condition node |
| Forge/Statescript/Nodes/Condition/GrantAbilityAndActivateOnceNode.cs | One-shot grant + activate condition |
| Forge/Statescript/Nodes/Action/SwitchNode.cs | Flow switch routing node |
| Forge/Statescript/Nodes/Action/SetEffectLevelOperation.cs | Enum for effect level operations |
| Forge/Statescript/Nodes/Action/SetEffectLevelNode.cs | Level up / set level on effects |
| Forge/Statescript/Nodes/Action/SetEffectInhibitionNode.cs | Toggle inhibition via effect handles |
| Forge/Statescript/Nodes/Action/SetByCallerMagnitudeNode.cs | Write SetByCaller magnitude on effects |
| Forge/Statescript/Nodes/Action/RemoveEffectNode.cs | Remove active effects via handles |
| Forge/Statescript/Nodes/Action/GrantAbilityPermanentlyNode.cs | Permanently grant ability action node |
| Forge/Statescript/Nodes/Action/CommitAbilityOperation.cs | Enum for commit operations |
| Forge/Statescript/Nodes/Action/CommitAbilityNode.cs | Commit cost/cooldown for current ability |
| Forge/Statescript/Nodes/Action/CancelAbilityNode.cs | Cancel current ability action node |
| Forge/Statescript/Nodes/Action/CancelAbilitiesByTagNode.cs | Cancel active abilities by tag |
| Forge/Effects/EffectsManager.cs | Add GetActiveEffects query APIs |
| Forge/Effects/ActiveEffectHandle.cs | Expose runtime getters + RefreshDuration |
| Forge/Core/SystemRandom.cs | New default IRandom implementation |
| Forge/Core/EntityTags.cs | Fire tag-changed event on removals |
| Forge/Abilities/StatescriptGrantSource.cs | Grant source for graph-granted abilities |
| Forge/Abilities/AbilityInstance.cs | Separate end vs cancel semantics |
| Forge/Abilities/Ability.cs | Ensure ended event fires once w/ cancel flag |
| Forge.Tests/Statescript/Nodes/State/LoopTimerNodeTests.cs | Tests for new loop timer node |
| Forge.Tests/Statescript/Nodes/Action/SetEffectLevelNodeTests.cs | Tests for effect level node |
| Forge.Tests/Statescript/Nodes/Action/SetEffectInhibitionNodeTests.cs | Tests for effect inhibition node |
| Forge.Tests/Statescript/Nodes/Action/RemoveEffectNodeTests.cs | Tests for remove effect node |
| Forge.Tests/Statescript/Nodes/Action/CommitAbilityNodeTests.cs | Tests for commit ability node |
| Forge.Tests/Abilities/AbilitiesTests.cs | Ensure ability-ended event fires once |
| docs/statescript/resolvers/wrap-resolver.md | Docs for WrapResolver |
| docs/statescript/resolvers/smooth-step-resolver.md | Docs for SmoothStepResolver |
| docs/statescript/resolvers/shuffle-resolver.md | Docs for shuffle resolvers |
| docs/statescript/resolvers/set-by-caller-magnitude-resolver.md | Docs for SetByCallerMagnitudeResolver |
| docs/statescript/resolvers/remap-resolver.md | Docs for RemapResolver |
| docs/statescript/resolvers/random-element-resolver.md | Docs for random element resolvers |
| docs/statescript/resolvers/query-active-effects-resolver.md | Docs for active effects query resolver |
| docs/statescript/resolvers/ping-pong-resolver.md | Docs for PingPongResolver |
| docs/statescript/resolvers/inverse-lerp-resolver.md | Docs for InverseLerpResolver |
| docs/statescript/resolvers/intersect-resolver.md | Docs for intersect resolvers |
| docs/statescript/resolvers/get-ability-handle-resolver.md | Docs for ability handle lookup |
| docs/statescript/resolvers/effect-info-resolver.md | Docs for effect info aggregation |
| docs/statescript/resolvers/delta-angle-resolver.md | Docs for DeltaAngleResolver |
| docs/statescript/resolvers/curve-sample-resolver.md | Docs for curve sampling resolver |
| docs/statescript/resolvers/conditional-resolver.md | Docs for value-lane conditional |
| docs/statescript/resolvers/conditional-object-resolver.md | Docs for object-lane conditional |
| docs/statescript/resolvers/can-activate-ability-resolver.md | Docs for CanActivateAbilityResolver |
| docs/statescript/resolvers/approximately-resolver.md | Docs for ApproximatelyResolver |
| docs/statescript/resolvers/active-effect-target-resolver.md | Docs for ActiveEffectTargetResolver |
| docs/statescript/resolvers/active-effect-effect-resolver.md | Docs for ActiveEffectEffectResolver |
| docs/statescript/resolvers/active-effect-data-resolver.md | Docs for ActiveEffectDataResolver |
| docs/statescript/resolvers/ability-state-resolver.md | Docs for AbilityStateResolver |
| docs/statescript/resolvers/ability-cost-resolver.md | Docs for AbilityCostResolver |
| docs/statescript/resolvers/ability-cooldown-resolver.md | Docs for AbilityCooldownResolver |
| docs/statescript/nodes/state/tag-listener-node.md | Docs for TagListenerNode |
| docs/statescript/nodes/state/state-machine-node.md | Docs for StateMachineNode |
| docs/statescript/nodes/state/README.md | Add new state nodes to index |
| docs/statescript/nodes/state/loop-timer-node.md | Docs for LoopTimerNode |
| docs/statescript/nodes/state/grant-ability-node.md | Docs for GrantAbilityNode |
| docs/statescript/nodes/state/effect-level-listener-node.md | Docs for EffectLevelListenerNode |
| docs/statescript/nodes/state/condition-monitor-node.md | Docs for ConditionMonitorNode |
| docs/statescript/nodes/state/attribute-listener-node.md | Docs for AttributeListenerNode |
| docs/statescript/nodes/state/ability-end-listener-node.md | Docs for AbilityEndListenerNode |
| docs/statescript/nodes/condition/try-activate-ability-node.md | Docs for TryActivateAbilityNode |
| docs/statescript/nodes/condition/try-activate-abilities-by-tag-node.md | Docs for TryActivateAbilitiesByTagNode |
| docs/statescript/nodes/condition/README.md | Add new condition nodes to index |
| docs/statescript/nodes/condition/random-branch-node.md | Docs for RandomBranchNode |
| docs/statescript/nodes/condition/grant-ability-and-activate-once-node.md | Docs for one-shot grant node |
| docs/statescript/nodes/action/switch-node.md | Docs for SwitchNode |
| docs/statescript/nodes/action/set-effect-level-node.md | Docs for SetEffectLevelNode |
| docs/statescript/nodes/action/set-effect-inhibition-node.md | Docs for SetEffectInhibitionNode |
| docs/statescript/nodes/action/set-by-caller-magnitude-node.md | Docs for SetByCallerMagnitudeNode |
| docs/statescript/nodes/action/remove-effect-node.md | Docs for RemoveEffectNode |
| docs/statescript/nodes/action/README.md | Add new action nodes to index |
| docs/statescript/nodes/action/grant-ability-permanently-node.md | Docs for permanent grant node |
| docs/statescript/nodes/action/commit-ability-node.md | Docs for commit ability node |
| docs/statescript/nodes/action/cancel-ability-node.md | Docs for cancel ability node |
| docs/statescript/nodes/action/cancel-abilities-by-tag-node.md | Docs for cancel-by-tag node |
| docs/effects/README.md | Document new handle getters + queries |
| docs/abilities.md | Clarify OnAbilityEnded single-fire semantics |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added