From The Mana World

Assumptions

  • There is a set of one on one PvP arena maps
    • PvP arena maps have the no_save flag set
      • This means if someone dies or disconnects there, they will not get back into the game there and cannot disrupt future matches
    • one on one maps are 50 x 50 tiles
    • There are 4 possible start positions on a one on one map
      • They should be somewhat equally far from each other
      • A player is warped to a random start position on the map
  • You can play for fame or money
    • You can play for 0 money as a practice match
    • Only one fame match per day per character
  • You can only invoke the related atcommands only from the Hurnscald map
  • The ladder is viewable as a .txt on the web server

Registration

Players are registered for the PVP ladder automatically at lvl80

  • Their ELO is set to 1000
  • Their PLAYED_ONE_ON_ONE_FAME_MATCHES is set to 0
  • Their PLAYED_ONE_ON_ONE_MONEY_MATCHES is set to 0
    • They are considered a newbie until they have played 20 fame matches (this 20 match separation comes from the ELO specification)
      • Newbies are not shown on the ladder, even though they have a real ELO
      • After 20 fame matches a player is ranked and shows up on the ladder

Challenging

  • @challenge <nick> <map> <'fame'|amount_money>
    • Fails if
      • Challenged player does not exist
      • Challenged player is not at least lvl80
      • Either player already has a challenge currently (bool CHALLENGED ?)
      • Challenged player does not have enough money for the money challenge
      • Both players are not on the Hurnscald map
      • Either player has LAST_PLAYED_ONE_ON_ONE_FAME_MATCH == today
    • The challenged player is notified by a server message of challenging player rank, ELO (fame) and amount of played fame and money matches
    • The challenged player has 5min to respond to the challenge or the challenge expires
      • The server message to the challenged player repeats every minute

Accepting / declining a challenge

  • @accept_challenge (@ac ?)
  • @decline_challenge (@dc ?)

A challenge is accepted

  • If the requested ladder map is currently free (recheck every 1min)
    • Their status in the queue for the particular map should be announced to them every 1min
      • If either player is disconnected during queueing, a static -10 fame (ELO) penalty is applied to that player
        • Both players are removed from the queue
        • No bonus fame (ELO) for the other player
    • Upon succesfully starting a match, set the appropriate LAST_PLAYED_*_MATCH (YYYY-MM-DD) for both players
      • Set PLAYED_*_MATCHES++
    • Give a countdown of 10 seconds to both players as whispers and warp them to the map
      • Lock the map for the duration of the match
      • Start a countdown of 5 minutes upon the match starting

End of battle

  • After result calculation, announcement and a 30 second wait period, warp players out and free the map lock
  • If 5 minutes are full and both players are alive
    • -100 ELO (fame) static penalty for both, no real ELO calculation
  • A player disconnects or times out or dies
    • Remaining player wins, count new ELO (fame) for both