Skip to content

Implement native property and community services #53

Description

@zoeyrose

Outcome

Replace scripted guild, house, apartment, storage, fee, guard, and jail behavior with explicit Go authorization and persistence domains.

Scope and invariants

  • Define stable guild/property/storage identities, membership/roles, ownership, access grants, fees, expiry, eviction, and audit rules.
  • Implement guild lifecycle and storage, houses/apartments, fee collection, guards, jail state, and relevant map admission hooks as typed services.
  • Keep authored NPC dialogue and locations in compiled content; services return structured permitted actions/state.
  • Use account/character roles and transactional item/currency services; never encode authorization only in map scripts or UI.
  • Bound membership, storage, permission entries, scheduled work, and historical/audit retention.

Acceptance criteria

  • Tests cover owner/member/guest access, role changes, overdue fees, eviction, concurrent storage, disconnect, transfer/deletion, map admission, and persistence failure.
  • Apartment ownership metadata supports the preserved client presentation issue without leaking hidden account data.
  • One representative property/community interaction is available by M3; complete corpus migration is M5.
  • Manifest rows for guild/house/apartment/guard/jail scripts have explicit mappings.
  • Operator overrides require typed permissions and audit events.

Dependencies and parallelization

Depends on #38-#41, #44, #49, and commerce #52 where fees apply. Guild and property subdomains can be implemented in parallel after shared authorization types freeze.

Independent implementation

Implement from the preserved issue-level/product behavior and independently authored fixtures. Do not copy or mechanically translate GPL server/Python code or tests. Replacement code is MIT; consumed content and assets keep their own licenses.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions