Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Account email change and moving a character between accounts, in game

Open
#372 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
12/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
cpp
Domain
backend

Research direction

The work spans src/account_index.h (which needs an erase path before email or record changes), account_cache.cpp (owner lookup and account reads that must be refreshed), the account subcommands that refuse with "Character is already linked", and src/mob_progs/banker.cpp for vault selection. Done means the design questions in the issue are answered first, then a staff transfer command with the offline rule and cache refresh is in place. This is design-heavy, so start by discussing the open questions with the maintainers.

Written by the indexing model from the issue text.

Description

What is missing

Two account changes cannot be made from inside the game today, by players or by staff:

  1. Changing an account's email. There is no player path and no account subcommand for it.
  2. Moving a character from one account to another. account addchar and account migratechar only link a character that has no owner yet; both refuse with "Character is already linked to account ...". Now that every character is on an account, there is no in-game way to re-home one.

Both are currently done with tooling outside the game.

What is wanted
  • A way to change an account's email (who may do it, player or staff, is open).
  • A staff command to move a character from one account to another.
  • The character should most likely have to be offline for a transfer.
Things the code already tells us
  • The account index has no erase path. src/account_index.h notes that nothing deletes an account record or changes an email today, and that adding either "REQUIRES adding an erase path first", or the index keeps serving a path to a file that no longer exists.
  • Lookups are cached. The owner lookup (find_linked_character_owner_account) and account reads are memoized in account_cache.cpp; a transfer or email change has to refresh them.
  • The connection remembers its account. A playing character's connection holds the account name it logged in with, and several features read it: the player bank picks the vault from it (src/mob_progs/banker.cpp, PR #369), the Player Preferred Config reads it, and save_char picks the account from the index instead. While a character is in the game these must not disagree, which is the main reason to require the character to be offline for a transfer.
  • Bank vaults belong to the account, not the character. A transferred character leaves its old account's vault behind and uses the new account's. That needs to be a stated rule.
Open questions
  • Email change: player self-service (with verification of the new address), staff only, or both?
  • What happens to verification state, and to a pending password reset, when the email changes?
  • Transfer: what is refused (character online, target roster full, name clash, blocked account)?
  • What is logged, and at what staff level?

Raised while answering the review of #369.

Dominant language
C++
Stars
3
Forks
4
Avg merge
18h 36m
Merged PRs (30d)
87

Getting set up

  • Ships a Dockerfile or Docker Compose file
  • No pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from returnoftheshadow/RotS_Live

All issues in returnoftheshadow/RotS_Live

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.