Techniques
The key words MUST, MUST NOT, and MAY are used as in RFC 2119.
Tiers
Every technique has a tier (TechniqueManager.TECHNIQUES[id].tier):
- basic — Foie, Barta, Zonde, Resta, Anti, Shifta, Deband, Jellen, Zalure. These are the only techniques that are learnable, assignable to the action palette, and listed in menus.
- mid / advanced — the gi-/ra- family (Gifoie, Rafoie, Gibarta, Rabarta, Gizonde, Razonde, …) plus Grants/Megid. These are charge-only: there is no disk to learn them and they are NOT separate entries anywhere in the UI.
Charge model
A palette technique is cast by tap or hold:
- Tap (released before
TECH_CHARGE_THRESHOLD) casts the base technique. - Hold past the threshold casts the charged variant, resolved through
TechniqueManager.CHARGE_MAP(e.g.foie → rafoie). The charged variant MUST be reachable only this way. - A mid-charge technique MUST be cancelled if the avatar is hit (see Player State).
UI listing (normative)
The action palette picker and the Start-menu Techniques screen MUST list only tier == "basic" techniques. The gi-/ra- variants MUST NOT appear as their own rows — they are an effect of charging a base tech, not a thing you select or learn. A screen that wants to surface the charge relationship MAY show it as a base → charged pairing in the detail view (PSO's original Techniques screen drew the base tech, a charge arrow, then the charged result), but the selectable list stays base-only.
This is the contract behind hiding gi-/ra- from the Start menu: the list was looping all of TECHNIQUES unfiltered; it now filters to base tier, matching the palette.
Scope
PP costs, elements and status procs, and level scaling per learned disk. Disks learned from the item shop unlock basic techniques only.
Implemented by
scripts/3d/player/player.gd(Player) — the hold-to-charge lifecycle (_on_palette_pressed/_on_palette_released, the per-frame charge timer in_physics_processcrossingTECH_CHARGE_THRESHOLD);_cast_techniquechecks learned level + PP cost, deducts PP, and enters the cast;_spawn_technique_effectdispatches to the per-spell spawners (_spawn_foie,_spawn_gifoie,_spawn_rafoie,_spawn_barta,_spawn_gibarta,_spawn_rabarta,_spawn_zonde,_spawn_gizonde,_spawn_razonde).scripts/autoloads/technique_manager.gd(TechniqueManager) — the technique table (TECHNIQUES), learned-level lookup (get_technique_level), and the tap-vs-charged mapping (get_charged_technique/get_base_technique) plus disk learning used by the shop.
A technique cast runs as the ATTACKING state of the Player State Machine; a mid-charge technique is cancelled if the avatar is hit.