/**
 * Plain-English explanations of raw weapon parameters, keyed by `${category}.${key}`.
 *
 * These are reconstructed by correlating Nintendo's official Splatoon 3 patch notes
 * against the per-version value history we store. Only keys
 * with a non-empty value below show a help popover on the params page.
 *
 * Every parameter the table can display is listed here. Filled-in entries are active;
 * the rest are commented out as placeholders — uncomment one and write its meaning to
 * add a popover for it.
 *
 * Conventions are explained once in the table's legend, so individual entries omit them:
 * - damage values are stored ×10 (450 means 45.0 damage),
 * - frame values run at 60 frames per second,
 * - `.Low` / `.Mid` / `.High` are the same stat with none / a moderate amount / the maximum
 *   amount of the relevant Power Up gear ability equipped (`.Low` is 0 ability points,
 *   `.High` is the value at the ability-point cap). A single base-key entry (without the
 *   suffix) covers all three levels — see {@link getParamExplanation}.
 */
const PARAM_EXPLANATIONS: Record<string, string> = {
	// AdditionMovePlayerParam
	// "AdditionMovePlayerParam.ZRate": "",

	// AreaParam
	// "AreaParam.AreaOffsetY": "",
	// "AreaParam.Distance.High": "",
	// "AreaParam.Distance.Low": "",
	// "AreaParam.Distance.Mid": "",
	// "AreaParam.DistanceForOff": "",
	// "AreaParam.Frame": "",
	// "AreaParam.MarkingFrameSubSpec.High": "",
	// "AreaParam.MarkingFrameSubSpec.Low": "",
	// "AreaParam.MarkingFrameSubSpec.Mid": "",

	// BlasterBurstJumpParam
	// "BlasterBurstJumpParam.BurstFrame": "",
	// "BlasterBurstJumpParam.MoveLength": "",
	// "BlasterBurstJumpParam.ShotCollisionHitRadiusRate": "",
	// "BlasterBurstJumpParam.SplashDropPaintRadius": "",
	// "BlasterBurstJumpParam.SplashDropPaintShotColHitRadius": "",
	// "BlasterBurstJumpParam.SplashPaintRadius": "",
	// "BlasterBurstJumpParam.SplashPaintShotColHitRadius": "",
	// "BlasterBurstJumpParam.SplashRoundAxisXArray": "",
	// "BlasterBurstJumpParam.SplashRoundAxisYArray": "",
	// "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodFirstFrameMin": "",
	// "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodLastFrameMax": "",
	// "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodLastFrameMin": "",
	// "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodSecondFrame": "",
	// "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodSecondTargetSpeed": "",
	// "BlasterBurstJumpParam.SplashWallDropPaintParam.PaintRadiusFall": "",
	// "BlasterBurstJumpParam.SplashWallDropPaintParam.PaintRadiusGround": "",
	// "BlasterBurstJumpParam.SplashWallDropPaintParam.PaintRadiusShock": "",
	// "BlasterBurstJumpParam.WallHitPaintRadius": "",

	// BlasterBurstParam
	// "BlasterBurstParam.BurstFrame": "",
	// "BlasterBurstParam.MoveLength": "",
	// "BlasterBurstParam.ShotCollisionHitRadiusRate": "",
	// "BlasterBurstParam.SplashDropPaintRadius": "",
	// "BlasterBurstParam.SplashDropPaintShotColHitRadius": "",
	// "BlasterBurstParam.SplashPaintRadius": "",
	// "BlasterBurstParam.SplashPaintShotColHitRadius": "",
	// "BlasterBurstParam.SplashRoundAxisXArray": "",
	// "BlasterBurstParam.SplashRoundAxisYArray": "",
	// "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodFirstFrameMin": "",
	// "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodLastFrameMax": "",
	// "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodLastFrameMin": "",
	// "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodSecondFrame": "",
	// "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodSecondTargetSpeed": "",
	// "BlasterBurstParam.SplashWallDropPaintParam.PaintRadiusFall": "",
	// "BlasterBurstParam.SplashWallDropPaintParam.PaintRadiusGround": "",
	// "BlasterBurstParam.SplashWallDropPaintParam.PaintRadiusShock": "",
	// "BlasterBurstParam.WallHitPaintRadius": "",

	// BlastJumpParam
	// "BlastJumpParam.CrossPaintCheckLength": "",
	// "BlastJumpParam.CrossPaintRadius": "",
	// "BlastJumpParam.KnockBackParam.Accel": "",
	// "BlastJumpParam.KnockBackParam.Bias": "",
	"BlastJumpParam.KnockBackParam.Distance":
		"Short flight distance shot radius.",
	// "BlastJumpParam.PaintRadius": "",

	// BlastParam
	// "BlastParam.BlastParam.CollisionRadiusForPaint": "",
	// "BlastParam.BlastParam.CrossPaintCheckLength": "",
	// "BlastParam.BlastParam.CrossPaintRadius": "",
	// "BlastParam.BlastParam.DamageOffsetY": "",
	// "BlastParam.BlastParam.KnockBackParam.Accel": "",
	// "BlastParam.BlastParam.KnockBackParam.Bias": "",
	// "BlastParam.BlastParam.KnockBackParam.Distance": "",
	// "BlastParam.BlastParam.PaintOffsetY": "",
	// "BlastParam.BlastParam.PaintRadius": "",
	// "BlastParam.CollisionRadiusForPaint": "",
	// "BlastParam.CrossPaintCheckLength": "",
	// "BlastParam.CrossPaintRadius": "",
	// "BlastParam.DamageHeightUp": "",
	// "BlastParam.DamageOffsetY": "",
	"BlastParam.DamageRadiusEnd":
		"Radius the damaging area expands to at its largest.",
	"BlastParam.DamageValueEnd":
		"Damage dealt by the effect at its largest extent.",
	// "BlastParam.DamageValueStart": "",
	// "BlastParam.DistanceFar": "",
	// "BlastParam.DistanceNear": "",
	// "BlastParam.KnockBackParam.Accel": "",
	// "BlastParam.KnockBackParam.Bias": "",
	"BlastParam.KnockBackParam.Distance": "Shot radius.",
	// "BlastParam.PaintHeight": "",
	// "BlastParam.PaintOffsetY": "",
	// "BlastParam.PaintRadius": "",
	// "BlastParam.PaintRadiusEnd": "",
	// "BlastParam.PaintRadiusFar": "",
	// "BlastParam.PaintRadiusNear": "",
	// "BlastParam.PaintRadiusStart": "",
	// "BlastParam.PaintRotateDegree": "",
	// "BlastParam.PaintSpanFrame": "",
	// "BlastParam.PaintTexture": "",
	// "BlastParam.RadiusSpreadFrame": "",
	// "BlastParam.SplashAroundParam.Num": "",
	// "BlastParam.SplashAroundParam.OffsetY": "",
	// "BlastParam.SplashAroundParam.PaintRadius": "",
	// "BlastParam.SplashAroundParam.PitchMax": "",
	// "BlastParam.SplashAroundParam.PitchMin": "",
	// "BlastParam.SplashAroundParam.VelocityMax": "",
	// "BlastParam.SplashAroundParam.VelocityMin": "",

	// BlastParamChase
	// "BlastParamChase.KnockBackParam.Accel": "",
	// "BlastParamChase.KnockBackParam.Bias": "",
	// "BlastParamChase.KnockBackParam.Distance": "",
	// "BlastParamChase.PaintRadius": "",
	// "BlastParamChase.SplashAroundParam.Num": "",
	// "BlastParamChase.SplashAroundParam.PaintRadius": "",
	// "BlastParamChase.SplashAroundParam.PitchMax": "",
	// "BlastParamChase.SplashAroundParam.PitchMin": "",
	// "BlastParamChase.SplashAroundParam.VelocityMax": "",
	// "BlastParamChase.SplashAroundParam.VelocityMin": "",
	// "BlastParamChase.SplashBlastParam.CrossPaintCheckLength": "",
	// "BlastParamChase.SplashBlastParam.CrossPaintRadius": "",
	// "BlastParamChase.SplashBlastParam.KnockBackParam.Accel": "",
	// "BlastParamChase.SplashBlastParam.PaintRadius": "",

	// BlastParamDokanWarp
	// "BlastParamDokanWarp.CrossPaintCheckLength": "",
	// "BlastParamDokanWarp.CrossPaintRadius": "",
	// "BlastParamDokanWarp.CrossPaintTexture": "",
	// "BlastParamDokanWarp.KnockBackParam.Accel": "",
	// "BlastParamDokanWarp.KnockBackParam.Distance": "",
	// "BlastParamDokanWarp.PaintRadius": "",
	// "BlastParamDokanWarp.PaintTexture": "",

	// BlastParamMaxCharge
	// "BlastParamMaxCharge.CrossPaintCheckLength": "",
	// "BlastParamMaxCharge.CrossPaintRadius": "",
	// "BlastParamMaxCharge.KnockBackParam.Accel": "",
	// "BlastParamMaxCharge.KnockBackParam.Bias": "",
	// "BlastParamMaxCharge.KnockBackParam.Distance": "",
	// "BlastParamMaxCharge.PaintRadius": "",
	// "BlastParamMaxCharge.SplashAroundParam.Num": "",
	// "BlastParamMaxCharge.SplashAroundParam.PaintRadius": "",
	// "BlastParamMaxCharge.SplashAroundParam.PitchMax": "",
	// "BlastParamMaxCharge.SplashAroundParam.PitchMin": "",
	// "BlastParamMaxCharge.SplashAroundParam.VelocityMax": "",
	// "BlastParamMaxCharge.SplashAroundParam.VelocityMin": "",

	// BlastParamMinCharge
	// "BlastParamMinCharge.CrossPaintCheckLength": "",
	// "BlastParamMinCharge.CrossPaintRadius": "",
	// "BlastParamMinCharge.KnockBackParam.Accel": "",
	// "BlastParamMinCharge.KnockBackParam.Bias": "",
	// "BlastParamMinCharge.KnockBackParam.Distance": "",
	// "BlastParamMinCharge.PaintRadius": "",
	// "BlastParamMinCharge.SplashAroundParam.Num": "",
	// "BlastParamMinCharge.SplashAroundParam.PaintRadius": "",
	// "BlastParamMinCharge.SplashAroundParam.PitchMax": "",
	// "BlastParamMinCharge.SplashAroundParam.PitchMin": "",
	// "BlastParamMinCharge.SplashAroundParam.VelocityMax": "",
	// "BlastParamMinCharge.SplashAroundParam.VelocityMin": "",

	// BlastParamNormal
	// "BlastParamNormal.CrossPaintCheckLength": "",
	// "BlastParamNormal.CrossPaintRadius": "",
	// "BlastParamNormal.CrossPaintTexture": "",
	// "BlastParamNormal.KnockBackParam.Accel": "",
	// "BlastParamNormal.KnockBackParam.Distance": "",
	// "BlastParamNormal.PaintRadius": "",
	// "BlastParamNormal.PaintTexture": "",

	// BlastParamThrow
	// "BlastParamThrow.KnockBackParam.Accel": "",
	// "BlastParamThrow.KnockBackParam.Bias": "",
	// "BlastParamThrow.KnockBackParam.Distance": "",
	// "BlastParamThrow.PaintOffsetY": "",
	// "BlastParamThrow.PaintRadius": "",
	// "BlastParamThrow.SplashAroundParam.Num": "",
	// "BlastParamThrow.SplashAroundParam.PaintRadius": "",
	// "BlastParamThrow.SplashAroundParam.PitchMax": "",
	// "BlastParamThrow.SplashAroundParam.VelocityMax": "",
	// "BlastParamThrow.SplashAroundParam.VelocityMin": "",

	// BodyParam
	// "BodyParam.CollisionAttackFrontOffset": "",
	// "BodyParam.CollisionDashFrontOffset": "",
	// "BodyParam.CollisionDashRadiusForPlayer": "",
	// "BodyParam.CollisionJumpRadiusForPlayer": "",
	// "BodyParam.CollisionPaintAttackFrontOffset": "",
	// "BodyParam.CollisionPaintDashFrontOffset": "",
	// "BodyParam.CollisionPaintOffFrontOffset": "",
	// "BodyParam.CollisionParam.DownRayCastLength": "",
	// "BodyParam.CollisionParam.KnockBackOpponent.AccelMax": "",
	// "BodyParam.CollisionParam.KnockBackOpponent.AccelMin": "",
	// "BodyParam.CollisionParam.KnockBackOpponent.MyVelocityRate": "",
	// "BodyParam.CollisionParam.KnockBackOpponent.OpponentVelocityRate": "",
	// "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOff.AccelMax": "",
	// "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOff.AccelMin": "",
	// "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOff.MyVelocityRate": "",
	// "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOff.OpponentVelocityRate": "",
	// "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOn.AccelMax": "",
	// "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOn.AccelMin": "",
	// "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOn.MyVelocityRate": "",
	// "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOn.OpponentVelocityRate": "",
	// "BodyParam.CollisionParam.Radius": "",
	// "BodyParam.CollisionParam.WidthHalf": "",
	// "BodyParam.CollisionRadiusForField": "",
	// "BodyParam.CollisionRadiusForPlayer": "",
	// "BodyParam.CollisionUpperOffset": "",
	// "BodyParam.Damage": "",
	// "BodyParam.DamageJumpValue": "",
	// "BodyParam.DefiladeUpperOffset": "",
	// "BodyParam.DefiladeYMinusLength": "",
	// "BodyParam.KnockBackChariotPlayer.AccelMax": "",
	// "BodyParam.KnockBackChariotPlayer.AccelMin": "",
	// "BodyParam.KnockBackChariotPlayer.MyVelocityRate": "",
	// "BodyParam.KnockBackChariotPlayer.OpponentVelocityRate": "",
	// "BodyParam.KnockBackOpponent.AccelMax": "",
	// "BodyParam.KnockBackOpponent.AccelMin": "",
	// "BodyParam.KnockBackOpponent.MyVelocityRate": "",
	// "BodyParam.KnockBackOpponent.OpponentVelocityRate": "",
	// "BodyParam.PaintCheckUpperOffset": "",
	// "BodyParam.PaintDepthScale": "",
	// "BodyParam.PaintParam.Depth": "",
	// "BodyParam.PaintParam.SpeedMax": "",
	// "BodyParam.PaintParam.SpeedMin": "",
	// "BodyParam.PaintParam.WidthAddWallCut": "",
	// "BodyParam.PaintParam.WidthHalfMax": "",
	// "BodyParam.PaintParam.WidthHalfMin": "",
	// "BodyParam.PaintSpanFrame": "",
	// "BodyParam.PaintWidthHalf": "",
	// "BodyParam.SideParam.CheckLength": "",
	// "BodyParam.SideParam.Radius": "",

	// BulletAdditionMovePlayerSplashNearestParam
	// "BulletAdditionMovePlayerSplashNearestParam.XRate": "",
	// "BulletAdditionMovePlayerSplashNearestParam.YPlusRate": "",
	// "BulletAdditionMovePlayerSplashNearestParam.ZRate": "",

	// BulletBlastParam
	// "BulletBlastParam.DamageOffsetY":
	// "",
	// "BulletBlastParam.KnockBackParam.Accel": "",
	// "BulletBlastParam.KnockBackParam.Bias": "",
	// "BulletBlastParam.KnockBackParam.Distance": "",
	// "BulletBlastParam.PaintRadius": "",
	// "BulletBlastParam.PaintTexture": "",
	// "BulletBlastParam.SplashAroundParam.Num": "",
	// "BulletBlastParam.SplashAroundParam.OffsetY": "",
	// "BulletBlastParam.SplashAroundParam.PaintRadius": "",
	// "BulletBlastParam.SplashAroundParam.PitchMax": "",
	// "BulletBlastParam.SplashAroundParam.VelocityMax": "",
	// "BulletBlastParam.SplashAroundParam.VelocityMin": "",

	// BulletBombMoveParam
	// "BulletBombMoveParam.FlyGravity": "",
	// "BulletBombMoveParam.FlyPositionAirResist": "",
	// "BulletBombMoveParam.GuideHitCollisionType": "",
	// "BulletBombMoveParam.SpawnSpeedZSpecUp.High": "",
	// "BulletBombMoveParam.SpawnSpeedZSpecUp.Low": "",
	// "BulletBombMoveParam.SpawnSpeedZSpecUp.Mid": "",

	// BulletParam
	// "BulletParam.CollisionRadiusForField": "",
	// "BulletParam.CollisionRadiusForPlayer": "",
	"BulletParam.DamageValue": "Damage dealt by a short range hit.",
	// "BulletParam.HitPoint": "",
	// "BulletParam.KnockBackLen": "",
	// "BulletParam.KnockBackParam.Accel": "",
	// "BulletParam.KnockBackParam.Bias": "",
	// "BulletParam.KnockBackParam.Degree": "",
	// "BulletParam.KnockBackParam.DirectionZeroAccelRate": "",
	// "BulletParam.KnockBackParam.Distance": "",
	// "BulletParam.MoveCollisionHeight": "",
	// "BulletParam.MoveDistance": "",
	// "BulletParam.MoveFrame": "",
	// "BulletParam.PaintDepthScale": "",
	// "BulletParam.PaintSpanFrame": "",
	// "BulletParam.PaintWidthHalf": "",
	"BulletParam.StartInvincibleFrame":
		"Duration in frames for the ink fist to start dropping.",
	// "BulletParam.SuperJumpWaitFrame0": "",
	// "BulletParam.SuperJumpWaitFrame1": "",
	// "BulletParam.WaitRiseFrame": "",

	// BulletSaberHorizontalParam
	// "BulletSaberHorizontalParam.BurstParam.BurstFrame": "",
	// "BulletSaberHorizontalParam.BurstParam.SplashColRadius": "",
	// "BulletSaberHorizontalParam.BurstParam.SplashDrawRadius": "",
	// "BulletSaberHorizontalParam.BurstParam.SplashPaintRadius": "",
	// "BulletSaberHorizontalParam.CollisionParam.CoreIndex": "",
	// "BulletSaberHorizontalParam.DamageParam.HitDamage": "",
	// "BulletSaberHorizontalParam.MoveParam.BrakeAirResist": "",
	// "BulletSaberHorizontalParam.MoveParam.BrakeGravity": "",
	// "BulletSaberHorizontalParam.MoveParam.BrakeToFreeStateFrame": "",
	// "BulletSaberHorizontalParam.MoveParam.BrakeToFreeVelocityXZ": "",
	// "BulletSaberHorizontalParam.MoveParam.BrakeToFreeVelocityY": "",
	// "BulletSaberHorizontalParam.MoveParam.FreeAirResist": "",
	// "BulletSaberHorizontalParam.MoveParam.FreeGravity": "",
	// "BulletSaberHorizontalParam.MoveParam.GoStraightToBrakeStateFrame": "",
	// "BulletSaberHorizontalParam.MoveParam.SpawnSpeed": "",
	// "BulletSaberHorizontalParam.PaintParam.DepthScaleMax": "",
	// "BulletSaberHorizontalParam.PaintParam.DepthScaleMin": "",
	// "BulletSaberHorizontalParam.PaintParam.PaintDegreeMax": "",
	// "BulletSaberHorizontalParam.PaintParam.WidthHalf": "",
	// "BulletSaberHorizontalParam.SplashPaintParam.DepthScaleMax": "",
	// "BulletSaberHorizontalParam.SplashPaintParam.DepthScaleMin": "",
	// "BulletSaberHorizontalParam.SplashPaintParam.WidthHalf": "",
	// "BulletSaberHorizontalParam.SplashPaintParam.WidthHalfNearest": "",
	// "BulletSaberHorizontalParam.SplashSpawnParam.DropInterval": "",
	// "BulletSaberHorizontalParam.SplashSpawnParam.NearestLen": "",
	// "BulletSaberHorizontalParam.SplashSpawnParam.RandomSpawnVelXMax": "",
	// "BulletSaberHorizontalParam.SplashSpawnParam.RandomSpawnVelYMax": "",
	// "BulletSaberHorizontalParam.SplashSpawnParam.RandomSpawnVelZMax": "",
	// "BulletSaberHorizontalParam.SplashSpawnParam.RandomSpawnVelZMin": "",
	// "BulletSaberHorizontalParam.SplashSpawnParam.SplashNumMax": "",
	// "BulletSaberHorizontalParam.SplashSpawnParam.SplitNum": "",
	// "BulletSaberHorizontalParam.WallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "BulletSaberHorizontalParam.WallDropMoveParam.FallPeriodSecondTargetSpeed": "",
	// "BulletSaberHorizontalParam.WallDropPaintParam.PaintRadiusFall": "",
	// "BulletSaberHorizontalParam.WallDropPaintParam.PaintRadiusGround": "",
	// "BulletSaberHorizontalParam.WallDropPaintParam.PaintRadiusShock": "",

	// BulletSaberSlashHorizontalParam
	// "BulletSaberSlashHorizontalParam.DamageParam.AccelForCastle": "",
	// "BulletSaberSlashHorizontalParam.DamageParam.DamageValue": "",
	// "BulletSaberSlashHorizontalParam.MoveParam.AliveFrame": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.BoxCenter.X": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.BoxCenter.Y": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.BoxCenter.Z": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.BoxHalfExtents.X": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.BoxHalfExtents.Y": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.BoxHalfExtents.Z": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterA.X": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterA.Y": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterA.Z": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterB.X": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterB.Y": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterB.Z": "",
	// "BulletSaberSlashHorizontalParam.ShapeParam.CylinderRadius": "",

	// BulletSaberSlashVerticalParam
	// "BulletSaberSlashVerticalParam.DamageParam.AccelForCastle": "",
	// "BulletSaberSlashVerticalParam.DamageParam.DamageValue": "",
	// "BulletSaberSlashVerticalParam.MoveParam.AliveFrame": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.BoxCenter.X": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.BoxCenter.Y": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.BoxCenter.Z": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.BoxHalfExtents.X": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.BoxHalfExtents.Y": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.BoxHalfExtents.Z": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterA.X": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterA.Y": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterA.Z": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterB.X": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterB.Y": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterB.Z": "",
	// "BulletSaberSlashVerticalParam.ShapeParam.CylinderRadius": "",

	// BulletSaberVerticalParam
	// "BulletSaberVerticalParam.BurstParam.BurstFrame": "",
	// "BulletSaberVerticalParam.BurstParam.SplashColRadius": "",
	// "BulletSaberVerticalParam.BurstParam.SplashDrawRadius": "",
	// "BulletSaberVerticalParam.BurstParam.SplashPaintRadius": "",
	// "BulletSaberVerticalParam.CollisionParam.CoreIndex": "",
	// "BulletSaberVerticalParam.DamageParam.HitDamage": "",
	// "BulletSaberVerticalParam.MoveParam.BrakeAirResist": "",
	// "BulletSaberVerticalParam.MoveParam.BrakeGravity": "",
	// "BulletSaberVerticalParam.MoveParam.BrakeToFreeStateFrame": "",
	// "BulletSaberVerticalParam.MoveParam.BrakeToFreeVelocityXZ": "",
	// "BulletSaberVerticalParam.MoveParam.BrakeToFreeVelocityY": "",
	// "BulletSaberVerticalParam.MoveParam.FreeAirResist": "",
	// "BulletSaberVerticalParam.MoveParam.FreeGravity": "",
	// "BulletSaberVerticalParam.MoveParam.GoStraightStateEndMaxSpeed": "",
	// "BulletSaberVerticalParam.MoveParam.GoStraightToBrakeStateFrame": "",
	// "BulletSaberVerticalParam.MoveParam.SpawnSpeed": "",
	// "BulletSaberVerticalParam.PaintParam.DepthScaleMax": "",
	// "BulletSaberVerticalParam.PaintParam.DepthScaleMin": "",
	// "BulletSaberVerticalParam.PaintParam.PaintDegreeMax": "",
	// "BulletSaberVerticalParam.PaintParam.WidthHalf": "",
	// "BulletSaberVerticalParam.SplashPaintParam.DepthScaleMax": "",
	// "BulletSaberVerticalParam.SplashPaintParam.WidthHalf": "",
	// "BulletSaberVerticalParam.SplashPaintParam.WidthHalfNearest": "",
	// "BulletSaberVerticalParam.SplashSpawnParam.DropInterval": "",
	// "BulletSaberVerticalParam.SplashSpawnParam.SplashNumMax": "",
	// "BulletSaberVerticalParam.WallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "BulletSaberVerticalParam.WallDropMoveParam.FallPeriodSecondTargetSpeed": "",
	// "BulletSaberVerticalParam.WallDropPaintParam.PaintRadiusFall": "",
	// "BulletSaberVerticalParam.WallDropPaintParam.PaintRadiusGround": "",
	// "BulletSaberVerticalParam.WallDropPaintParam.PaintRadiusShock": "",

	// CannonParam
	// "CannonParam.BlastParam.CrossPaintCheckLength": "",
	// "CannonParam.BlastParam.CrossPaintRadius": "",
	// "CannonParam.BlastParam.DamageOffsetY": "",
	// "CannonParam.BlastParam.KnockBackParam.Accel": "",
	// "CannonParam.BlastParam.KnockBackParam.Bias": "",
	// "CannonParam.BlastParam.KnockBackParam.Distance": "",
	// "CannonParam.BlastParam.PaintOffsetY": "",
	// "CannonParam.BlastParam.PaintRadius": "",
	// "CannonParam.CollisionParam.ChangeFrameForField": "",
	// "CannonParam.CollisionParam.ChangeFrameForPlayer": "",
	// "CannonParam.CollisionParam.EndRadiusForField": "",
	// "CannonParam.CollisionParam.EndRadiusForPlayer": "",
	// "CannonParam.CollisionParam.FriendThroughFrameForPlayer": "",
	// "CannonParam.CollisionParam.InitRadiusForField": "",
	// "CannonParam.CollisionParam.InitRadiusForPlayer": "",
	// "CannonParam.DirectDamage": "",
	// "CannonParam.DrawSize": "",
	// "CannonParam.MoveParam.BrakeAirResist": "",
	// "CannonParam.MoveParam.BrakeGravity": "",
	// "CannonParam.MoveParam.BrakeToFreeStateFrame": "",
	// "CannonParam.MoveParam.BrakeToFreeVelocityXZ": "",
	// "CannonParam.MoveParam.BrakeToFreeVelocityY": "",
	// "CannonParam.MoveParam.FreeAirResist": "",
	// "CannonParam.MoveParam.FreeGravity": "",
	// "CannonParam.MoveParam.GoStraightToBrakeStateFrame": "",
	// "CannonParam.SplashParam.DrawSizeCollisionPaintParam.CollisionParam.EndRadiusForField": "",
	// "CannonParam.SplashParam.DrawSizeCollisionPaintParam.CollisionParam.EndRadiusForPlayer": "",
	// "CannonParam.SplashParam.DrawSizeCollisionPaintParam.CollisionParam.InitRadiusForField": "",
	// "CannonParam.SplashParam.DrawSizeCollisionPaintParam.CollisionParam.InitRadiusForPlayer": "",
	// "CannonParam.SplashParam.DrawSizeCollisionPaintParam.DrawRadius": "",
	// "CannonParam.SplashParam.DrawSizeCollisionPaintParam.PaintDepthScale": "",
	// "CannonParam.SplashParam.DrawSizeCollisionPaintParam.PaintWidthHalf": "",
	// "CannonParam.SplashParam.SpawnParam.SpawnBetweenLength": "",
	// "CannonParam.SplashParam.SpawnParam.SpawnNum": "",

	// CloudParam
	// "CloudParam.DamageRadius": "",
	// "CloudParam.NoPaintRainNum": "",
	// "CloudParam.RainNum": "",
	// "CloudParam.RainyFrame.High": "",
	// "CloudParam.RainyFrame.Low": "",
	// "CloudParam.RainyFrame.Mid": "",
	// "CloudParam.WithNoPaintRainNum": "",

	// CollisionLapOverParam
	// "CollisionLapOverParam.ChangeFrameForField": "",
	// "CollisionLapOverParam.ChangeFrameForPlayer": "",
	// "CollisionLapOverParam.EndRadiusForField": "",
	// "CollisionLapOverParam.EndRadiusForPlayer": "",
	// "CollisionLapOverParam.FriendThroughFrameForPlayer": "",
	// "CollisionLapOverParam.InitRadiusForField": "",
	// "CollisionLapOverParam.InitRadiusForPlayer": "",

	// CollisionParam
	// "CollisionParam.ChangeFrameForField": "",
	// "CollisionParam.ChangeFrameForPlayer": "",
	// "CollisionParam.EndRadiusForField": "",
	// "CollisionParam.EndRadiusForPlayer": "",
	// "CollisionParam.FriendThroughFrameForPlayer": "",
	// "CollisionParam.InitRadiusForField": "",
	// "CollisionParam.InitRadiusForPlayer": "",

	// DamageJumpParam
	// "DamageJumpParam.ReduceEndFrame": "",
	// "DamageJumpParam.ReduceStartFrame": "",
	// "DamageJumpParam.ValueMax": "",
	// "DamageJumpParam.ValueMin": "",

	// DamageLapOverParam
	"DamageLapOverParam.ReduceEndFrame":
		"Frame by which damage has fully reduced to its minimum value.",
	// "DamageLapOverParam.ReduceStartFrame": "",
	// "DamageLapOverParam.ValueMax": "",
	// "DamageLapOverParam.ValueMin": "",

	// DamageParam
	// "DamageParam.DirectHitDamage": "",
	"DamageParam.ReduceEndFrame":
		"Frame by which damage has fully reduced to its minimum value.",
	"DamageParam.ReduceStartFrame":
		"Frame at which damage begins reducing from its maximum toward its minimum value.",
	"DamageParam.ValueFullCharge": "Direct-hit damage at full charge.",
	// "DamageParam.ValueFullChargeMax": "",
	"DamageParam.ValueMax": "Maximum direct-hit damage.",
	"DamageParam.ValueMaxCharge": "Direct-hit damage at maximum charge.",
	"DamageParam.ValueMin":
		"Minimum direct-hit damage after full damage falloff at range.",
	// "DamageParam.ValueMinCharge": "",

	// ExhaleBlastParamMaxCharge
	// "ExhaleBlastParamMaxCharge.CrossPaintCheckLength": "",
	// "ExhaleBlastParamMaxCharge.CrossPaintRadius": "",
	// "ExhaleBlastParamMaxCharge.DamageOffsetY": "",
	// "ExhaleBlastParamMaxCharge.KnockBackParam.Accel": "",
	// "ExhaleBlastParamMaxCharge.KnockBackParam.Bias": "",
	// "ExhaleBlastParamMaxCharge.KnockBackParam.Distance": "",
	// "ExhaleBlastParamMaxCharge.PaintOffsetY": "",
	// "ExhaleBlastParamMaxCharge.PaintRadius": "",

	// ExhaleBlastParamMinCharge
	// "ExhaleBlastParamMinCharge.CrossPaintCheckLength": "",
	// "ExhaleBlastParamMinCharge.CrossPaintRadius": "",
	// "ExhaleBlastParamMinCharge.DamageOffsetY": "",
	// "ExhaleBlastParamMinCharge.KnockBackParam.Accel": "",
	// "ExhaleBlastParamMinCharge.KnockBackParam.Bias": "",
	// "ExhaleBlastParamMinCharge.KnockBackParam.DirectionZeroAccelRate": "",
	// "ExhaleBlastParamMinCharge.KnockBackParam.Distance": "",
	// "ExhaleBlastParamMinCharge.PaintOffsetY": "",
	// "ExhaleBlastParamMinCharge.PaintRadius": "",

	// ExhaleCollisionParam
	// "ExhaleCollisionParam.RadiusForPlayerMinCharge": "",

	// ExhaleParam
	// "ExhaleParam.DirectAccel": "",
	// "ExhaleParam.DirectDamage": "",
	// "ExhaleParam.FlyGravity": "",
	// "ExhaleParam.FlyPositionAirResist": "",
	// "ExhaleParam.GuideHitCollisionType": "",
	// "ExhaleParam.GuideRadius": "",
	// "ExhaleParam.PaintRadiusMaxCharge": "",
	// "ExhaleParam.PaintRadiusMinCharge": "",
	// "ExhaleParam.SpawnBlastWaitFrame": "",
	// "ExhaleParam.SpawnSpeedY": "",
	// "ExhaleParam.SpawnSpeedYMaxCharge": "",
	// "ExhaleParam.SpawnSpeedZMaxCharge": "",
	// "ExhaleParam.SpawnSpeedZSpecUp.High": "",
	// "ExhaleParam.SpawnSpeedZSpecUp.Low": "",
	// "ExhaleParam.SpawnSpeedZSpecUp.Mid": "",

	// FootSplashParam
	// "FootSplashParam.PaintRadius": "",

	// FridgeParam
	"FridgeParam.PowerUpFrame": "Duration in frames of the drink's buff.",
	// "FridgeParam.PutFrame": "",
	// "FridgeParam.PutFrameOnYagura": "",
	// "FridgeParam.ServeAreaHeightDown": "",
	// "FridgeParam.ServeAreaHeightUp": "",
	"FridgeParam.ServeAreaRadius":
		"Horizontal radius of the area around a placed Tacticooler where teammates can drink to gain its buffs. Higher means a larger area to drink in.",
	// "FridgeParam.VanishDistance": "",

	// HookBlastParam
	// "HookBlastParam.CrossPaintCheckLength": "",
	// "HookBlastParam.CrossPaintRadius": "",
	// "HookBlastParam.KnockBackParam.Accel": "",
	// "HookBlastParam.KnockBackParam.Bias": "",
	// "HookBlastParam.KnockBackParam.Distance": "",

	// HookCollisionParam
	// "HookCollisionParam.EndRadiusForField": "",
	// "HookCollisionParam.EndRadiusForPlayer": "",
	// "HookCollisionParam.InitRadiusForField": "",
	// "HookCollisionParam.InitRadiusForPlayer": "",

	// IceParam
	// "IceParam.BlastParam.CrossPaintCheckLength": "",
	// "IceParam.BlastParam.CrossPaintRadius": "",
	// "IceParam.BlastParam.DamageOffsetY": "",
	// "IceParam.BlastParam.KnockBackParam.Accel": "",
	// "IceParam.BlastParam.KnockBackParam.Bias": "",
	// "IceParam.BlastParam.KnockBackParam.Distance": "",
	// "IceParam.BlastParam.PaintHeight": "",
	// "IceParam.BlastParam.PaintOffsetY": "",
	// "IceParam.BlastParam.PaintRadius": "",
	// "IceParam.BlastParam.SplashAroundParam.PaintRadius": "",
	// "IceParam.BlastParam.SplashAroundParam.PitchMax": "",
	// "IceParam.BlastParam.SplashAroundParam.VelocityMax": "",
	"IceParam.BurstFrame":
		"Time in frames from spawning until this detonates or activates.",
	// "IceParam.CollisionRadius": "",
	// "IceParam.FlyingFrame": "",
	// "IceParam.GroundOffsetY": "",
	// "IceParam.HitPoint": "",
	// "IceParam.InitialScale": "",
	// "IceParam.PaintRadius": "",
	// "IceParam.RotateDegRatePerFrame": "",
	// "IceParam.ScaleResetFrame": "",
	// "IceParam.SpawnRotateDegMax": "",
	// "IceParam.SpawnRotateDegMin": "",
	// "IceParam.WarningAnimRestFrame": "",
	// "IceParam.WarningSERestFrame": "",

	// InhaleParam
	// "InhaleParam.CollisionAccelRateNearest": "",
	// "InhaleParam.CollisionAccelRatePerDist": "",
	// "InhaleParam.CollisionAirResist": "",
	// "InhaleParam.CollisionAirResistMaxNum": "",
	// "InhaleParam.CollisionAirResistNum0": "",
	// "InhaleParam.DamagePerFrameByObject": "",
	// "InhaleParam.EffectRingSpanFrame": "",
	// "InhaleParam.EffectRingSpeed.Data": "",
	// "InhaleParam.EffectRingSpeed.MaxX": "",
	// "InhaleParam.EffectRingSpeed.Type": "",
	// "InhaleParam.EffectScalePerCollision.Data": "",
	// "InhaleParam.EffectScalePerCollision.MaxX": "",
	// "InhaleParam.EffectScalePerCollision.Type": "",
	// "InhaleParam.EffectSpanForGeyser": "",
	// "InhaleParam.EffectSpeed": "",
	// "InhaleParam.LengthAddPerFrame": "",
	// "InhaleParam.LengthMax": "",
	// "InhaleParam.MuzzleCollisionOffset": "",
	// "InhaleParam.MuzzleCollisionRadius": "",
	// "InhaleParam.PaintSplashParam.DepthMaxDropHeight": "",
	// "InhaleParam.PaintSplashParam.DepthMinDropHeight": "",
	// "InhaleParam.PaintSplashParam.DepthScaleMax": "",
	// "InhaleParam.PaintSplashParam.DepthScaleMin": "",
	// "InhaleParam.PaintSplashParam.WidthHalf": "",
	// "InhaleParam.PaintSplashParam.WidthHalfNearest": "",
	// "InhaleParam.PaintSplashSpanFrame": "",
	// "InhaleParam.PaintSplashSpawnOffset.X": "",
	// "InhaleParam.PaintSplashSpawnOffset.Y": "",
	// "InhaleParam.PaintSplashSpawnOffset.Z": "",
	// "InhaleParam.PoisonMistForPlayer.EffectFrame": "",
	// "InhaleParam.PoisonMistForPlayer.SideStepInkConsumeRate": "",
	"InhaleParam.RadiusMax": "Maximum inhale radius.",
	// "InhaleParam.RadiusMin.High": "",
	// "InhaleParam.RadiusMin.Low": "",
	// "InhaleParam.RadiusMin.Mid": "",
	// "InhaleParam.ReceiveDamageForGeyser": "",
	// "InhaleParam.ReceiveDamageForPlayer": "",

	// KnockBackByCanopyParam
	// "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOff.AccelMax": "",
	// "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOff.AccelMin": "",
	// "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOff.MyVelocityRate": "",
	// "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOff.OpponentVelocityRate": "",
	// "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOn.AccelMax": "",
	// "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOn.AccelMin": "",
	// "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOn.MyVelocityRate": "",
	// "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOn.OpponentVelocityRate": "",

	// LauncherCollisionParam
	// "LauncherCollisionParam.ChangeFrameForField": "",
	// "LauncherCollisionParam.ChangeFrameForPlayer": "",
	// "LauncherCollisionParam.EndRadiusForField": "",
	// "LauncherCollisionParam.EndRadiusForPlayer": "",
	// "LauncherCollisionParam.FriendThroughFrameForPlayer": "",
	// "LauncherCollisionParam.InitRadiusForField": "",
	// "LauncherCollisionParam.InitRadiusForPlayer": "",

	// MainEffectiveRangeUpParam
	// "MainEffectiveRangeUpParam.BaseDistance": "",
	// "MainEffectiveRangeUpParam.High": "",
	// "MainEffectiveRangeUpParam.Mid": "",

	// MainWeaponSetting
	// "MainWeaponSetting.Overwrite_ConsumeRt_Main_High": "",
	// "MainWeaponSetting.Overwrite_ConsumeRt_Main_Low": "",
	// "MainWeaponSetting.Overwrite_ConsumeRt_Main_Mid": "",
	// "MainWeaponSetting.Overwrite_MoveVelRt_Shot_High": "",
	// "MainWeaponSetting.Overwrite_MoveVelRt_Shot_Low": "",
	// "MainWeaponSetting.Overwrite_MoveVelRt_Shot_Mid": "",
	// "MainWeaponSetting.WeaponAccType": "",
	// "MainWeaponSetting.WeaponSpeedType": "",

	// MissileParam
	// "MissileParam.XZBias": "",

	// MotherParam
	// "MotherParam.TargetHeight": "",

	// MoveJumpParam
	// "MoveJumpParam.GoStraightStateEndMaxSpeed": "",
	// "MoveJumpParam.GoStraightToBrakeStateFrame": "",
	// "MoveJumpParam.SpawnSpeed": "",

	// MoveLapOverParam
	"MoveLapOverParam.GoStraightStateEndMaxSpeed":
		"Speed the projectile settles to after its initial fast phase, which affects its effective range.",
	"MoveLapOverParam.GoStraightToBrakeStateFrame":
		"Time in frames the projectile travels at full speed before it begins to slow down.",
	"MoveLapOverParam.SpawnSpeed":
		"Initial travel speed of the projectile the moment it is fired.",

	// MoveParam
	// "MoveParam.BaseSpeedComeOverRate": "",
	// "MoveParam.BaseSpeedComeUnderRate": "",
	// "MoveParam.BaseSpeedMinCharge": "",
	// "MoveParam.BeforeRotateFrame": "",
	// "MoveParam.BetweenRotEndAndStartChaseFrame": "",
	// "MoveParam.BrakeAirResist": "",
	// "MoveParam.BrakeGravity": "",
	// "MoveParam.BrakeToFreeStateFrame": "",
	// "MoveParam.BrakeToFreeVelocityXZ": "",
	// "MoveParam.BrakeToFreeVelocityY": "",
	// "MoveParam.BurstFrame": "",
	// "MoveParam.BurstSeFrameArray": "",
	// "MoveParam.BurstTimingSpeedStartRestFrame": "",
	// "MoveParam.BurstTimingSpeedStopBias": "",
	// "MoveParam.BurstWaitFrameArray": "",
	// "MoveParam.BurstWarnFrameArray": "",
	// "MoveParam.CanPlaceBoundDegree": "",
	// "MoveParam.CanPlaceBoundVel": "",
	// "MoveParam.CanPlaceCheckLength1": "",
	// "MoveParam.CanPlaceCheckLength2": "",
	// "MoveParam.CanPlaceHeight": "",
	// "MoveParam.ChargeFrameArray": "",
	// "MoveParam.ChaseAirAddSpeedXZPerFrame": "",
	// "MoveParam.ChaseAirMaxSpeedXZ": "",
	// "MoveParam.ChaseAirMaxSpeedY": "",
	// "MoveParam.ChaseBurstWaitFrame": "",
	// "MoveParam.ChaseFrame": "",
	// "MoveParam.ChaseGroundAddSpeedPerFrame": "",
	// "MoveParam.ChaseGroundMaxSpeed": "",
	// "MoveParam.ChasePitchDegree": "",
	// "MoveParam.ChaseRollDegree": "",
	// "MoveParam.ChaseYawDegree": "",
	// "MoveParam.CollisionRadius": "",
	// "MoveParam.CollisionSeSilentFrame": "",
	// "MoveParam.CollisionSESpanFrame": "",
	// "MoveParam.CollisionSeVelDotGndNrm": "",
	// "MoveParam.CollisionSEVelDotGroundNrm": "",
	// "MoveParam.ContactDashPanel.AddSpeedPerImpact": "",
	// "MoveParam.ContactDashPanel.AddSpeedSequenceFrameRate": "",
	// "MoveParam.ContactDashPanel.CrossSaveSpeedRate": "",
	// "MoveParam.ContactDashPanel.ImpactDirectionSaveSpeedRate": "",
	// "MoveParam.ContactJumpPanel.AddSpeedOneBoundRate": "",
	// "MoveParam.ContactJumpPanel.AddSpeedPerImpact": "",
	// "MoveParam.ContactJumpPanel.MaxBoundNum": "",
	// "MoveParam.DamageDirectHit": "",
	// "MoveParam.DamageDirectSpanSecond": "",
	// "MoveParam.DamageSpanFrame": "",
	// "MoveParam.DamageValueForDamageTag": "",
	// "MoveParam.DeathTargetApprouchDistance": "",
	"MoveParam.DirectDamage": "Damage dealt by a direct hit.",
	// "MoveParam.Distance": "",
	// "MoveParam.DistanceFullCharge": "",
	// "MoveParam.DistanceMaxCharge": "",
	// "MoveParam.DistanceMinCharge": "",
	// "MoveParam.FindApproachBurstWaitFrame": "",
	// "MoveParam.FindCollisionStartRadiusRate": "",
	// "MoveParam.FindRotateFrame": "",
	// "MoveParam.FindSpawnSplashAroundParam.Num": "",
	// "MoveParam.FindSpawnSplashAroundParam.PaintRadius": "",
	// "MoveParam.FindSpawnSplashAroundParam.PitchMax": "",
	// "MoveParam.FindSpawnSplashAroundParam.PitchMin": "",
	// "MoveParam.FindSpawnSplashAroundParam.VelocityMax": "",
	// "MoveParam.FindSpawnSplashAroundParam.VelocityMin": "",
	// "MoveParam.FlyGravity": "",
	// "MoveParam.FlyHitDeg50WallReboundMaxRt": "",
	// "MoveParam.FlyHitVerticalWallReboundMaxRt": "",
	// "MoveParam.FlyHitWallPitchToPlane": "",
	// "MoveParam.FlyHitWallReboundResetFrame": "",
	// "MoveParam.FlyingFrame": "",
	// "MoveParam.FlyPositionAirResist": "",
	// "MoveParam.FlyRotateAirResist": "",
	// "MoveParam.FlySplashDistanceArray": "",
	// "MoveParam.FlySplashPaintRadiusArray": "",
	// "MoveParam.FreeAirResist": "",
	// "MoveParam.FreeGravity": "",
	"MoveParam.GoStraightStateEndMaxSpeed":
		"Speed a shot settles to after its initial fast phase, which affects its effective range.",
	"MoveParam.GoStraightToBrakeStateFrame":
		"Time in frames the projectile travels at full speed before it begins to slow down.",
	// "MoveParam.GroundGravity": "",
	// "MoveParam.GroundPositionAirResist": "",
	// "MoveParam.GroundPositionDeg50AirResist": "",
	// "MoveParam.GroundPositionHorizonAirResist": "",
	// "MoveParam.GroundRotateDeg50AirResist": "",
	// "MoveParam.GroundRotateHorizonAirResist": "",
	// "MoveParam.GuideHitCollisionType": "",
	// "MoveParam.GuideRadius": "",
	// "MoveParam.HitPaintRadius": "",
	// "MoveParam.HitVerticalWallReboundMaxRate": "",
	// "MoveParam.HopPitchH": "",
	// "MoveParam.HopPitchL": "",
	// "MoveParam.HopVelH": "",
	// "MoveParam.HopVelL": "",
	// "MoveParam.KnockBackParam.Accel": "",
	// "MoveParam.KnockBackParam.Bias": "",
	// "MoveParam.KnockBackParam.Degree": "",
	// "MoveParam.KnockBackParam.Distance": "",
	// "MoveParam.MarkingFrame.High": "",
	// "MoveParam.MarkingFrame.Low": "",
	// "MoveParam.MarkingFrame.Mid": "",
	// "MoveParam.MarkingFrameSubSpec.High": "",
	// "MoveParam.MarkingFrameSubSpec.Low": "",
	// "MoveParam.MarkingFrameSubSpec.Mid": "",
	// "MoveParam.MaxHP.High": "",
	// "MoveParam.MaxHP.Low": "",
	// "MoveParam.MaxHP.Mid": "",
	// "MoveParam.MaxPlaceNum": "",
	// "MoveParam.ModelRotateHitWall45Degree": "",
	// "MoveParam.ModelRotateReduceDegree": "",
	// "MoveParam.NoReceiveTargetBurstWaitFrame": "",
	// "MoveParam.ObjColDamage": "",
	// "MoveParam.PaintBurstRadiusBias": "",
	// "MoveParam.PaintCheckHeight": "",
	// "MoveParam.PaintRadius": "",
	// "MoveParam.PaintRadiusBias": "",
	// "MoveParam.PaintRadiusMaxCharge": "",
	// "MoveParam.PaintRadiusMinCharge": "",
	"MoveParam.PeriodFirst":
		"How long the sprinkler stays in its fast-output phase, in frames.",
	// "MoveParam.PeriodSecond.High": "",
	// "MoveParam.PeriodSecond.Low": "",
	// "MoveParam.PeriodSecond.Mid": "",
	// "MoveParam.PlacePaintRadius": "",
	// "MoveParam.ReboundGroundBoundRate": "",
	// "MoveParam.ReboundGroundReflectAngleRate": "",
	// "MoveParam.ReboundWallBoundRate": "",
	// "MoveParam.ReboundWallReflectAngleRate": "",
	// "MoveParam.SensorRadius.High": "",
	// "MoveParam.SensorRadius.Low": "",
	// "MoveParam.SensorRadius.Mid": "",
	// "MoveParam.SpawnRotatePitch": "",
	// "MoveParam.SpawnRotateRoll": "",
	"MoveParam.SpawnSpeed":
		"Initial travel speed of a shot the moment it is fired.",
	// "MoveParam.SpawnSpeedFirstLastAndSecond": "",
	// "MoveParam.SpawnSpeedFullCharge": "",
	// "MoveParam.SpawnSpeedMaxCharge": "",
	// "MoveParam.SpawnSpeedMinCharge": "",
	// "MoveParam.SpawnSpeedRandomBias": "",
	// "MoveParam.SpawnSpeedRandomRate": "",
	// "MoveParam.SpawnSpeedY": "",
	// "MoveParam.SpawnSpeedYMaxCharge": "",
	// "MoveParam.SpawnSpeedYWorldMin": "",
	// "MoveParam.SpawnSpeedZMaxCharge": "",
	"MoveParam.SpawnSpeedZSpecUp": "Forward launch speed (throw distance).",
	// "MoveParam.SpoutInkDrawRadius": "",
	// "MoveParam.SpoutInkPaintRadiusMaxHeight": "",
	// "MoveParam.SpoutInkPaintRadiusMaxRate": "",
	// "MoveParam.SpoutInkPaintRadiusMinHeight": "",
	// "MoveParam.SpoutInkPaintRadiusMinRate": "",
	// "MoveParam.TailDamage": "",
	// "MoveParam.TailFrame": "",
	// "MoveParam.UnfindBurstWaitFrame": "",
	// "MoveParam.WarningAnimRestFrame": "",
	// "MoveParam.WarningSERestFrame": "",

	// NearestParam
	// "NearestParam.DrawSizeCollisionPaintParam.CollisionParam.EndRadiusForPlayer": "",
	// "NearestParam.DrawSizeCollisionPaintParam.CollisionParam.InitRadiusForPlayer": "",
	// "NearestParam.DrawSizeCollisionPaintParam.PaintDepthScale": "",
	// "NearestParam.DrawSizeCollisionPaintParam.PaintWidthHalf": "",
	// "NearestParam.SpawnOffset.X": "",
	// "NearestParam.SpawnOffset.Y": "",

	// PaintParam
	// "PaintParam.DegreeUseDepthScaleMin": "",
	// "PaintParam.DepthScaleMax": "",
	// "PaintParam.DepthScaleMaxBreakFree": "",
	// "PaintParam.DepthScaleMin": "",
	// "PaintParam.DepthScaleMinBreakFree": "",
	// "PaintParam.DistanceFar": "",
	// "PaintParam.DistanceMiddle": "",
	// "PaintParam.DistanceNear": "",
	// "PaintParam.HeightUseDepthScaleMaxBreakFree": "",
	// "PaintParam.HeightUseDepthScaleMinBreakFree": "",
	// "PaintParam.RadiusFullCharge": "",
	// "PaintParam.RadiusMaxCharge": "",
	// "PaintParam.RadiusMinCharge": "",
	// "PaintParam.WidthHalfFar": "",
	// "PaintParam.WidthHalfMiddle": "",
	// "PaintParam.WidthHalfNear": "",

	// PipeParam
	// "PipeParam.DepthRadius": "",
	// "PipeParam.MinBetweenDistance": "",
	// "PipeParam.TargetCenterBias": "",

	// RainParam
	// "RainParam.CollisionParam.EndRadiusForField": "",
	// "RainParam.CollisionParam.EndRadiusForPlayer": "",
	// "RainParam.CollisionParam.InitRadiusForField": "",
	// "RainParam.CollisionParam.InitRadiusForPlayer": "",
	// "RainParam.MoveParam.BrakeAirResist": "",
	// "RainParam.MoveParam.BrakeGravity": "",
	// "RainParam.MoveParam.BrakeToFreeStateFrame": "",
	// "RainParam.MoveParam.BrakeToFreeVelocityXZ": "",
	// "RainParam.MoveParam.BrakeToFreeVelocityY": "",
	// "RainParam.MoveParam.FreeAirResist": "",
	// "RainParam.MoveParam.FreeGravity": "",
	// "RainParam.MoveParam.GoStraightStateEndMaxSpeed": "",
	// "RainParam.MoveParam.GoStraightToBrakeStateFrame": "",
	// "RainParam.MoveParam.SpawnSpeed": "",

	// ShooterCollisionParam
	// "ShooterCollisionParam.ChangeFrameForField": "",
	// "ShooterCollisionParam.EndRadiusForField": "",
	// "ShooterCollisionParam.EndRadiusForPlayer": "",
	// "ShooterCollisionParam.FriendThroughFrameForPlayer": "",
	// "ShooterCollisionParam.InitRadiusForField": "",
	// "ShooterCollisionParam.InitRadiusForPlayer": "",

	// ShooterDamageParam
	// "ShooterDamageParam.ReduceEndFrame": "",
	// "ShooterDamageParam.ReduceStartFrame": "",
	// "ShooterDamageParam.ValueMax": "",
	// "ShooterDamageParam.ValueMin": "",

	// ShooterMoveParam
	// "ShooterMoveParam.FreeGravity": "",
	// "ShooterMoveParam.GoStraightStateEndMaxSpeed": "",
	// "ShooterMoveParam.GoStraightToBrakeStateFrame": "",
	// "ShooterMoveParam.SpawnSpeed": "",

	// ShooterPaintParam
	// "ShooterPaintParam.DistanceMiddle": "",
	// "ShooterPaintParam.WidthHalfFar": "",
	// "ShooterPaintParam.WidthHalfMiddle": "",
	// "ShooterPaintParam.WidthHalfNear": "",

	// ShooterSplashPaintParam
	// "ShooterSplashPaintParam.DepthMaxDropHeight": "",
	// "ShooterSplashPaintParam.DepthMinDropHeight": "",
	// "ShooterSplashPaintParam.WidthHalf": "",
	// "ShooterSplashPaintParam.WidthHalfNearest": "",

	// ShooterSplashSpawnParam
	// "ShooterSplashSpawnParam.SpawnBetweenLength": "",
	// "ShooterSplashSpawnParam.SpawnNearestLength": "",
	// "ShooterSplashSpawnParam.SpawnNum": "",
	// "ShooterSplashSpawnParam.SplitNum": "",

	// ShooterWallDropCollisionPaintParam
	// "ShooterWallDropCollisionPaintParam.PaintRadiusFall": "",
	// "ShooterWallDropCollisionPaintParam.PaintRadiusGround": "",
	// "ShooterWallDropCollisionPaintParam.PaintRadiusShock": "",

	// ShooterWallDropMoveParam
	// "ShooterWallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "ShooterWallDropMoveParam.FallPeriodFirstFrameMin": "",
	// "ShooterWallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "ShooterWallDropMoveParam.FallPeriodLastFrameMax": "",
	// "ShooterWallDropMoveParam.FallPeriodLastFrameMin": "",
	// "ShooterWallDropMoveParam.FallPeriodSecondFrame": "",
	// "ShooterWallDropMoveParam.FallPeriodSecondTargetSpeed": "",
	// "ShooterWallDropMoveParam.FreeGravityType": "",

	// SideStepParam
	// "SideStepParam.ChargeFrame": "",
	"SideStepParam.InkConsume":
		"Ink used by a single Dodge Roll, as a fraction of the ink tank.",
	// "SideStepParam.InkRecoverStop": "",
	// "SideStepParam.MoveDist": "",
	// "SideStepParam.MoveFrame": "",
	// "SideStepParam.MoveStepKd_Air": "",
	// "SideStepParam.RepeatCnt": "",
	// "SideStepParam.SlipMoveDistAir": "",
	// "SideStepParam.SlipMoveDistGnd": "",
	// "SideStepParam.SlipMoveFrame": "",
	// "SideStepParam.SplashSlideParam.MoveLength": "",
	// "SideStepParam.SplashSlideParam.PaintWidthHalf": "",
	// "SideStepParam.UnrelaxFrameMove": "",
	// "SideStepParam.UnrelaxFrameMove_Last": "",
	// "SideStepParam.UnrelaxFrameNoSideStep": "",
	// "SideStepParam.UnrelaxFrameNoSideStep_Last": "",
	// "SideStepParam.UnrelaxFrameNoSquid": "",
	// "SideStepParam.UnrelaxFrameNoSquid_Last": "",
	// "SideStepParam.UnrelaxFrameNoWeapon": "",
	// "SideStepParam.UnrelaxFrameNoWeapon_Last": "",
	// "SideStepParam.UnrelaxFrameOneMuzzle": "",
	// "SideStepParam.UnrelaxFrameOneMuzzle_Last": "",

	// spl__BulletBlastParam
	// "spl__BulletBlastParam.CrossPaintCheckLength": "",
	// "spl__BulletBlastParam.DamageOffsetY": "",
	// "spl__BulletBlastParam.KnockBackParam.Accel": "",
	// "spl__BulletBlastParam.KnockBackParam.Bias": "",
	// "spl__BulletBlastParam.KnockBackParam.Distance": "",
	// "spl__BulletBlastParam.PaintOffsetY": "",
	// "spl__BulletBlastParam.PaintRadius": "",

	// spl__BulletInformImpactControlForGeyserParam
	// "spl__BulletInformImpactControlForGeyserParam.AddSpeedPerImpact": "",

	// spl__BulletShelterCanopyParam
	// "spl__BulletShelterCanopyParam.CanopyAttackedDamageRate": "",
	// "spl__BulletShelterCanopyParam.CanopyColRadius": "",
	// "spl__BulletShelterCanopyParam.CanopyCureHPPerFrame": "",
	// "spl__BulletShelterCanopyParam.CanopyDamage": "",
	// "spl__BulletShelterCanopyParam.CanopyFrame": "",
	// "spl__BulletShelterCanopyParam.CanopyGravity": "",
	// "spl__BulletShelterCanopyParam.CanopyHitOtherCanopyDamage": "",
	// "spl__BulletShelterCanopyParam.CanopyHitOtherCanopyVolume": "",
	// "spl__BulletShelterCanopyParam.CanopyHitShieldAttackDamage": "",
	// "spl__BulletShelterCanopyParam.CanopyHitShieldReceiveDamage": "",
	"spl__BulletShelterCanopyParam.CanopyHP":
		"Hit points of the Brella's canopy. Different weapons deal different damage multipliers against it, so check the Object Damage Calculator to see how fast a given weapon breaks it.",
	// "spl__BulletShelterCanopyParam.CanopyInitSpeed": "",
	// "spl__BulletShelterCanopyParam.CanopyMoveKnockBackSideStepRate": "",
	"spl__BulletShelterCanopyParam.CanopyNakedFrame":
		"Time in frames for a broken canopy to recover.",
	// "spl__BulletShelterCanopyParam.CanopyPaintRadius": "",
	// "spl__BulletShelterCanopyParam.CanopySpeedAirAddScaleXZ": "",
	// "spl__BulletShelterCanopyParam.CanopySpeedGroundAddScale": "",
	// "spl__BulletShelterCanopyParam.FootSplashPaintRadius": "",
	// "spl__BulletShelterCanopyParam.FootSplashShapeCastOffset": "",
	// "spl__BulletShelterCanopyParam.FootSplashSpanFrame": "",
	// "spl__BulletShelterCanopyParam.FootSplashWaitFrame": "",

	// spl__BulletShelterShotgunParam
	// "spl__BulletShelterShotgunParam.DamageEffectiveTotalMax": "",
	// "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodFirstFrameMin": "",
	// "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodLastFrameMax": "",
	// "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodLastFrameMin": "",
	// "spl__BulletShelterShotgunParam.SplashParam.CreateSplashLength": "",
	// "spl__BulletShelterShotgunParam.SplashParam.CreateSplashNum": "",
	// "spl__BulletShelterShotgunParam.SplashParam.RandomSpawnVelXMax": "",
	// "spl__BulletShelterShotgunParam.SplashParam.RandomSpawnVelZMax": "",
	// "spl__BulletShelterShotgunParam.SplashParam.RandomSpawnVelZMin": "",
	// "spl__BulletShelterShotgunParam.SplashParam.SplashPaintDepthScaleFullActive": "",
	// "spl__BulletShelterShotgunParam.SplashParam.SplashPaintDepthScaleOneActive": "",
	// "spl__BulletShelterShotgunParam.SplashParam.SplashPaintWidthFullActive": "",
	// "spl__BulletShelterShotgunParam.SplashParam.SplashPaintWidthOneActive": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropCollisionParam.PaintRadiusFall": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropCollisionParam.PaintRadiusGround": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropCollisionParam.PaintRadiusShock": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodLastFrameMax": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodLastFrameMin": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodSecondFrame": "",
	// "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodSecondTargetSpeed": "",

	// spl__BulletShooterTailLengthParam
	// "spl__BulletShooterTailLengthParam.DelayShotFrame": "",
	// "spl__BulletShooterTailLengthParam.EndMaxLength": "",
	// "spl__BulletShooterTailLengthParam.MaxLengthFrame": "",

	// spl__BulletSpGreatBarrierMoveParam
	// "spl__BulletSpGreatBarrierMoveParam.BarrierParam.CanopyKnockBack": "",
	"spl__BulletSpGreatBarrierMoveParam.BarrierParam.DamgeRatio":
		"Multiplier applied to damage taken by the inner device and top section the barrier.",
	"spl__BulletSpGreatBarrierMoveParam.BarrierParam.MaxFieldHP":
		"Total hit points of the deployed field.",
	"spl__BulletSpGreatBarrierMoveParam.BarrierParam.MaxHP": "Hit points.",
	"spl__BulletSpGreatBarrierMoveParam.BarrierParam.MaxRadius":
		"Maximum radius this expands to.",
	// "spl__BulletSpGreatBarrierMoveParam.BarrierParam.MinRadius": "",
	// "spl__BulletSpGreatBarrierMoveParam.BarrierParam.RadiusRatioCurve.Data": "",
	// "spl__BulletSpGreatBarrierMoveParam.BarrierParam.RadiusRatioCurve.MaxX": "",
	// "spl__BulletSpGreatBarrierMoveParam.BarrierParam.RadiusRatioCurve.Type": "",
	"spl__BulletSpGreatBarrierMoveParam.BarrierParam.TimeDamage":
		"How much HP the barrier loses over time while deployed.",
	"spl__BulletSpGreatBarrierMoveParam.BarrierParam.TimeDamageOnVLift":
		"How much HP the barrier loses over time while it is on the Tower.",
	// "spl__BulletSpGreatBarrierMoveParam.BaseParam.PaintRadius": "",
	// "spl__BulletSpGreatBarrierMoveParam.BaseParam.PaintTexture": "",
	// "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendCurve.Data": "",
	// "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendCurve.MaxX": "",
	// "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendCurve.Type": "",
	// "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendFrame": "",
	"spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendHeight":
		"Height the barrier's drone ascends to before deploying the bubble (affects radius of the barrier).",
	// "spl__BulletSpGreatBarrierMoveParam.DroneParam.FieldCollisionRadius": "",
	// "spl__BulletSpGreatBarrierMoveParam.DroneParam.IgnitionFrame": "",
	// "spl__BulletSpGreatBarrierMoveParam.DroneParam.OverlapFieldDamage": "",
	// "spl__BulletSpGreatBarrierMoveParam.DroneParam.OverlapFieldDamageInterval": "",

	// spl__BulletSpMicroLaserBitParam
	// "spl__BulletSpMicroLaserBitParam.ChargeParam.ChargeFrame": "",
	// "spl__BulletSpMicroLaserBitParam.ChargeParam.InterpRate": "",
	// "spl__BulletSpMicroLaserBitParam.ChargeParam.MaxAngularVel": "",
	// "spl__BulletSpMicroLaserBitParam.ChargeParam.MaxAngularVelChargeStateNoTgt": "",
	// "spl__BulletSpMicroLaserBitParam.FollowParam.LockonEndFrame": "",
	// "spl__BulletSpMicroLaserBitParam.LaserParam.AfterLaserWaitFrame": "",
	// "spl__BulletSpMicroLaserBitParam.LaserParam.FreeMoveRotSpeed": "",
	"spl__BulletSpMicroLaserBitParam.LaserParam.LaserDamage":
		"Damage dealt by each laser tick.",
	// "spl__BulletSpMicroLaserBitParam.LaserParam.LaserDamageIntervalFrame": "",
	// "spl__BulletSpMicroLaserBitParam.LaserParam.LaserFrame.High": "",
	// "spl__BulletSpMicroLaserBitParam.LaserParam.LaserFrame.Low": "",
	"spl__BulletSpMicroLaserBitParam.LaserParam.LaserFrame":
		"How long the lasers fire, in frames.",

	// spl__BulletSpMultiMissileMoveParam
	// "spl__BulletSpMultiMissileMoveParam.RiseParam.RiseBaseSpeedComeUnderRate": "",

	// spl__BulletSpShockSonarParam
	// "spl__BulletSpShockSonarParam.GeneratorParam.HeadColRadius": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.HitDamage": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.HitDamageInterval": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.HitKnockback": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MarkingFrame": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MaxHP": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.FlyGravity": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.FlyPositionAirResist": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.GuideHitCollisionType": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedY": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedYWorldMin": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedZSpecUp.High": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedZSpecUp.Low": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedZSpecUp.Mid": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.PoleColHeight": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.SphereAnimCurve.Data": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.SphereAnimCurve.MaxX": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.SphereAnimCurve.Type": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.SphereAnimRadius": "",
	// "spl__BulletSpShockSonarParam.GeneratorParam.WaveEmitFrameArray": "",
	// "spl__BulletSpShockSonarParam.WaveParam.Damage": "",
	// "spl__BulletSpShockSonarParam.WaveParam.DamageYMax": "",
	// "spl__BulletSpShockSonarParam.WaveParam.DamageYMin": "",
	// "spl__BulletSpShockSonarParam.WaveParam.MaxFrame.High": "",
	// "spl__BulletSpShockSonarParam.WaveParam.MaxFrame.Low": "",
	// "spl__BulletSpShockSonarParam.WaveParam.MaxFrame.Mid": "",
	// "spl__BulletSpShockSonarParam.WaveParam.MaxRadius.High": "",
	// "spl__BulletSpShockSonarParam.WaveParam.MaxRadius.Low": "",
	// "spl__BulletSpShockSonarParam.WaveParam.MaxRadius.Mid": "",

	// spl__BulletStringerParam
	// "spl__BulletStringerParam.CollisionParam.EndRadiusForPlayer": "",
	// "spl__BulletStringerParam.CollisionParam.InitRadiusForPlayer": "",
	// "spl__BulletStringerParam.DamageParam.DirectHitDamageMax": "",
	// "spl__BulletStringerParam.DamageParam.DirectHitDamageMid": "",
	// "spl__BulletStringerParam.DamageParam.DirectHitDamageMin": "",
	// "spl__BulletStringerParam.DetonationParam.BlastParam.DamageOffsetY": "",
	// "spl__BulletStringerParam.DetonationParam.BlastParam.KnockBackParam.Distance": "",
	// "spl__BulletStringerParam.DetonationParam.BlastParam.PaintOffsetY": "",
	// "spl__BulletStringerParam.DetonationParam.BlastParam.PaintRadius": "",
	// "spl__BulletStringerParam.DetonationParam.DetonationFrame": "",
	// "spl__BulletStringerParam.DrawParam.CapsuleLength": "",
	// "spl__BulletStringerParam.DrawParam.CapsuleRadius": "",
	// "spl__BulletStringerParam.Effect1stParam.DelayFrame": "",
	// "spl__BulletStringerParam.Effect1stParam.MaxLen": "",
	// "spl__BulletStringerParam.Effect2ndParam.SmokeInterval": "",
	// "spl__BulletStringerParam.MoveParam.BrakeAirResist": "",
	// "spl__BulletStringerParam.MoveParam.BrakeGravity": "",
	// "spl__BulletStringerParam.MoveParam.BrakeToFreeStateFrame": "",
	// "spl__BulletStringerParam.MoveParam.BrakeToFreeVelocityXZ": "",
	// "spl__BulletStringerParam.MoveParam.BrakeToFreeVelocityY": "",
	// "spl__BulletStringerParam.MoveParam.FreeAirResist": "",
	// "spl__BulletStringerParam.MoveParam.FreeGravity": "",
	// "spl__BulletStringerParam.MoveParam.GoStraightStateEndMaxSpeed": "",
	// "spl__BulletStringerParam.MoveParam.GoStraightToBrakeStateFrame": "",
	// "spl__BulletStringerParam.MoveParam.SpawnSpeed": "",
	// "spl__BulletStringerParam.MoveParam.SpawnSpeedMax": "",
	// "spl__BulletStringerParam.MoveParam.SpawnSpeedMid": "",
	// "spl__BulletStringerParam.MoveParam.SpawnSpeedMin": "",
	// "spl__BulletStringerParam.PaintParam.WidthHalfMax": "",
	// "spl__BulletStringerParam.PaintParam.WidthHalfMid": "",
	// "spl__BulletStringerParam.PaintParam.WidthHalfMin": "",
	// "spl__BulletStringerParam.SplashPaintParam.DepthScaleMax": "",
	// "spl__BulletStringerParam.SplashPaintParam.WidthHalf": "",
	// "spl__BulletStringerParam.SplashSpawnParam.DropInterval": "",
	// "spl__BulletStringerParam.SplashSpawnParam.RandomSpawnVelXMax": "",
	// "spl__BulletStringerParam.SplashSpawnParam.SplashNumMax": "",
	// "spl__BulletStringerParam.SplashSpawnParam.SplitNum": "",
	// "spl__BulletStringerParam.WallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "spl__BulletStringerParam.WallDropMoveParam.FallPeriodFirstFrameMin": "",
	// "spl__BulletStringerParam.WallDropMoveParam.FallPeriodLastFrameMax": "",

	// spl__PaintMonitorSetParam
	// "spl__PaintMonitorSetParam.RelabilityMinTime": "",

	// spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate
	// "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate.Mid": "",

	// spl__SpawnBulletAdditionMovePlayerParam
	// "spl__SpawnBulletAdditionMovePlayerParam.XRate": "",
	// "spl__SpawnBulletAdditionMovePlayerParam.YMax": "",
	// "spl__SpawnBulletAdditionMovePlayerParam.YMinusRate": "",
	// "spl__SpawnBulletAdditionMovePlayerParam.YPlusRate": "",
	// "spl__SpawnBulletAdditionMovePlayerParam.ZRate": "",

	// spl__WeaponSaberParam
	// "spl__WeaponSaberParam.ChargeParam.AirChargeRateByInkEmpty": "",
	"spl__WeaponSaberParam.ChargeParam.ChargeFrameFullCharge":
		"Time in frames needed to reach a full charge.",
	// "spl__WeaponSaberParam.ChargeParam.ChargeFrameMinCharge": "",
	"spl__WeaponSaberParam.ChargeParam.InkConsumeFullCharge":
		"Ink consumed by a fully charged use, as a fraction of the ink tank.",
	// "spl__WeaponSaberParam.ChargeParam.InkConsumeMinCharge": "",
	// "spl__WeaponSaberParam.ChargeParam.InkRecoverStop": "",
	// "spl__WeaponSaberParam.ChargeParam.MoveSpeedFullCharge": "",
	// "spl__WeaponSaberParam.FootSplashPaintParam.DepthMaxDropHeight": "",
	// "spl__WeaponSaberParam.FootSplashPaintParam.DepthMinDropHeight": "",
	// "spl__WeaponSaberParam.FootSplashPaintParam.DepthScaleMax": "",
	// "spl__WeaponSaberParam.FootSplashPaintParam.DepthScaleMin": "",
	// "spl__WeaponSaberParam.FootSplashPaintParam.WidthHalf": "",
	// "spl__WeaponSaberParam.FootSplashPaintParam.WidthHalfNearest": "",
	// "spl__WeaponSaberParam.ShotGuideParam.ChargeStepSwingShotGuideFrame": "",
	// "spl__WeaponSaberParam.ShotGuideParam.ChargeSwingShotGuideFrame": "",
	// "spl__WeaponSaberParam.ShotGuideParam.HorizontalSightFrame": "",
	// "spl__WeaponSaberParam.ShotGuideParam.HorizontalSphereIndex": "",
	// "spl__WeaponSaberParam.ShotGuideParam.VerticalSightFrame": "",
	// "spl__WeaponSaberParam.ShotGuideParam.VerticalSphereIndex": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeMoveVelLimit": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeSwingASFrame": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeSwingFrame": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeSwingFrameStepAdd": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeSwingPostDelayFrame": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeSwingShotBulletFrame": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeSwingShotSlashFrame": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeSwingStepShotBulletFrame": "",
	// "spl__WeaponSaberParam.SwingParam.ChargeSwingStepShotSlashFrame": "",
	"spl__WeaponSaberParam.SwingParam.InkConsume":
		"Ink consumed per use, as a fraction of the ink tank.",
	// "spl__WeaponSaberParam.SwingParam.InkRecoverStop": "",
	// "spl__WeaponSaberParam.SwingParam.InkRecoverStop_ChargeSwing": "",
	// "spl__WeaponSaberParam.SwingParam.ReserveAcceptFrame": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_L.X": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_L.Y": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_L.Z": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_R.X": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_R.Y": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_R.Z": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_Vertical.X": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_Vertical.Y": "",
	// "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_Vertical.Z": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_L.X": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_L.Y": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_L.Z": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_R.X": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_R.Y": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_R.Z": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_Vertical.X": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_Vertical.Y": "",
	// "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_Vertical.Z": "",
	"spl__WeaponSaberParam.SwingParam.SideStepParam.ChargeFrame":
		"Time in frames spent charging.",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.InkConsume": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.InkRecoverStop": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.InputReqAcceptFrame": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveDist": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveDistKd_OnSlideGnd": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveFrame": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveStepKd": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveStepKd_Air": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.RepeatCnt": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.SlipMoveDistAir": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.SlipMoveDistGnd": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.SlipMoveFrame": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.TimeScale": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.TimeScaleFrm": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameMove": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameMove_Last": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoSideStep": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoSideStep_Last": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoSquid": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoSquid_Last": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoWeapon": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoWeapon_Last": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameOneMuzzle": "",
	// "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameOneMuzzle_Last": "",
	// "spl__WeaponSaberParam.SwingParam.StepStartStickHistoryFrame": "",
	// "spl__WeaponSaberParam.SwingParam.StepStartStickThresholdY": "",
	// "spl__WeaponSaberParam.SwingParam.WeakSwingASFrame": "",
	// "spl__WeaponSaberParam.SwingParam.WeakSwingFrame": "",
	// "spl__WeaponSaberParam.SwingParam.WeakSwingMoveVelLimit": "",
	// "spl__WeaponSaberParam.SwingParam.WeakSwingPostDelayFrame": "",
	// "spl__WeaponSaberParam.SwingParam.WeakSwingShotBulletFrame": "",
	// "spl__WeaponSaberParam.SwingParam.WeakSwingShotSlashFrame": "",

	// spl__WeaponShelterCanopyParam
	// "spl__WeaponShelterCanopyParam.CanopyChargeFrame": "",
	// "spl__WeaponShelterCanopyParam.CanopyDirXZ_DiffDeg_H": "",
	// "spl__WeaponShelterCanopyParam.CanopyDirXZ_DiffDeg_L": "",
	// "spl__WeaponShelterCanopyParam.CanopyDirXZ_RotDeg_H": "",
	// "spl__WeaponShelterCanopyParam.CanopyDirXZ_RotDeg_L": "",
	// "spl__WeaponShelterCanopyParam.CanopyDirXZ_RotDegBias": "",
	"spl__WeaponShelterCanopyParam.CanopyNakedFrame":
		"Time in frames for a broken canopy to recover.",
	// "spl__WeaponShelterCanopyParam.CanopyOpenEndBias": "",
	// "spl__WeaponShelterCanopyParam.CanopyOpenEndOffset": "",
	// "spl__WeaponShelterCanopyParam.CanopyOpenFrame": "",
	// "spl__WeaponShelterCanopyParam.CanopyOpenStartOffset": "",
	// "spl__WeaponShelterCanopyParam.CanopyShotFrame": "",
	"spl__WeaponShelterCanopyParam.InkConsumeUmbrella":
		"Ink used to launch the canopy, as a fraction of the ink tank.",

	// spl__WeaponShelterShotgunParam
	"spl__WeaponShelterShotgunParam.InkConsume":
		"Ink used per shot for shotgun-style Brella weapons, as a fraction of the ink tank.",
	// "spl__WeaponShelterShotgunParam.InkRecoverStop": "",
	// "spl__WeaponShelterShotgunParam.InkRecoverStopCanopy": "",
	// "spl__WeaponShelterShotgunParam.InkRecoverStopCharge": "",
	"spl__WeaponShelterShotgunParam.JumpGndCharge":
		"Jump height while holding ZR to fire. Higher means you can jump higher while firing.",
	// "spl__WeaponShelterShotgunParam.MoveSpeed": "",
	// "spl__WeaponShelterShotgunParam.MoveSpeedCharge": "",
	// "spl__WeaponShelterShotgunParam.PostDelayFrame_Main": "",
	// "spl__WeaponShelterShotgunParam.PostDelayFrame_MoveLmt": "",
	// "spl__WeaponShelterShotgunParam.PostNoShotReqFrame": "",
	// "spl__WeaponShelterShotgunParam.PreDelayFrame_HumanMain": "",
	// "spl__WeaponShelterShotgunParam.PreDelayFrame_SquidMain": "",
	// "spl__WeaponShelterShotgunParam.RepeatFrame": "",
	// "spl__WeaponShelterShotgunParam.ShotGuideFrame": "",

	// spl__WeaponSpGreatBarrierParam
	// "spl__WeaponSpGreatBarrierParam.KnockBackParam.ImpactValue": "",

	// spl__WeaponSpMicroLaserParam
	// "spl__WeaponSpMicroLaserParam.LaunchParam.LaserBitCenterOffset.X": "",
	// "spl__WeaponSpMicroLaserParam.LaunchParam.LaserBitCenterOffset.Y": "",
	// "spl__WeaponSpMicroLaserParam.LaunchParam.LaserBitCenterOffset.Z": "",
	// "spl__WeaponSpMicroLaserParam.LaunchParam.LaserBitRadius": "",
	// "spl__WeaponSpMicroLaserParam.LaunchParam.LockonDeg": "",
	// "spl__WeaponSpMicroLaserParam.LaunchParam.LockonRadius": "",
	// "spl__WeaponSpMicroLaserParam.PlayerParam.AfterShot_NoBombFrm": "",
	// "spl__WeaponSpMicroLaserParam.PlayerParam.AfterShot_NoShotFrm": "",
	// "spl__WeaponSpMicroLaserParam.PlayerParam.AfterShot_NoSquidFrm": "",

	// spl__WeaponSpMultiMissileLaunchParam
	// "spl__WeaponSpMultiMissileLaunchParam.ShotIntervalTargetArray": "",
	// "spl__WeaponSpMultiMissileLaunchParam.ShotNumOneTargetArray": "",

	// spl__WeaponSpMultiMissileLockOnParam
	// "spl__WeaponSpMultiMissileLockOnParam.TargetCircleEffectDefaultRadius": "",
	// "spl__WeaponSpMultiMissileLockOnParam.TargetInCircleRadius.High": "",
	// "spl__WeaponSpMultiMissileLockOnParam.TargetInCircleRadius.Low": "",
	// "spl__WeaponSpMultiMissileLockOnParam.TargetInCircleRadius.Mid": "",

	// spl__WeaponSpMultiMissilePlayerParam
	// "spl__WeaponSpMultiMissilePlayerParam.JumpVelLimitSearching": "",
	// "spl__WeaponSpMultiMissilePlayerParam.MoveVelLimitSearching": "",

	// spl__WeaponSpPogoParam
	"spl__WeaponSpPogoParam.Rise_Frame":
		"Time in frames spent rising into the air on activation.",
	"spl__WeaponSpPogoParam.Rise_NoDamageStartFrame":
		"Frame during the rise at which you become able to take damage again.",
	"spl__WeaponSpPogoParam.SpecialTotalFrame":
		"Total active duration of the special, in frames.",

	// spl__WeaponSpUltraShotParam
	// "spl__WeaponSpUltraShotParam.EjectCartridgeAngularVel.X": "",
	// "spl__WeaponSpUltraShotParam.EjectCartridgeAngularVel.Y": "",
	// "spl__WeaponSpUltraShotParam.EjectCartridgeAngularVel.Z": "",
	// "spl__WeaponSpUltraShotParam.EjectCartridgeFadeOutFrame": "",
	// "spl__WeaponSpUltraShotParam.EjectCartridgeFrame": "",
	// "spl__WeaponSpUltraShotParam.EjectCartridgeInitSpeed": "",
	// "spl__WeaponSpUltraShotParam.EjectCartridgeLifeTimeFrame": "",
	// "spl__WeaponSpUltraShotParam.HideCartridgeBeforeEjectFrame": "",
	// "spl__WeaponSpUltraShotParam.HoldAimFrame": "",
	// "spl__WeaponSpUltraShotParam.KnockBackParam.AirBreakRt": "",
	// "spl__WeaponSpUltraShotParam.KnockBackParam.ImpactValue": "",
	// "spl__WeaponSpUltraShotParam.KnockBackParam.StickDownRt": "",
	// "spl__WeaponSpUltraShotParam.MoveSpeed": "",
	// "spl__WeaponSpUltraShotParam.MoveSpeedInCharge": "",
	// "spl__WeaponSpUltraShotParam.RepeatFrame": "",
	// "spl__WeaponSpUltraShotParam.ShotDelayFrame": "",
	// "spl__WeaponSpUltraShotParam.SpecialDurationFrame.High": "",
	"spl__WeaponSpUltraShotParam.SpecialDurationFrame":
		"How long the special lasts, in frames.",
	// "spl__WeaponSpUltraShotParam.StartDelayFrame": "",

	// spl__WeaponSpUltraStampParam
	// "spl__WeaponSpUltraStampParam.BangDown_VelLimitY": "",
	// "spl__WeaponSpUltraStampParam.BangDownSmall_TurnLimitAngleDeg": "",
	// "spl__WeaponSpUltraStampParam.HoldSwingKnockBackParam.Accel": "",
	// "spl__WeaponSpUltraStampParam.HoldSwingKnockBackParam.Bias": "",
	// "spl__WeaponSpUltraStampParam.HoldSwingKnockBackParam.Distance": "",
	// "spl__WeaponSpUltraStampParam.SpecialTotalFrame.High": "",
	"spl__WeaponSpUltraStampParam.SpecialTotalFrame":
		"Total active duration of the special, in frames.",
	// "spl__WeaponSpUltraStampParam.VelLimit_NoPaint": "",

	// spl__WeaponStringerParam
	// "spl__WeaponStringerParam.ChargeKeepParam.KeepChargeFullFrame": "",
	// "spl__WeaponStringerParam.ChargeKeepParam.KeepChargePreDelayFrame": "",
	// "spl__WeaponStringerParam.ChargeKeepParam.KeepChargePreDelayFrame_Pre": "",
	// "spl__WeaponStringerParam.ChargeParam.AirChargeRateByInkEmpty": "",
	// "spl__WeaponStringerParam.ChargeParam.ChargeFrameFullCharge": "",
	// "spl__WeaponStringerParam.ChargeParam.ChargeFrameMidCharge": "",
	// "spl__WeaponStringerParam.ChargeParam.ChargeFrameMinCharge": "",
	// "spl__WeaponStringerParam.ChargeParam.FreezeFrameFullCharge": "",
	// "spl__WeaponStringerParam.ChargeParam.FreezeFrameMidCharge": "",
	// "spl__WeaponStringerParam.ChargeParam.FreezeFrameMinCharge": "",
	// "spl__WeaponStringerParam.ChargeParam.InkConsumeFullCharge": "",
	"spl__WeaponStringerParam.ChargeParam.InkConsumeMidCharge":
		"Ink consumed by a mid-charge shot, as a fraction of the ink tank.",
	"spl__WeaponStringerParam.ChargeParam.InkConsumeMinCharge":
		"Ink consumed by a minimum-charge shot, as a fraction of the ink tank.",
	// "spl__WeaponStringerParam.ChargeParam.JumpHeightFullCharge": "",
	// "spl__WeaponStringerParam.ChargeParam.MoveJumpDownBias": "",
	// "spl__WeaponStringerParam.ChargeParam.MoveJumpDownStartChargeRate": "",
	"spl__WeaponStringerParam.ChargeParam.MoveSpeedFullCharge":
		"Player movement speed while holding a full charge.",
	"spl__WeaponStringerParam.ChargeParam.PostDelayFrame":
		"Delay in frames after firing during which you cannot act.",
	// "spl__WeaponStringerParam.PlayerParam.BowTiltDegRcvInterpRate": "",
	// "spl__WeaponStringerParam.ShotGuideParam.GuideDrawFrameFirst": "",
	// "spl__WeaponStringerParam.ShotGuideParam.GuideDrawFrameSecond": "",
	// "spl__WeaponStringerParam.ShotGuideParam.MainArrowGuideDrawFrame": "",
	// "spl__WeaponStringerParam.ShotGuideParam.SubArrowGuideDrawFrame": "",
	// "spl__WeaponStringerParam.ShotGuideParam.TiltGuideLength": "",
	// "spl__WeaponStringerParam.ShotGuideParam.TiltGuideWidth": "",
	"spl__WeaponStringerParam.ShotParam.ArrowAngleMax":
		"Angle between the stringer's arrows at maximum charge.",
	"spl__WeaponStringerParam.ShotParam.ArrowAngleMid":
		"Angle between the stringer's arrows at mid charge.",
	"spl__WeaponStringerParam.ShotParam.ArrowAngleMin":
		"Angle between the stringer's arrows at minimum charge.",
	// "spl__WeaponStringerParam.ShotParam.ArrowMargin": "",
	// "spl__WeaponStringerParam.ShotParam.ArrowNum": "",
	// "spl__WeaponStringerParam.ShotParam.BowJumpTiltSpeedForward": "",
	// "spl__WeaponStringerParam.ShotParam.BowJumpTiltSpeedReverse": "",
	// "spl__WeaponStringerParam.ShotParam.BowTiltDegreeMax": "",
	// "spl__WeaponStringerParam.ShotParam.BowTiltKeepFrame": "",
	// "spl__WeaponStringerParam.ShotParam.BowTiltResetSpeed": "",

	// SplashPaintParam
	// "SplashPaintParam.DepthHalfFullCharge": "",
	// "SplashPaintParam.DepthHalfMaxCharge": "",
	// "SplashPaintParam.DepthHalfMinCharge": "",
	// "SplashPaintParam.DepthMaxDropHeight": "",
	// "SplashPaintParam.DepthMinDropHeight": "",
	// "SplashPaintParam.DepthScaleMax": "",
	// "SplashPaintParam.DepthScaleMin": "",
	// "SplashPaintParam.LastSplashRateFullCharge": "",
	// "SplashPaintParam.LastSplashRateMaxCharge": "",
	// "SplashPaintParam.LastSplashRateMinCharge": "",
	// "SplashPaintParam.RadiusSpawnNearest": "",
	// "SplashPaintParam.WidthHalf": "",
	// "SplashPaintParam.WidthHalfFullCharge": "",
	// "SplashPaintParam.WidthHalfMaxCharge": "",
	// "SplashPaintParam.WidthHalfMinCharge": "",
	// "SplashPaintParam.WidthHalfNearest": "",

	// SplashSlosherScatterParam
	// "SplashSlosherScatterParam.CollisionParam.EndRadiusForField": "",
	// "SplashSlosherScatterParam.CollisionParam.EndRadiusForPlayer": "",
	// "SplashSlosherScatterParam.CollisionParam.InitRadiusForField": "",
	// "SplashSlosherScatterParam.CollisionParam.InitRadiusForPlayer": "",
	// "SplashSlosherScatterParam.PaintRadius": "",
	// "SplashSlosherScatterParam.SpawnFirstFrame": "",
	// "SplashSlosherScatterParam.SpawnMaxDegree": "",
	// "SplashSlosherScatterParam.SpawnMaxNum": "",
	// "SplashSlosherScatterParam.SpawnMinDegree": "",
	// "SplashSlosherScatterParam.SpawnOffsetMax": "",
	// "SplashSlosherScatterParam.SpawnOffsetMin": "",
	// "SplashSlosherScatterParam.SpawnSpanChangeEndFrame": "",
	// "SplashSlosherScatterParam.SpawnSpanFrameFirst": "",
	// "SplashSlosherScatterParam.SpawnSpanFrameLast": "",
	// "SplashSlosherScatterParam.SpawnSpeed": "",

	// SplashSlosherSpiralParam
	// "SplashSlosherSpiralParam.CollisionParam.EndRadiusForField": "",
	// "SplashSlosherSpiralParam.CollisionParam.EndRadiusForPlayer": "",
	// "SplashSlosherSpiralParam.CollisionParam.InitRadiusForField": "",
	// "SplashSlosherSpiralParam.CollisionParam.InitRadiusForPlayer": "",
	// "SplashSlosherSpiralParam.LifeFrame": "",
	// "SplashSlosherSpiralParam.RoundSplitNum": "",
	// "SplashSlosherSpiralParam.SameTimeSpawnNum": "",
	// "SplashSlosherSpiralParam.SpawnSpanChangeEndFrame": "",
	// "SplashSlosherSpiralParam.SpawnSpanChangeStartFrame": "",
	// "SplashSlosherSpiralParam.SpawnSpanFrameFirst": "",
	// "SplashSlosherSpiralParam.SpawnSpanFrameLast": "",
	// "SplashSlosherSpiralParam.SpawnSpeedChangeEndFallHeight": "",
	// "SplashSlosherSpiralParam.SpawnSpeedChangeStartFallHeight": "",
	// "SplashSlosherSpiralParam.SpawnSpeedFirst": "",
	// "SplashSlosherSpiralParam.SpawnSpeedLast": "",

	// SplashSpawnLapOverParam
	// "SplashSpawnLapOverParam.SpawnBetweenLength": "",
	// "SplashSpawnLapOverParam.SpawnNearestLength": "",
	// "SplashSpawnLapOverParam.SpawnNum": "",
	// "SplashSpawnLapOverParam.SplitNum": "",

	// SplashSpawnParam
	// "SplashSpawnParam.ForceSpawnNearestAddNumArray": "",
	// "SplashSpawnParam.OnTopRateFullCharge": "",
	// "SplashSpawnParam.OnTopRateMaxCharge": "",
	// "SplashSpawnParam.OnTopRateMinCharge": "",
	// "SplashSpawnParam.RandomSpawnVelXMax": "",
	// "SplashSpawnParam.RandomSpawnVelYMax": "",
	// "SplashSpawnParam.RandomSpawnVelZMax": "",
	// "SplashSpawnParam.RandomSpawnVelZMin": "",
	// "SplashSpawnParam.SkipNum": "",
	"SplashSpawnParam.SpawnBetweenLength":
		"Spacing between the spray droplets a shot drops along its path (the inking at the player's feet is controlled separately).",
	// "SplashSpawnParam.SpawnNearestChargeRate": "",
	// "SplashSpawnParam.SpawnNearestLength": "",
	// "SplashSpawnParam.SpawnNearestMaxOffsetXZ": "",
	"SplashSpawnParam.SpawnNum":
		"Number of spray droplets a shot creates along its path. The inking that occurs at the player's feet is controlled separately.",
	"SplashSpawnParam.SplitNum":
		"Affects how likely ink splatter is to fall around the player's feet (higher is likelier)",

	// SplashWallHitParam
	// "SplashWallHitParam.SpawnParam.BetweenDistance": "",
	// "SplashWallHitParam.SpawnParam.DistanceXZRate": "",
	// "SplashWallHitParam.SpawnParam.FirstDistance": "",
	// "SplashWallHitParam.SpawnParam.NumMax": "",
	// "SplashWallHitParam.SpawnParam.SpawnMaxChargeFrame": "",
	// "SplashWallHitParam.SpawnParam.VelocityMinusYRate": "",
	// "SplashWallHitParam.WallDropCollisionPaintParam.FallPeriodFirstSecondTargetAlp": "",
	// "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusFall": "",
	// "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusFallMaxCharge": "",
	// "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusFallMinCharge": "",
	// "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusGround": "",
	// "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusShock": "",
	// "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusShockMaxCharge": "",
	// "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusShockMinCharge": "",
	// "SplashWallHitParam.WallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "SplashWallHitParam.WallDropMoveParam.FallPeriodFirstFrameMin": "",
	// "SplashWallHitParam.WallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "SplashWallHitParam.WallDropMoveParam.FallPeriodLastFrameMax": "",
	// "SplashWallHitParam.WallDropMoveParam.FallPeriodLastFrameMin": "",
	// "SplashWallHitParam.WallDropMoveParam.FallPeriodSecondFrame": "",
	// "SplashWallHitParam.WallDropMoveParam.FallPeriodSecondTargetSpeed": "",

	// SubWeaponSetting
	"SubWeaponSetting.SubInkSaveLv":
		"Internal ink-saving tier of the sub weapon. Higher means the sub costs less ink.",

	// SwingBigBlastParam
	// "SwingBigBlastParam.CrossPaintCheckLength": "",
	// "SwingBigBlastParam.CrossPaintRadius": "",
	// "SwingBigBlastParam.DamageOffsetY": "",
	// "SwingBigBlastParam.KnockBackParam.Accel": "",
	// "SwingBigBlastParam.KnockBackParam.Bias": "",
	// "SwingBigBlastParam.KnockBackParam.Distance": "",
	// "SwingBigBlastParam.PaintOffsetY": "",
	// "SwingBigBlastParam.PaintRadius": "",

	// SwingParam
	// "SwingParam.DefiladeHandSideOffsetLength": "",
	// "SwingParam.StateSwingUpLateFrame": "",

	// SwingSmallBlastParam
	// "SwingSmallBlastParam.CrossPaintCheckLength": "",
	// "SwingSmallBlastParam.CrossPaintRadius": "",
	// "SwingSmallBlastParam.DamageOffsetY": "",
	// "SwingSmallBlastParam.KnockBackParam.Accel": "",
	// "SwingSmallBlastParam.KnockBackParam.Bias": "",
	// "SwingSmallBlastParam.KnockBackParam.Distance": "",
	// "SwingSmallBlastParam.PaintOffsetY": "",
	// "SwingSmallBlastParam.PaintRadius": "",

	// SwingUnitGroupParam
	// "SwingUnitGroupParam.DamageParam.DamageRejectEndFrame": "",
	// "SwingUnitGroupParam.DamageParam.DamageRejectRate": "",
	// "SwingUnitGroupParam.DamageParam.DamageRejectStartFrame": "",
	// "SwingUnitGroupParam.DamageParam.Inside.DamageHighDistance": "",
	// "SwingUnitGroupParam.DamageParam.Inside.DamageHighValue": "",
	// "SwingUnitGroupParam.DamageParam.Inside.DamageLowDistance": "",
	// "SwingUnitGroupParam.DamageParam.Inside.DamageLowValue": "",
	// "SwingUnitGroupParam.DamageParam.Inside.DamageMaxDistance": "",
	// "SwingUnitGroupParam.DamageParam.Inside.DamageMaxValue": "",
	// "SwingUnitGroupParam.DamageParam.Inside.DamageMinDistance": "",
	// "SwingUnitGroupParam.DamageParam.Inside.DamageMinValue": "",
	// "SwingUnitGroupParam.DamageParam.Inside.Degree": "",
	// "SwingUnitGroupParam.DamageParam.Inside.FinalDamageMinValue": "",
	// "SwingUnitGroupParam.DamageParam.Inside.InsideDistanceXZ": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageHighDistance": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageHighValue": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageLowDistance": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageLowValue": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageMaxDistance": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageMaxValue": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageMinDistance": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageMinValue": "",
	// "SwingUnitGroupParam.DamageParam.Outside.DamageRate": "",
	// "SwingUnitGroupParam.DamageParam.Outside.Degree": "",
	// "SwingUnitGroupParam.DamageParam.Outside.FinalDamageMinValue": "",
	// "SwingUnitGroupParam.PushOutCheckFieldCollisionFrame": "",
	// "SwingUnitGroupParam.SplashNearestParam.LoopNum": "",
	// "SwingUnitGroupParam.SplashNearestParam.OrderNum": "",
	// "SwingUnitGroupParam.SplashNearestParam.SpawnParam.MaxHeight": "",
	// "SwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.X": "",
	// "SwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Y": "",
	// "SwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Z": "",
	// "SwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintDepthScale": "",
	// "SwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintWidthHalf": "",

	// SwingWallDropCollisionPaintParam
	// "SwingWallDropCollisionPaintParam.PaintRadiusGround": "",

	// SwingWallDropMoveParam
	// "SwingWallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "SwingWallDropMoveParam.FallPeriodFirstFrameMin": "",
	// "SwingWallDropMoveParam.FallPeriodLastFrameMax": "",
	// "SwingWallDropMoveParam.FallPeriodLastFrameMin": "",
	// "SwingWallDropMoveParam.FallPeriodSecondFrame": "",
	// "SwingWallDropMoveParam.FallPeriodSecondTargetSpeed": "",

	// ThrowBlastParam
	// "ThrowBlastParam.CrossPaintCheckLength": "",
	// "ThrowBlastParam.CrossPaintRadius": "",
	// "ThrowBlastParam.KnockBackParam.Accel": "",
	// "ThrowBlastParam.KnockBackParam.Bias": "",
	// "ThrowBlastParam.KnockBackParam.Distance": "",
	// "ThrowBlastParam.PaintRadius": "",

	// ThrowMoveParam
	// "ThrowMoveParam.DirectAccel": "",
	// "ThrowMoveParam.DirectDamageValue": "",
	// "ThrowMoveParam.FlyGravity": "",
	// "ThrowMoveParam.FlyPositionAirResist": "",
	// "ThrowMoveParam.GuideHitCollisionType": "",
	// "ThrowMoveParam.GuideRadius": "",
	// "ThrowMoveParam.SpawnSpeedY": "",
	// "ThrowMoveParam.SpawnSpeedYWorldMin": "",
	// "ThrowMoveParam.SpawnSpeedZSpecUp.High": "",
	// "ThrowMoveParam.SpawnSpeedZSpecUp.Low": "",
	// "ThrowMoveParam.SpawnSpeedZSpecUp.Mid": "",

	// UltraShotMoveParam
	// "UltraShotMoveParam.OrbitalRadiusEnd": "",
	// "UltraShotMoveParam.OrbitalRadiusTransitionFrame": "",

	// VariableCollisionParam
	// "VariableCollisionParam.EndRadiusForPlayer": "",
	// "VariableCollisionParam.InitRadiusForPlayer": "",

	// VariableDamageParam
	// "VariableDamageParam.ReduceEndFrame": "",
	// "VariableDamageParam.ReduceStartFrame": "",
	// "VariableDamageParam.ValueFullChargeMax": "",
	// "VariableDamageParam.ValueMax": "",
	// "VariableDamageParam.ValueMin": "",

	// VariableMoveParam
	// "VariableMoveParam.GoStraightStateEndMaxSpeed": "",
	// "VariableMoveParam.GoStraightToBrakeStateFrame": "",
	// "VariableMoveParam.SpawnSpeed": "",
	// "VariableMoveParam.SpawnSpeedFirstLastAndSecond": "",
	// "VariableMoveParam.SpawnSpeedRandomBias": "",
	// "VariableMoveParam.SpawnSpeedRandomRate": "",

	// VariablePaintParam
	// "VariablePaintParam.DepthScaleMax": "",
	// "VariablePaintParam.DepthScaleMaxBreakFree": "",
	// "VariablePaintParam.DepthScaleMin": "",
	// "VariablePaintParam.DepthScaleMinBreakFree": "",
	// "VariablePaintParam.DistanceFar": "",
	// "VariablePaintParam.DistanceMiddle": "",
	// "VariablePaintParam.DistanceNear": "",
	// "VariablePaintParam.HeightUseDepthScaleMaxBreakFree": "",
	// "VariablePaintParam.WidthHalfFar": "",
	// "VariablePaintParam.WidthHalfMiddle": "",
	// "VariablePaintParam.WidthHalfNear": "",

	// VariableShotParam
	// "VariableShotParam.Jump_DegBiasDecreaseStartFrame": "",
	// "VariableShotParam.Jump_DegBiasEndFrame": "",
	// "VariableShotParam.Jump_DegBiasMax": "",
	// "VariableShotParam.Jump_DegSwerve": "",
	// "VariableShotParam.MoveSpeed": "",
	// "VariableShotParam.PitchDegBias": "",
	"VariableShotParam.PitchDegSwerve":
		"Random vertical shot spread. Lower is more accurate.",
	// "VariableShotParam.RepeatFrame": "",
	// "VariableShotParam.Stand_DegBiasMax": "",
	"VariableShotParam.Stand_DegSwerve":
		"Random shot spread, while standing still. Lower is more accurate.",
	// "VariableShotParam.VariableInterpolatedFrame": "",

	// VariableSplashPaintParam
	// "VariableSplashPaintParam.DepthScaleMax": "",
	// "VariableSplashPaintParam.DepthScaleMin": "",
	// "VariableSplashPaintParam.WidthHalf": "",
	// "VariableSplashPaintParam.WidthHalfNearest": "",

	// VariableSplashSpawnParam
	// "VariableSplashSpawnParam.SpawnBetweenLength": "",
	// "VariableSplashSpawnParam.SpawnNearestLength": "",
	// "VariableSplashSpawnParam.SpawnNum": "",
	// "VariableSplashSpawnParam.SplitNum": "",

	// VariableWeaponParam
	// "VariableWeaponParam.BurstAimMoveFrame": "",
	// "VariableWeaponParam.InkConsume": "",
	// "VariableWeaponParam.Jump_DegBiasDecreaseStartFrame": "",
	// "VariableWeaponParam.Jump_DegBiasEndFrame": "",
	// "VariableWeaponParam.Jump_DegBiasMax": "",
	// "VariableWeaponParam.Jump_DegSwerve": "",
	// "VariableWeaponParam.MoveSpeed": "",
	// "VariableWeaponParam.PostDelayFrame": "",
	// "VariableWeaponParam.RepeatFrame": "",
	// "VariableWeaponParam.ShotGuideFrame": "",
	// "VariableWeaponParam.Stand_DegBiasDecrease": "",
	// "VariableWeaponParam.Stand_DegBiasKf": "",
	// "VariableWeaponParam.Stand_DegBiasMin": "",
	// "VariableWeaponParam.Stand_DegSwerve": "",

	// VerticalSwingUnitGroupParam
	// "VerticalSwingUnitGroupParam.DamageParam.DamageRejectEndFrame": "",
	// "VerticalSwingUnitGroupParam.DamageParam.DamageRejectRate": "",
	// "VerticalSwingUnitGroupParam.DamageParam.DamageRejectStartFrame": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageHighDistance": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageHighValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageLowDistance": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageLowValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageMaxDistance": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageMaxValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageMinDistance": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageMinValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.Degree": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.DepletionDamageRate": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.FinalDamageMinValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Inside.InsideDistanceXZ": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageHighDistance": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageHighValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageLowDistance": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageLowValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageMaxDistance": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageMaxValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageMinDistance": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageMinValue": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageRate": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.Degree": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.DepletionDamageRate": "",
	// "VerticalSwingUnitGroupParam.DamageParam.Outside.FinalDamageMinValue": "",
	// "VerticalSwingUnitGroupParam.SpawnSplashBetweenLength": "",
	// "VerticalSwingUnitGroupParam.SpawnSplashFirstLength": "",
	// "VerticalSwingUnitGroupParam.SpawnSplashNum": "",
	// "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.MaxHeight": "",
	// "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.X": "",
	// "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Y": "",
	// "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Z": "",
	// "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintDepthScale": "",
	// "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintWidthHalf": "",
	// "VerticalSwingUnitGroupParam.SplashPaintParam.DepthScaleMax": "",
	// "VerticalSwingUnitGroupParam.SplashPaintParam.DepthScaleMin": "",
	// "VerticalSwingUnitGroupParam.SplashPaintParam.WidthHalf": "",
	// "VerticalSwingUnitGroupParam.SplashPaintParam.WidthHalfNearest": "",

	// WallDropCollisionPaintParam
	// "WallDropCollisionPaintParam.FallPeriodFirstSecondTargetAlp": "",
	// "WallDropCollisionPaintParam.PaintRadiusFall": "",
	// "WallDropCollisionPaintParam.PaintRadiusFallMaxCharge": "",
	// "WallDropCollisionPaintParam.PaintRadiusFallMinCharge": "",
	// "WallDropCollisionPaintParam.PaintRadiusGround": "",
	// "WallDropCollisionPaintParam.PaintRadiusShock": "",
	// "WallDropCollisionPaintParam.PaintRadiusShockMaxCharge": "",
	// "WallDropCollisionPaintParam.PaintRadiusShockMinCharge": "",

	// WallDropMoveParam
	// "WallDropMoveParam.FallPeriodFirstFrameMax": "",
	// "WallDropMoveParam.FallPeriodFirstFrameMin": "",
	// "WallDropMoveParam.FallPeriodFirstTargetSpeed": "",
	// "WallDropMoveParam.FallPeriodLastFrameMax": "",
	// "WallDropMoveParam.FallPeriodLastFrameMin": "",
	// "WallDropMoveParam.FallPeriodSecondFrame": "",
	// "WallDropMoveParam.FallPeriodSecondTargetSpeed": "",
	// "WallDropMoveParam.FreeGravityType": "",

	// WallParam
	// "WallParam.ClosingFrame": "",
	"WallParam.DamageValue": "Damage dealt by a hit.",
	// "WallParam.DebugBlockRotateDistance": "",
	// "WallParam.DebugBlockRotateSpeedMax": "",
	// "WallParam.DebugBlockRotateSpeedMin": "",
	// "WallParam.DebugCircleRadius": "",
	// "WallParam.DebugCircleSideOffset": "",
	// "WallParam.DebugCircleSlantOffset.X": "",
	// "WallParam.DebugCircleSlantOffset.Y": "",
	// "WallParam.DebugWallAlpha": "",
	// "WallParam.MarkingFrame": "",
	// "WallParam.MoveSpeed.High": "",
	// "WallParam.MoveSpeed.Low": "",
	// "WallParam.MoveSpeed.Mid": "",
	// "WallParam.RunningFrame": "",
	// "WallParam.SaturationChangeOutFrame": "",
	// "WallParam.SaturationFrame": "",
	// "WallParam.SaturationTarget": "",
	// "WallParam.SplashPaintRadius": "",
	// "WallParam.SplashSpawnAllFrame": "",
	// "WallParam.SplashSpawnSpan": "",
	// "WallParam.StartUpFrame": "",
	// "WallParam.TargetSpeedFrame": "",
	// "WallParam.WallDepth": "",
	// "WallParam.WallHeightDown": "",
	// "WallParam.WallHeightUp": "",
	// "WallParam.WallWidth": "",

	// WeaponDivideChargerParam
	// "WeaponDivideChargerParam.FullChargeDivideNum": "",
	// "WeaponDivideChargerParam.MuzzleLocalPos.X": "",
	// "WeaponDivideChargerParam.MuzzleLocalPos.Y": "",
	// "WeaponDivideChargerParam.MuzzleLocalPos.Z": "",

	// WeaponFullChargeParam
	// "WeaponFullChargeParam.MaxShootingFrame_Second": "",
	// "WeaponFullChargeParam.RepeatFrame": "",

	// WeaponKeepChargeParam
	// "WeaponKeepChargeParam.KeepChargeFullFrame": "",
	// "WeaponKeepChargeParam.KeepChargePreDelayFrame": "",
	// "WeaponKeepChargeParam.KeepChargePreDelayFrame_Pre": "",
	// "WeaponKeepChargeParam.MuzzleLocalPos.X": "",
	// "WeaponKeepChargeParam.MuzzleLocalPos.Y": "",
	// "WeaponKeepChargeParam.MuzzleLocalPos.Z": "",

	// WeaponParam
	// "WeaponParam.AirChargeRateByInkEmpty": "",
	// "WeaponParam.ArmorHP": "",
	// "WeaponParam.Boost_JumpVel": "",
	// "WeaponParam.BurstAimMoveFrame": "",
	// "WeaponParam.ChargeFrame": "",
	"WeaponParam.ChargeFrame_First":
		"Frames until the first charge level finishes. Lower means it reaches the first level faster.",
	"WeaponParam.ChargeFrame_Second":
		"Frames until the second, full charge level finishes. Lower means it reaches a full charge faster.",
	// "WeaponParam.ChargeFrameBlastRate": "",
	"WeaponParam.ChargeFrameFullCharge":
		"Frames needed to reach a full charge. Lower means the weapon charges faster.",
	"WeaponParam.ChargeFrameMidCharge":
		"Time in frames needed to reach a mid-level charge.",
	// "WeaponParam.ChargeFrameMinCharge": "",
	// "WeaponParam.ChargeRateAutoPerFrame.High": "",
	// "WeaponParam.ChargeRateAutoPerFrame.Low": "",
	// "WeaponParam.ChargeRateAutoPerFrame.Mid": "",
	"WeaponParam.ChargeRateNiceFriend":
		"How much the special's gauge charges from teammates' Booyahs.",
	// "WeaponParam.ChargeRateNiceSelf": "",
	// "WeaponParam.ColBullet_OffsetY": "",
	// "WeaponParam.ColBullet_OffsetZ_Head": "",
	// "WeaponParam.ColBullet_OffsetZ_Tail": "",
	// "WeaponParam.ColBullet_Radius": "",
	"WeaponParam.Dash_ChargeCancelableFrame":
		"Frames into a dash charge after which it can still be canceled.",
	"WeaponParam.Dash_ChargeFrame":
		"Time in frames needed to charge a dash attack.",
	// "WeaponParam.Dash_InvalidFrame": "",
	// "WeaponParam.Dash_MoveFrame": "",
	// "WeaponParam.Dash_MoveSpeed_Floor_MaxCharge": "",
	// "WeaponParam.Dash_MoveSpeed_Floor_MinCharge": "",
	// "WeaponParam.Dash_MoveSpeed_Floor_NoPaint": "",
	// "WeaponParam.Dash_MoveSpeed_Wall_MaxCharge": "",
	// "WeaponParam.Dash_MoveSpeed_Wall_MinCharge": "",
	// "WeaponParam.Dash_MoveSpeedCoef_Charged": "",
	// "WeaponParam.Dash_MoveSpeedCoef_Charging_Ed": "",
	// "WeaponParam.Dash_MoveSpeedCoef_Charging_St": "",
	// "WeaponParam.Distance_Afterglow": "",
	// "WeaponParam.DokanWarpLmtFrm_FinishSpecial": "",
	// "WeaponParam.ExhaleWaitFrame": "",
	// "WeaponParam.FinishAlertStartFrame": "",
	// "WeaponParam.FrameOffsetDegreeRate": "",
	// "WeaponParam.FrameOffsetMaxDegree": "",
	// "WeaponParam.FrameOffsetMaxMoveLength": "",
	// "WeaponParam.FreezeFrameFullCharge": "",
	// "WeaponParam.FreezeFrameMinCharge": "",
	// "WeaponParam.GravityKf": "",
	// "WeaponParam.InhaleToExhaleWaitFrame": "",
	// "WeaponParam.InkCapacityRt": "",
	"WeaponParam.InkConsume":
		"Ink used per shot, as a fraction of the ink tank (1.0 = the whole tank).",
	"WeaponParam.InkConsume_Hook":
		"Ink consumed per hook shot, as a fraction of the tank.",
	"WeaponParam.InkConsume_PerSec":
		"Ink drained per second while active, as a fraction of the tank.",
	"WeaponParam.InkConsumeFullCharge":
		"Ink used by a fully charged shot, as a fraction of the ink tank (1.0 = the whole tank).",
	"WeaponParam.InkConsumeMinCharge":
		"Ink used by a tap shot (minimum charge), as a fraction of the ink tank (1.0 = the whole tank).",
	// "WeaponParam.InkEmptyChargeTimes": "",
	"WeaponParam.InkRecoverStop":
		'Frames after firing before the ink tank starts refilling ("white ink"). Higher means a longer wait before ink recovery begins.',
	// "WeaponParam.InkRecoverStopMaxCharge": "",
	// "WeaponParam.Jump_DegBiasDecreaseStartFrame": "",
	// "WeaponParam.Jump_DegBiasEndFrame": "",
	// "WeaponParam.Jump_DegBiasMax": "",
	"WeaponParam.Jump_DegSwerve":
		"Shot spread in degrees while jumping. Lower is more accurate.",
	// "WeaponParam.JumpGnd_Charge": "",
	// "WeaponParam.JumpHeightFullCharge": "",
	// "WeaponParam.JumpHeightMinCharge": "",
	// "WeaponParam.JumpVelExhale": "",
	// "WeaponParam.KnockBackKf_Charge_Ed": "",
	// "WeaponParam.KnockBackKf_Charge_Ed_Frm": "",
	// "WeaponParam.KnockBackKf_Charge_St": "",
	// "WeaponParam.KnockBackKf_Dash": "",
	// "WeaponParam.KnockBackKf_Std": "",
	// "WeaponParam.KnockBackParam.ImpactValue": "",
	"WeaponParam.LapOver_DegSwerve":
		"Random shot spread, during a roller's vertical flick. Lower is more accurate.",
	// "WeaponParam.LapOver_RepeatFrame": "",
	// "WeaponParam.MaxChargeFrame": "",
	// "WeaponParam.MaxLengthHook": "",
	"WeaponParam.MaxShootingFrame_First":
		"Firing duration in frames at the first charge level.",
	"WeaponParam.MaxShootingFrame_Second":
		"Firing duration in frames at the second/full charge level.",
	"WeaponParam.MinLengthHook_Floor":
		"Minimum zip distance when hooking onto the floor.",
	// "WeaponParam.MinLengthHook_Wall": "",
	// "WeaponParam.MoveAcc": "",
	// "WeaponParam.MoveAccAttack": "",
	// "WeaponParam.MoveBrk": "",
	// "WeaponParam.MoveCancelableFrame": "",
	"WeaponParam.MoveFrame": "Duration, in frames, of the movement.",
	// "WeaponParam.MoveFrameOmen": "",
	// "WeaponParam.MoveJumpDownBias": "",
	// "WeaponParam.MoveJumpDownStartChargeRate": "",
	// "WeaponParam.MoveLmtFrame": "",
	// "WeaponParam.MoveRotDeg": "",
	"WeaponParam.MoveSpeed":
		"Player movement speed while firing. Higher means you can strafe faster while shooting.",
	// "WeaponParam.MoveSpeed_Aerial": "",
	"WeaponParam.MoveSpeed_Charge":
		"Player movement speed while charging a shot. Higher means you can strafe faster while charging.",
	// "WeaponParam.MoveSpeedAttack_Init": "",
	"WeaponParam.MoveSpeedFullCharge":
		"Movement speed while charging or firing at full charge.",
	// "WeaponParam.MoveSpeedMinCharge": "",
	// "WeaponParam.NoDamageFrame_AfterBurst": "",
	// "WeaponParam.NoDamageStartFrame_PreMove": "",
	// "WeaponParam.NoShotBombFrm_FinishSpecial": "",
	// "WeaponParam.NoShotBombReqFrm_FinishSpecial": "",
	// "WeaponParam.OffsetLocal_DetectPlayer.X": "",
	// "WeaponParam.OffsetLocal_DetectPlayer.Y": "",
	// "WeaponParam.OffsetLocal_DetectPlayer.Z": "",
	// "WeaponParam.PaintSplashParam.DepthMaxDropHeight": "",
	// "WeaponParam.PaintSplashParam.DepthMinDropHeight": "",
	// "WeaponParam.PaintSplashParam.DepthScaleMax": "",
	// "WeaponParam.PaintSplashParam.DepthScaleMin": "",
	// "WeaponParam.PaintSplashParam.WidthHalf": "",
	// "WeaponParam.PaintSplashParam.WidthHalfNearest": "",
	// "WeaponParam.PaintSplashSpanFrame": "",
	// "WeaponParam.PitchDegBias": "",
	// "WeaponParam.PitchDegSwerve": "",
	// "WeaponParam.PostDelayFrame": "",
	"WeaponParam.PostDelayFrame_Blaster":
		"Frames of restricted movement after firing a blaster shot. Higher means a longer recovery before you can move freely again.",
	// "WeaponParam.PreBurstEmitFrame": "",
	// "WeaponParam.PreBurstFrame": "",
	// "WeaponParam.PreDelayFrame_HumanShot": "",
	// "WeaponParam.PreDelayFrame_SquidShot": "",
	// "WeaponParam.PreMoveFrame": "",
	// "WeaponParam.Radius_DetectPlayer": "",
	"WeaponParam.RepeatFrame":
		"Interval in frames between consecutive shots when firing continuously. Lower means a faster fire rate.",
	// "WeaponParam.RutPaintRadius": "",
	// "WeaponParam.ShotDirXZ_RotDegH": "",
	// "WeaponParam.ShotFailedIntervalFrm": "",
	// "WeaponParam.ShotGuide.BulletOrderNumInUnit": "",
	// "WeaponParam.ShotGuide.Frame": "",
	// "WeaponParam.ShotGuide.UnitOrderNum": "",
	// "WeaponParam.ShotGuideFrame": "",
	// "WeaponParam.ShotPitVel": "",
	"WeaponParam.SpecialReduceFrame":
		"Frames the special gauge won't recharge after using special. Higher means a longer wait before the special starts recharging.",
	// "WeaponParam.SpecialTotalFrame": "",
	// "WeaponParam.SpecialTotalFrame.High": "",
	// "WeaponParam.SpecialTotalFrame.Low": "",
	// "WeaponParam.SpecialTotalFrame.Mid": "",
	// "WeaponParam.SquidShotShorteningFrame": "",
	// "WeaponParam.Stand_DegBiasDecrease": "",
	// "WeaponParam.Stand_DegBiasKf": "",
	// "WeaponParam.Stand_DegBiasMax": "",
	// "WeaponParam.Stand_DegBiasMin": "",
	"WeaponParam.Stand_DegSwerve":
		"Shot spread in degrees while standing on the ground. Lower is more accurate.",
	// "WeaponParam.StartDelayFrame_NetRecv": "",
	// "WeaponParam.StartDelayFrame_NetSend": "",
	// "WeaponParam.StickDownRt_OnVLift": "",
	// "WeaponParam.SwingLiftAnimFrame": "",
	// "WeaponParam.SwingLiftFrame": "",
	// "WeaponParam.TargetCenterBias": "",
	// "WeaponParam.TargetCenterDistanceMax": "",
	// "WeaponParam.TargetCenterDistanceMin": "",
	// "WeaponParam.TargetCenterRadius": "",
	// "WeaponParam.TargetHeightCheckSpanFrame": "",
	// "WeaponParam.ThanksPaintPointMax": "",
	// "WeaponParam.ThanksPaintPointOnce": "",
	// "WeaponParam.TripleShotSpanFrame": "",
	// "WeaponParam.UnrelaxFrame": "",
	// "WeaponParam.UseDistanceMinCameraDownRate": "",
	// "WeaponParam.UseDistanceMinCameraUpRate": "",
	// "WeaponParam.VariableShotRepeatStartFrame": "",
	// "WeaponParam.VelGnd_Bias_Charge": "",
	// "WeaponParam.VelGnd_DownRt_Charge": "",
	// "WeaponParam.WaitFrameShot2Attack": "",

	// WeaponRollParam
	"WeaponRollParam.DashFrame":
		"Frames of acceleration before reaching top speed while holding ZR to ink and move forward. Lower means you reach top speed sooner.",
	"WeaponRollParam.InkConsumeMaxPerFrame":
		"Maximum ink consumed per frame while rolling, as a fraction of the ink tank.",
	"WeaponRollParam.InkConsumeMinPerFrame":
		"Minimum ink consumed per frame while rolling, as a fraction of the ink tank.",
	"WeaponRollParam.InkRecoverStop":
		"Time in frames after using this before the ink tank starts refilling.",
	// "WeaponRollParam.SpeedDash": "",
	// "WeaponRollParam.SpeedDashTurnBreak": "",
	// "WeaponRollParam.SpeedInkConsumeMax": "",
	// "WeaponRollParam.SpeedInkConsumeMin": "",
	"WeaponRollParam.SpeedNormal": "Normal rolling movement speed.",
	"WeaponRollParam.SwingRepeatFrame":
		"Interval in frames between continuous swings. Lower means you can swing again sooner.",
	// "WeaponRollParam.ToPaintFrame": "",

	// WeaponScopeParam
	// "WeaponScopeParam.CameraFovy": "",

	// WeaponSpChariotParam
	// "WeaponSpChariotParam.ArmorHP": "",
	// "WeaponSpChariotParam.ArmorHP_BreakScissors": "",
	// "WeaponSpChariotParam.CannonNoShotFrame": "",
	// "WeaponSpChariotParam.MoveSpeedCoef_Squid": "",
	// "WeaponSpChariotParam.MoveSpeedX": "",
	// "WeaponSpChariotParam.MoveSpeedX_SpongeEnemy": "",
	// "WeaponSpChariotParam.MoveSpeedZ": "",
	// "WeaponSpChariotParam.MoveSpeedZ_SpongeEnemy": "",
	// "WeaponSpChariotParam.NoShotBombReqFrm_FinishSpecial": "",
	// "WeaponSpChariotParam.PreDelayFrm_Squid_ShotBomb": "",
	// "WeaponSpChariotParam.RotDegLmt_ToHumanFrm": "",
	// "WeaponSpChariotParam.ShooterRepeatFrame_Bias": "",
	// "WeaponSpChariotParam.ShooterRepeatFrame_First": "",
	// "WeaponSpChariotParam.ShooterRepeatFrame_Term": "",
	// "WeaponSpChariotParam.ShotGuideCannonFrame": "",
	// "WeaponSpChariotParam.ShotPitVelLmt": "",
	// "WeaponSpChariotParam.SpecialTotalFrame.High": "",
	"WeaponSpChariotParam.SpecialTotalFrame":
		"Total active duration of the special, in frames.",
	// "WeaponSpChariotParam.StartDelayFrame_Cannon": "",
	// "WeaponSpChariotParam.StartDelayFrame_Shooter": "",

	// WeaponSwingParam
	// "WeaponSwingParam.GuideParam.Frame": "",
	// "WeaponSwingParam.GuideParam.WidthScale": "",
	"WeaponSwingParam.InkConsume":
		"Ink used by one brush swing, as a fraction of the ink tank.",
	"WeaponSwingParam.InkRecoverStop":
		'Frames after swinging before the ink tank starts refilling ("white ink"). Higher means a longer wait before ink recovery begins.',
	// "WeaponSwingParam.SubWeaponSquidDelayFrm": "",
	// "WeaponSwingParam.SwingFrame": "",
	// "WeaponSwingParam.SwingMoveSpeed": "",

	// WeaponVerticalSwingParam
	"WeaponVerticalSwingParam.InkConsume":
		"Ink used by one vertical swing, as a fraction of the ink tank.",
	// "WeaponVerticalSwingParam.InkConsumeRateDepletion": "",
	"WeaponVerticalSwingParam.InkRecoverStop":
		'Frames after vertically swinging before the ink tank starts refilling ("white ink"). Higher means a longer wait before ink recovery begins.',
	// "WeaponVerticalSwingParam.SwingFrame": "",
	// "WeaponVerticalSwingParam.SwingMoveSpeed": "",

	// WeaponWideSwingParam
	// "WeaponWideSwingParam.GuideParam.Frame": "",
	// "WeaponWideSwingParam.GuideParam.WidthScale": "",
	"WeaponWideSwingParam.InkConsume":
		"Ink used by one wide horizontal swing, as a fraction of the ink tank.",
	// "WeaponWideSwingParam.InkConsumeRateDepletion": "",
	"WeaponWideSwingParam.InkRecoverStop":
		'Frames after horizontally swinging before the ink tank starts refilling ("white ink"). Higher means a longer wait before ink recovery begins.',
	// "WeaponWideSwingParam.SubWeaponSquidDelayFrm": "",
	// "WeaponWideSwingParam.SwingFrame": "",
	// "WeaponWideSwingParam.SwingMoveSpeed": "",

	// WideSwingUnitGroupParam
	// "WideSwingUnitGroupParam.DamageParam.DamageRejectEndFrame": "",
	// "WideSwingUnitGroupParam.DamageParam.DamageRejectRate": "",
	// "WideSwingUnitGroupParam.DamageParam.DamageRejectStartFrame": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DamageHighDistance": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DamageHighValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DamageLowDistance": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DamageLowValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DamageMaxDistance": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DamageMaxValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DamageMinDistance": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DamageMinValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.Degree": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.DepletionDamageRate": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.FinalDamageMinValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Inside.InsideDistanceXZ": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageHighDistance": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageHighValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageLowDistance": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageLowValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageMaxDistance": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageMaxValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageMinDistance": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageMinValue": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DamageRate": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.Degree": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.DepletionDamageRate": "",
	// "WideSwingUnitGroupParam.DamageParam.Outside.FinalDamageMinValue": "",
	// "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.MaxHeight": "",
	// "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.X": "",
	// "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Y": "",
	// "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Z": "",
	// "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintDepthScale": "",
	// "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintWidthHalf": "",
};

const POWER_UP_LEVEL_SUFFIXES = [".Low", ".Mid", ".High"];

/**
 * Returns a plain-English description of what a weapon parameter controls, or
 * `undefined` if no explanation has been recorded for it yet.
 *
 * A `.Low` / `.Mid` / `.High` key with no exact entry falls back to its suffix-less base
 * key, so one entry covers all three Power Up levels (the legend explains what they mean).
 *
 * This is the single source of explanation text, so the underlying store can later be
 * swapped for a translated source without changing call sites.
 */
export function getParamExplanation(
	category: string,
	key: string,
): string | undefined {
	const fullKey = `${category}.${key}`;
	const direct = PARAM_EXPLANATIONS[fullKey];
	if (direct !== undefined) return direct;

	const suffix = POWER_UP_LEVEL_SUFFIXES.find((s) => fullKey.endsWith(s));
	if (suffix) return PARAM_EXPLANATIONS[fullKey.slice(0, -suffix.length)];

	return undefined;
}
