From 14a6c64acef702376c905300f05be8b6dcd608fc Mon Sep 17 00:00:00 2001 From: Gamaliel Date: Tue, 31 Mar 2026 12:49:13 -0400 Subject: [PATCH 1/7] fix(data): update hitspeed in cards configuration --- cards.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cards.json b/cards.json index 348e09d..e1a7adc 100644 --- a/cards.json +++ b/cards.json @@ -3000,7 +3000,7 @@ "statsHero": { "prestigeCost": null }, - "hitspeed": 0.9, + "hitspeed": 2.4, "radius": 1.0, "generationSpeed": null, "generationUnits": null, From 4c6df0aeba8ffba4b86f05a1f6f0654ae43c015d Mon Sep 17 00:00:00 2001 From: Gamaliel Date: Tue, 31 Mar 2026 12:56:27 -0400 Subject: [PATCH 2/7] build(update-cards): update game data api source url --- scripts/update-cards.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/update-cards.js b/scripts/update-cards.js index f8fd5e6..b6844b8 100644 --- a/scripts/update-cards.js +++ b/scripts/update-cards.js @@ -6,7 +6,8 @@ const https = require('https'); // CONSTANTS // ───────────────────────────────────────────────────────────────────────────── -const API_URL = 'https://humble.galacticapricot.dev/gamedata-v5.json'; +//const API_URL = 'https://humble.galacticapricot.dev/gamedata-v5.json'; +const API_URL = 'https://cache.statsroyale.com/gamedata-v5.json'; const CARDS_FILE = path.join(__dirname, '..', 'cards.json'); const MULTIPLIERS = { From 4024e054327a7ce56c8cf4ba289fffb04cf94fd0 Mon Sep 17 00:00:00 2001 From: Gamaliel Date: Tue, 31 Mar 2026 12:57:08 -0400 Subject: [PATCH 3/7] build(update-cards): adjust hitspeed calculation to include pingpong time --- scripts/update-cards.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/update-cards.js b/scripts/update-cards.js index b6844b8..b3b3825 100644 --- a/scripts/update-cards.js +++ b/scripts/update-cards.js @@ -149,14 +149,14 @@ function processCard(card, apiItem, multipliers) { if (characters.length > 0) { const { maxHP, primaryChar, totalDamage, hasProjectile } = aggregateCharacterStats(characters); - card.hitspeed = primaryChar.hitSpeed ? primaryChar.hitSpeed / 1000 : card.hitspeed; + card.hitspeed = primaryChar.hitSpeed ? (primaryChar.hitSpeed + (projData.pingpongVisualTime ?? 0)) / 1000 : card.hitspeed; card.range = primaryChar.range ? primaryChar.range / 1000 : card.range; card.speed = SPEED_MAP[primaryChar.tidSpeed] || card.speed; card.projectile = hasProjectile || card.projectile; baseHP = maxHP || charData.hitpoints || spawnCharData.hitpoints; baseDamage = totalDamage || charData.damage || projData.damage || areaData.damage || buffData.damagePerSecond || spawnProjData.damage || spawnCharData.damage; } else { - card.hitspeed = charData.hitSpeed ? charData.hitSpeed / 1000 : card.hitspeed; + card.hitspeed = charData.hitSpeed ? (charData.hitSpeed + (projData.pingpongVisualTime ?? 0)) / 1000 : card.hitspeed; card.range = charData.range ? charData.range / 1000 : card.range; card.speed = SPEED_MAP[charData.tidSpeed] || card.speed; baseHP = charData.hitpoints || spawnCharData.hitpoints; From 3e33e3d5b8bb44ca15f6cf1a40a2353b95202a65 Mon Sep 17 00:00:00 2001 From: Gamaliel Date: Mon, 6 Apr 2026 08:42:27 -0400 Subject: [PATCH 4/7] build(update-cards): refine radius and splash attack logic Update the radius assignment logic to prevent overwriting values for unit-based cards and specific spells (Lightning, Void, Vines). This ensures that only appropriate splash-type cards receive the radius attribute from the raw data. --- scripts/update-cards.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update-cards.js b/scripts/update-cards.js index b3b3825..9e468d5 100644 --- a/scripts/update-cards.js +++ b/scripts/update-cards.js @@ -169,7 +169,7 @@ function processCard(card, apiItem, multipliers) { card.generationUnits = charData.spawnNumber > 1 ? charData.spawnNumber : card.generationUnits; const rawRadius = apiItem.radius ?? areaData.radius ?? charData.areaDamageRadius ?? projData.radius ?? projData.customFirstProjectileData?.radius; - if (rawRadius != null) { + if (rawRadius != null && card.units === 0 && !['Lightning', 'Void', 'Vines'].includes(card.name)) { card.radius = rawRadius / 1000; card.typeAttack = 'splash'; } else { From d7a879efc91f19db1c7addc7e87d6a75818b2e52 Mon Sep 17 00:00:00 2001 From: Gamaliel Date: Mon, 6 Apr 2026 13:39:28 -0400 Subject: [PATCH 5/7] feat(data): update hero status and prestige cost for card Balloon - Set hero property to true - Update prestigeCost from null to 2 --- cards.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cards.json b/cards.json index e1a7adc..1752b9c 100644 --- a/cards.json +++ b/cards.json @@ -402,7 +402,7 @@ "units": 1, "duration": null, "evolution": false, - "hero": false, + "hero": true, "typeAttack": "unique", "projectile": false, "suicide": false, @@ -445,7 +445,7 @@ } }, "statsHero": { - "prestigeCost": null + "prestigeCost": 2 }, "hitspeed": 2.0, "radius": null, From 506293ac22c70c80a5b2f0d12a6571b0dfd19b64 Mon Sep 17 00:00:00 2001 From: Gamaliel Date: Mon, 6 Apr 2026 13:40:50 -0400 Subject: [PATCH 6/7] feat(data): enable evolution and define stats for Minion Horde - Set evolution property to true - Configure evolution cycles to 1 - Populate evolution damage and hitpoints across levels 11, 15, and 16 --- cards.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cards.json b/cards.json index 1752b9c..8bfd647 100644 --- a/cards.json +++ b/cards.json @@ -1447,7 +1447,7 @@ ], "units": 6, "duration": null, - "evolution": false, + "evolution": true, "hero": false, "typeAttack": "unique", "projectile": true, @@ -1478,16 +1478,16 @@ "level16": 368 }, "statsEvo": { - "cycles": null, + "cycles": 1, "damage": { - "level11": null, - "level15": null, - "level16": null + "level11": 108, + "level15": 156, + "level16": 172 }, "hitpoints": { - "level11": null, - "level15": null, - "level16": null + "level11": 230, + "level15": 335, + "level16": 368 } }, "statsHero": { From e31650ce61b7d8fc8032c76608b0811f0d620337 Mon Sep 17 00:00:00 2001 From: Gamaliel Date: Wed, 8 Apr 2026 13:35:02 -0400 Subject: [PATCH 7/7] fix(data): update prestige cost, hitspeed, and damage stats - Increase prestigeCost for card at index 4113 - Adjust hitspeed and radius for card at index 4769 - Decrease base and evolution damage values for card at index 5595 across levels 11, 15, and 16 --- cards.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cards.json b/cards.json index 8bfd647..3cb4bf9 100644 --- a/cards.json +++ b/cards.json @@ -4113,7 +4113,7 @@ } }, "statsHero": { - "prestigeCost": 1 + "prestigeCost": 2 }, "hitspeed": 1.1, "radius": 0.25, @@ -4769,8 +4769,8 @@ "statsHero": { "prestigeCost": null }, - "hitspeed": 1.9, - "radius": 0.8, + "hitspeed": 2.0, + "radius": 1.5, "generationSpeed": null, "generationUnits": null, "speed": "fast", @@ -5595,9 +5595,9 @@ "level16": null }, "damage": { - "level11": 212, - "level15": 309, - "level16": 339 + "level11": 202, + "level15": 293, + "level16": 323 }, "hitpoints": { "level11": 824, @@ -5607,9 +5607,9 @@ "statsEvo": { "cycles": 2, "damage": { - "level11": 212, - "level15": 309, - "level16": 339 + "level11": 202, + "level15": 293, + "level16": 323 }, "hitpoints": { "level11": 824,