← Back to ASH-FUSE Website

ASH Authoring Reference

Local, source-audited reference for the current ASH RPG Maker MZ battle stack.

Source verification: Supported entries have a parser/consumer/runtime path in the supplied source. This does not mean every possible combination was live-playtested in this audit.

Current audited plugins

FileHeaderSyntax
ASH_Core.jsCore Foundation 0.001Pass
ASH_ConsoleLogCapture.jsConsole Log Capture 0.001Pass
ASH_BattleCore.jsBattle Core Foundation 0.002Pass
ASH_BattleStamina.jsBattle Stamina 0.003Pass
ASH_BattleDiagnostics.jsBattle Diagnostics 0.001Pass
ASH_BattleMovement.jsBattle Movement 0.038Pass
ASH_BattleTargeting.jsBattle Targeting 0.031Pass
ASH_BattleSequences.jsBattle Sequences 0.056Pass
ASH_BattleActions.jsBattle Actions 0.019Pass
ASH_BattlePresentation.jsBattle Presentation 0.025Pass
ASH_BattlePoses.jsBattle Poses 0.031Pass
ASH_BattleActionExecutor.jsBattle Action Executor 0.075Pass
ASH_SequencePresetManager.jsSequence Preset Manager 0.002Pass
Phase 11B projectile arrival: supports speed/duration, arc, rotation, scale, multi-target spawning, visual nowait, and arrival-triggered damage/animation.

How to use this site

Pick the RPG Maker database tab you are currently editing from the left. Tags are repeated in every tab where they apply. Skill and Item include the full current sequence-command table so you do not need to cross-reference another section.

Actor Tab

Note tag / blockStructureWhat it doesNotes / precedenceExampleStatus
<ASH Battler Sheet: ...> PresetName Assigns the actor's battler sheet profile. Runtime → Equipment → Class → Actor → default.
<ASH Battler Sheet: Holder4x14>
Supported
<ASH Pose Set: ...> PoseSetName Assigns the actor's reusable pose set. Runtime → Equipment → Class → Actor → default.
<ASH Pose Set: ArenBattle>
Supported
<ASH Pose Alias: ..., ...> semanticPose, concretePose Maps a semantic pose such as `attack` to a concrete pose for this actor. Repeatable. Equipment → Class → Actor → Pose Set alias/fallback.
<ASH Pose Alias: attack, dagger_slash>
Supported
<ASH Positionals> ... </ASH Positionals> front/back/left/right block Early positional metadata block. Foundation only. Current BattleCore reader is not a reliable final Actor database-note path; do not depend on this yet.
<ASH Positionals>\nfront: 1\nback: 2\nleft: 3\nright: 4\n</ASH Positionals>
Foundation

Class Tab

Note tag / blockStructureWhat it doesNotes / precedenceExampleStatus
<ASH Battler Sheet: ...> PresetName Assigns a class-level battler sheet profile. Class beats Actor when no runtime/equipment override wins.
<ASH Battler Sheet: Holder4x14>
Supported
<ASH Pose Set: ...> PoseSetName Assigns a class-level pose set. Class beats Actor when no runtime/equipment override wins.
<ASH Pose Set: RoguePoses>
Supported
<ASH Pose Alias: ..., ...> semanticPose, concretePose Maps a semantic pose for actors using this class. Repeatable. Equipment → Class → Actor → Pose Set alias/fallback.
<ASH Pose Alias: attack, rogue_attack>
Supported

Weapon Tab

Note tag / blockStructureWhat it doesNotes / precedenceExampleStatus
<ASH Pose Set: ...> PoseSetName Equipment-level Pose Set override. Equipment wins before Class/Actor.
<ASH Pose Set: DualDaggerPoses>
Supported
<ASH Pose Alias: ..., ...> semanticPose, concretePose Equipment-level semantic pose override. Repeatable. Equipment aliases win before Class/Actor.
<ASH Pose Alias: attack, twin_dagger_attack>
Supported
<ASH Attack Skill: ...> Skill ID or Skill Name Replaces the normal Attack skill. Weapon only. Main-hand wins, then other weapons by actual equip-slot order.
<ASH Attack Skill: Twin Fang>
Supported
<ASH Battler Image: ...> FileName Overrides the actor's effective battle image while equipped. `.png` is normalized away.
<ASH Battler Image: ArenTwinDaggers>
Supported
<ASH Battler Sheet: ...> PresetName Overrides the actor's active sheet profile while equipped. Can be paired with Battler Image.
<ASH Battler Sheet: Holder4x14>
Supported
<ASH Behind Sheet: ...> FileName Adds a synchronized equipment attachment behind the body. Repeatable. Built-in layer -100.
<ASH Behind Sheet: Cape_Back>
Supported
<ASH Above Sheet: ...> FileName Adds a synchronized equipment attachment above the body. Repeatable. Built-in layer 100.
<ASH Above Sheet: Sword_Front>
Supported
<ASH Attachment: ..., ..., ...> FileName, Layer, OptionalSheetProfile Adds a custom synchronized attachment layer. Repeatable. Layer defaults to 0; third parameter optional.
<ASH Attachment: IronSword, 50, Holder4x14>
Supported

Armor Tab

Note tag / blockStructureWhat it doesNotes / precedenceExampleStatus
<ASH Pose Set: ...> PoseSetName Equipment-level Pose Set override. Equipment wins before Class/Actor.
<ASH Pose Set: HeavyArmorPoses>
Supported
<ASH Pose Alias: ..., ...> semanticPose, concretePose Equipment-level semantic pose override. Repeatable.
<ASH Pose Alias: damage, heavy_stagger>
Supported
<ASH Battler Image: ...> FileName Overrides the actor's effective battle image while equipped. Works through arbitrary Armor equip slots.
<ASH Battler Image: ArenHeavyArmor>
Supported
<ASH Battler Sheet: ...> PresetName Overrides the actor's active sheet profile while equipped. Works through arbitrary Armor equip slots.
<ASH Battler Sheet: Holder4x14>
Supported
<ASH Behind Sheet: ...> FileName Adds a synchronized equipment attachment behind the body. Repeatable. Built-in layer -100.
<ASH Behind Sheet: HeavyCape>
Supported
<ASH Above Sheet: ...> FileName Adds a synchronized equipment attachment above the body. Repeatable. Built-in layer 100.
<ASH Above Sheet: Helmet_Front>
Supported
<ASH Attachment: ..., ..., ...> FileName, Layer, OptionalSheetProfile Adds a custom synchronized attachment layer. Repeatable. Layer defaults to 0.
<ASH Attachment: ShoulderGlow, 75>
Supported

Enemy Tab

Note tag / blockStructureWhat it doesNotes / precedenceExampleStatus
<ASH Battler Image: ...> FileName Replaces the enemy's runtime battler image while preserving the database image for editor preview. Direct Enemy-note consumer exists.
<ASH Battler Image: GoblinHolder>
Supported
<ASH Battler Sheet: ...> PresetName Assigns the enemy's battler sheet profile. Used by the visual/custom-grid renderer.
<ASH Battler Sheet: Holder4x14>
Supported
<ASH Pose Set: ...> PoseSetName Assigns the enemy's pose set. Enemy-specific pose configuration.
<ASH Pose Set: GoblinPoses>
Supported
<ASH Pose Alias: ..., ...> semanticPose, concretePose Maps semantic poses to concrete enemy poses. Repeatable.
<ASH Pose Alias: attack, goblin_stab>
Supported
<ASH Positionals> ... </ASH Positionals> front/back/left/right block Early positional metadata block. Foundation only. Not the final authoritative Movement/facing contract.
<ASH Positionals>\nfront: 1\nback: 2\nleft: 3\nright: 4\n</ASH Positionals>
Foundation

Skill Tab

Note tag / blockStructureWhat it doesNotes / precedenceExampleStatus
<ASH Action Execution> ... </ASH Action Execution> Block of ASH sequence commands Main executable action-sequence block. All supported commands are documented below.
<ASH Action Execution>\npose: user, attack\nanimation: skill\ndamage: true\n</ASH Action Execution>
Supported
<ASH Sequence: Name> ... </ASH Sequence> Name + block of ASH sequence commands Defines a reusable local sequence on this Skill. Local named sequence overrides a global preset with the same name.
<ASH Sequence: Impact>\nanimation: skill\ndamage: true\n</ASH Sequence>
Supported
<ASH Range: N> Non-negative number Supplies the action's ASH range value to Targeting. Real runtime reader exists; broader Movement/range semantics are still evolving.
<ASH Range: 180>
Supported

All supported sequence calls

Valid inside <ASH Action Execution>, local <ASH Sequence: Name> blocks, and global preset bodies.

CallPositional parametersSupported modifiersAliasesWhat it does
add_state: target, add_state, wait target, wait, nowait addstate Adds an RPG Maker database State to selected battlers.
animation: animation, animationTarget, wait animationtarget, animation_target, animationmirror, animation_mirror, wait, nowait, target, x, y, offset_x, offset_y Requests an RPG Maker animation. `skill`/`default` uses the database action animation; supports target and offsets.
battler_image: battler_image_target, battler_image, wait battler_image_target, wait, nowait battlerimage, battle_image Temporarily overrides a battler image during battle. `restore/reset/clear/default/none` clears the override.
battler_sheet: battler_sheet_target, battler_sheet, wait battler_sheet_target, wait, nowait battlersheet, battle_sheet Temporarily overrides the active battler sheet profile. Restore tokens clear it.
battler_visual: battler_visual_target, battler_visual, wait battler_visual_target, wait, nowait battlervisual, visual_profile Applies a named Runtime Visual Profile; restore tokens return to normal resolution.
bgm: bgm, volume, pitch, pan, wait volume, pitch, pan, wait, nowait Plays/changes BGM.
bgs: bgs, volume, pitch, pan, wait volume, pitch, pan, wait, nowait Plays/changes BGS.
buff: target, buff, turns, wait target, turns, wait, nowait Adds an RPG Maker parameter buff for a number of turns.
camera_center: camera_center, wait duration, wait, nowait Returns camera focus to neutral center.
camera_focus: camera_focus, duration, wait duration, wait, nowait Focuses the presentation camera on a battler selector.
camera_follow: camera_follow, duration, wait duration, wait, nowait Makes the camera follow a battler.
camera_offset: camera_offset, y, duration, wait y, duration, wait, nowait Adds/sets camera offset while preserving focus/follow behavior.
camera_pan: camera_pan, y, duration, wait y, duration, wait, nowait Moves the camera to an absolute X/Y presentation offset.
camera_reset: camera_reset, wait duration, wait, nowait Resets pan/offset/follow/zoom camera state.
common_event: common_event, wait wait, nowait commonevent Runs a common event through ASH's owned battle interpreter.
damage: damage, wait repeats, repeat, popup_wait, popupwait, wait, nowait damage_range, damageRange, damagerange, damage_variable, damageVariable, damagevariable, formula Applies the current action's damage at this exact sequence point. Supports repeats and popup timing.
damage_range: repeats, repeat, popup_wait, popupwait, wait, nowait damageRange Damage-handler entry point using a damage-range expression instead of the normal editor damage value.
damage_variable: damage_variable, wait repeats, repeat, popup_wait, popupwait, wait, nowait damageVariable Damage-handler entry point using a game variable as the damage source.
debuff: target, debuff, turns, wait target, turns, wait, nowait Adds an RPG Maker parameter debuff for a number of turns.
event: wait, nowait Emits a named generic ASH sequence event hook.
facing: facing, wait wait, nowait face, face_direction Changes the acting subject's ASH facing state. `target` resolves facing toward the current target.
fade_screen: fade_screen, duration, wait duration, wait, nowait screen_fade Fades the battle scene in or out.
flash_screen: flash_screen, green, blue, intensity, duration, wait green, blue, intensity, duration, wait, nowait screen_flash Starts a screen flash.
formula: repeats, repeat, popup_wait, popupwait, wait, nowait Damage-handler entry point using an ASH formula expression.
freeze_frame: freeze_target, freeze_frame, wait freeze_target, wait, nowait freezeframe Freezes a custom-grid battler on a specific animation frame.
gain_armor: gain_armor, amount, wait amount, wait, nowait gainarmor Adds an RPG Maker Armor to party inventory.
gain_item: gain_item, amount, wait amount, wait, nowait gainitem Adds an RPG Maker Item to party inventory.
gain_weapon: gain_weapon, amount, wait amount, wait, nowait gainweapon Adds an RPG Maker Weapon to party inventory.
gold: gold, wait wait, nowait Changes party gold by the supplied amount.
heal: target, heal, wait target, wait, nowait, popup HP-healing convenience command; positive healing is applied through the shared resource resolver.
hide_hud: wait, nowait Hides the battle HUD/window layer without hiding battlers/battlebacks.
hit_mode: wait, nowait hitMode, hitmode Changes ASH hit-resolution mode for the active action.
hp: target, hp, wait target, wait, nowait, popup Changes HP directly through the shared ASH Value Resolver.
impact: wait, nowait Requests the action impact hook without itself applying damage.
include: include, wait wait, nowait sequence Expands a local named sequence or global SequencePresetManager preset in place. Alias: `sequence:`.
lose_armor: lose_armor, amount, wait amount, wait, nowait losearmor Removes an RPG Maker Armor from party inventory.
lose_item: lose_item, amount, wait amount, wait, nowait loseitem Removes an RPG Maker Item from party inventory.
lose_weapon: lose_weapon, amount, wait amount, wait, nowait loseweapon Removes an RPG Maker Weapon from party inventory.
me: me, volume, pitch, pan, wait volume, pitch, pan, wait, nowait Plays an ME.
movement: movement, x, y, pose, duration, wait x, y, pose, duration, speed, easing, target, offset_x, offset_y, distance, stamina, stamina_fail, on_stamina_fail, stamina_failure, wait, nowait move Moves the acting subject. Modes: moveTo, moveBy, approach/to/toward, retreat/retraway/from/away, Home/Original Home, set/reset Home, stop, and finish. Approach alone is movement-only.
mp: target, mp, wait target, wait, nowait, popup Changes MP directly through the shared ASH Value Resolver.
opacity: opacity, value, duration, wait value, duration, wait, nowait Tweens battler presentation opacity.
point: x, y, wait wait, nowait coordinate Creates/selects a battlefield coordinate target from X/Y.
popup: wait, nowait Requests/controls normal damage popup behavior.
popup_mode: wait, nowait popupMode, popupmode Changes damage-popup timing/mode for the active action.
pose: pose_target, pose, wait pose_target, wait, nowait Requests a semantic or concrete battler pose through ASH Battle Poses.
projectile: projectile_from, projectile_to, projectile_image, duration, wait projectile_from, projectile_to, projectile_image, projectile_folder, duration, speed, projectile_rotate, projectile_arc, projectile_scale, projectile_impact_damage, projectile_impact_animation, projectile_impact_mirror, wait, nowait proj, projectile_from Spawns one socket-driven projectile per resolved destination; supports duration/speed, arc, rotation, scale, visual nowait, and arrival-triggered damage/animation.
release_frame: release_target, wait release_target, wait, nowait releaseframe Releases a previously frozen custom-grid frame.
remove_buff: target, remove_buff, wait target, wait, nowait removebuff Removes a parameter buff.
remove_debuff: target, remove_debuff, wait target, wait, nowait removedebuff Removes a parameter debuff.
remove_state: target, remove_state, wait target, wait, nowait removestate Removes an RPG Maker database State from selected battlers.
reset_zoom: reset_zoom, wait duration, wait, nowait Resets battle-camera zoom.
rotation: rotation, degrees, duration, wait degrees, duration, wait, nowait rotate Tweens battler presentation rotation.
scale: scale, x, y, duration, wait x, y, duration, wait, nowait Tweens battler presentation scale.
se: se, volume, pitch, pan, wait volume, pitch, pan, wait, nowait sound_effect Plays an RPG Maker sound effect.
shake_screen: shake_screen, speed, duration, wait speed, duration, wait, nowait screenshake Starts an RPG Maker screen shake.
show_hud: wait, nowait Shows/restores the battle HUD/window layer.
store_damage: store_damage, wait wait, nowait preserve_damage, storedamage, preservedamage Stores the current action's `last_damage` total under a reusable sequence-local name.
switch: switch, value, wait value, wait, nowait change_switch Changes an RPG Maker switch.
target: target, wait wait, nowait select_target, select_targets Reselects the current target set through the unified ASH target resolver.
target_area: target_area, wait wait, nowait targetArea, targetarea Sets the target-plan area type. Non-`none` spatial areas depend on a registered area provider.
target_count: target_count, wait wait, nowait targetCount, targetcount Changes how many targets the target plan resolves, such as `one` or `all`.
target_scope: target_scope, wait wait, nowait targetScope, targetscope Changes the action target-plan scope (self/ally/opponent/actor/enemy/any).
tint_screen: tint_screen, green, blue, gray, duration, wait green, blue, gray, duration, wait, nowait screen_tint Starts a screen tint.
tp: target, tp, wait target, wait, nowait, popup Changes TP directly through the shared ASH Value Resolver.
variable: variable, operation, value, wait operation, value, wait, nowait change_variable Changes an RPG Maker variable using an operation and value.
wait_action: wait, nowait waitAction, waitaction Waits until all registered asynchronous work for the current action is finished.
wait_common_event: waitcommonevent Blocks until the currently ASH-triggered common event finishes.
wait_pose: pose_wait_target, wait_pose, wait pose_wait_target, wait, nowait waitpose Blocks until the most recently requested matching pose/motion completes. Looping poses are protected from infinite waits.
wait_pose_event: pose_event_target, wait_pose_event, wait pose_event_target, wait, nowait waitposeevent Blocks until the named custom-grid pose frame event is reached.
xpopup: xpopup_target, xpopup, wait xpopup_target, wait, nowait text_popup, custom_popup Displays arbitrary custom popup text over selected battlers.
zoom: zoom, duration, wait duration, wait, nowait Changes battle-camera zoom.
Named sequence syntax
<ASH Sequence: Impact>
animation: skill
damage: true
</ASH Sequence>

<ASH Action Execution>
include: Impact
</ASH Action Execution>

sequence: Impact is an alias for include: Impact. Local sequences override global presets with the same name.

Item Tab

Note tag / blockStructureWhat it doesNotes / precedenceExampleStatus
<ASH Action Execution> ... </ASH Action Execution> Block of ASH sequence commands Main executable action-sequence block. Uses the same parser/runtime as Skills.
<ASH Action Execution>\nhp: target, +500\nxpopup: target, "Recovered!"\n</ASH Action Execution>
Supported
<ASH Sequence: Name> ... </ASH Sequence> Name + block of ASH sequence commands Defines a reusable local sequence on this Item. Local named sequence overrides a global preset with the same name.
<ASH Sequence: PotionEffect>\nhp: target, +500\n</ASH Sequence>
Supported
<ASH Range: N> Non-negative number Supplies the action's ASH range value to Targeting. Same Game_Action.item() reader used by Skills.
<ASH Range: 250>
Supported

All supported sequence calls

Valid inside <ASH Action Execution>, local <ASH Sequence: Name> blocks, and global preset bodies.

CallPositional parametersSupported modifiersAliasesWhat it does
add_state: target, add_state, wait target, wait, nowait addstate Adds an RPG Maker database State to selected battlers.
animation: animation, animationTarget, wait animationtarget, animation_target, animationmirror, animation_mirror, wait, nowait, target, x, y, offset_x, offset_y Requests an RPG Maker animation. `skill`/`default` uses the database action animation; supports target and offsets.
battler_image: battler_image_target, battler_image, wait battler_image_target, wait, nowait battlerimage, battle_image Temporarily overrides a battler image during battle. `restore/reset/clear/default/none` clears the override.
battler_sheet: battler_sheet_target, battler_sheet, wait battler_sheet_target, wait, nowait battlersheet, battle_sheet Temporarily overrides the active battler sheet profile. Restore tokens clear it.
battler_visual: battler_visual_target, battler_visual, wait battler_visual_target, wait, nowait battlervisual, visual_profile Applies a named Runtime Visual Profile; restore tokens return to normal resolution.
bgm: bgm, volume, pitch, pan, wait volume, pitch, pan, wait, nowait Plays/changes BGM.
bgs: bgs, volume, pitch, pan, wait volume, pitch, pan, wait, nowait Plays/changes BGS.
buff: target, buff, turns, wait target, turns, wait, nowait Adds an RPG Maker parameter buff for a number of turns.
camera_center: camera_center, wait duration, wait, nowait Returns camera focus to neutral center.
camera_focus: camera_focus, duration, wait duration, wait, nowait Focuses the presentation camera on a battler selector.
camera_follow: camera_follow, duration, wait duration, wait, nowait Makes the camera follow a battler.
camera_offset: camera_offset, y, duration, wait y, duration, wait, nowait Adds/sets camera offset while preserving focus/follow behavior.
camera_pan: camera_pan, y, duration, wait y, duration, wait, nowait Moves the camera to an absolute X/Y presentation offset.
camera_reset: camera_reset, wait duration, wait, nowait Resets pan/offset/follow/zoom camera state.
common_event: common_event, wait wait, nowait commonevent Runs a common event through ASH's owned battle interpreter.
damage: damage, wait repeats, repeat, popup_wait, popupwait, wait, nowait damage_range, damageRange, damagerange, damage_variable, damageVariable, damagevariable, formula Applies the current action's damage at this exact sequence point. Supports repeats and popup timing.
damage_range: repeats, repeat, popup_wait, popupwait, wait, nowait damageRange Damage-handler entry point using a damage-range expression instead of the normal editor damage value.
damage_variable: damage_variable, wait repeats, repeat, popup_wait, popupwait, wait, nowait damageVariable Damage-handler entry point using a game variable as the damage source.
debuff: target, debuff, turns, wait target, turns, wait, nowait Adds an RPG Maker parameter debuff for a number of turns.
event: wait, nowait Emits a named generic ASH sequence event hook.
facing: facing, wait wait, nowait face, face_direction Changes the acting subject's ASH facing state. `target` resolves facing toward the current target.
fade_screen: fade_screen, duration, wait duration, wait, nowait screen_fade Fades the battle scene in or out.
flash_screen: flash_screen, green, blue, intensity, duration, wait green, blue, intensity, duration, wait, nowait screen_flash Starts a screen flash.
formula: repeats, repeat, popup_wait, popupwait, wait, nowait Damage-handler entry point using an ASH formula expression.
freeze_frame: freeze_target, freeze_frame, wait freeze_target, wait, nowait freezeframe Freezes a custom-grid battler on a specific animation frame.
gain_armor: gain_armor, amount, wait amount, wait, nowait gainarmor Adds an RPG Maker Armor to party inventory.
gain_item: gain_item, amount, wait amount, wait, nowait gainitem Adds an RPG Maker Item to party inventory.
gain_weapon: gain_weapon, amount, wait amount, wait, nowait gainweapon Adds an RPG Maker Weapon to party inventory.
gold: gold, wait wait, nowait Changes party gold by the supplied amount.
heal: target, heal, wait target, wait, nowait, popup HP-healing convenience command; positive healing is applied through the shared resource resolver.
hide_hud: wait, nowait Hides the battle HUD/window layer without hiding battlers/battlebacks.
hit_mode: wait, nowait hitMode, hitmode Changes ASH hit-resolution mode for the active action.
hp: target, hp, wait target, wait, nowait, popup Changes HP directly through the shared ASH Value Resolver.
impact: wait, nowait Requests the action impact hook without itself applying damage.
include: include, wait wait, nowait sequence Expands a local named sequence or global SequencePresetManager preset in place. Alias: `sequence:`.
lose_armor: lose_armor, amount, wait amount, wait, nowait losearmor Removes an RPG Maker Armor from party inventory.
lose_item: lose_item, amount, wait amount, wait, nowait loseitem Removes an RPG Maker Item from party inventory.
lose_weapon: lose_weapon, amount, wait amount, wait, nowait loseweapon Removes an RPG Maker Weapon from party inventory.
me: me, volume, pitch, pan, wait volume, pitch, pan, wait, nowait Plays an ME.
movement: movement, x, y, pose, duration, wait x, y, pose, duration, speed, easing, target, offset_x, offset_y, distance, stamina, stamina_fail, on_stamina_fail, stamina_failure, wait, nowait move Moves the acting subject. Modes: moveTo, moveBy, approach/to/toward, retreat/retraway/from/away, Home/Original Home, set/reset Home, stop, and finish. Approach alone is movement-only.
mp: target, mp, wait target, wait, nowait, popup Changes MP directly through the shared ASH Value Resolver.
opacity: opacity, value, duration, wait value, duration, wait, nowait Tweens battler presentation opacity.
point: x, y, wait wait, nowait coordinate Creates/selects a battlefield coordinate target from X/Y.
popup: wait, nowait Requests/controls normal damage popup behavior.
popup_mode: wait, nowait popupMode, popupmode Changes damage-popup timing/mode for the active action.
pose: pose_target, pose, wait pose_target, wait, nowait Requests a semantic or concrete battler pose through ASH Battle Poses.
projectile: projectile_from, projectile_to, projectile_image, duration, wait projectile_from, projectile_to, projectile_image, projectile_folder, duration, speed, projectile_rotate, projectile_arc, projectile_scale, projectile_impact_damage, projectile_impact_animation, projectile_impact_mirror, wait, nowait proj, projectile_from Spawns one socket-driven projectile per resolved destination; supports duration/speed, arc, rotation, scale, visual nowait, and arrival-triggered damage/animation.
release_frame: release_target, wait release_target, wait, nowait releaseframe Releases a previously frozen custom-grid frame.
remove_buff: target, remove_buff, wait target, wait, nowait removebuff Removes a parameter buff.
remove_debuff: target, remove_debuff, wait target, wait, nowait removedebuff Removes a parameter debuff.
remove_state: target, remove_state, wait target, wait, nowait removestate Removes an RPG Maker database State from selected battlers.
reset_zoom: reset_zoom, wait duration, wait, nowait Resets battle-camera zoom.
rotation: rotation, degrees, duration, wait degrees, duration, wait, nowait rotate Tweens battler presentation rotation.
scale: scale, x, y, duration, wait x, y, duration, wait, nowait Tweens battler presentation scale.
se: se, volume, pitch, pan, wait volume, pitch, pan, wait, nowait sound_effect Plays an RPG Maker sound effect.
shake_screen: shake_screen, speed, duration, wait speed, duration, wait, nowait screenshake Starts an RPG Maker screen shake.
show_hud: wait, nowait Shows/restores the battle HUD/window layer.
store_damage: store_damage, wait wait, nowait preserve_damage, storedamage, preservedamage Stores the current action's `last_damage` total under a reusable sequence-local name.
switch: switch, value, wait value, wait, nowait change_switch Changes an RPG Maker switch.
target: target, wait wait, nowait select_target, select_targets Reselects the current target set through the unified ASH target resolver.
target_area: target_area, wait wait, nowait targetArea, targetarea Sets the target-plan area type. Non-`none` spatial areas depend on a registered area provider.
target_count: target_count, wait wait, nowait targetCount, targetcount Changes how many targets the target plan resolves, such as `one` or `all`.
target_scope: target_scope, wait wait, nowait targetScope, targetscope Changes the action target-plan scope (self/ally/opponent/actor/enemy/any).
tint_screen: tint_screen, green, blue, gray, duration, wait green, blue, gray, duration, wait, nowait screen_tint Starts a screen tint.
tp: target, tp, wait target, wait, nowait, popup Changes TP directly through the shared ASH Value Resolver.
variable: variable, operation, value, wait operation, value, wait, nowait change_variable Changes an RPG Maker variable using an operation and value.
wait_action: wait, nowait waitAction, waitaction Waits until all registered asynchronous work for the current action is finished.
wait_common_event: waitcommonevent Blocks until the currently ASH-triggered common event finishes.
wait_pose: pose_wait_target, wait_pose, wait pose_wait_target, wait, nowait waitpose Blocks until the most recently requested matching pose/motion completes. Looping poses are protected from infinite waits.
wait_pose_event: pose_event_target, wait_pose_event, wait pose_event_target, wait, nowait waitposeevent Blocks until the named custom-grid pose frame event is reached.
xpopup: xpopup_target, xpopup, wait xpopup_target, wait, nowait text_popup, custom_popup Displays arbitrary custom popup text over selected battlers.
zoom: zoom, duration, wait duration, wait, nowait Changes battle-camera zoom.
Named sequence syntax
<ASH Sequence: Impact>
animation: skill
damage: true
</ASH Sequence>

<ASH Action Execution>
include: Impact
</ASH Action Execution>

sequence: Impact is an alias for include: Impact. Local sequences override global presets with the same name.

State Tab

No current ASH database note tags were found for this tab. State-sensitive contextual pose rules currently live in Plugin Manager data, not State notes.

Targets & Values

Target selectors

SelectorMeaning
`user`, `subject`, `self`Acting subject.
`target`, `current_target`, `first_target`Current/first target.
`targets`, `current_targets`Current target set.
`allies`, `friends`Living allies relative to the acting subject.
`opponents`, `foes`Living opponents relative to the acting subject.
`actors`, `party`, `party_members`Literal actor/party side.
`enemies`, `troop`, `enemy_troop`Literal enemy/troop side.
`all`All battlers.
`point:x,y` / `coordinate:x,y`Battlefield coordinate target object.

Target preview highlight lifetime

RPG Maker's battler selection flash is used only while choosing a target. ASH explicitly clears preview selection when the player confirms a target and again at action start as a fail-safe. Movement-only and Jump-only actions therefore do not make the target blink during execution.

Target-plan directives

target_scope: currently normalizes scopes including self, ally, opponent, actor, enemy, and any. target_count: supports plans such as one and all. target_area: is reserved for registered free-position/spatial providers; ASH does not fake a grid.

Numeric Value Resolver

SyntaxMeaningExample
numberLiteral numeric value`125`
+ / - prefixApply sign to the resolved expression`-variable:7`
percentagePercentage of the target resource maximum`25%`
variable:NRPG Maker variable value`variable:7`
last_damage / lastdamageMost recent damage, target-aware where available`last_damage`
stored:nameValue saved with `store_damage:``stored:opening_hit`
formula:expressionJavaScript-style numeric formula with `a`, `b`, `v`, `last_damage`, `stored``formula:a.atk * 2`
bare formula expressionAccepted when it clearly references formula symbols`a.atk + v[7]`

XPopup content

xpopup: target, "Poisoned!"
xpopup: target, variable:7
xpopup: target, state_name:4
xpopup: target, name:target
xpopup: target, formula:a.atk * 2
xpopup: target, eval:b.name() + " is stunned!"

Movement modes currently handled

movement: moveTo, x, y
movement: moveBy, x, y
movement: approach
movement: retreat, 100
movement: setHome
movement: commitOrigin
movement: return

Projectile sockets

Projectile endpoints use battler/socket notation. Built-in pose sockets include center, head, and feet, with custom sockets available through Pose preset data.

projectile: user.hand_r, target.center, Arrow, 24
projectile_arc: 48
projectile_rotate: true
projectile_scale: 1

Plugin Commands

These are RPG Maker Plugin Commands, not Notes-box tags.

PluginCommandPurpose
ASH_SequencePresetManagerImportJsonImports a sequence-preset JSON file from the configured folder.
ASH_SequencePresetManagerExportJsonExports manager or all-global presets to JSON.
ASH_BattleDiagnosticsrunActionExecutorTestDevelopment smoke test for the Action Executor.

Preset resolution

  1. Local <ASH Sequence: Name> in the current Skill/Item.
  2. Global SequencePresetManager preset.

Preset bodies contain ASH sequence commands only and should not include the Action Execution wrapper.

Movement & Home

Free-coordinate battler movement, speed/duration timing, optional Stamina, Current Home vs Original Home, and automatic pose ownership.

Movement aliases

Canonical modeAccepted valuesMeaning
approachapproach, to, towardMove toward the selected target and optionally stop at distance:.
retreatretreat, retraway, from, awayMove away from the selected target by the requested distance.

Critical rule: approach is not an attack command

move: approach
target: target
duration: 60

This is movement only. It does not automatically request the database animation, apply damage, or declare an attack.

If a later mechanical offensive step exists, such as damage:, impact:, or projectile impact damage, a successful automatic approach may transition from its movement pose into semantic attack before that later offensive step. If an explicit pose: appears first, the explicit pose wins.

Default automatic pose behavior

Movement callDefault pose while movingCompletion behavior
moveTowalkidle
moveBywalkidle
approach / to / towardwalkidle for movement-only use; attack only when a later mechanical offensive step is detected.
retreat / retraway / from / awaywalkidle. Note: semantic retreat exists in the pose system, but Movement currently defaults to walk.
home / return / returnHomewalkidle
originalHome / returnOriginal / returnOriginalHome / originalwalkidle
setHome / updateHome / commitOriginNoneUpdates Current Home only; no pose request.
resetHomeNoneResets Current Home to Original Home; no pose request.
stop / cancel / stopMovementNone newly requestedStops an active move at its current point; the active automatic movement completion returns to idle.
finish / complete / finishMovementNone newly requestedSnaps the active move to its destination; the active automatic movement completion returns to idle.
wait_movementNoneWait/synchronization only.
Explicit movement pose wins: adding pose: to a movement suppresses ASH's automatic walk ownership. ASH does not forcibly reset that explicit pose; its renderer/Pose Set ReturnPose rules remain authoritative.

Jump movement

jump: is a real free-coordinate movement primitive. Mechanical X/Y travels on the battlefield ground plane while a separate visual airborne height creates a parabolic arc.

CallMeaning
jump: moveToJump to absolute X/Y.
jump: moveByJump by relative X/Y.
jump: to, toward, approachJump toward a target, optionally stopping at distance:.
jump: retreat, away, fromJump away from a target by the authored distance:.
jump: homeJump to Current Home.
jump: originalHomeJump to Original Home.
wait_jump: / waitjump:Wait for selected battler(s) to land; especially useful after nowait.
jump: moveTo
x: 500
y: 300
duration: 60
height: 120

jump: moveBy
x: -200
y: 50
duration: 45
height: 80

jump: toward
target: target
distance: 50
duration: 60
height: 100

jump: retreat
target: target
distance: 200
duration: 60
height: 100

jump: home
duration: 60
height: 100

Defaults: Jump Height 96px, Jump Duration 30 game frames. Jump itself does not request an attack pose, database animation, impact, or damage. Add an explicit pose: if desired. Movement Stamina remains opt-in with stamina: true.

Ground-plane rule: airborne visual height does not alter mechanical Y, Current Home, Original Home, target distance, or battler Y-depth sorting.

Float

float: set
height: 120
duration: 60

float: up
height: 80
duration: 30

float: down
height: 50
duration: 30

float: ground
duration: 60

wait_float:
# alias
waitfloat:

Float is persistent visual height. Mechanical X/Y does not change. Jump and Float heights add together visually.

Knockback / Pull

knockback: target, 200
origin: user
duration: 60

pull: target, 100
origin: user
duration: 45

Knockback moves targets away from the origin. Pull moves targets toward it without overshooting. Both use the normal free-coordinate Movement engine and battlefield bounds.

Jump interruption

interrupt: replace
interrupt: ignore
interrupt: queue

replace remains the default. It now preserves the current airborne visual height instead of snapping to zero before the replacement arc. ignore rejects the new request. queue starts it after the active jump lands.

Projectile routing & lifecycle

projectile: user.center, target.center, debug, 30
id: chain1
route: random_unique
bounces: 3

Routes: none, random_unique, random, nearest, return.

projectile_route: random
id: chain1

projectile_stop: chain1
projectile_resume: chain1
projectile_remove: chain1
projectile_reset_visited: chain1

A live route change affects the next segment of the same projectile. random_unique remembers visited targets. return sends the visual back to its source; self-damage on return defaults off.

Projectile geometric routing

Next target behind current target

projectile: user.center, target.center, debug, 45
id: pierce1
route: next_behind
bounces: 2
behind_angle: 60

next_behind uses the projectile's incoming direction. From the current target, ASH searches farther along that direction and chooses the nearest eligible battler inside the allowed cone.

behind_angle: is the allowed half-angle in degrees. A smaller number requires a straighter continuation. behind_max_lateral: can additionally limit sideways distance from the incoming route line.

Behind-route coordinate space

next_behind geometry is evaluated using the same live battler socket/render coordinates used by projectile travel endpoints. This keeps the geometric decision aligned with what the player actually sees on screen. Mechanical battlefield coordinates are used only as a fallback.

behind_max_lateral default: if omitted or left blank, lateral distance is unlimited. An explicit 0 is valid and means the next target must lie exactly on the incoming route line.

First → behind → first

projectile: user.center, target.center, debug, 45
id: ricochet1
route: behind_return_first
bounces: 2
behind_angle: 60

This compound route hits the originally selected first target, finds the nearest valid target behind it, then sends the same projectile back to the original first target.

Automatic projectile route transitions

projectile: user.center, target.center, debug, 45
id: chaos_chain
route: random_unique
route_when: all_hit
route_then: random
bounces: 10

The controller begins in random_unique. Once every eligible opponent has been visited, the same live projectile automatically changes to random and may begin repeating targets.

route_when: all_hit
route_when: hits:4

The route transition occurs after the current impact and before the next destination is selected.

Return is terminal: once a projectile using return reaches its original source, the projectile ends immediately even if its bounce count is still above zero. This is true for initial return routes, live route changes, and automatic transitions into return.

Spatial target areas

ASH target areas now operate in continuous battle-screen coordinates using battler sprite hitboxes rather than a grid.

Circle

target_area: circle
origin: target
radius: 160
debug: true
debug_frames: 120

Ring / donut

target_area: ring
origin: target
inner_radius: 80
radius: 220

Rectangle

target_area: rect
origin: target
width: 260
height: 120
rotation: 25

Cone

target_area: cone
origin: user
direction: target
range: 320
angle: 60

Line / beam

target_area: line
origin: user
direction: target
range: 500
width: 64

Origin and direction

origin: may use selectors such as user, target, allies (first resolved battler), or a point selector. Explicit x:/y: overrides selector origin.

direction: accepts a selector, point selector, numeric degrees, or left/right/up/down.

Hitboxes

Area collision uses each battler's live sprite bounds. hitbox_padding: expands those bounds for authoring/tuning.

Debug visualization

debug: true
debug_frames: 120

The area is drawn in cyan. Candidate hitboxes are red; affected hitboxes are green.

Spatial scope visibility

A spatial ability can display its actual target-area shape while selecting a target and/or again when that target-area step executes.

Selector preview

Spatial abilities default to showing their own actual scope during selection. A cone skill shows its cone; a circle skill shows its circle; a line skill shows its line. Other scope types are not shown.

scope_show_selector: true
scope_show_selector: false

Execution visibility

Execution scope display defaults off. Turn it on for telegraphs, deliberate presentation, or testing:

scope_show_execution: true
scope_show_execution: false

General shortcut

scope_show: true
scope_hide: true

debug: true also shows the execution scope and battler hitboxes.

Defaults

selector scope = shown
execution scope = hidden
debug:true = execution shown + hitboxes

Image Scope

target_area: image uses the alpha channel of a transparent image as an arbitrary target shape.

target_area: image
origin: target
image: ASH_TestCross
image_folder: img/ash_scopes/
image_width: 320
image_height: 160
image_rotation: 0
alpha_threshold: 16
scope_show_selector: true
scope_show_execution: true

Transparent pixels do not hit. Pixels whose alpha is at or above alpha_threshold are active. Collision samples across each battler hitbox rather than checking only its center.

Image controls

image:
image_folder:
image_width:
image_height:
image_scale:
image_scale_x:
image_scale_y:
image_rotation:
alpha_threshold:
image_anchor_x:
image_anchor_y:

Default folder: img/ash_scopes/. Default anchor is centered at 0.5, 0.5.

Custom battler hitbox notes

Actor and Enemy database notes may override automatic sprite bounds:

<ASH Hitbox>
width: 64
height: 96
offset_x: 0
offset_y: -12
padding: 0
</ASH Hitbox>

If no ASH Hitbox note exists, the live sprite bounds continue to be used automatically.

Custom battler hitbox anchors

Custom <ASH Hitbox> profiles use stable ASH battler/socket coordinates rather than sprite bounds.

<ASH Hitbox>
width: 44
height: 72
anchor: feet
offset_x: 0
offset_y: 0
padding: 0
</ASH Hitbox>

Anchors

anchor: feet
anchor: center
anchor: head

feet is the default. The box grows upward from the battler's stable ground/feet point. center centers the box on the stable battler center. head grows downward from a head/top socket when available.

offset_x and offset_y are local adjustments from the selected stable anchor. Identical battler instances therefore receive the same relative hitbox regardless of pose/frame.

When no custom ASH Hitbox note exists, automatic hitboxes continue to use live sprite bounds.

Timing

movement: moveBy
x: -400
y: 0
speed: 10

movement: moveBy
x: 400
y: 0
duration: 60

speed: is travel rate: farther movement naturally takes longer. duration: is an explicit travel-time override: different distances can be forced to take the same number of frames.

Stamina is opt-in per movement

movement: approach
target: target
distance: 100
speed: 10
stamina: true

Without stamina: true, movement ignores Stamina. If enabled and insufficient, the Stamina plugin may partially limit or deny travel. Approach defaults to breaking the remaining sequence on incomplete Stamina movement unless the authored failure policy says to continue.

Home

Ordinary movement never updates Home. Only setHome/updateHome/commitOrigin changes Current Home. Original Home remains the battle-start/configured formation anchor.

movement: setHome

movement: home
speed: 10

movement: originalHome
speed: 10

Pose System

Poses are semantic visual requests. Movement remains mechanical position; a pose never silently becomes combat logic.

Explicit sequence syntax

pose: user, attack
pose: target, damage
pose: user, guard

pose: can request either a semantic pose name or a concrete custom pose name. Concrete names bypass contextual semantic-variant replacement.

Built-in semantic pose names

idle, wait, ready
attack, guard
skill, spell, item
damage, evade, dead
victory, escape
move, walk, run, advance, retreat
thrust, swing, missile

Plugin Manager Additional Semantic Poses can register more names so contextual rules can treat them as semantic requests.

Resolution precedence

For semantic requests, contextual variant rules can win first. Current contextual condition precedence is:

runtime visual profile
→ state
→ weapon
→ armor
→ any equipment
→ enemy / actor identity
→ equipment/class/actor/enemy note aliases
→ Pose Set aliases / fallback

Within equally ranked contextual rules, rule priority breaks ties. Equipment preserves actual equip-slot order where relevant.

Note-tag aliases

<ASH Pose Alias: attack, dagger_slash>
<ASH Pose Alias: walk, wounded_walk>

Actor, Class, Enemy, Weapon, and Armor sources can map semantic names to concrete poses. Equipment aliases have precedence before Class/Actor aliases.

Stock RPG Maker MZ actor behavior

Native MZ motions supported directly by the renderer are:

walk, wait, chant, guard, damage, evade,
thrust, swing, missile, skill, spell, item,
escape, victory, dying, abnormal, sleep, dead

Semantic attack is special: ASH resolves the actor's equipped weapon attack motion to thrust, swing, or missile, and can request the normal weapon image. Unsupported concrete/native names fall back visually to MZ wait.

The built-in MZ Pose Set aliases idle → wait, hurt/hit → damage, defend → guard, casting → chant, cast → spell, and normal_attack → attack.

Built-in Holder/custom-grid defaults

The built-in Holder-style Pose Set contains concrete poses:

idle, guard, abnormal, damage, attack, item,
skill, magic, advance, escape, victory, enter, dead

Important built-in aliases include:

wait / ready → idle
defend → guard
hurt / hit → damage
normal_attack / attack1 → attack
attack2 → item
attack3 → skill
spell / chant / casting → magic
walk / run → advance
retreat → escape
attack4 → victory
entry → enter
death → dead

Editable built-in presets

The Plugin Manager now exposes all built-in Battle Poses presets as normal editable default entries instead of hiding them only in code.

Sheet Presets:
mz_actor
holder_4x14
static_battler
custom_grid

Pose Sets:
holder_default
mz_default
static_default

Runtime Visual Profiles:
mz_actor_default
static_battler_default

Editing an entry while keeping its built-in name overrides the hard-coded fallback of the same name. Pose Sets also expose explicit Semantic Alias Mappings, so mappings such as walk → advance or idle → wait can be edited directly.

Sheet-wide visual X/Y offset

Battler Sheet Presets expose Visual Offset X and Visual Offset Y. These are visual-only alignment corrections applied to every pose that uses the sheet.

Visual Offset X: 0
Visual Offset Y: 12

Positive Y moves the rendered battler body downward. Mechanical battlefield X/Y, Current Home, Original Home, Movement distance, and Stamina calculations are unchanged.

The offset is also applied to synchronized equipment attachment sheets. Projectile sockets follow the corrected rendered transform, so visual socket positions move with the body.

The built-in editable holder_4x14 sheet preset defaults to Visual Offset X: 0 and Visual Offset Y: 12.

Battler Y-depth grouping

Actors and enemies sort as whole visual groups using the battler container's mechanical battlefield Y. Greater Y renders in front of smaller Y.

An actor's body and all ASH equipment attachments remain together during battlefield sorting. Internal attachment layers are preserved: negative layers stay behind the body, the body remains layer 0, and positive layers stay above it. Another battler cannot render between the body and its weapon/cape/armor attachment.

Sheet-wide Visual Offset Y does not alter depth sorting; the mechanical ground Y remains authoritative.

Pose completion

Custom-grid pose definitions control looping, ping-pong, hold-last-frame, and ReturnPose. A non-looping pose commonly returns to idle; looping poses such as movement/idle remain active until another request interrupts them.

wait_pose:, wait_pose_event:, freeze_frame:, and release_frame: provide synchronization/control without changing mechanical position or targets.

Stamina

General battle resource. Current Stamina may exceed the normal max; movement integration is opt-in per movement instruction.

Default Max Stamina: 100
Turn Recovery Mode: Full Refill
Movement Uses Stamina: true
Movement - Pixels Per Unit: 2
Movement - Stamina Per Unit: 1
Important: Plugin Manager Movement Uses Stamina enables the integration globally, but an individual sequence movement still spends Stamina only when it includes stamina: true.

Note tags

<ASH Max Stamina: 120>
<ASH Stamina Plus: 20>
<ASH Stamina Rate: 125>

Sequence calls

stamina: user, -10
stamina: user, +10
stamina: user, 25%
stamina: user, full

