From 9d9c507e8463bace2fc808584877db40e72b94a0 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Thu, 4 Dec 2025 10:53:27 -0600 Subject: [PATCH] Update Sphealy custom card to 0.850 OPS and cost 188 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Increased target OPS from 0.820 to 0.850 with adjusted stat splits: - vs RHP: .260/.340/.495 (power profile) - vs LHP: .260/.375/.420 (patient/OBP profile) - Cost updated from 85 to 188 šŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- create_sphealthamus_spheal.py | 24 ++++++++--------- custom_cards/sphealthamus_spheal_preview.py | 30 ++++++++++----------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/create_sphealthamus_spheal.py b/create_sphealthamus_spheal.py index 63a9a28..5006100 100644 --- a/create_sphealthamus_spheal.py +++ b/create_sphealthamus_spheal.py @@ -44,7 +44,7 @@ async def create_sphealthamus_spheal(): print(f"āœ“ Using cardset ID: {cardset['id']} - Player description: '{player_description}'") # Create custom archetype for Sphealthamus Sphealy Spheal Sr - # Target: Combined OPS = 0.820 + # Target: Combined OPS = 0.850 # vs RHP: Power (singles + HRs with 3:2 BP-HR:HR ratio), high pull (62%) # vs LHP: Patient (walks + singles), low pull (28%) @@ -52,17 +52,17 @@ async def create_sphealthamus_spheal(): name="Sphealthamus Sphealy Spheal Sr", description="Power vs RHP, patience vs LHP, extreme splits", - # VS RHP: Target OPS = ~0.820 (power profile - singles + HRs) - avg_vs_r=0.250, # Boosted to hit OPS target - obp_vs_r=0.330, # Boosted to hit OPS target - slg_vs_r=0.475, # Boosted to hit OPS target + # VS RHP: Target OPS = ~0.850 (power profile - singles + HRs) + avg_vs_r=0.260, # Boosted to hit OPS target + obp_vs_r=0.340, # Boosted to hit OPS target + slg_vs_r=0.495, # Boosted to hit OPS target bb_pct_vs_r=0.09, # Moderate walks k_pct_vs_r=0.24, # Higher strikeouts (power hitter) - # VS LHP: Target OPS = ~0.800 (patient profile - walks + singles) - avg_vs_l=0.250, # Boosted to hit OPS target - obp_vs_l=0.350, # Boosted to hit OPS target - slg_vs_l=0.415, # Boosted to hit OPS target + # VS LHP: Target OPS = ~0.830 (patient profile - walks + singles) + avg_vs_l=0.260, # Boosted to hit OPS target + obp_vs_l=0.375, # Boosted to hit OPS target + slg_vs_l=0.420, # Boosted to hit OPS target bb_pct_vs_l=0.15, # Very high walks k_pct_vs_l=0.20, # Fewer strikeouts @@ -318,7 +318,7 @@ async def create_sphealthamus_spheal(): # Calculate and display total OPS total_ops = calculate_total_ops(ratings[0], ratings[1], is_pitcher=False) - print(f"\nTotal OPS: {total_ops:.3f} (Target: 0.820)") + print(f"\nTotal OPS: {total_ops:.3f} (Target: 0.850)") print(f"\nBaserunning:") print(f" Steal: {baserunning['steal_low']}-{baserunning['steal_high']} (Jump: {baserunning['steal_jump']})") @@ -332,7 +332,7 @@ async def create_sphealthamus_spheal(): print(f"Position: 1B (Range 5, Error 3)") print(f"Cardset: 29 (Custom Characters)") print(f"Description: 05 Custom") - print(f"Total OPS: {total_ops:.3f} / 0.820 target") + print(f"Total OPS: {total_ops:.3f} / 0.850 target") print(f"Pull Rate: {vl['pull_rate']*100:.0f}% vL / {vr['pull_rate']*100:.0f}% vR (Target: 28% vL, 62% vR)") print(f"BP-HR:HR ratio vR: {vr['bp_homerun']:.0f}:{vr['homerun']:.0f} (Target: 3:2)") @@ -469,7 +469,7 @@ async def create_sphealthamus_spheal(): # Step 6: Update rarity and cost print(f"\nāœ“ Updating rarity and cost...") target_rarity_id = 3 # Starter - target_cost = 85 + target_cost = 188 await db_patch('players', object_id=player_id, params=[('rarity_id', target_rarity_id)]) await db_patch('players', object_id=player_id, params=[('cost', target_cost)]) diff --git a/custom_cards/sphealthamus_spheal_preview.py b/custom_cards/sphealthamus_spheal_preview.py index 7bb7c06..f5410ca 100644 --- a/custom_cards/sphealthamus_spheal_preview.py +++ b/custom_cards/sphealthamus_spheal_preview.py @@ -1,6 +1,6 @@ """ Preview ratings for Sphealthamus Sphealy Spheal Sr custom player. -Target: 0.820 total OPS +Target: 0.850 total OPS Power vs RHP (singles/HRs, 62% pull), Patient vs LHP (walks/singles, 28% pull) """ @@ -9,24 +9,24 @@ from custom_cards.archetype_calculator import BatterRatingCalculator, calculate_ import random # Create custom archetype for Sphealthamus Sphealy Spheal Sr -# Target: Combined OPS = 0.820 with formula: (OPS_vR + OPS_vL + min) / 3 +# Target: Combined OPS = 0.850 with formula: (OPS_vR + OPS_vL + min) / 3 # Dramatic split: Power vs RHP, Patient vs LHP spheal = BatterArchetype( name="Sphealthamus Sphealy Spheal Sr", description="Power vs RHP, patience vs LHP, extreme splits", - # VS RHP: Target OPS = ~0.820 (power profile - singles + HRs) - avg_vs_r=0.250, # Boosted to hit OPS target - obp_vs_r=0.330, # Boosted to hit OPS target - slg_vs_r=0.475, # Boosted to hit OPS target + # VS RHP: Target OPS = ~0.850 (power profile - singles + HRs) + avg_vs_r=0.260, # Boosted to hit OPS target + obp_vs_r=0.340, # Boosted to hit OPS target + slg_vs_r=0.495, # Boosted to hit OPS target bb_pct_vs_r=0.09, # Moderate walks k_pct_vs_r=0.24, # Higher strikeouts (power hitter) - # VS LHP: Target OPS = ~0.800 (patient profile - walks + singles) - avg_vs_l=0.250, # Boosted to hit OPS target - obp_vs_l=0.350, # Boosted to hit OPS target - slg_vs_l=0.415, # Boosted to hit OPS target + # VS LHP: Target OPS = ~0.830 (patient profile - walks + singles) + avg_vs_l=0.260, # Boosted to hit OPS target + obp_vs_l=0.375, # Boosted to hit OPS target + slg_vs_l=0.420, # Boosted to hit OPS target bb_pct_vs_l=0.15, # Very high walks k_pct_vs_l=0.20, # Fewer strikeouts @@ -84,7 +84,7 @@ print(" 1B: Range 5 / Error 3") print() print("Target Statistics:") -print(f" Target Total OPS: 0.820") +print(f" Target Total OPS: 0.850") print(f" Pull Rate vs RHP: 62%") print(f" Pull Rate vs LHP: 28%") print(f" Running: 9") @@ -306,10 +306,10 @@ for rating in ratings: total_ops = calculate_total_ops(ratings[0], ratings[1], is_pitcher=False) print() print("="*70) -print(f"TOTAL OPS: {total_ops:.3f} (Target: 0.820)") -if abs(total_ops - 0.820) <= 0.005: +print(f"TOTAL OPS: {total_ops:.3f} (Target: 0.850)") +if abs(total_ops - 0.850) <= 0.005: print("āœ“ Within target range!") -elif abs(total_ops - 0.820) <= 0.015: +elif abs(total_ops - 0.850) <= 0.015: print("~ Close to target (can tweak if needed)") else: print("⚠ Outside target range - needs adjustment") @@ -397,7 +397,7 @@ print("SUMMARY") print("="*70) print() print("āœ“ Ratings calculated successfully") -print(f"āœ“ Total OPS: {total_ops:.3f} (Target: 0.820)") +print(f"āœ“ Total OPS: {total_ops:.3f} (Target: 0.850)") print(f"āœ“ Pull Rates: {vl['pull_rate']*100:.0f}% vL, {vr['pull_rate']*100:.0f}% vR (Target: 28% vL, 62% vR)") print(f"āœ“ BP-HR:HR Ratio vR: {vr['bp_homerun']:.0f}:{vr['homerun']:.0f} (Target: 3:2)") print(f"āœ“ Triples: {vl['triple']:.0f} vL, {vr['triple']:.0f} vR (Target: 0 both)")