diff --git a/public/data/supply-events/global-americas/v5.3-21.12.02-da-battlesuit-expansion-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.02-da-battlesuit-expansion-supply.json
new file mode 100644
index 00000000..64cdf319
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.02-da-battlesuit-expansion-supply.json
@@ -0,0 +1,19 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 3,
+ "name": "Dea Anchora Expansion Supply",
+ "type": "expansion-supply",
+ "token": "expansion-supply-card",
+ "featured": [
+ {
+ "type": "battlesuit",
+ "id": "da"
+ }
+ ],
+ "extra": ["essentines"],
+ "duration": ["2021-12-02", "2021-12-17"],
+ "guarantees": [],
+ "mileages": [],
+ "drops": []
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.02-miracle-kissy-pillow-equipment-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.02-miracle-kissy-pillow-equipment-supply.json
new file mode 100644
index 00000000..45a592e5
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.02-miracle-kissy-pillow-equipment-supply.json
@@ -0,0 +1,296 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 2,
+ "trackColor": "red",
+ "name": "Miracle Kissy Pillow Equipment Supply",
+ "type": "sp-equipment",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "miracle-kissy-pillow"
+ },
+ {
+ "type": "stigmata",
+ "id": "paganini-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "paganini-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "paganini-bot"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-02", "2021-12-31"],
+ "guarantees": [
+ {
+ "count": 30,
+ "recurring": false,
+ "rewards": [
+ {
+ "type": "weapon",
+ "id": "miracle-kissy-pillow",
+ "amount": 1
+ },
+ {
+ "type": "stigmata",
+ "id": "paganini-top",
+ "amount": 1
+ },
+ {
+ "type": "stigmata",
+ "id": "paganini-mid",
+ "amount": 1
+ },
+ {
+ "type": "stigmata",
+ "id": "paganini-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 2479,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "miracle-kissy-pillow",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "paganini-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "paganini-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "paganini-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "thunder-kikaku",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "key-of-castigation",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "key-of-reason",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "nebulous-duality",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "path-to-acheron",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "hler-s-serenity",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "holmes-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "holmes-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "holmes-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dickens-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dickens-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dickens-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-bot",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.02-sns-battlesuit-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.02-sns-battlesuit-supply.json
new file mode 100644
index 00000000..47cab272
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.02-sns-battlesuit-supply.json
@@ -0,0 +1,141 @@
+{
+ "version": 5.3,
+ "track": 1,
+ "verified": true,
+ "name": "Sweet 'n' Spicy Event Supply",
+ "type": "sp-battlesuit",
+ "token": "sp-supply-card",
+ "featured": [
+ {
+ "type": "battlesuit",
+ "id": "sns"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-02", "2021-12-31"],
+ "guarantees": [
+ {
+ "count": 25,
+ "recurring": false,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "sns",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "random-a-rank",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [
+ {
+ "count": 10,
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": 10
+ },
+ {
+ "count": 20,
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": 10
+ },
+ {
+ "count": 40,
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": 20
+ },
+ {
+ "count": 60,
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": 20
+ },
+ {
+ "count": 80,
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": 20
+ },
+ {
+ "count": 100,
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": 20
+ }
+ ],
+ "drops": [
+ {
+ "rate": 7677,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "sns",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 14108,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": [5, 8]
+ }
+ ]
+ },
+ {
+ "rate": 7677,
+ "items": [
+ { "type": "battlesuit", "id": "random-a-rank", "amount": 1 },
+ {
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": 5
+ }
+ ]
+ },
+ {
+ "rate": 4703,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "random-a-rank",
+ "amount": [4, 6]
+ },
+ {
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": [2, 3]
+ }
+ ]
+ },
+ {
+ "rate": 4703,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "random-a-rank",
+ "amount": [5, 8]
+ },
+ {
+ "type": "battlesuit-fragment",
+ "id": "sns",
+ "amount": [2, 3]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.02-tz-elf-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.02-tz-elf-supply.json
new file mode 100644
index 00000000..c6644b79
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.02-tz-elf-supply.json
@@ -0,0 +1,68 @@
+{
+ "version": 5.3,
+ "track": 6,
+ "verified": true,
+ "name": "Tesla ZERO Elf Supply",
+ "type": "elf-supply",
+ "token": "elf-supply-card",
+ "featured": [
+ {
+ "type": "elf",
+ "id": "tz"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-02", "2021-12-24"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "tz",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "tz",
+ "amount": 1
+ },
+ {
+ "type": "elf-part",
+ "id": "tz",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1510,
+ "items": [
+ {
+ "type": "elf",
+ "id": "tz",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 12230,
+ "items": [
+ {
+ "type": "elf-part",
+ "id": "tz",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.03-starlance-prime-focused-supply-a copy 2.json b/public/data/supply-events/global-americas/v5.3-21.12.03-starlance-prime-focused-supply-a copy 2.json
new file mode 100644
index 00000000..87fca99d
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.03-starlance-prime-focused-supply-a copy 2.json
@@ -0,0 +1,269 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 4,
+ "name": "Starlance Prime Focused Supply A",
+ "type": "focused-supply-a",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "starlance-prime"
+ },
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-bot"
+ }
+ ],
+ "extra": ["wishing-well"],
+ "duration": ["2021-12-2", "2021-12-10"],
+ "guarantees": [
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 2479,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "starlance-prime",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "tranquil-arias",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "dark-star",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "swan-lake",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "nebulous-duality",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "undine-s-tale",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "hekate-s-gloom",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "nobel-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "nobel-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "nobel-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "columbus-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "columbus-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "columbus-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "kafka-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "kafka-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "kafka-bot",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.06-hekate-s-gloom-focused-supply-a copy.json b/public/data/supply-events/global-americas/v5.3-21.12.06-hekate-s-gloom-focused-supply-a copy.json
new file mode 100644
index 00000000..06cee6c9
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.06-hekate-s-gloom-focused-supply-a copy.json
@@ -0,0 +1,269 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 5,
+ "name": "Hekate's Gloom Focused Supply B",
+ "type": "focused-supply-b",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "hekate-s-gloom"
+ },
+ {
+ "type": "stigmata",
+ "id": "kafka-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "kafka-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "kafka-bot"
+ }
+ ],
+ "extra": ["wishing-well"],
+ "duration": ["2021-12-06", "2021-12-13"],
+ "guarantees": [
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 2479,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "hekate-s-gloom",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "kafka-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "kafka-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "kafka-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "mjolnir",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "key-of-reason",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "pledge-of-sakura",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "hyper-railguns",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "skadi-ondurgud",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "nue-of-the-shadow",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "thales-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "thales-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "thales-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "avogadro-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "avogadro-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "avogadro-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "michelangelo-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "michelangelo-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "michelangelo-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "monet-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "monet-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "monet-bot",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.10-mitternachts-waltz-schicksal-arsenal.json b/public/data/supply-events/global-americas/v5.3-21.12.10-mitternachts-waltz-schicksal-arsenal.json
new file mode 100644
index 00000000..2ec6b9db
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.10-mitternachts-waltz-schicksal-arsenal.json
@@ -0,0 +1,284 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 8,
+ "name": "Mitternachts Waltz Schicksal Arsenal",
+ "type": "sp-equipment",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "mitternachts-waltz"
+ },
+ {
+ "type": "weapon",
+ "id": "might-of-an-utu"
+ },
+ {
+ "type": "stigmata",
+ "id": "wang-zhenyi-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "wang-zhenyi-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "wang-zhenyi-bot"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-10", "2021-12-24"],
+ "guarantees": [
+ {
+ "count": 50,
+ "recurring": false,
+ "rewards": [
+ {
+ "type": "weapon",
+ "id": "mitternachts-waltz",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1097,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "mitternachts-waltz",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1097,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "might-of-an-utu",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "wang-zhenyi-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "wang-zhenyi-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "wang-zhenyi-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1097,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "nue-of-the-shadow",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1097,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "blood-dance",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1097,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "zither-s-lament",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1097,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "skadi-ondurgud",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1097,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "starlance-prime",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dirac-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dirac-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dirac-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "avogadro-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "avogadro-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 512,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "avogadro-bot",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.10-nuada-s-grief-focused-supply-a.json b/public/data/supply-events/global-americas/v5.3-21.12.10-nuada-s-grief-focused-supply-a.json
new file mode 100644
index 00000000..e8ad865e
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.10-nuada-s-grief-focused-supply-a.json
@@ -0,0 +1,269 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 4,
+ "name": "Nuada's Grief Focused Supply A",
+ "type": "focused-supply-a",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "nuada-s-grief"
+ },
+ {
+ "type": "stigmata",
+ "id": "ishikawa-goemon-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "ishikawa-goemon-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "ishikawa-goemon-bot"
+ }
+ ],
+ "extra": ["wishing-well"],
+ "duration": ["2021-12-10", "2021-12-17"],
+ "guarantees": [
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 2479,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "nuada-s-grief",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "ishikawa-goemon-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "ishikawa-goemon-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "ishikawa-goemon-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "thunder-kikaku",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "demonblade-florid-sakura",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "godslayer-surtr",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "11th-leitourgia",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "iris-of-the-dreams",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "star-shatterer-vikrant",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "sirin-ascendant-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "sirin-ascendant-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "sirin-ascendant-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dante-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dante-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dante-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dickens-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dickens-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dickens-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "beethoven-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "beethoven-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "beethoven-bot",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.10-pv-battlesuit-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.10-pv-battlesuit-supply.json
new file mode 100644
index 00000000..14a2acc8
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.10-pv-battlesuit-supply.json
@@ -0,0 +1,104 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 7,
+ "name": "Prinzessin der Veruteilung! Supply",
+ "type": "sp-battlesuit",
+ "token": "sp-supply-card",
+ "featured": [
+ {
+ "type": "battlesuit",
+ "id": "pv"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-10", "2021-12-24"],
+ "guarantees": [
+ {
+ "count": 25,
+ "recurring": false,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "pv",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "random-a-rank",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 7677,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "pv",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 14108,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "pv",
+ "amount": [5, 8]
+ }
+ ]
+ },
+ {
+ "rate": 7677,
+ "items": [
+ { "type": "battlesuit", "id": "random-a-rank", "amount": 1 },
+ {
+ "type": "battlesuit-fragment",
+ "id": "pv",
+ "amount": 5
+ }
+ ]
+ },
+ {
+ "rate": 4703,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "random-a-rank",
+ "amount": [4, 6]
+ },
+ {
+ "type": "battlesuit-fragment",
+ "id": "pv",
+ "amount": [2, 3]
+ }
+ ]
+ },
+ {
+ "rate": 4703,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "random-a-rank",
+ "amount": [5, 8]
+ },
+ {
+ "type": "battlesuit-fragment",
+ "id": "pv",
+ "amount": [2, 3]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.13-star-shatterer-vikrant-focused-supply-b.json b/public/data/supply-events/global-americas/v5.3-21.12.13-star-shatterer-vikrant-focused-supply-b.json
new file mode 100644
index 00000000..2974f921
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.13-star-shatterer-vikrant-focused-supply-b.json
@@ -0,0 +1,269 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 5,
+ "name": "Star Shatterer Vikrant Focused Supply B",
+ "type": "focused-supply-b",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "star-shatterer-vikrant"
+ },
+ {
+ "type": "stigmata",
+ "id": "beethoven-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "beethoven-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "beethoven-bot"
+ }
+ ],
+ "extra": ["wishing-well"],
+ "duration": ["2021-12-13", "2021-12-20"],
+ "guarantees": [
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 2479,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "star-shatterer-vikrant",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "beethoven-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "beethoven-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "beethoven-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "eos-gloria",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "ice-epiphyllum",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "briareus-pri",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "path-to-acheron",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "key-of-the-void",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "oath-of-judah",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "leeuwenhoek-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "leeuwenhoek-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "leeuwenhoek-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "ana-schariac-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "ana-schariac-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "ana-schariac-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "irene-adler-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "gustav-klimt-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "gustav-klimt-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "gustav-klimt-bot",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.17-hos-battlesuit-expansion-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.17-hos-battlesuit-expansion-supply.json
new file mode 100644
index 00000000..61365fdf
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.17-hos-battlesuit-expansion-supply.json
@@ -0,0 +1,143 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 3,
+ "name": "Herrscher of Sentience Expansion Supply",
+ "type": "expansion-supply",
+ "token": "expansion-supply-card",
+ "featured": [
+ {
+ "type": "battlesuit",
+ "id": "hos"
+ }
+ ],
+ "extra": ["essentines"],
+ "duration": ["2021-12-17", "2021-12-24"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": false,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "hos",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "battlesuit-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1500,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "hos",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 2250,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "hos",
+ "amount": [7, 9]
+ }
+ ]
+ },
+ {
+ "rate": 4500,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "sr",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 15000,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "sr",
+ "amount": [4, 6]
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "vt",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "vt",
+ "amount": [4, 6]
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "sj",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "sj",
+ "amount": [5, 8]
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "sp",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "sp",
+ "amount": [4, 6]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.17-key-of-oblivion-focused-supply-a.json b/public/data/supply-events/global-americas/v5.3-21.12.17-key-of-oblivion-focused-supply-a.json
new file mode 100644
index 00000000..4f8edcbb
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.17-key-of-oblivion-focused-supply-a.json
@@ -0,0 +1,269 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 4,
+ "name": "Keys of Oblivion Focused Supply A",
+ "type": "focused-supply-a",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "keys-of-oblivion"
+ },
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-bot"
+ }
+ ],
+ "extra": ["wishing-well"],
+ "duration": ["2021-12-17", "2021-12-24"],
+ "guarantees": [
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 2479,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "keys-of-oblivion",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "blooded-saints",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "key-of-castigation",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "flint-sanada",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "pledge-of-sakura",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "hler-s-serenity",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "nebulous-duality",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "jin-shengtan-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "jin-shengtan-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "jin-shengtan-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "thales-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "thales-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "thales-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "allan-poe-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "allan-poe-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "allan-poe-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-bot",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.20-nebulous-duality-focused-supply-b.json b/public/data/supply-events/global-americas/v5.3-21.12.20-nebulous-duality-focused-supply-b.json
new file mode 100644
index 00000000..894a3b48
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.20-nebulous-duality-focused-supply-b.json
@@ -0,0 +1,269 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 5,
+ "name": "Nebulous Duality Focused Supply B",
+ "type": "focused-supply-b",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "nebulous-duality"
+ },
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-bot"
+ }
+ ],
+ "extra": ["wishing-well"],
+ "duration": ["2021-12-20", "2021-12-24"],
+ "guarantees": [
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 2479,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "nebulous-duality",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "hyper-railguns",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "mjolnir",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "nue-of-the-shadow",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "5th-sacred-relic",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "blood-embrace",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 413,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "aphrodite",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "isaac-newton-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "isaac-newton-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "isaac-newton-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "gustav-klimt-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "gustav-klimt-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "gustav-klimt-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "columbus-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "columbus-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "columbus-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dante-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dante-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 310,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "dante-bot",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.24-expa-select-supply-round-1.json b/public/data/supply-events/global-americas/v5.3-21.12.24-expa-select-supply-round-1.json
new file mode 100644
index 00000000..0c940c9d
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.24-expa-select-supply-round-1.json
@@ -0,0 +1,156 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 3,
+ "shortName": "EXPA #1",
+ "name": "EXPA Select Supply Round 1",
+ "type": "expa-select",
+ "token": "expansion-supply-card",
+ "featured": [
+ {
+ "type": "battlesuit",
+ "id": "hfs"
+ },
+ {
+ "type": "battlesuit",
+ "id": "hor"
+ },
+ {
+ "type": "battlesuit",
+ "id": "ae"
+ },
+ {
+ "type": "battlesuit",
+ "id": "sd"
+ }
+ ],
+ "extra": ["essentines"],
+ "duration": ["2021-12-24", "2021-12-27"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "5star-battlesuit-in-featured",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "battlesuit-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1500,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "hos",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 2250,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "hos",
+ "amount": [7, 9]
+ }
+ ]
+ },
+ {
+ "rate": 4500,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "sd",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 15000,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "sd",
+ "amount": [4, 6]
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "dp",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "dp",
+ "amount": [4, 6]
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "ns",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "ns",
+ "amount": [5, 8]
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "vg",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 3000,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "vg",
+ "amount": [4, 6]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.24-foca-select-supply-round-1.json b/public/data/supply-events/global-americas/v5.3-21.12.24-foca-select-supply-round-1.json
new file mode 100644
index 00000000..01ca1a04
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.24-foca-select-supply-round-1.json
@@ -0,0 +1,174 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 4,
+ "shortName": "FOCA #1",
+ "name": "FOCA Select Supply Round 1",
+ "type": "foca-select",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "key-of-radiance"
+ },
+ {
+ "type": "stigmata",
+ "id": "murata-himeko-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "murata-himeko-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "murata-himeko-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "key-of-reason"
+ },
+ {
+ "type": "stigmata",
+ "id": "welt-yang-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "welt-yang-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "welt-yang-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "nebulous-duality"
+ },
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "fu-hua-margrave-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "blood-dance"
+ },
+ {
+ "type": "stigmata",
+ "id": "avogadro-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "avogadro-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "avogadro-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "zither-s-lament"
+ },
+ {
+ "type": "stigmata",
+ "id": "shuijing-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "shuijing-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "shuijing-bot"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-24", "2021-12-27"],
+ "guarantees": [
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "stigmata",
+ "id": "4star-stigmata-in-drops",
+ "amount": 1
+ },
+ {
+ "type": "weapon",
+ "id": "4star-weapon-in-drops",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 2479,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "selected-weapon",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "selected-stigmata-top",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "selected-stigmata-mid",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 1240,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "selected-stigmata-bot",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 2480,
+ "items": [
+ {
+ "type": "weapon",
+ "id": "other-4star-weapon-in-featured",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 3720,
+ "items": [
+ {
+ "type": "stigmata",
+ "id": "other-4star-stigmata-in-featured",
+ "amount": 1
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.24-sa-battlesuit-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.24-sa-battlesuit-supply.json
new file mode 100644
index 00000000..b1be862b
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.24-sa-battlesuit-supply.json
@@ -0,0 +1,105 @@
+{
+ "version": 5.3,
+ "verified": true,
+ "track": 7,
+ "shortName": "Starlit Astrologos",
+ "name": "Starlit Astrologos Supply",
+ "type": "sp-battlesuit",
+ "token": "sp-supply-card",
+ "featured": [
+ {
+ "type": "battlesuit",
+ "id": "sa"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-24", "2022-01-07"],
+ "guarantees": [
+ {
+ "count": 25,
+ "recurring": false,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "sa",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "battlesuit",
+ "id": "random-a-rank",
+ "amount": 1
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 7677,
+ "items": [
+ {
+ "type": "battlesuit",
+ "id": "sa",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 14108,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "sa",
+ "amount": [5, 8]
+ }
+ ]
+ },
+ {
+ "rate": 7677,
+ "items": [
+ { "type": "battlesuit", "id": "random-a-rank", "amount": 1 },
+ {
+ "type": "battlesuit-fragment",
+ "id": "sa",
+ "amount": 5
+ }
+ ]
+ },
+ {
+ "rate": 4703,
+ "items": [
+ {
+ "type": "battlesuit-fragment",
+ "id": "random-a-rank",
+ "amount": [4, 6]
+ },
+ {
+ "type": "battlesuit-fragment",
+ "id": "sa",
+ "amount": [2, 3]
+ }
+ ]
+ },
+ {
+ "rate": 4703,
+ "items": [
+ {
+ "type": "battlesuit-soul",
+ "id": "random-a-rank",
+ "amount": [5, 8]
+ },
+ {
+ "type": "battlesuit-fragment",
+ "id": "sa",
+ "amount": [2, 3]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.24-sr-elf-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.24-sr-elf-supply.json
new file mode 100644
index 00000000..07040c06
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.24-sr-elf-supply.json
@@ -0,0 +1,69 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 6,
+ "shortName": "Sirin",
+ "name": "Sirin Elf Supply",
+ "type": "elf-supply",
+ "token": "elf-supply-card",
+ "featured": [
+ {
+ "type": "elf",
+ "id": "sr"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-24", "2021-12-27"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "sr",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "sr",
+ "amount": 1
+ },
+ {
+ "type": "elf-part",
+ "id": "sr",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1510,
+ "items": [
+ {
+ "type": "elf",
+ "id": "sr",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 12230,
+ "items": [
+ {
+ "type": "elf-part",
+ "id": "sr",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.27-bl-elf-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.27-bl-elf-supply.json
new file mode 100644
index 00000000..ca809290
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.27-bl-elf-supply.json
@@ -0,0 +1,69 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 6,
+ "shortName": "Bella",
+ "name": "Bella Elf Supply",
+ "type": "elf-supply",
+ "token": "elf-supply-card",
+ "featured": [
+ {
+ "type": "elf",
+ "id": "bl"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-27", "2021-12-29"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "bl",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "bl",
+ "amount": 1
+ },
+ {
+ "type": "elf-part",
+ "id": "bl",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1510,
+ "items": [
+ {
+ "type": "elf",
+ "id": "bl",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 12230,
+ "items": [
+ {
+ "type": "elf-part",
+ "id": "bl",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.27-expa-select-supply-round-2.json b/public/data/supply-events/global-americas/v5.3-21.12.27-expa-select-supply-round-2.json
new file mode 100644
index 00000000..93fad46c
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.27-expa-select-supply-round-2.json
@@ -0,0 +1,32 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 3,
+ "shortName": "EXPA #2",
+ "name": "EXPA Select Supply Round 2",
+ "type": "expansion-select-supply",
+ "token": "expansion-supply-card",
+ "featured": [
+ {
+ "type": "battlesuit",
+ "id": "hot"
+ },
+ {
+ "type": "battlesuit",
+ "id": "nyx"
+ },
+ {
+ "type": "battlesuit",
+ "id": "sn"
+ },
+ {
+ "type": "battlesuit",
+ "id": "bb"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-27", "2021-12-29"],
+ "guarantees": [],
+ "mileages": [],
+ "drops": []
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.27-foca-select-supply-round-2.json b/public/data/supply-events/global-americas/v5.3-21.12.27-foca-select-supply-round-2.json
new file mode 100644
index 00000000..129c8aa3
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.27-foca-select-supply-round-2.json
@@ -0,0 +1,96 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 4,
+ "shortName": "FOCA #2",
+ "name": "FOCA Select Supply Round 2",
+ "type": "foca-select",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "key-of-castigation"
+ },
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "benares-awakening-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "sanguine-gaze"
+ },
+ {
+ "type": "stigmata",
+ "id": "verne-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "verne-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "verne-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "path-to-acheron"
+ },
+ {
+ "type": "stigmata",
+ "id": "allan-poe-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "allan-poe-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "allan-poe-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "dark-star"
+ },
+ {
+ "type": "stigmata",
+ "id": "holmes-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "holmes-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "holmes-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "nue-of-the-shadow"
+ },
+ {
+ "type": "stigmata",
+ "id": "columbus-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "columbus-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "columbus-bot"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-27", "2021-12-29"],
+ "guarantees": [],
+ "mileages": [],
+ "drops": []
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.29-expa-select-supply-round-3.json b/public/data/supply-events/global-americas/v5.3-21.12.29-expa-select-supply-round-3.json
new file mode 100644
index 00000000..859e7ed6
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.29-expa-select-supply-round-3.json
@@ -0,0 +1,32 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 3,
+ "shortName": "EXPA #3",
+ "name": "EXPA Select Supply Round 3",
+ "type": "expansion-select-supply",
+ "token": "expansion-supply-card",
+ "featured": [
+ {
+ "type": "battlesuit",
+ "id": "hos"
+ },
+ {
+ "type": "battlesuit",
+ "id": "da"
+ },
+ {
+ "type": "battlesuit",
+ "id": "fr"
+ },
+ {
+ "type": "battlesuit",
+ "id": "sp"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-29", "2021-12-31"],
+ "guarantees": [],
+ "mileages": [],
+ "drops": []
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.29-foca-select-supply-round-3.json b/public/data/supply-events/global-americas/v5.3-21.12.29-foca-select-supply-round-3.json
new file mode 100644
index 00000000..b4d69f95
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.29-foca-select-supply-round-3.json
@@ -0,0 +1,96 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 4,
+ "shortName": "FOCA #3",
+ "name": "FOCA Select Supply Round 3",
+ "type": "foca-select",
+ "token": "focused-supply-card",
+ "featured": [
+ {
+ "type": "weapon",
+ "id": "keys-of-oblivion"
+ },
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "shattered-swords-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "starlance-prime"
+ },
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "shakespeare-adrift-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "iris-of-the-dreams"
+ },
+ {
+ "type": "stigmata",
+ "id": "irene-adler-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "irene-adler-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "irene-adler-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "skadi-ondurgud"
+ },
+ {
+ "type": "stigmata",
+ "id": "ana-schariac-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "ana-schariac-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "ana-schariac-bot"
+ },
+ {
+ "type": "weapon",
+ "id": "sleeping-beauty"
+ },
+ {
+ "type": "stigmata",
+ "id": "dickens-top"
+ },
+ {
+ "type": "stigmata",
+ "id": "dickens-mid"
+ },
+ {
+ "type": "stigmata",
+ "id": "dickens-bot"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-29", "2021-12-31"],
+ "guarantees": [],
+ "mileages": [],
+ "drops": []
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.29-tz-elf-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.29-tz-elf-supply.json
new file mode 100644
index 00000000..052b0863
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.29-tz-elf-supply.json
@@ -0,0 +1,69 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 6,
+ "shortName": "Tesla ZERO",
+ "name": "Tesla ZERO Elf Supply",
+ "type": "elf-supply",
+ "token": "elf-supply-card",
+ "featured": [
+ {
+ "type": "elf",
+ "id": "tz"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-29", "2021-12-31"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "tz",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "tz",
+ "amount": 1
+ },
+ {
+ "type": "elf-part",
+ "id": "tz",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1510,
+ "items": [
+ {
+ "type": "elf",
+ "id": "tz",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 12230,
+ "items": [
+ {
+ "type": "elf-part",
+ "id": "tz",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-21.12.31-se-elf-supply.json b/public/data/supply-events/global-americas/v5.3-21.12.31-se-elf-supply.json
new file mode 100644
index 00000000..69817626
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-21.12.31-se-elf-supply.json
@@ -0,0 +1,69 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 6,
+ "shortName": "Selune's Elegy",
+ "name": "Selune's Elegy Elf Supply",
+ "type": "elf-supply",
+ "token": "elf-supply-card",
+ "featured": [
+ {
+ "type": "elf",
+ "id": "se"
+ }
+ ],
+ "extra": [],
+ "duration": ["2021-12-31", "2022-01-03"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "se",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "se",
+ "amount": 1
+ },
+ {
+ "type": "elf-part",
+ "id": "se",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1510,
+ "items": [
+ {
+ "type": "elf",
+ "id": "se",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 12230,
+ "items": [
+ {
+ "type": "elf-part",
+ "id": "se",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-22.01.03-we-elf-supply.json b/public/data/supply-events/global-americas/v5.3-22.01.03-we-elf-supply.json
new file mode 100644
index 00000000..eb851af2
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-22.01.03-we-elf-supply.json
@@ -0,0 +1,69 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 6,
+ "shortName": "Water's Edge",
+ "name": "Water's Edge Elf Supply",
+ "type": "elf-supply",
+ "token": "elf-supply-card",
+ "featured": [
+ {
+ "type": "elf",
+ "id": "we"
+ }
+ ],
+ "extra": [],
+ "duration": ["2022-01-03", "2022-01-05"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "we",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "we",
+ "amount": 1
+ },
+ {
+ "type": "elf-part",
+ "id": "we",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1510,
+ "items": [
+ {
+ "type": "elf",
+ "id": "we",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 12230,
+ "items": [
+ {
+ "type": "elf-part",
+ "id": "we",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ]
+}
diff --git a/public/data/supply-events/global-americas/v5.3-22.01.05-bof-elf-supply.json b/public/data/supply-events/global-americas/v5.3-22.01.05-bof-elf-supply.json
new file mode 100644
index 00000000..1bdae726
--- /dev/null
+++ b/public/data/supply-events/global-americas/v5.3-22.01.05-bof-elf-supply.json
@@ -0,0 +1,69 @@
+{
+ "version": 5.3,
+ "verified": false,
+ "track": 6,
+ "shortName": "Book of Fuxi",
+ "name": "Book of Fuxi Elf Supply",
+ "type": "elf-supply",
+ "token": "elf-supply-card",
+ "featured": [
+ {
+ "type": "elf",
+ "id": "bof"
+ }
+ ],
+ "extra": [],
+ "duration": ["2022-01-05", "2021-01-07"],
+ "guarantees": [
+ {
+ "count": 100,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "bof",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "count": 10,
+ "recurring": true,
+ "rewards": [
+ {
+ "type": "elf",
+ "id": "bof",
+ "amount": 1
+ },
+ {
+ "type": "elf-part",
+ "id": "bof",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ],
+ "mileages": [],
+ "drops": [
+ {
+ "rate": 1510,
+ "items": [
+ {
+ "type": "elf",
+ "id": "bof",
+ "amount": 1
+ }
+ ]
+ },
+ {
+ "rate": 12230,
+ "items": [
+ {
+ "type": "elf-part",
+ "id": "bof",
+ "amount": [2, 4]
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/components/atoms/SquareImageBox.tsx b/src/components/atoms/SquareImageBox.tsx
new file mode 100644
index 00000000..61ba328c
--- /dev/null
+++ b/src/components/atoms/SquareImageBox.tsx
@@ -0,0 +1,53 @@
+/** @jsxImportSource theme-ui */
+import { Box } from '@theme-ui/components'
+import Image from 'next/image'
+
+interface SquareImageBoxProps {
+ size: number | string
+ src: string
+ alt?: string
+ m?: number | string
+ mt?: number | string
+ mb?: number | string
+ ml?: number | string
+ mr?: number | string
+ mx?: number | string
+ my?: number | string
+}
+
+const SquareImageBox = ({
+ size,
+ src,
+ alt,
+ m,
+ mx,
+ my,
+ mt,
+ mb,
+ ml,
+ mr,
+}: SquareImageBoxProps) => {
+ return (
+
+
+
+ )
+}
+
+export default SquareImageBox
diff --git a/src/data/honkai3rd/supply-events.ts b/src/data/honkai3rd/supply-events.ts
new file mode 100644
index 00000000..81cff7bc
--- /dev/null
+++ b/src/data/honkai3rd/supply-events.ts
@@ -0,0 +1,78 @@
+import { readdirSync, readJsonFileSync } from '../../lib/data'
+
+export interface SupplyEvent {
+ id: string
+ verified: boolean
+ track: number
+ name: string
+ type: string
+ token: string
+ featured: {
+ type: string
+ id: string
+ }[]
+ extra: string[]
+ version: number
+ duration: [string, string]
+ guarantees: {
+ count: number
+ recurring: boolean
+ rewards: { type: string; id: string; amount: number | [number, number] }[]
+ }[]
+ mileages: {
+ count: number
+ type: string
+ id: string
+ amount: number
+ }[]
+ drops: {
+ type: string
+ id: string
+ rate: number
+ amount: number | [number, number]
+ }[]
+}
+
+const supplyEventFileNameList = readdirSync('supply-events/global-americas')
+const supplyEventFileList = supplyEventFileNameList
+ .map((fileName) => {
+ const filePathname = 'supply-events/global-americas/' + fileName
+ const data = readJsonFileSync(filePathname)
+
+ return { ...data, id: fileName.replace(/\.json/, '') } as SupplyEvent
+ })
+ .sort((a, b) => {
+ return -a.id.localeCompare(b.id)
+ })
+
+const supplyEventMap = supplyEventFileList.reduce((map, stigmata) => {
+ map.set(stigmata.id, stigmata)
+ return map
+}, new Map())
+
+const versionSupplyEventListMap = supplyEventFileList.reduce(
+ (map, supplyEvent) => {
+ let supplyEvents = map.get(supplyEvent.version)
+ if (supplyEvents == null) {
+ supplyEvents = []
+ map.set(supplyEvent.version, supplyEvents)
+ }
+
+ supplyEvents.push(supplyEvent)
+
+ return map
+ },
+ new Map()
+)
+
+export function listSupplyEvents() {
+ return supplyEventFileList
+}
+
+export function getSupplyEventById(id: string) {
+ return supplyEventMap.get(id)
+}
+
+export function getSupplyEventListByVersion(version: number) {
+ return versionSupplyEventListMap.get(version) || []
+}
diff --git a/src/pages/honkai3rd/supply-events/index.tsx b/src/pages/honkai3rd/supply-events/index.tsx
new file mode 100644
index 00000000..26ec6ea2
--- /dev/null
+++ b/src/pages/honkai3rd/supply-events/index.tsx
@@ -0,0 +1,420 @@
+/** @jsxImportSource theme-ui */
+import { Text, Box, Heading, Link, Flex } from '@theme-ui/components'
+import NextLink from 'next/link'
+import Breadcrumb from '../../../components/organisms/Breadcrumb'
+import Honkai3rdNavigator from '../../../components/organisms/Honkai3rdNavigator'
+import { pick, times } from 'ramda'
+import {
+ listSupplyEvents,
+ SupplyEvent,
+} from '../../../data/honkai3rd/supply-events'
+import { getStigmataById, StigmataData } from '../../../data/honkai3rd/stigmata'
+import { getWeaponById, WeaponData } from '../../../data/honkai3rd/weapons'
+import {
+ BattlesuitData,
+ getBattlesuitById,
+} from '../../../data/honkai3rd/battlesuits'
+import { ElfData, getElfById } from '../../../data/honkai3rd/elfs'
+import {
+ format as formatDate,
+ differenceInCalendarDays,
+ differenceInCalendarWeeks,
+ format,
+} from 'date-fns'
+import SquareImageBox from '../../../components/atoms/SquareImageBox'
+import { useMemo } from 'react'
+
+type ObjectMap = { [key: string]: T }
+type StigmataObjectMap = ObjectMap>
+type WeaponObjectMap = ObjectMap>
+type BattlesuitObjectMap = ObjectMap>
+type ElfObjectMap = ObjectMap>
+
+interface SupplyEventListPageProps {
+ supplyEventList: Pick<
+ SupplyEvent,
+ 'id' | 'version' | 'name' | 'featured' | 'duration' | 'track' | 'verified'
+ >[]
+ stigmataObjectMap: StigmataObjectMap
+ weaponObjectMap: WeaponObjectMap
+ battlesuitObjectMap: BattlesuitObjectMap
+ elfObjectMap: ElfObjectMap
+}
+
+const SupplyEventListPage = ({
+ supplyEventList,
+ battlesuitObjectMap,
+ weaponObjectMap,
+ stigmataObjectMap,
+ elfObjectMap,
+}: SupplyEventListPageProps) => {
+ const startDate = new Date('2021-12-02')
+ const endDate = new Date('2022-01-13')
+ const todayDate = new Date(formatDate(new Date(), 'yyyy-MM-dd'))
+
+ const totalDays = differenceInCalendarDays(endDate, startDate)
+ const totalWeeks = differenceInCalendarWeeks(endDate, startDate)
+
+ const totalRow = useMemo(() => {
+ return supplyEventList.reduce((max, supplyEvent) => {
+ return supplyEvent.track > max ? supplyEvent.track : max
+ }, 1)
+ }, [])
+
+ return (
+
+
+
+
+
+
+
+ Supply Events
+
+
+
+
+ {times((index) => {
+ const weekNumber = index + 1
+ return (
+
+ Week {weekNumber}
+
+ )
+ }, totalWeeks)}
+
+
+ {times((index) => {
+ return (
+
+ )
+ }, totalDays)}
+
+
+
+ Today ({format(todayDate, 'P')})
+
+
+ {supplyEventList
+ .slice()
+ .reverse()
+ .map((supplyEvent) => {
+ const offset =
+ differenceInCalendarDays(
+ new Date(supplyEvent.duration[0]),
+ startDate
+ ) * 40
+ const length =
+ differenceInCalendarDays(
+ new Date(supplyEvent.duration[1]),
+ new Date(supplyEvent.duration[0])
+ ) * 40
+
+ const featuredIconProps = getIconPropsOfItem(
+ supplyEvent.featured[0],
+ {
+ battlesuitObjectMap,
+ weaponObjectMap,
+ stigmataObjectMap,
+ elfObjectMap,
+ }
+ )
+ return (
+
+ {featuredIconProps != null && (
+
+ )}
+
+ {supplyEvent.name}
+ {!supplyEvent.verified && ' (❓)'}
+
+
+ )
+ })}
+
+
+
+ {supplyEventList.map((supplyEvent) => {
+ return (
+
+
+
+
+
+ [{supplyEvent.version}] {supplyEvent.name} (
+ {supplyEvent.duration.join(' ~ ')})
+
+
+
+
+
+ {supplyEvent.featured.map((item) => {
+ const props = getIconPropsOfItem(item, {
+ battlesuitObjectMap,
+ weaponObjectMap,
+ stigmataObjectMap,
+ elfObjectMap,
+ })
+ if (props == null) {
+ return (
+
+ {item.type} : {item.id}
+
+ )
+ }
+ return (
+
+ )
+ })}
+
+
+
+ )
+ })}
+
+
+
+ )
+}
+
+export default SupplyEventListPage
+
+export async function getStaticProps() {
+ const supplyEventList = listSupplyEvents()
+
+ const stigmataObjectMap: {
+ [key: string]: Pick
+ } = {}
+ const weaponObjectMap: {
+ [key: string]: Pick
+ } = {}
+ const battlesuitObjectMap: {
+ [key: string]: Pick
+ } = {}
+ const elfObjectMap: {
+ [key: string]: Pick
+ } = {}
+
+ supplyEventList.forEach((supplyEvent) => {
+ supplyEvent.featured.forEach((item) => {
+ switch (item.type) {
+ case 'battlesuit':
+ const battlesuit = getBattlesuitById(item.id)
+ if (battlesuit != null) {
+ battlesuitObjectMap[battlesuit.id] = pick(
+ ['id', 'name'],
+ battlesuit
+ )
+ }
+ break
+ case 'weapon':
+ const weapon = getWeaponById(item.id)
+ if (weapon != null) {
+ weaponObjectMap[weapon.id] = pick(['id', 'name'], weapon)
+ }
+ break
+ case 'stigmata':
+ const stigmata = getStigmataById(item.id)
+ if (stigmata != null) {
+ stigmataObjectMap[stigmata.id] = pick(['id', 'name'], stigmata)
+ }
+ break
+ case 'elf':
+ const elf = getElfById(item.id)
+ if (elf != null) {
+ elfObjectMap[elf.id] = pick(['id', 'name'], elf)
+ }
+ break
+ }
+ })
+ })
+ return {
+ props: {
+ supplyEventList: supplyEventList.map((supplyEvent) => {
+ return pick(
+ [
+ 'id',
+ 'version',
+ 'name',
+ 'featured',
+ 'duration',
+ 'track',
+ 'verified',
+ ],
+ supplyEvent
+ )
+ }),
+ battlesuitObjectMap,
+ weaponObjectMap,
+ stigmataObjectMap,
+ elfObjectMap,
+ },
+ revalidate: true,
+ }
+}
+
+function getIconPropsOfItem(
+ item: { type: string; id: string },
+ {
+ battlesuitObjectMap,
+ weaponObjectMap,
+ stigmataObjectMap,
+ elfObjectMap,
+ }: {
+ stigmataObjectMap: StigmataObjectMap
+ weaponObjectMap: WeaponObjectMap
+ battlesuitObjectMap: BattlesuitObjectMap
+ elfObjectMap: ElfObjectMap
+ }
+): { src: string; alt: string } | null {
+ switch (item.type) {
+ case 'battlesuit':
+ const battlesuit = battlesuitObjectMap[item.id]
+ if (battlesuit != null) {
+ return {
+ src: `/assets/honkai3rd/battlesuits/portrait-${battlesuit.id}.png`,
+ alt: battlesuit.name,
+ }
+ }
+ case 'weapon':
+ const weapon = weaponObjectMap[item.id]
+ if (weapon != null) {
+ return {
+ src: `/assets/honkai3rd/weapons/${weapon.id}.png`,
+ alt: weapon.name,
+ }
+ }
+ case 'stigmata':
+ const stigmata = stigmataObjectMap[item.id]
+ if (stigmata != null) {
+ return {
+ src: `/assets/honkai3rd/stigmata/icon-${stigmata.id}.png`,
+ alt: stigmata.name,
+ }
+ }
+ case 'elf':
+ const elf = elfObjectMap[item.id]
+ if (elf != null) {
+ return {
+ src: `/assets/honkai3rd/elfs/icon-${elf.id}.png`,
+ alt: elf.name,
+ }
+ }
+ }
+ return null
+}