mirror of
https://github.com/Corfirean/coa-server-manager.git
synced 2026-11-11 03:51:01 +00:00
8.5 KiB
8.5 KiB
Warcraft Reborn Portable Characters Audit & Semantic State
1. Historical Baseline
The released v0.7.0 master branch codebase contained foundational support for local realm execution:
- Mode:
Mode::Reborn - Realm ID:
3 - Databases: characters DB
acore_characters_reborn, world DBacore_world_reborn, shared auth DBacore_auth - Policy: Reborn runs as the active primary realm on the main world port (8085). Simultaneous execution with CoA/Wildcard is strictly unsupported (
"Simultaneous startup supports CoA and Wildcard only.").
Before the multi-ruleset implementation, portable character transfers into Warcraft Reborn were temporarily blocked by:
// crates/coa-core/src/portable/realm/mod.rs
Mode::Reborn => Err(PortableError::Invalid("Portable characters are not supported on Warcraft Reborn realms yet.".into())),
2. Current MR3 Implementation
In MR1.1, MR2, and MR3, generic multi-ruleset infrastructure was completed and enabled for Reborn:
- Ruleset Identity:
Ruleset::Rebornestablished acrosscoa-core,coa-registry-proto,coa-control-proto, and frontend TypeScript models ("reborn"wire value, display name"Warcraft Reborn"). - SQLite Storage: Migration
009_multiruleset.sqlupgrades released databases to permitrebornincharacterCHECK constraints without dropping existing character rows or foreign keys. - Collections:
reborn:appearanceandreborn:vanitydefined and carried under allowlist incarried_kind_for. Partitioned under(profile_id, 'reborn', kind). - Wire Protocols: Control Protocol v2, Session Protocol v3, and Collection Protocol v2 bind
ruleset: Rulesetexplicitly in all messages. - Fail-Closed Routing & Ingress:
srv-X:rebornresolves strictly to the Reborn realm and fails closed if inactive. HostService rejects malformed server-id ruleset suffixes. - Automated Verification: End-to-end claiming, export, snapshot import, runtime session lifecycle, intermediate/final checkpoints, and logout sync pass.
- Three-Space Isolation: Torture fixtures prove zero mutation across rulesets:
- Reborn character -> CoA / Wildcard realm (rejected with zero mutation).
- CoA / Wildcard character -> Reborn realm (rejected with zero mutation).
- Reborn collection rejects foreign namespaced entries (
coa:*,wildcard:*).
3. Actual Reborn Semantic-State Audit
3.1 Gameplay Identity and Class Architecture
Warcraft Reborn in this core is configured via CoA.ClassModel = "coa wcr" / wcr mode:
- Classes in Warcraft Reborn are standard classic WoW classes (Warrior, Paladin, Hunter, Rogue, Priest, Death Knight, Shaman, Mage, Warlock, Druid; class IDs 1..11) rather than CoA custom classes (Barbarian, Witch Doctor, etc., IDs 12..32).
- Reborn spells, class abilities, talent trees, and creature summons use dedicated spell/creature ID ranges and corrections (e.g.
REBORN_CREATURE_OFFSET = 1100000, spell twin scripts), which operate on standard AzerothCore character persistence structures. - Reborn characters use the exact same character persistence schema (
acore_characters_reborn) as vanilla/CoA character databases, cloned directly viadb.clone_structure("acore_characters", &stage_chars, &cache)incrates/coa-core/src/realms.rs.
3.2 Table & State Classification Matrix
| Category / State | Database Table(s) | Portable Character Mapping | Classification |
|---|---|---|---|
| Identity (name, race, class, gender) | characters |
PortableCharacter.name, .race, .class, .gender |
Already covered by generic PortableCharacter |
| Progression (level, XP, money) | characters |
Progression.level, .xp, .money |
Already covered by generic PortableCharacter |
| Inventory & Equipment | character_inventory, item_instance |
Item records, container links, slot indices, item entry |
Already covered by generic PortableCharacter |
| Enchants, Gems, Random Properties | item_instance (enchantments, randomPropertyId, durability) |
Item.enchantments, random_property_id, durability |
Already covered by generic PortableCharacter |
| Bags & Bank | character_inventory (bag slots, bank slots) |
Item container slots; personal bank slots |
Already covered by generic PortableCharacter |
| Spells | character_spell |
PortableCharacter.spells (array of spell IDs) |
Already covered by generic PortableCharacter |
| Talents | character_talent |
PortableCharacter.talents (spec, talent IDs, ranks) |
Already covered by generic PortableCharacter |
| Glyphs | character_glyphs |
PortableCharacter.glyphs (spec, slot, glyph ID) |
Already covered by generic PortableCharacter |
| Action Bars | character_action |
PortableCharacter.actions (button, action, type) |
Already covered by generic PortableCharacter |
| Skills & Weapon proficiencies | character_skills |
PortableCharacter.skills (skill ID, value, max) |
Already covered by generic PortableCharacter |
| Quests (Active & Rewarded) | character_queststatus, character_queststatus_rewarded |
Quest records, objective counters, rewarded list |
Already covered by generic PortableCharacter |
| Reputation | character_reputation |
Reputation records (faction ID, standing, flags) |
Already covered by generic PortableCharacter |
| Pets & Pet Spells | character_pet, pet_spell |
Pet records, entry, name, spells |
Already covered by generic PortableCharacter |
| Character Settings & Keybindings | character_settings, character_account_data |
Setting records (source, data payload) |
Already covered by generic PortableCharacter |
| Vanity / Transmog Collections | account_appearance_collection, account_vanity_collection |
reborn:appearance, reborn:vanity collections |
Account-wide Reborn collection |
| Active Auras / Buffs | character_aura |
Not persisted in portable snapshot | Realm-local and intentionally not portable (refreshed on login) |
| Spell Cooldowns | character_spell_cooldown |
Not persisted in portable snapshot | Realm-local and intentionally not portable |
| Daily / Weekly Quest Resets | character_queststatus_daily, weekly, monthly |
Not persisted in portable snapshot | Realm-local and intentionally not portable |
| Instance Bindings | character_instance, character_homebind |
Not persisted in portable snapshot | Realm-local and intentionally not portable |
| Battleground / Arena Ratings | character_arena_stats, character_battleground_random |
Not persisted in portable snapshot | Realm-local and intentionally not portable |
| Manastorm / Challenge states | ascension_manastorm_*, coa_character_challenge |
Classified as Blocking if active |
Blocking (blocks export while active challenge exists) |
| Custom Reborn Tables | None exist in database | N/A | Irrelevant (no custom tables in acore_characters_reborn) |
3.3 Reborn Extension Requirement Decision
Reborn extension required: NO
Rationale:
- Warcraft Reborn builds persistent character state entirely within standard AzerothCore character tables (
characters,character_spell,character_talent,character_action,character_skills,character_inventory,item_instance,character_reputation,character_pet). - There are no separate Reborn-specific character tables in
acore_characters_reborn(the schema is identical toacore_characters). - Reborn class abilities, spells, and talent configurations are encoded natively via standard spell IDs and talent IDs supported by
PortableCharacter.spellsandPortableCharacter.talents. - Character settings (such as build selections or client UI configs) persist through
character_settings, which is already captured inPortableCharacter.settings. - Transmog and cosmetic appearance selections are synchronized cleanly via the
reborn:appearanceandreborn:vanityaccount collections. - Therefore, adding a custom typed extension is not needed and would introduce redundant schema without semantic benefit. The generic
PortableCharactermodel provides 100% semantic continuity for Reborn character builds.
4. Remaining Manual Verification
- Combined Physical Real-Client Gate:
- Live client connection to a running Warcraft Reborn realm.
- Character creation on Reborn, progression, claiming to Manager.
- Transfer/import to a secondary Reborn realm and runtime session verification.
- Verification that CoA and Wildcard realms remain completely isolated.
- Status: PENDING COMBINED MANUAL GATE.