Batters
In short
Four bean batters. Peapod is free; the others cost meta points (40, 60, 90) and can only be bought once your account level reaches 2, 4 or 6. Each batter’s stat modifiers and batting style (trajectory, pull side, curve) define how they hit, some start every run with a shop item, and each earns small trait perks at character levels 2, 5 and 10.
How it works
-
Picking: on the PLAY screen you page through batters. A locked batter shows
LOCKED - <cost> PTS(orLOCKED - ACCOUNT LV <n>while the level is too low) and a button: REACH LV n (grey), UNLOCK with the points gem icon and the price (purple, #38), SELECTED or SELECT. Under the description a yellow line names the batting style, e.g. “HIGH TRAJECTORY - PULL HITTER” (MainMenuView.StyleLabel). See Meta Progression and Customization. -
Buying:
MetaProgression.TryBuy(batter)needsCanBuy(already owned, or account level >=requiredLevel) and enough points. Points are spent throughTryUnlock(id, unlockCost). -
In a run: the batter’s
modifiersgo into the run’s stats first, then their level perks, then upgrades and synergies (RunState.RecalculateStats).startingUpgradeIdsare owned from the start of every run (and in the batting cage). -
Batting style (#46, Mario Superstar Baseball style): three fields on
BatterDefinition, read byBatting/HitTableswhen a swing is resolved. See Batting Explained.trajectory(HitTrajectoryLow / Mid / High): High shifts every launch-angle range up 4°, Low down 4° (HitTables.TrajectoryShiftDeg).hitDirection(HitDirectionPull / Mid / Push): x exit velocity by where the ball goes, sampled every 22.5° from the pull line (spray -45°, a righty’s left field) to the opposite line (+45°) and blended between: Pull 1.02, 1.05, 1, 0.95, 0.85; Push the mirror (0.85, 0.95, 1, 1.05, 1.02); Mid always 1.curve: x the ball’s sideways hook or slice in flight (HitTables.CurveAccel); 1 = normal, about 1.6 = “SUPER CURVE” (the label shows from 1.3).
-
Level perks: each batter has their own character level (max 10) from XP. Every perk at or below their level applies for the whole run. See XP and Levels.
-
Model: all four use
BatterModel.Human: a rigged Blender bean (riggedModel) that gets a Humanoid avatar at runtime and plays the same clips. String Bean got a new model in #44 (Characters/StringBean.fbx): flat toon colours with no texture (riggedTexturenull), smoother neck and waist weights, and a game-engine style skeleton (pelvis,spine_01tospine_03,clavicle_l/r,upperarm_l…) thatBeanRigmaps alongside the older bean names; his hat socket isSOCKET_Head.shapeis used only whenCharacterLibrary.useBeans(off in the shipped asset) swaps everyone to the code-built beans. See Characters and Rigs. -
Index: the main menu INDEX lists every batter under BATTERS with a subtitle of “Starter”, “Account level n” or “Unlockable” and their stat modifiers (Index Screen).
Numbers
| id | Name | Unlocked by default | Price | Account level | Stat modifiers | Starting kit |
|---|---|---|---|---|---|---|
rookie | Peapod | yes | 0 | none | none | Maple Bat (maple_bat) |
slugger | Baked Bean | no | 40 PTS | 2 | +20% Power, -15% Timing Window | none |
contact | String Bean | no | 60 PTS | 4 | +30% Contact, -8% Power | Sweet Spot Tape (sweet_tape) |
grinder | Pinto | no | 90 PTS | 6 | +2 Extra Outs (flat) | Lucky Penny (lucky_penny) |
Batting style (set by Style(...) in DefaultContent)
| Batter | Trajectory | Hit direction | Curve | Label on the PLAY screen |
|---|---|---|---|---|
| Peapod | Mid | Mid | 1 | MID TRAJECTORY - ALL FIELDS |
| Baked Bean | High | Pull | 1 | HIGH TRAJECTORY - PULL HITTER |
| String Bean | Low | Push | 1.6 | LOW TRAJECTORY - OPPO HITTER - SUPER CURVE |
| Pinto | Mid | Mid | 1 | MID TRAJECTORY - ALL FIELDS |
Defaults for a new BatterDefinition: Mid, Mid, curve 1.
Character level perks (each applies from that level on)
| Batter | Level 2 | Level 5 | Level 10 | Total at level 10 |
|---|---|---|---|---|
| Peapod | +2% Timing Window | +2% Timing Window | +2% Timing Window | +6% Timing Window |
| Baked Bean | +1% Power | +1% Power | +1% Power | +3% Power |
| String Bean | +2% Contact | +2% Contact | +2% Contact | +6% Contact |
| Pinto | +1 Coins per HR | +1 Coins per HR | +1 Extra Outs | +2 Coins per HR, +1 Extra Out |
Descriptions and look
| Name | Description | Colour / accent | Shape | Rigged model / texture | Eye height / spacing (m) |
|---|---|---|---|---|---|
| Peapod | ”Quick, technical, slippery. Starts with a Maple Bat.” | (0.95, 0.82, 0.32) / (0.2, 0.42, 0.9) | Peapod | Characters/Peapod / Characters/peapod_albedo | 0.62 / 0.18 |
| Baked Bean | ”Heavy hitter. High power, slow but strong.” | (0.98, 0.72, 0.26) / (0.85, 0.2, 0.2) | Baked | Characters/BakedBean / Characters/baked_bean_albedo | 0.86 / 0.26 |
| String Bean | ”Fast, agile, high contact, tricky movement.” | (0.45, 0.76, 0.28) / (0.9, 0.25, 0.25) | String | Characters/StringBean / none (flat toon colours) | 1.25 / 0.109 |
| Pinto | ”Tough as nails: extra outs every round.” | (0.74, 0.52, 0.32) / (0.97, 0.94, 0.86) | Pinto | Characters/Pinto / Characters/pinto_gradient | 1.0 / 0.2 |
Eye height and spacing place and size glasses cosmetics on the rigged model (0 = estimate).
In the code
| File | What it does |
|---|---|
Assets/_Project/Scripts/Data/DefaultContent.cs | Batter(...), RiggedBean(...), requiredLevel lines, Style(...), Perks(...) |
Assets/_Project/Scripts/Data/BatterDefinition.cs | Fields, BeanShape, BatterModel, HitTrajectory, HitDirection, LevelPerk |
Assets/_Project/Scripts/Batting/HitTables.cs | LaunchRanges (trajectory), DirectionFactor, CurveAccel |
Assets/_Project/Scripts/Batting/BeanRig.cs | Maps either bone naming to the Humanoid avatar; hat socket names |
Assets/_Project/Scripts/Progression/MetaProgression.cs | IsUnlocked, CanBuy, TryBuy, LevelBonus, NextPerk |
Assets/_Project/Scripts/UI/MainMenuView.cs | Name tag, style line, stat bars (POWER, CONTACT, TIMING), unlock buttons, “+n OUTS EVERY ROUND” |
Gotchas
- Ids are not names:
rookieis Peapod,sluggeris Baked Bean,contactis String Bean,grinderis Pinto. The idsluggeris also the Slugger synergy’s id (different list), androokieis also a call sign id. - Unlock ids share one namespace with upgrades and cosmetics in
SaveData.unlockedIds. - Pinto’s extra outs come only in whole numbers, which is why his first two perks are coins and the out comes at level 10.
- Owning a batter always counts, even if a later change raises their
requiredLevel. - Starting kit items count toward synergy tags (see Synergies).
hitDirectionalways treats spray -45° as the pull side: every batter bats right-handed, so “Pull” means left field.- The old String Bean texture (
string_bean_hq_albedo.png) was deleted in #44;RiggedBeanis passednullfor it.
Related
- XP and Levels: account and character levels
- Meta Progression: meta points and unlocks
- Stats: what each stat does
- Batting Explained: how trajectory, direction and curve shape a hit
- Upgrades: the starting kit items
- Add a Batter