ASH Authoring Reference
Local, source-audited reference for the current ASH RPG Maker MZ battle stack.
Current audited plugins
| File | Header | Syntax |
|---|---|---|
ASH_Core.js | Core Foundation 0.001 | Pass |
ASH_ConsoleLogCapture.js | Console Log Capture 0.001 | Pass |
ASH_BattleCore.js | Battle Core Foundation 0.002 | Pass |
ASH_BattleStamina.js | Battle Stamina 0.003 | Pass |
ASH_BattleDiagnostics.js | Battle Diagnostics 0.001 | Pass |
ASH_BattleMovement.js | Battle Movement 0.038 | Pass |
ASH_BattleTargeting.js | Battle Targeting 0.031 | Pass |
ASH_BattleSequences.js | Battle Sequences 0.056 | Pass |
ASH_BattleActions.js | Battle Actions 0.019 | Pass |
ASH_BattlePresentation.js | Battle Presentation 0.025 | Pass |
ASH_BattlePoses.js | Battle Poses 0.031 | Pass |
ASH_BattleActionExecutor.js | Battle Action Executor 0.075 | Pass |
ASH_SequencePresetManager.js | Sequence Preset Manager 0.002 | Pass |
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 / block | Structure | What it does | Notes / precedence | Example | Status |
|---|---|---|---|---|---|
<ASH Battler Sheet: ...> |
PresetName | Assigns the actor's battler sheet profile. | Runtime → Equipment → Class → Actor → default. | |
Supported |
<ASH Pose Set: ...> |
PoseSetName | Assigns the actor's reusable pose set. | Runtime → Equipment → Class → Actor → default. | |
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. | |
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. | |
Foundation |
Class Tab
| Note tag / block | Structure | What it does | Notes / precedence | Example | Status |
|---|---|---|---|---|---|
<ASH Battler Sheet: ...> |
PresetName | Assigns a class-level battler sheet profile. | Class beats Actor when no runtime/equipment override wins. | |
Supported |
<ASH Pose Set: ...> |
PoseSetName | Assigns a class-level pose set. | Class beats Actor when no runtime/equipment override wins. | |
Supported |
<ASH Pose Alias: ..., ...> |
semanticPose, concretePose | Maps a semantic pose for actors using this class. | Repeatable. Equipment → Class → Actor → Pose Set alias/fallback. | |
Supported |
Weapon Tab
| Note tag / block | Structure | What it does | Notes / precedence | Example | Status |
|---|---|---|---|---|---|
<ASH Pose Set: ...> |
PoseSetName | Equipment-level Pose Set override. | Equipment wins before Class/Actor. | |
Supported |
<ASH Pose Alias: ..., ...> |
semanticPose, concretePose | Equipment-level semantic pose override. | Repeatable. Equipment aliases win before Class/Actor. | |
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. | |
Supported |
<ASH Battler Image: ...> |
FileName | Overrides the actor's effective battle image while equipped. | `.png` is normalized away. | |
Supported |
<ASH Battler Sheet: ...> |
PresetName | Overrides the actor's active sheet profile while equipped. | Can be paired with Battler Image. | |
Supported |
<ASH Behind Sheet: ...> |
FileName | Adds a synchronized equipment attachment behind the body. | Repeatable. Built-in layer -100. | |
Supported |
<ASH Above Sheet: ...> |
FileName | Adds a synchronized equipment attachment above the body. | Repeatable. Built-in layer 100. | |
Supported |
<ASH Attachment: ..., ..., ...> |
FileName, Layer, OptionalSheetProfile | Adds a custom synchronized attachment layer. | Repeatable. Layer defaults to 0; third parameter optional. | |
Supported |
Armor Tab
| Note tag / block | Structure | What it does | Notes / precedence | Example | Status |
|---|---|---|---|---|---|
<ASH Pose Set: ...> |
PoseSetName | Equipment-level Pose Set override. | Equipment wins before Class/Actor. | |
Supported |
<ASH Pose Alias: ..., ...> |
semanticPose, concretePose | Equipment-level semantic pose override. | Repeatable. | |
Supported |
<ASH Battler Image: ...> |
FileName | Overrides the actor's effective battle image while equipped. | Works through arbitrary Armor equip slots. | |
Supported |
<ASH Battler Sheet: ...> |
PresetName | Overrides the actor's active sheet profile while equipped. | Works through arbitrary Armor equip slots. | |
Supported |
<ASH Behind Sheet: ...> |
FileName | Adds a synchronized equipment attachment behind the body. | Repeatable. Built-in layer -100. | |
Supported |
<ASH Above Sheet: ...> |
FileName | Adds a synchronized equipment attachment above the body. | Repeatable. Built-in layer 100. | |
Supported |
<ASH Attachment: ..., ..., ...> |
FileName, Layer, OptionalSheetProfile | Adds a custom synchronized attachment layer. | Repeatable. Layer defaults to 0. | |
Supported |
Enemy Tab
| Note tag / block | Structure | What it does | Notes / precedence | Example | Status |
|---|---|---|---|---|---|
<ASH Battler Image: ...> |
FileName | Replaces the enemy's runtime battler image while preserving the database image for editor preview. | Direct Enemy-note consumer exists. | |
Supported |
<ASH Battler Sheet: ...> |
PresetName | Assigns the enemy's battler sheet profile. | Used by the visual/custom-grid renderer. | |
Supported |
<ASH Pose Set: ...> |
PoseSetName | Assigns the enemy's pose set. | Enemy-specific pose configuration. | |
Supported |
<ASH Pose Alias: ..., ...> |
semanticPose, concretePose | Maps semantic poses to concrete enemy poses. | Repeatable. | |
Supported |
<ASH Positionals> ... </ASH Positionals> |
front/back/left/right block | Early positional metadata block. | Foundation only. Not the final authoritative Movement/facing contract. | |
Foundation |
Skill Tab
| Note tag / block | Structure | What it does | Notes / precedence | Example | Status |
|---|---|---|---|---|---|
<ASH Action Execution> ... </ASH Action Execution> |
Block of ASH sequence commands | Main executable action-sequence block. | All supported commands are documented below. | |
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. | |
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. | |
Supported |
All supported sequence calls
Valid inside <ASH Action Execution>, local <ASH Sequence: Name> blocks, and global preset bodies.
| Call | Positional parameters | Supported modifiers | Aliases | What 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 / block | Structure | What it does | Notes / precedence | Example | Status |
|---|---|---|---|---|---|
<ASH Action Execution> ... </ASH Action Execution> |
Block of ASH sequence commands | Main executable action-sequence block. | Uses the same parser/runtime as Skills. | |
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. | |
Supported |
<ASH Range: N> |
Non-negative number | Supplies the action's ASH range value to Targeting. | Same Game_Action.item() reader used by Skills. | |
Supported |
All supported sequence calls
Valid inside <ASH Action Execution>, local <ASH Sequence: Name> blocks, and global preset bodies.
| Call | Positional parameters | Supported modifiers | Aliases | What 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
Targets & Values
Target selectors
| Selector | Meaning |
|---|---|
| `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
| Syntax | Meaning | Example |
|---|---|---|
number | Literal numeric value | `125` |
+ / - prefix | Apply sign to the resolved expression | `-variable:7` |
percentage | Percentage of the target resource maximum | `25%` |
variable:N | RPG Maker variable value | `variable:7` |
last_damage / lastdamage | Most recent damage, target-aware where available | `last_damage` |
stored:name | Value saved with `store_damage:` | `stored:opening_hit` |
formula:expression | JavaScript-style numeric formula with `a`, `b`, `v`, `last_damage`, `stored` | `formula:a.atk * 2` |
bare formula expression | Accepted 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.
| Plugin | Command | Purpose |
|---|---|---|
ASH_SequencePresetManager | ImportJson | Imports a sequence-preset JSON file from the configured folder. |
ASH_SequencePresetManager | ExportJson | Exports manager or all-global presets to JSON. |
ASH_BattleDiagnostics | runActionExecutorTest | Development smoke test for the Action Executor. |
Preset resolution
- Local
<ASH Sequence: Name>in the current Skill/Item. - 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 mode | Accepted values | Meaning |
|---|---|---|
approach | approach, to, toward | Move toward the selected target and optionally stop at distance:. |
retreat | retreat, retraway, from, away | Move 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 call | Default pose while moving | Completion behavior |
|---|---|---|
moveTo | walk | idle |
moveBy | walk | idle |
approach / to / toward | walk | idle for movement-only use; attack only when a later mechanical offensive step is detected. |
retreat / retraway / from / away | walk | idle. Note: semantic retreat exists in the pose system, but Movement currently defaults to walk. |
home / return / returnHome | walk | idle |
originalHome / returnOriginal / returnOriginalHome / original | walk | idle |
setHome / updateHome / commitOrigin | None | Updates Current Home only; no pose request. |
resetHome | None | Resets Current Home to Original Home; no pose request. |
stop / cancel / stopMovement | None newly requested | Stops an active move at its current point; the active automatic movement completion returns to idle. |
finish / complete / finishMovement | None newly requested | Snaps the active move to its destination; the active automatic movement completion returns to idle. |
wait_movement | None | Wait/synchronization only. |
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.
| Call | Meaning |
|---|---|
jump: moveTo | Jump to absolute X/Y. |
jump: moveBy | Jump by relative X/Y. |
jump: to, toward, approach | Jump toward a target, optionally stopping at distance:. |
jump: retreat, away, from | Jump away from a target by the authored distance:. |
jump: home | Jump to Current Home. |
jump: originalHome | Jump 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.
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
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
| Call | Status |
|---|---|
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
| Property | Stacking | Behavior |
|---|---|---|
damage, damage_multiplier, damage_taken | Multiply | Positional damage multiplier. |
add_state: ID, chance, state | Each rolls | Adds a State after a successful positional hit. |
remove_state: ID, chance | Each rolls | Removes a State after a successful positional hit. |
state_rate | Multiply | Multiplies positional state chances. |
lifesteal | Add | Heals attacker from actual positive HP damage. |
counter_chance | Add / cap 100% | Queues at most one counter per target per damage node. |
counter_skill | Selected ID | Optional counter Skill ID; otherwise normal Attack. |
throw_attacker, knockback_attacker | Add distance | Throws attacker away from defender. |
throw_speed | Latest | Movement speed for the throw. |
stamina_damage | Add | Removes ASH Stamina. |
stamina_steal | Add | Transfers available ASH Stamina to attacker. |
steal_rate | Multiply | Stored 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.