fcc314afb1
A reward pack advertised its own id (70-75) as assetId, which is not a client art
asset, so its My Packs tile rendered blank. Reward tiles now carry their tier
store pack as the cover asset (bronze->1, silver->3, gold->5) while `id` stays the
pack own id (the open packId / SERVER_ID); the sentinel keeps its own id so it
stays an inert placeholder.
LIVE-MAPPED on the retail client 2026-08-18 across all three store tabs and two
reward tiles, which corrected an earlier wrong assumption:
* assetId only gates whether art renders AT ALL (unknown id -> blank tile).
* WHICH art is drawn comes from packType + packContentInfo.rareQuantity, NOT
assetId: BRONZE+1rare -> bronze card, BRONZE+3 -> silver, SILVER+1 -> gold,
SILVER+3 -> silver trio, GOLD+1 -> blue special, GOLD+3 -> red inform.
Remapping assetId 5->3 and 3->2 left both frames unchanged and only rotated
the featured player, which proves art is content-driven.
So a reward tile now shows the same cover as the equivalent purchasable pack (a
gold reward shows the blue-special art the 5000-coin Gold Pack shows - EA art
advertises an aspirational card rather than the tier colour). Regression test
reward_tiles_carry_a_renderable_cover_asset added; pack70 golden regenerated.
238 lines
5.1 KiB
JSON
238 lines
5.1 KiB
JSON
{
|
|
"purchase": [
|
|
{
|
|
"assetId": 1,
|
|
"id": 1,
|
|
"packType": "BRONZE",
|
|
"description": "Bronze Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 1,
|
|
"displayGroupAssetId": 1,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 400,
|
|
"finalFunds": 400
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 10,
|
|
"silverQuantity": 2,
|
|
"goldQuantity": 0,
|
|
"rareQuantity": 1,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "bronze"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 2,
|
|
"id": 2,
|
|
"packType": "BRONZE",
|
|
"description": "Premium Bronze Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 2,
|
|
"displayGroupAssetId": 1,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 750,
|
|
"finalFunds": 750
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 10,
|
|
"silverQuantity": 2,
|
|
"goldQuantity": 0,
|
|
"rareQuantity": 3,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "bronze"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 3,
|
|
"id": 3,
|
|
"packType": "SILVER",
|
|
"description": "Silver Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 3,
|
|
"displayGroupAssetId": 2,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 2500,
|
|
"finalFunds": 2500
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 1,
|
|
"silverQuantity": 11,
|
|
"goldQuantity": 0,
|
|
"rareQuantity": 1,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "silver"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 4,
|
|
"id": 4,
|
|
"packType": "SILVER",
|
|
"description": "Premium Silver Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 4,
|
|
"displayGroupAssetId": 2,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 3750,
|
|
"finalFunds": 3750
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 1,
|
|
"silverQuantity": 11,
|
|
"goldQuantity": 0,
|
|
"rareQuantity": 3,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "silver"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 5,
|
|
"id": 5,
|
|
"packType": "GOLD",
|
|
"description": "Gold Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 5,
|
|
"displayGroupAssetId": 3,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 5000,
|
|
"finalFunds": 5000
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"silverQuantity": 2,
|
|
"goldQuantity": 10,
|
|
"rareQuantity": 1,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "gold"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 6,
|
|
"id": 6,
|
|
"packType": "GOLD",
|
|
"description": "Premium Gold Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 6,
|
|
"displayGroupAssetId": 3,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 7500,
|
|
"finalFunds": 7500
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"silverQuantity": 2,
|
|
"goldQuantity": 10,
|
|
"rareQuantity": 3,
|
|
"itemQuantity": 12
|
|
},
|
|
"unopened": false,
|
|
"displayGroup": {
|
|
"value": "gold"
|
|
}
|
|
},
|
|
{
|
|
"assetId": 5,
|
|
"id": 70,
|
|
"packType": "GOLD",
|
|
"description": "Reward Gold Pack",
|
|
"state": "active",
|
|
"saleType": "promo",
|
|
"limitType": "NONE",
|
|
"quantity": 0,
|
|
"purchaseLimit": 0,
|
|
"purchaseCount": 0,
|
|
"isPremium": false,
|
|
"sortPriority": 1,
|
|
"displayGroupAssetId": 3,
|
|
"currencies": [
|
|
{
|
|
"name": "coins",
|
|
"funds": 0,
|
|
"finalFunds": 0
|
|
}
|
|
],
|
|
"packContentInfo": {
|
|
"bronzeQuantity": 0,
|
|
"silverQuantity": 0,
|
|
"goldQuantity": 11,
|
|
"rareQuantity": 11,
|
|
"itemQuantity": 11
|
|
},
|
|
"unopened": true,
|
|
"displayGroup": {
|
|
"value": "mypacks",
|
|
"priority": 1
|
|
}
|
|
}
|
|
],
|
|
"timestamp": 1596326400
|
|
}
|