Перейти к содержимому
Mineforgian

Delta-calc

DeltaCalc is a client-side utility mod for Cobblemon Delta that adds an in-battle damage calculator, expanded battle overlays, richer tooltips, and team indicators. It helps players read battle state faster and make better decisions without changing Cobble

Загрузки
1K
Подписчики
1
Обновлён
21 августа 2026 г.
Лицензия
Apache-2.0

Опубликован 15 апреля 2026 г.

DeltaCalc

DeltaCalc is a client-side utility mod for Cobblemon Delta on Fabric 1.21.1.

battle view V3

It adds an in-battle damage calculator, expanded battle overlays, richer tooltips, team indicators, and optional battle-state export for external analysis tools. The goal is to make battle information easier to read and act on without changing Cobblemon's core mechanics, while supporting the custom Pokemon that the Delta mod adds.

calc preview

Features

  • Live damage calculator panel that updates every turn for both your moves and the opponent's
  • Opponent set inference (Item, Ability, EV Spread, moves) drawn from Delta ranked usage stats
  • Manual overrides on the calc summary — left-click to cycle through alternatives when you know better than the average, right-click to reset
  • Battle info overlays for weather, terrain, side conditions, and boosts
  • Team indicators with richer tooltip information
  • Improved move and battle log readability
  • Optional structured battle-state export for external tools

How DeltaCalc Works

DeltaCalc reads the battle information already available to your client during a Cobblemon Delta battle and turns it into a live snapshot for damage estimation. It tracks the active Pokemon, revealed moves, stat stages, HP state, weather, terrain, side conditions, and the rest of the battle context that affects damage.

For the actual calculations, DeltaCalc uses Cobblemon's species data, move data, typing, and the live battle state to build a best-effort damage model in real time. When something hasn't been revealed yet — such as the opponent's exact EV spread, item, or unrevealed moves — DeltaCalc makes a reasonable inference and tightens it as the battle progresses.

Inferences are drawn from:

  • A database of the highest-usage sets from the Cobblemon Delta Ranked Usage Analytics site
  • The #custom-pokemon threads in the official Cobblemon Delta Discord (for Delta-original mons)
  • The most-used OU Singles sets from Smogon (for vanilla Cobblemon species)

Data Sources

DeltaCalc is based on:

  • Battle state visible to the client during combat
  • Revealed information from the current battle
  • Cobblemon's Pokemon, move, type, and stat data
  • Active field effects (weather, terrain, screens, boosts, hazards)
  • Smogon OU Singles usage stats
  • Ranked Usage Analytics for Cobblemon Delta
  • The Cobblemon Delta Discord's custom-Pokemon threads

It does not magically know hidden server-side information. If something has not been revealed yet, the calculator treats it as an estimate rather than a confirmed value.

Similar To Showdex

If you've used Showdex on Pokemon Showdown, the idea is similar: provide live damage calculations and battle context directly in the battle UI so you don't have to tab out to a separate calculator. DeltaCalc brings that same workflow to Cobblemon Delta, adapted to Cobblemon battles and the information available in-game.

Optional Dependencies

  • Mod Menu (strongly suggested — gives you a settings UI)
  • Cloth Config

Notes

  • DeltaCalc is client-side only
  • Servers do not need to install it for the UI features to work on your client
  • Battle export is optional and can be configured or disabled

Ченджлог

3.1.1-deltacalcРелиз1.21.9, 1.21.10, 1.21.11 · 21 августа 2026 г.

Updated databases with current Delta mons and moves

3.1.0-deltacalcРелиз1.21.9, 1.21.10, 1.21.11 · 19 мая 2026 г.

DeltaCalc 3.1.0 — Patch Notes


