Call Signs

In short

A call sign is a title like MOONSHOT worn on your name tag. Seven exist. They are free: reaching the account level is the only requirement. Pick one in CUSTOMIZE under CALL SIGN. Added in PR #37.

How it works

  • Unlock: MetaProgression.IsUnlocked(callSign) is simply AccountLevel >= requiredLevel. No points, nothing saved per sign. See XP and Levels.
  • Choosing: CUSTOMIZE has a CALL SIGN category: “Shown over your batter on the title screen. New ones open as your account levels up.” Each row shows the text and either a lock with LV n, WEARING, or a WEAR button.
  • Saved: the chosen id goes in SaveData.callSignId. If it is empty, unknown or locked, SelectedCallSign falls back to the first sign you can wear (ROOKIE).
  • Shown: in yellow above the name tag of the selected batter on the PLAY screen (MainMenuView.DrawNameTag).
  • Level up: the results screen adds a line NEW CALL SIGN: <text> for each sign the new level opens.

Numbers

idTextAccount levelTotal account XP needed
rookieROOKIE10
big_stickBIG STICK3275
moonshotMOONSHOT5850
tater_masherTATER MASHER71725
wall_breakerWALL BREAKER103600
scoreboard_smasherSCOREBOARD SMASHER158225
derby_kingDERBY KING2014725

XP needed comes from Leveling.AccountXpForLevel: 100 x steps + 75 x steps x (steps - 1) / 2, with steps = level - 1. The account level cap is 50. The list order in db.callSigns is the order the picker shows.

In the code

FileWhat it does
Assets/_Project/Scripts/Data/DefaultContent.csCallSign(id, text, level) lines
Assets/_Project/Scripts/Data/CallSignDefinition.csPlain serializable class: id, text, requiredLevel (default 1)
Assets/_Project/Scripts/Progression/MetaProgression.csIsUnlocked, SelectedCallSign, the NEW CALL SIGN line in AwardXp
Assets/_Project/Scripts/UI/CustomizeView.csDrawCallSigns: the picker
Assets/_Project/Scripts/UI/MainMenuView.csDraws the sign over the selected batter

Gotchas

  • Unlike other content, CallSignDefinition is not a ScriptableObject; call signs live inline in the ContentDatabase.
  • The call sign is not sent over the network: co-op players do not see each other’s call signs.
  • The id rookie is also Peapod’s batter id; they are in different lists, so they do not clash.
  • Resetting levels from the dev menu also clears callSignId.