Skip to content

Repository files navigation

mod-arena-rating-memory

An AzerothCore module that remembers each player's personal arena rating per arena team. Leave a team and rejoin it later, and you get your old rating back instead of starting over.

What it does

Without this module, leaving an arena team throws your personal rating away. Rejoin and you start from the server default, exactly like someone who has never played for that team.

With it:

  1. You have 1800 personal rating in Team A.
  2. You leave Team A and join Team B, where you have never played — you start at the normal default there.
  3. You leave Team B and rejoin Team A — you are back at 1800.

The memory is per team, not per bracket. Two different 2v2 teams keep separate ratings for you.

The rating you get when joining

PR = max(remembered rating, starting rating a brand new member would get)

The second term is the value the core computed for that join, so a returning member is never worse off than a stranger joining the same team, and a server that changed what a new member starts with is followed automatically. With default settings (arena season 6 or later, Arena.ArenaStartPersonalRating = 0):

Remembered Team rating You get Why
500 450 500 remembered rating wins
500 600 500 remembered rating wins
500 1200 1000 a new member of a 1000+ team would start at 1000
1100 900 1100 remembered rating wins
1200 1500 1200 remembered rating wins

A player with no memory for a team is unaffected — the module does nothing and the core's normal behaviour applies.

The memory is symmetric: a rating you dropped comes back with you as well as one you earned. Without this module a player can reset a bad personal rating by leaving a team and rejoining it, and that door is now closed.

What is not restored

Only the personal rating. Week and season games and wins still reset when you rejoin, exactly as they do without the module.

That matters for arena points: the core only pays them to members who played at least 30% of the team's games that week, so leaving and rejoining mid-week can cost you the payout until you have played those games back.

When memory is forgotten

Event Memory
You leave or are kicked from the team kept — this is the point of the module
You rejoin kept, so it works again next time
The team is disbanded deleted
A season reset wipes all teams (.arena season deleteteams) deleted
The character is deleted deleted

Cleanup is done by ON DELETE CASCADE foreign keys rather than by a background task, so it happens in the same database transaction that removes the team. There is nothing to schedule and nothing that can drift out of sync.

Requirements

AzerothCore with the ArenaScript hooks OnGetStartPersonalRating and CanSaveToDB, and a characters database using InnoDB (the default).

OnGetStartPersonalRating was added in azerothcore-wotlk#27069, so the module needs a core at least that recent.

Installation

cd path/to/azerothcore/modules
git clone https://github.com/azerothcore/mod-arena-rating-memory.git
cd path/to/azerothcore/build
cmake ../ -DCMAKE_INSTALL_PREFIX=/path/to/azerothcore/env/dist/ -DTOOLS=0
make -j $(nproc)
make install

The SQL is applied automatically by the database updater on the next worldserver start.

Configuration

Copy conf/mod_arena_rating_memory.conf.dist to mod_arena_rating_memory.conf in your config directory and edit it there. Defaults work out of the box.

Option Default Meaning
ArenaRatingMemory.Enable 1 Master switch
ArenaRatingMemory.Announce 0 Tell players on login that the module is running

Setting ArenaRatingMemory.Enable = 0 makes the module completely inert: it stops recording as well as restoring. If you leave it off for a while, players will leave teams unobserved and the stored ratings will go stale. Clear the table before switching it back on:

DELETE FROM `mod_arena_rating_memory`;

The next server start repopulates it from everyone currently in a team.

Commands

Both sit under the core's .arena command and only touch this module's table. Neither can change a player's live arena rating.

Command Level What it does
.arena ratingmemory show [player] Game Master Lists every remembered rating for that character, with team id, team name and when it was last updated
.arena ratingmemory clear [player] [teamId] Administrator Deletes the remembered ratings for that character, or just the one for a given team

Both default to your current target or yourself when no player is given, and both work from the console.

Clearing the memory of a player who is still in the team is temporary: their rating is recorded again after their next match. Clearing is meant for teams they have already left.

For tracing a restore as it happens, enable the module's debug log in worldserver.conf:

Logger.module.arenaratingmemory=5,Console Server

Notes

  • 1v1 arena. If you run mod-1v1-arena, its teams are real persisted arena teams, so they are covered too. In practice the effect is limited: that module destroys and recreates a player's 1v1 team whenever they make a new one, which forgets the rating along with the team.
  • Solo queue. mod-arena-3v3-solo-queue gives every player a persistent one-man arena team, so those teams do go through this module. It has no visible effect there: that module sets each member's personal rating to the team rating after every match and overrides personal rating reads with the team rating, so there is no independent value left to remember. The throwaway teams it builds for the match itself are skipped, like the ones the battleground queue makes.
  • mod-glicko2-mmr. If that module is enabled it takes over personal rating updates after a match, so the values recorded here are the ones it produces. The two have not been tested together.
  • Because mod_arena_rating_memory references arena_team, InnoDB will refuse DROP TABLE and TRUNCATE TABLE on it while the module table exists. Drop mod_arena_rating_memory first if you ever need to do that by hand.

Uninstalling

DROP TABLE `mod_arena_rating_memory`;

Core tables are left untouched.

License

Released under AGPL 3.0.

About

Remembers a player's personal arena rating per arena team, so rejoining a team restores the rating instead of resetting it

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages