• Show the attack dialog (Strike Mode + Aim + Additional Modifier) and resolve to the chosen inputs, or null if dismissed (or if there is no mode to offer). Side-effect-free.

    The strike-mode select is keyed by each mode's index in modes — the same convention the block dialog uses — because a strike-mode shortcode is unique only within its own weapon, so two weapons can both offer a swing.

    Parameters

    • title: string

      The dialog window title.

    • aimChoices: Record<string, string>

      The body-part aim options.

    • defaultAim: string

      The pre-selected aim shortcode.

    • modes: sohl.entity.strikemode.StrikeModeBase[]

      The strike modes to offer, in display order.

    • defaultModeIdx: number

      The pre-selected strike-mode index in modes.

    Returns Promise<AttackDialogResult | null>

    The chosen inputs, or null if the dialog was dismissed.