TL;DR

  • Megas now actually mega — base stats, types, AND ability. Holding Charizardite Y makes the calc read Drought + 159 SpA. Mawilite makes Huge Power double Atk. Pixilate fires on Mega Gardevoir's Hyper Voice. All 47 Gen 6-7 megas covered on both sides.
  • Strong Winds works. Flying defenders no longer take 2× from Ice / Rock / Electric while Parasol Prayer or Delta Stream is on the field.
  • Return / Frustration = 102 BP. No more friendship-guessing.
  • Facade no longer cut by burn. Bypasses the 0.5× physical Atk drop in addition to doubling base power.
  • Database overhaul. 303 variants (Ursaluna, Zapdos, Moltres, Aegislash, every Mega, every regional, every typed Arceus) were silently mapping to the wrong form. Fixed.
  • 7 new mons scraped from Discord — Sevygarde, Hydrapple-Ultra, the Applin-Ultra family, Trapinch-ATOM — with sets baked in.
  • Curated TR Cresselia set replaces the OU defensive default.
  • Gigantamax removed — not in the Delta pack.

Mega Evolution — finally works

Three separate bugs collapsing into one bad experience: the calc would silently use base-form numbers when it should have used mega numbers. All three are fixed across four versions.

Pre-mega: holding the stone, haven't pressed mega-evolve

Player or opponent is holding a mega stone the calc has identified. The calc now commits to the mega form immediately — base stats, types, intrinsic ability — without waiting for the mega evolution to actually fire. Applies symmetrically to both sides.

Previously: only the opponent got the swap. The player snapshot respected partyPokemon stats, which silently downgraded the calc when (a) the player hadn't pressed mega-evolve yet or (b) Cobblemon's post-switch-in visual glitch reverted the sprite to base form.

Post-mega + switch-out + switch-in (the Cobblemon visual glitch)

Cobblemon has a known issue where a mega's sprite reverts to base form on switch-in even though the species is still mega. The form tracker now preserves the mega state across switches (FormTracker.clearCurrentForm gained a keepPermanent flag; switch/drag cleanup uses it), and player-side actualStats re-derive from mega base stats so the visual glitch can't downgrade the calc.

Stats source — the DB, not Cobblemon's aspect lookup

The v0.9.1.4 trump rule was sourcing mega base stats via species.getForm(setOf("mega-x")) — Cobblemon's PokemonSpecies aspect API. For Charizard X/Y (and likely other megas), Cobblemon's actual aspect name doesn't match "mega-x" / "megax", so the lookup silently returned the base form and the swap bailed.

The calc now reads mega base stats from the bundled battle database first. It has hand-verified entries for every Gen 6-7 mega:

Form HP / Atk / Def / SpA / SpD / Spe
Charizard-Mega-X 78 / 130 / 111 / 130 / 85 / 100
Charizard-Mega-Y 78 / 104 / 78 / 159 / 115 / 100
Gardevoir-Mega 68 / 85 / 65 / 165 / 135 / 100
Mawile-Mega 50 / 105 / 125 / 55 / 95 / 50
...all 47 entries

DB hit short-circuits the Cobblemon aspect path entirely. The aspect path is kept as fallback for species missing from the DB, with a widened candidate list (mega_x, x, mega-form, megaform).

Ability also swaps (0.9.1.6)

The big one. The DB has mega base stats and types, but doesn't carry abilities. A hand-verified MEGA_ABILITY_BY_FORM_KEY map fills that in for all 47 Gen 6-7 megas:

Mega Ability Mega Ability
Charizard X Tough Claws Charizard Y Drought
Mewtwo X Steadfast Mewtwo Y Insomnia
Gardevoir Pixilate Altaria Pixilate
Lopunny Scrappy Mawile Huge Power
Medicham Pure Power Kangaskhan Parental Bond
Salamence Aerilate Pinsir Aerilate
Scizor Technician Heracross Skill Link
Lucario Adaptability Beedrill Adaptability
Aerodactyl Tough Claws Metagross Tough Claws
Sharpedo Strong Jaw Manectric Intimidate
Blastoise Mega Launcher Sceptile Lightning Rod
Tyranitar Sand Stream Garchomp Sand Force
Steelix Sand Force Abomasnow Snow Warning
Glalie Refrigerate Houndoom Solar Power
Camerupt Sheer Force Pidgeot No Guard
Banette Prankster Absol Magic Bounce
Sableye Magic Bounce Diancie Magic Bounce
Gengar Shadow Tag Slowbro Shell Armor
Latias / Latios Levitate Aggron Filter
Ampharos Mold Breaker Gyarados Mold Breaker
Audino Healer Alakazam Trace
Venusaur Thick Fat Blaziken Speed Boost
Swampert Swift Swim Gallade Inner Focus

All the ability-conditional engine paths fire automatically — Tough Claws on contact, Pixilate's Normal→Fairy + 1.2×, Mega Launcher's pulse boost, Huge Power's 2× physical Atk, Solar Power's 1.5× under sun, Strong Jaw's 1.5× on bites, etc.

Opponent item-cycle UI now surfaces mega stones

Charizard's item cycle now shows Charizardite X and Y as options. Same for Gardevoir → Gardevoirite, Mawile → Mawilite, all 45 mega-capable Gen 6-7 species. Previously the cycle only included usage-derived items plus a generic common-items list, so most megas required usage data to surface them. Cycle limit raised 8 → 10 to make room.

Hard constraint

The trump rule only fires for items in the mega-stone table. No other item type overrides Cobblemon's live state.

Asymmetry to know about

  • Opponent ability still respects manual cycle overrides — if you cycled to a specific ability, trump won't undo it.
  • Player ability is overridden unconditionally (no manual cycle exists on player side).

Calc engine (0.9.1.3)

Strong Winds (Parasol Prayer / Delta Stream)

When either active Pokemon has Parasol Prayer or Delta Stream, super-effective-vs-Flying multipliers (Ice / Rock / Electric, 2×) are clamped to neutral on Flying defenders. Per-type, so dual-type Flying defenders still take normal damage from their non-Flying type (Rock 2× × Flying 1× = 2× total on a Rock/Flying defender from an Ice move).

Move tooltips flag the active state with "Strong Winds (Flying SE → neutral)".

Return / Frustration

Both calculate at 102 BP. The calc can't read friendship values, and competitive sets always max it, so this matches Showdown.

Facade vs. burn

Facade now correctly bypasses burn's 0.5× physical Atk drop in addition to doubling its base power. Previously these cancelled to 1× — burned Facade hit like normal Facade. Fixed.

Guts trigger hardened

Only fires on recognized status names (burn / poison / paralysis / sleep / freeze + aliases) instead of any non-null status string.


Database (0.9.1.3 → scrape day)

Variant alias overwrite (303 species)

Massive lookup bug: every variant entry listed the base species name in its aliases. The old indexer let those aliases overwrite the base species' lookup key, so "ursaluna" resolved to Ursaluna-Bloodmoon, "zapdos" to Zapdos-Galar, "aegislash" to Aegislash-Blade — silently wrong stats on hundreds of species.

A two-pass indexer (primary identifiers first, aliases via putIfAbsent) now guarantees a variant's alias can never override its base species. Resolves:

  • Ursaluna defaulting to Bloodmoon
  • Zapdos / Moltres defaulting to Galar
  • Decidueye defaulting to Hisui
  • Camerupt defaulting to Mega
  • Basculegion defaulting to F
  • Aegislash defaulting to Blade
  • Every Mega, regional, Gigantamax-tagged, typed-Arceus variant

7 new mons scraped (custom-pokemon channel)

Previous snapshot was 2026-03-31. Re-scraped to catch everything released since:

Mon Type BST Notable
Sevygarde Poison/Ground 600 Seviper × Zygarde, Season 7 ranked reward, Shed Skin
Hydrapple-Ultra Poison/Dragon 540 Spoiled Goods / Regenerator
Trapinch-ATOM Water/Bug 528 Hyper Cutter / Strong Jaw
Dipplin-Ultra Poison/Dragon 485
Appletun-Ultra Poison/Dragon 485 Thick Fat
Flapple-Ultra Poison/Dragon 485 Hustle
Applin-Ultra Poison/Dragon 260 Bulletproof

