Skip to content

Added ramaining core API nodes.#40

Merged
lextatic merged 30 commits into
mainfrom
feature/core-api-nodes
Jul 17, 2026
Merged

Added ramaining core API nodes.#40
lextatic merged 30 commits into
mainfrom
feature/core-api-nodes

Conversation

@lextatic

Copy link
Copy Markdown
Contributor

Added

  • Added several remaining core API, Array and Math nodes.

@lextatic lextatic added the added New features label Jul 17, 2026
@lextatic
lextatic requested a review from Copilot July 17, 2026 01:56

Copilot AI 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.

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.

Comment thread Forge/Core/SystemRandom.cs
Comment thread Forge/Core/SystemRandom.cs
Comment thread Forge/Core/SystemRandom.cs
Comment thread Forge/Core/SystemRandom.cs
Comment thread Forge/Core/SystemRandom.cs
Comment thread Forge/Core/SystemRandom.cs
Comment thread Forge/Core/SystemRandom.cs
Comment thread Forge/Core/SystemRandom.cs
Comment thread Forge/Statescript/Nodes/Action/SwitchNode.cs Outdated
Comment thread Forge/Statescript/Nodes/State/StateMachineNode.cs Outdated
@lextatic lextatic changed the title Added ramaining core api nodes. Added ramaining core API nodes. Jul 17, 2026
@lextatic
lextatic merged commit faa6c9d into main Jul 17, 2026
1 check passed
@lextatic
lextatic deleted the feature/core-api-nodes branch July 17, 2026 02:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

added New features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants