Moon Stadium

In short

Map 5 of 5. “Low gravity. Bonus locations out past the stands: hit the space station!” Gravity x0.75 against 380 / 450 / 380 ft fences and a 20 ft wall. Its targets add flat points (+50 to +200) instead of multiplying, and four of them float in the air so the ball must fly through them.

How it works

  • Unlock: last in db.ballparks. Opens when Midnight Yard is beaten on Medium. It opens nothing further.
  • Environment: gravityScale = 0.75 (9.81 x 0.75 m/s²), sky = SkyPreset.Space (dark sky, 260 stars, and a blue and green Earth sphere hanging in the sky), ground = GroundStyle.Lunar (cratered moon dust outside, dark regolith field, a landing pad at the plate). A full stadium with a half-full crowd.
  • Special ball: Anti-Gravity on curveball, sinker and changeup: the pitch’s drop turns into a rise. See Special Balls.
  • Bonus locations: every target is made with Bonus(...): multiplier = 1, a flat bonus, and outsideStadium = true, so the stands do not move back for them. Ground ones pay when the ball lands inside the radius; aerial ones (heightM > 0) pay when the flight path passes within the radius of that point before landing. If several are earned, the highest bonus wins (ScoreCalculator.FindTarget). See Scoring.
  • Placement: a code comment says the spots were placed by simulating moon-gravity home runs, so +50 is hit by about 6% of home runs, +100 about 3.5 to 4%, +150 about 2%, +200 about 1%.
  • Dressing: moon.dressing = "Parks/moon_Dressing" still does not exist at 45a2167, so ParkLayouts.BuildMoon builds it from Resources/Props/Moon/ (seeded System.Random(2077)): a prop on each bonus location sized to its zone, a MeteorShower effect for the Meteor Shower, 16 CraterRim mounds at 830 to 900 ft all the way round, 4 Mesas on the horizon, and up to 70 boulders kept out of the bonus zones.
  • Pitchers: the shared pool for innings 1 to 8. Because Anti-Gravity rides only curveballs, sinkers and changeups, pitchers here lean on those pitches (80% of draws, about 70% of pitches; PitcherAI.FavouredShare). Final boss: moon.finalBossId = "alien", so inning 9 is always BOSS: The Alien (only here): curveballs 2, sliders 2, fastballs 1, knuckleballs 1, speed x1.05, no special ball of his own yet. See Pitchers and Bosses.

Numbers

WhatValueWhere to tune
id / display namemoon / Moon StadiumDefaultContent
Unlock order5 of 5 (index 4), goal multiplier x1.74900625order of db.ballparks
LF / CF / RF380 / 450 / 380 ftPark(...)
Wall height20 ftPark(...)
Gravity / windx0.75 (card: “Gravity x0.75”) / nonegravityScale
Night / skyno / SpaceisNight, sky
Ground / wallLunar / Paddedground, wallStyle
Grass / wall colour(0.58, 0.6, 0.7) / (0.24, 0.26, 0.34)Park(...)
Seats / crowd density(0.45, 0.45, 0.5) / 0.5seatColor, crowdDensity
Special ballAnti-Gravity, curveball / sinker / changeup, chance 1/3moon.balls
Final bossThe Alien (alien): no ball, no handicapmoon.finalBossId
Batter modifiersnonebatterModifiers
Bleachers start30 ft behind the wall (the minimum; bonus locations are outside the stadium)StadiumLayout.GapFt

Bonus locations (all multiplier 1)

LabelSprayDistanceRadiusHeightPaysProp
Rocket Boost-36°420 ft38 ft24 m (aerial)+50RocketBoost_Bob
Radiation Pool30°555 ft55 ftground+50RadiationPool
Asteroid Crates-18°460 ft34 ft28 m (aerial)+100Asteroid_Bob
Lunar Base-28°565 ft48 ftground+100LunarBase
Satellite Dish40°540 ft42 ftground+100SatelliteDish
Space Station6°500 ft38 ft32 m (aerial)+150SpaceStation_Bob
Crystal Caverns-8°600 ft42 ftground+150CrystalCaverns
Meteor Shower24°520 ft32 ft32 m (aerial)+200MeteorShower effect

Inning goals (inning 3, 6, 9 are boss innings)

Difficulty123456789
Normal87511001700170021253325332541756525
Medium122515252400240030004675467558509125
Hard1650207532503250405063506350792512375

Special ball chance by difficulty (x1 / x1.5 / x2): 1/3, 1/2, 2/3.

In the code

FileWhat it does
Assets/_Project/Scripts/Data/DefaultContent.csPark("moon", ...), gravity, sky, ground, Bonus(...) targets, Anti-Gravity ball, finalBossId, The Alien
Assets/_Project/Scripts/Ballparks/ParkLayouts.csBuildMoon: bonus props, crater rim, mesas, boulders
Assets/_Project/Scripts/Ballparks/MeteorShower.csThe Meteor Shower effect
Assets/_Project/Scripts/Ballparks/ScoreCalculator.csFindTarget / Earned: aerial targets are checked along the flight path
Assets/_Project/Scripts/Ballparks/BallparkBuilder.csLunar ground, stars and Earth

Gotchas

  • Bonus points are added before the HR Multiplier and green bonus: score = (distance + bonus) x HR Multiplier x green multiplier, so a Showboat Chain also raises the bonus.
  • Aerial targets get no ground disc: their prop is the marker (BuildTargets skips them).
  • The prop for each target is chosen by its label in BuildMoon; renaming a target loses its prop.
  • An Anti-Gravity pitch’s arc loop is flipped too: it sags first, then rises (PitchData.PathAt).
  • The match intro’s map shot arcs past these bonus locations and its card lists what each pays on a home run of its distance (ScoreCalculator.TargetValue). See Cutscenes.