Skip to content

Phase 4 modernization: UUID-based sprite tracking + listener adoption #46

Description

@Chrizhermann

Deferred Phase 4 from #40 (EEex v1.0.0 upgrade umbrella). UUID adoption is also the partial enabler for #19 (clones/summons as casters), so this should land before #19's full feature work.

Scope

UUID-based sprite identity

Replace party-slot-index identity in BfBot.Exec._casters[] and persistence payloads with EEex_Sprite_GetUUID / EEex_Sprite_GetFromUUID. Survives party reorder mid-cast and save reload without sprite-pointer staleness.

  • BfBotExe._Advance caster resolution — currently caches CGameSprite userdata, freed across save reload (cf. Crash: pressing Stop after reloading a save mid-cast #38 fix, which works around this via name-comparison heuristics in _IsStateStale). UUID would resolve cleanly across reloads.
  • BfBotPer marshal payload — UUID lookups for cross-character preset references (e.g. spells targeting a specific name).

Actionbar listener

Adopt EEex_Actionbar_AddButtonsUpdatedListener in BfBotScn to refresh the cached spell list when the engine updates actionbar contents (kit change, memorized-spell change). Replaces the current cache-invalidation via QuickListsChecked / QuickListCountsReset / QuickListNotifyRemoved listeners; new API is the canonical hook.

Scripting-object listener

Opt-in EEex_AIBase_AddScriptingObjectUpdatedListener for cross-script-name tracking. Partial enabler for #19 (clones/summons distinguishable by script-name updates: Project Image clone = COPY, planetar = plangood, Simulacrum = TBD).

Non-goals

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions