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 simplyAccountLevel >= 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,SelectedCallSignfalls 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
| id | Text | Account level | Total account XP needed |
|---|---|---|---|
rookie | ROOKIE | 1 | 0 |
big_stick | BIG STICK | 3 | 275 |
moonshot | MOONSHOT | 5 | 850 |
tater_masher | TATER MASHER | 7 | 1725 |
wall_breaker | WALL BREAKER | 10 | 3600 |
scoreboard_smasher | SCOREBOARD SMASHER | 15 | 8225 |
derby_king | DERBY KING | 20 | 14725 |
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
| File | What it does |
|---|---|
Assets/_Project/Scripts/Data/DefaultContent.cs | CallSign(id, text, level) lines |
Assets/_Project/Scripts/Data/CallSignDefinition.cs | Plain serializable class: id, text, requiredLevel (default 1) |
Assets/_Project/Scripts/Progression/MetaProgression.cs | IsUnlocked, SelectedCallSign, the NEW CALL SIGN line in AwardXp |
Assets/_Project/Scripts/UI/CustomizeView.cs | DrawCallSigns: the picker |
Assets/_Project/Scripts/UI/MainMenuView.cs | Draws the sign over the selected batter |
Gotchas
- Unlike other content,
CallSignDefinitionis not a ScriptableObject; call signs live inline in theContentDatabase. - The call sign is not sent over the network: co-op players do not see each other’s call signs.
- The id
rookieis also Peapod’s batter id; they are in different lists, so they do not clash. - Resetting levels from the dev menu also clears
callSignId.
Related
- XP and Levels: account XP and levels
- Customization: the CUSTOMIZE screen
- Cosmetics: the other level-gated items