stamina_set: user, 50
stamina_set: user, 10000

stamina_cost: user, 15

Current Stamina is uncapped above maxStamina(); max remains the normal battle-start/full-refill reference. Movement cost is based on actual distance only. Speed and duration do not change Stamina cost.

Implicit database animation timing

If an ASH sequence has no explicit animation: command, ASH preserves the skill's normal database animation but requests it at action start as a non-blocking presentation effect. RPG Maker's later automatic call is suppressed only as a duplicate.

animation: skill
animationTarget: target

If an explicit animation command exists, that ASH step owns animation timing instead.

Stamina-limited movement continuation policy

stamina_fail: break
stamina_fail: continue

movement: approach defaults to break. If Stamina prevents the battler from reaching the authored approach destination, the affordable partial move finishes and the remaining sequence is skipped. Implicit animation, impact, and damage therefore do not occur.

Use stamina_fail: continue when partial movement is intentional. Other movement modes default to continue and may opt into break explicitly.

movement: approach — direct target vector

approach calculates direction as target - user, so left/right/up/down/diagonal travel always follows the target's actual relative position.

movement: approach
target: target
distance: 100
speed: 10

distance is the desired remaining spacing from the target. Stamina is applied afterward to the calculated travel distance, so stamina-limited movement still travels in the correct direction.

Command-local selector isolation

Implicit ASH steps execute only their authoritative parsed command. Local selector/argument keys cannot accidentally dispatch another registered command.

stamina_set: user, 10

The local user selector no longer executes the standalone target: command or changes the action's current target. Explicit standalone target: remains supported.

Uncapped current Stamina

Current Stamina can exceed maxStamina(). The max remains the normal battle-start/full-refill reference amount.

stamina_set: user, 10000

This now gives 10,000 current Stamina. staminaRate() may therefore exceed 1.0. Stamina still cannot go below zero.

Automatic attack pose after successful approach

A successful automatically-posed movement: approach now transitions from semantic walk to semantic attack before the implicit database animation and damage phase.

movement: approach
target: target
distance: 0
speed: 10

damage: true

Explicit pose authoring remains authoritative. Failed Stamina-gated approaches return to idle and break without entering the attack pose.

Home movement aliases

movement: home, return, and returnHome route to Current Home.

movement: originalHome, returnOriginal, returnOriginalHome, and original route to Original Home.

setHome/updateHome changes Current Home only.

Explicit-only movement Stamina

Movement does not consume Stamina unless stamina: true is authored on that movement instruction.

movement: approach
target: target
distance: 100
speed: 10
stamina: true

Ordinary movement never updates Current Home. Only explicit setHome/updateHome calls change it.

Parsed / Reserved — Not Currently Executed

Do not treat these as working calls yet. The Sequence parser has schema entries for them, but this audit found no current execution handler in the current Action Executor.
CallStatus
afterimage:Parser/schema placeholder only; no current runtime handler was found.
battleback1:Parser/schema placeholder only; no current runtime handler was found.
battleback2:Parser/schema placeholder only; no current runtime handler was found.
break_action:Parser/schema placeholder only; no current runtime handler was found.
clone:Parser/schema placeholder only; no current runtime handler was found.
cutin:Parser/schema placeholder only; no current runtime handler was found.
death_break:Parser/schema placeholder only; no current runtime handler was found.
death_effect:Parser/schema placeholder only; no current runtime handler was found.
float:Parser/schema placeholder only; no current runtime handler was found.
frame:Parser/schema placeholder only; no current runtime handler was found.
immortal:Parser/schema placeholder only; no current runtime handler was found.
jump:Parser/schema placeholder only; no current runtime handler was found.
knockback:Parser/schema placeholder only; no current runtime handler was found.
motion:Parser/schema placeholder only; no current runtime handler was found.
offset:Parser/schema placeholder only; no current runtime handler was found.
opacity_pulse:Parser/schema placeholder only; no current runtime handler was found.
participant:Parser/schema placeholder only; no current runtime handler was found.
pickpocket:Parser/schema placeholder only; no current runtime handler was found.
pull:Parser/schema placeholder only; no current runtime handler was found.
qte:Parser/schema placeholder only; no current runtime handler was found.
script:Parser/schema placeholder only; no current runtime handler was found.
shadow:Parser/schema placeholder only; no current runtime handler was found.
skew:Parser/schema placeholder only; no current runtime handler was found.
steal:Parser/schema placeholder only; no current runtime handler was found.
summon:Parser/schema placeholder only; no current runtime handler was found.
transform:Parser/schema placeholder only; no current runtime handler was found.
unison:Parser/schema placeholder only; no current runtime handler was found.

Generic Core examples that are not feature contracts

<ASH Encounter: 5> and <ASH CanEscape: true> appear as generic Core parser examples, but no active gameplay consumer was found in the supplied stack.

Scene-Level Target Feedback Overlay

Cursor, icon, and hit-result feedback now render in a Scene_Battle overlay above Spriteset_Battle and below the native WindowLayer. Scope graphics remain in the battlefield layer.

Cursor Frame Collision Fix

Animated targeting cursors now keep animation state in ASH-namespaced properties. RPG Maker MZ Sprite._frame remains the engine-owned render Rectangle.

Front / Back Positional Interactions

Build 0.015: ASH now uses the already-resolved FRONT/BACK impact relationship to compose positional traits from the attacking side and defending side. FRONT/BACK is captured before damage and before the defender turns.

Compact damage tags

<ASH Front Attack: 95%>
<ASH Back Attack: 150%>
<ASH Front Defense: 50%>
<ASH Back Defense: 150%>

Attack and Defense sources stack; they do not overwrite. Damage multipliers multiply. Example: Back Attack 150% × Back Defense 150% = 225% positional damage. Front Attack 95% × Front Defense 50% = 47.5% positional damage.

Defense means the positional damage taken multiplier: 150% means take more damage, 50% means take half damage.

Rich blocks

<ASH Back Attack>
damage: 150%
add_state: 5, 40%
lifesteal: 20%
stamina_damage: 10
steal_rate: 125%
</ASH Back Attack>
<ASH Back Defense>
damage_taken: 125%
state_rate: 75%
counter_chance: 30%
counter_skill: 42
throw_attacker: 100
throw_speed: 12
</ASH Back Defense>

Front blocks use <ASH Front Attack> and <ASH Front Defense>.

Where tags can live

Attack side: Skill/Item, Actor/Enemy, Class, Weapons, Armor, States. Defense side: Actor/Enemy, Class, Weapons, Armor, States. Every applicable source contributes.

Supported properties

PropertyStackingBehavior
damage, damage_multiplier, damage_takenMultiplyPositional damage multiplier.
add_state: ID, chance, stateEach rollsAdds a State after a successful positional hit.
remove_state: ID, chanceEach rollsRemoves a State after a successful positional hit.
state_rateMultiplyMultiplies positional state chances.
lifestealAddHeals attacker from actual positive HP damage.
counter_chanceAdd / cap 100%Queues at most one counter per target per damage node.
counter_skillSelected IDOptional counter Skill ID; otherwise normal Attack.
throw_attacker, knockback_attackerAdd distanceThrows attacker away from defender.
throw_speedLatestMovement speed for the throw.
stamina_damageAddRemoves ASH Stamina.
stamina_stealAddTransfers available ASH Stamina to attacker.
steal_rateMultiplyStored now for the future Steal system; no steal operation exists yet.

Affinity feedback defaults

ASH Battle Targeting 0.031 defaults selection Cursor + Icon + Tint ON, including the custom ASH selection path. selector_cursor: false, selector_icon: false, and selector_tint: false remain per-skill overrides. Hit affinity images remain off by default.

Front / Back Defense Reaction Timing

Build 0.016: Damage multipliers from Front/Back Defense still resolve before damage, but reactive defender effects can now be held and fired at an exact authored point.

Sequence command

positional_defense: auto
positional_defense: manual
positional_defense: trigger
positional_defense: trigger_next
positional_defense: clear

auto is the default. manual must appear before the damage node you want to hold. trigger fires all queued defense reactions. trigger_next fires one queued reaction FIFO. clear discards queued reactions.

Pre-damage vs timed

FRONT/BACK classification and damage/damage_taken multipliers are always resolved before damage. Timing control applies to defender-side reactive effects: add/remove State, Stamina damage/steal, defender lifesteal, counter, throw attacker, and custom/addon reactions.

Example

positional_defense: manual

pose: user, attack
damage: 10%

wait: 60

positional_defense: trigger

In this example the defense damage multiplier affects the hit normally, but counter/throw/state/etc. wait exactly 60 authored frames before they are released.

Defense reaction direction

Defense-block reactive effects act back on the attacker: defense add_state affects the attacker, defense stamina_damage affects the attacker, defense stamina_steal transfers attacker Stamina to the defender, defense lifesteal heals the defender from incoming HP damage, and counter/throw are performed by the defender.

Positional Trait / Defense Timing Parser Fix

Battle Sequences 0.055: positional_defense: is now a hard standalone command boundary, so manual, trigger, trigger_next, auto, and clear cannot be swallowed by a neighboring sequence step.

ASH also strips recognized <ASH Front Attack>, <ASH Back Attack>, <ASH Front Defense>, and <ASH Back Defense> blocks from the Action Execution body before parsing sequence commands. The original database note remains untouched, so the positional trait system still reads the blocks normally.

This means an accidentally nested positional block can no longer turn its internal damage: line into an unintended extra damage node.

Canonical layout

<ASH Front Attack>
damage: 75%
</ASH Front Attack>

<ASH Back Attack>
damage: 150%
</ASH Back Attack>

<ASH Action Execution>
...
positional_defense: manual
damage: 10%
wait: 60
positional_defense: trigger
...
</ASH Action Execution>

Deep Positional Throw + Counter Reactions

Build 0.017: Front/Back Defense reactions now have authored throw and counter behavior controls while preserving existing positional damage math and manual defense timing.

Throw properties

throw_attacker: 100
throw_direction: away
throw_speed: 12
throw_duration: 0
throw_collision_route: stop
throw_stamina: false
throw_wait: true
throw_pose: damage
throw_animation: 15

throw_wait:true makes positional_defense: trigger block until the thrown attacker finishes movement.

Counter properties

counter_chance: 30%
counter_skill: 42
counter_delay: 15
counter_face: true
counter_approach: 40
counter_speed: 10
counter_collision_route: pathfind
counter_timing: after_throw
counter_allow_positionals: false

counter_timing supports trigger, after_throw, and after_sequence. Counter chance is rolled only when the defense reaction is released, not when damage is first calculated.

counter_allow_positionals:false prevents the forced counter from generating its own FRONT/BACK positional interactions, which is useful for preventing reaction loops.

After-Throw Counter Completion Fix

Battle Actions 0.018: fixed the runtime error Cannot create property 'onComplete' on boolean 'true' when combining throw_attacker with counter_timing: after_throw.

ASH now attaches the counter continuation through the actual movement completion API, Movement.startMove(..., { onComplete }). throw_wait:true, counter delay, approach, facing, collision routing, and positional-loop suppression remain supported.

Positional Defense Ignore / Restore

Battle Actions 0.019 / Executor 0.073: a sequence can bypass the target's Front/Back Defense without disabling FRONT/BACK classification or attack-side positional bonuses.

positional_defense: ignore
damage: 100%

positional_defense: restore
damage: 100%

ignore skips the target's matching Front/Back Defense completely, including damage_taken, states, stamina effects, lifesteal, throw, counter, and custom defense reactions. restore (or auto) returns to normal behavior.

Pathfinding Recovery From Collision-Compromised Starts

Battle Movement 0.038: normal pathfinding can now recover when forced movement such as knockback leaves the battler touching or inside existing collision geometry.

ASH finds a nearby fully legal escape point, permits only the first segment to exit obstacles that already contained the start, then resumes ordinary pathfinding. New wall/battler collision, re-entry, battlefield bounds, Legal Regions, and final destination legality remain enforced.

This fixes repeated movement: back failures after a battler was knocked into a collision wall without turning pathfinding into collision bypass.

Sequence Control Flow + Conditions — Implemented 0.056 / 0.075

Status: Structural if / else if / else / end, nested branching, skipped-branch waits, last_damage, stored damage, script conditions, and grouped boolean logic have live-playtest coverage. Callable compatibility forms added in Executor 0.075 are implemented and static-harness tested, but still require the next live regression.

Branch structure

if: target.hp_rate <= 0.50
  xpopup: user, "LOW HP"
else if: target.state:4 AND last_damage > 500
  xpopup: user, "POISONED + BIG HIT"
else:
  xpopup: user, "OTHER"
end

Canonical commands are if:, else if:, else:, and end. else_if:/elseif: and endif/end_if are accepted aliases. Blocks may be nested. Inactive branches do not dispatch commands and do not create waits.

Operators

AND   OR   NOT
&&    ||   !
=  ==  ===  !=  !==  >  >=  <  <=
( ... )

Initial resolvable values

Battler properties use user. or target.: hp, mp, tp, mhp, mmp, atk, def, mat, mdf, agi, luk, level, alive, dead, hp_rate, mp_rate, tp_rate, stamina, stamina_max, max_stamina (alias), stamina_rate, actor_id, enemy_id, and class_id.

if: user.hp > 500
if: target.hp_rate <= 0.25
if: user.stamina >= 40
if: target.dead

Database / state / game values

Namespace forms remain supported:

variable:7
switch:12
user.state:4
target.state:4
user.weapon:3
user.weapon_type:2
user.armor:8
user.armor_type:4
user.actor:1
user.enemy:3
user.class:2
target.actor:1
target.enemy:3
target.class:2
common_event:5

Executor 0.075 also adds consistent callable forms:

variable(7)
switch(12)
state(target, 4)
state(user, 4)
weapon(user, 3)
weapon_type(user, 2)
armor(user, 8)
armor_type(user, 4)
actor(user, 1)
enemy(target, 3)
class(user, 2)
common_event(5)

Both styles are additive aliases over the same shared evaluator; existing namespace syntax is not removed. These values/booleans can participate in normal comparisons and AND/OR/NOT expressions.

Action-result values

last_damage
stored:MyHit
last_hit
last_miss
last_evade
last_critical
target_died
front
back
damage: 100%
if: last_damage > 500
  xpopup: target, "BIG HIT"
else:
  xpopup: target, "NORMAL HIT"
end

last_damage reuses the existing ASH Action context. stored:name reuses store_damage:/preserve_damage:; no second damage-result system was introduced.

Script / arbitrary calls

if: script("a.hp < b.hp && $gameParty.gold() >= 100")

script() (aliases js()/javascript()) evaluates an explicit JavaScript expression. Available locals include a (user), b (target), v (variables array), s (switch array), action, item, actionContext, selectedPoint, last_damage, stored, and ASH. Because this is arbitrary JavaScript, it is intended for trusted project authoring.

2026-08-26 live stress-test checkpoint

The first large live stress test passed boolean/grouping, NOT, user stats, target stats, last damage, stored damage, else-if selection, nested conditions, script evaluation, and a complex grouped AND/OR/NOT expression. It exposed three authoring gaps: callable switch()/variable(), callable state(who,id), and max_stamina. Executor 0.075 fixes those gaps and adds callable equipment/identity helpers at the same evaluator layer. Those 0.075 additions are static-tested and await live verification.

Extension API

ASH.Battle.Conditions.registerValue(name, resolver, options)
ASH.Battle.Conditions.registerNamespace(name, resolver, options)
ASH.Battle.Conditions.registerFunction(name, resolver, options)

Future addons can register new concepts such as enemy types, weather, body parts, break gauges, rows, or other resources without modifying the core evaluator.