Curated competitive sets

  • Cresselia — Trick Room replaces the OU defensive default. Levitate, Relaxed, 252 HP / 252 Def, Mental Herb > Leftovers, Trick Room / Moonblast / Psychic / Lunar Dance.
  • Hydrapple-Ultra — AV Regenerator, Modest 244 HP / 252 SpA / 12 Spe, Fickle Beam / Sludge Bomb / Earth Power / Giga Drain. 25% Nasty Plot alt move, 20% Spoiled Goods alt ability.
  • Sevygarde — Defensive utility, Careful 248 HP / 252 SpD / 8 Spe, Thousand Arrows / Toxic / Haze / Rest. 40% banded Adamant alt spread.

Removed

  • Gigantamax handling — not in the Delta pack. Message handler, signature-move bypass-ability entries, and translation key all removed. Dynamax handling kept intact.

Internal / dev notes

  • Strong Winds extracted as isStrongWindsHolder helper; DamageContext.strongWindsActive flag threaded into the type-chart loop.
  • Mega-form lookup factored into a shared computeMegaSwap helper used by both applyMegaFormSwap (opponent) and the new applyPlayerMegaSwap (player).
  • CalcBattleSnapshotFactory.derivedHeuristicStats exposed as internal so the mega swap can re-derive actualStats from new base stats.
  • FormTracker.clearCurrentForm gained a keepPermanent flag; StateUpdater switch/drag cleanup now uses it so mega entries survive switch-outs.
  • MEGA_STONES_BY_SPECIES (45 entries) drives the item-cycle prepend so every mega-capable species surfaces its stone(s) without depending on usage scrape coverage.
  • MEGA_ABILITY_BY_FORM_KEY (47 entries) carries the intrinsic ability lookup since the DB doesn't store abilities.
  • DB indexing changed from single-pass put to two-pass (primaries first via putIfAbsent, aliases second). Affects both species map and Delta-ranked set map.
  • BattleDatabase.findSpecies lookup chain for mega forms keys on <species>-mega(-x|-y)? to match the data-pipeline's slug convention.

Known limitations

  • Weather-setting on switch-in isn't automatic. Pre-mega Charizard Y shows Drought as its ability but won't auto-set sun in the calc until the actual mega-evolve message fires. Same for Drizzle / Sand Stream / Snow Warning megas. Set the weather manually if you need Solar Power / sun-boosted Fire damage modeled.
  • Player mega stats lose precise IV/EV/nature investment. The trump rule re-derives player actualStats heuristically from mega base stats. Within damage-roll variance for typical mega spreads; accepted trade-off vs. silently calc-ing base stats.
  • Two species still need a repro: Cresselia base form and Pincurchin both have clean DB entries with no alias collisions — if you're still seeing wrong data, please drop specifics.
  • Gigantamax-tagged dead data remains in the auto-generated database files. Harmless without the code paths reaching it; will be stripped on the next full data-pipeline run.
3.0.2-deltacalcРелиз1.21.9, 1.21.10, 1.21.11 · 8 мая 2026 г.

Fixed a bug, allowing custom lvl 50 battles with friens

v3.0.1-deltacalcРелиз1.21.9, 1.21.10, 1.21.11 · 7 мая 2026 г.

v3.0.1 hotfix

  • Calc panel is back to default-on for new installs (it was hidden in v3 with no Mod Menu toggle, which was a regression)
  • Added a Damage Calc Panel toggle to the Mod Menu for users who want to hide it
  • Existing user settings are preserved either way
3.0-deltacalcРелиз1.21.9, 1.21.10, 1.21.11 · 6 мая 2026 г.

DeltaCalc — Post-V2 Update

A big batch of bug fixes, a major new feature for the calc summary, seven new species added to the database, and a quieter default UI for new installs.

New Feature: Manual Overrides on the Calc Summary

The most-requested launch feature. The opponent summary block now lets you correct the inferred Item, Ability, and EV Spread when you know better than usage stats.

  • Left-click any row to cycle to the next alternative; left-click the back arrow to go back.
  • Right-click any row to reset to the inferred default.
  • Overridden values get a blue MANUAL pill and a * after the value, so you can tell at a glance what's user-set vs. battle-revealed.
  • Usage percentages now show next to each cycled value, e.g. Item: Choice Scarf (45%)*.
  • Switching to a mega stone (e.g. Charizardite X → Y) actually swaps the form's stats and types in the calc — the X/Y damage difference now updates correctly.
  • Speed line shows in compact mode and updates live when you change the spread.
  • Cycle alternatives now pull from the full species ability list and a curated common-items pool, so even thin-data mons like Ferrothorn give you real choices.
  • Real battle-log reveals always beat overrides; the cycle UI hides on rows that have already been revealed.
  • Overrides are per-Pokemon (UUID-keyed) and clear automatically at battle end.

New: Scrollable Calc Viewport

When the moves and team list overflow the panel, you now get a real scrollable viewport with a draggable scrollbar plus scroll-wheel support, instead of content spilling off the edge.

Bug Fixes

  • Regional Moltres misidentified as Galarian — when the tracker hadn't confirmed the species yet, the calc was reading the regional aspect from properties.species and flagging Kanto Moltres as Galarian. Regional suffixes (-galar, -alola, -hisui, -paldea) now route correctly through the form slot.
  • Ogerpon's Embody Aspect not tracked — the passive +1 boost tied to each mask (Hearthflame Atk, Wellspring SpD, Cornerstone Def, Teal Spe) now applies on switch-in. Gated to Ogerpon so Trace/Receiver copying doesn't trigger it.
  • Regenerator not healing on switch-out — Cobblemon doesn't emit a heal message for Regenerator, so the calc treated regen-switchers as still low HP. Now bumps the outgoing Pokemon by 33% when the ability is revealed and HP is above 0 (KO-forced switches still fire FAINT first and skip the bump).
  • White Herb didn't clear negative stat stages — consume was tracked but stages persisted. Now zeros negative stages and leaves positives intact.
  • OHKO confidence too high on inferred defenses — predicting an OHKO while the opponent's defensive item or ability is still a guess (Assault Vest, Eviolite, Multiscale, Heavy-Duty Boots, Leftovers, etc.) now drops confidence to LOW. Non-OHKO predictions keep their previous confidence behavior.
  • Calc panel default position overlapped Chat Plus — fresh installs now place the panel below the chat region. Existing positions are preserved.
  • Text Scale didn't actually shrink the panel — at smaller scales, glyphs shrunk but row spacing, column offsets, and HP/forecast bars stayed full size, so the 4th opponent move couldn't fit. Spacing, tab heights, click bounds, and bar dimensions now scale together.

Database Additions

Seven newly-released species are now recognized by the calc:

  • Iron Sentinel (Water/Flying)
  • Girashadow (Ghost/Dragon)
  • Silent Sting (Bug/Dragon)
  • Apex Tyrant (Fighting/Dragon)
  • Munchlax-Delta (Normal/Grass)
  • Terapagos-ATOM (Normal)
  • Slakoth-ATOM (Normal/Psychic)

Iron Sentinel, Girashadow, Silent Sting, and Apex Tyrant ship with full movesets and auto-generated default sets. The other three have stats/types/abilities populated and will pick up movesets in the next update once their sheets are posted.

Quality-of-Life

  • Calc panel and Battle Log are now hidden by default on fresh installs so new users aren't blasted with overlapping panes the first time they enter a battle. Both are togglable from the mod menu / hotkeys, and existing users keep whatever visibility state they had saved.
DeltaCalc-2.1Релиз1.21.9, 1.21.10, 1.21.11 · 27 апреля 2026 г.

Massive UI redesign! and bug fixes

Комментарии

Загружаем…