@gamebob/axon-surge 0.38.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/axon-surge.js +122 -69
- package/dist/i18n/locales.d.ts +2 -0
- package/dist/i18n/locales.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/ui/CoreRosterOverlay.d.ts +4 -0
- package/dist/ui/CoreRosterOverlay.d.ts.map +1 -1
- package/dist/ui/CoreRosterRenderer.d.ts +1 -1
- package/dist/ui/CoreRosterRenderer.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/axon-surge.js
CHANGED
|
@@ -2303,7 +2303,7 @@ class xr extends fr {
|
|
|
2303
2303
|
t.restore();
|
|
2304
2304
|
}
|
|
2305
2305
|
}
|
|
2306
|
-
class
|
|
2306
|
+
class Sr extends xr {
|
|
2307
2307
|
drawMiasmaClouds(e, t, a) {
|
|
2308
2308
|
if (this.renderer.ctx)
|
|
2309
2309
|
for (const i of e)
|
|
@@ -2341,13 +2341,13 @@ class br extends xr {
|
|
|
2341
2341
|
this.renderer.ctx.save(), this.renderer.ctx.globalAlpha = t.alpha, this.renderer.ctx.fillStyle = t.color, this.renderer.ctx.font = `900 ${t.size}px ${M}`, this.renderer.ctx.textAlign = "center", this.renderer.ctx.shadowColor = t.color, this.renderer.ctx.shadowBlur = 12, this.renderer.ctx.fillText(t.text, t.position.x, t.position.y), this.renderer.ctx.restore();
|
|
2342
2342
|
}
|
|
2343
2343
|
}
|
|
2344
|
-
const
|
|
2344
|
+
const br = {
|
|
2345
2345
|
common: p.spore,
|
|
2346
2346
|
rare: p.parasite,
|
|
2347
2347
|
epic: p.cluster,
|
|
2348
2348
|
legendary: p.core
|
|
2349
2349
|
};
|
|
2350
|
-
class Cr extends
|
|
2350
|
+
class Cr extends Sr {
|
|
2351
2351
|
drawOrbitingModifierOrbs(e) {
|
|
2352
2352
|
if (!this.renderer.ctx) return;
|
|
2353
2353
|
const { orbs: t, time: a, i18nService: i, canReroll: o = !0, rerollsRemaining: n = 1 } = e, s = this.renderer.themeManager.getPalette(), l = this.getDisplayScale();
|
|
@@ -2359,7 +2359,7 @@ class Cr extends br {
|
|
|
2359
2359
|
}
|
|
2360
2360
|
}
|
|
2361
2361
|
drawOrbitingOrb(e) {
|
|
2362
|
-
const { orb: t, time: a, palette: i, displayScale: o, i18nService: n } = e, s =
|
|
2362
|
+
const { orb: t, time: a, palette: i, displayScale: o, i18nService: n } = e, s = br[t.definition.rarity], l = t.radius + Math.sin(a * 6 + t.orbitAngle) * 3, c = this.renderer.ctx;
|
|
2363
2363
|
c.save(), c.shadowColor = s, c.shadowBlur = t.isGrabbed ? 36 : this.getOrbShadowBlur(t), this.drawOrbAura(t, l, s), this.drawOrbBody({ orb: t, pulseR: l, time: a, palette: i, rarityColor: s }), this.drawOrbLabel({ orb: t, pulseR: l, palette: i, rarityColor: s, displayScale: o, i18nService: n }), c.restore();
|
|
2364
2364
|
}
|
|
2365
2365
|
getOrbShadowBlur(e) {
|
|
@@ -2593,7 +2593,7 @@ class Rr {
|
|
|
2593
2593
|
});
|
|
2594
2594
|
}
|
|
2595
2595
|
drawParticle(e) {
|
|
2596
|
-
const { ctx: t, w: a, h: i, time: o, hue: n, secondaryHue: s, level: l, isLight: c, centerX: d, centerY: u, clearRadius: h, index: m } = e, g = m + l * 17, y = this.unitNoise(g * 1.7) * a, j = this.unitNoise(g * 2.9 + 13) * i, R = Math.hypot(y - d, j - u), k = Math.min(1, Math.max(0, (R - h) / (Math.min(a, i) * 0.28))),
|
|
2596
|
+
const { ctx: t, w: a, h: i, time: o, hue: n, secondaryHue: s, level: l, isLight: c, centerX: d, centerY: u, clearRadius: h, index: m } = e, g = m + l * 17, y = this.unitNoise(g * 1.7) * a, j = this.unitNoise(g * 2.9 + 13) * i, R = Math.hypot(y - d, j - u), k = Math.min(1, Math.max(0, (R - h) / (Math.min(a, i) * 0.28))), bt = 0.7 + Math.sin(o * (0.6 + m % 4 * 0.08) + g) * 0.3, Ct = (c ? 0.34 : 0.3) * k * bt;
|
|
2597
2597
|
t.fillStyle = `hsla(${m % 3 === 0 ? s : n}, ${c ? 82 : 78}%, ${c ? 40 : 70}%, ${Ct})`, t.beginPath(), t.arc(y, j, 0.65 + m % 3 * 0.45, 0, Math.PI * 2), t.fill();
|
|
2598
2598
|
}
|
|
2599
2599
|
unitNoise(e) {
|
|
@@ -3961,6 +3961,8 @@ const C = {
|
|
|
3961
3961
|
coreRosterSkillPoints: "EXPERIENCIA NUCLEICA",
|
|
3962
3962
|
coreRosterNext: "SIGUIENTE DESBLOQUEO",
|
|
3963
3963
|
coreRosterNoNext: "No hay otro desbloqueo definido.",
|
|
3964
|
+
coreRosterScrollUp: "Ver elevaciones anteriores",
|
|
3965
|
+
coreRosterScrollDown: "Ver más elevaciones",
|
|
3964
3966
|
coreOriginStyleDescription: "Agarra, arrastra y lanza enemigos para convertirlos en munición.",
|
|
3965
3967
|
coreLauncherTitle: "EL LANZADOR",
|
|
3966
3968
|
coreLauncherDescription: "La conciencia que convierte cada criatura en munición.",
|
|
@@ -4203,6 +4205,8 @@ const C = {
|
|
|
4203
4205
|
coreRosterSkillPoints: "NUCLEIC EXPERIENCE",
|
|
4204
4206
|
coreRosterNext: "NEXT UNLOCK",
|
|
4205
4207
|
coreRosterNoNext: "No further unlock is defined.",
|
|
4208
|
+
coreRosterScrollUp: "View previous elevations",
|
|
4209
|
+
coreRosterScrollDown: "View more elevations",
|
|
4206
4210
|
coreOriginStyleDescription: "Grab, drag, and throw enemies to turn them into ammunition.",
|
|
4207
4211
|
coreLauncherTitle: "THE LAUNCHER",
|
|
4208
4212
|
coreLauncherDescription: "The consciousness that turns every creature into ammunition.",
|
|
@@ -4405,6 +4409,8 @@ const C = {
|
|
|
4405
4409
|
coreRosterSkillPoints: "EXPÉRIENCE NUCLÉIQUE",
|
|
4406
4410
|
coreRosterNext: "PROCHAIN DÉVERROUILLAGE",
|
|
4407
4411
|
coreRosterNoNext: "Aucun autre déverrouillage n'est défini.",
|
|
4412
|
+
coreRosterScrollUp: "Voir les élévations précédentes",
|
|
4413
|
+
coreRosterScrollDown: "Voir plus d'élévations",
|
|
4408
4414
|
coreOriginStyleDescription: "Saisissez, faites glisser et lancez les ennemis pour en faire des munitions.",
|
|
4409
4415
|
coreSmasherTitle: "L'ÉCRASEUR",
|
|
4410
4416
|
coreSmasherDescription: "La conscience qui soutient que tout corps est infiniment plus utile lorsqu'il est plat.",
|
|
@@ -4592,6 +4598,8 @@ const C = {
|
|
|
4592
4598
|
coreRosterSkillPoints: "NUKLEARE ERFAHRUNG",
|
|
4593
4599
|
coreRosterNext: "NÄCHSTE FREISCHALTUNG",
|
|
4594
4600
|
coreRosterNoNext: "Keine weitere Freischaltung definiert.",
|
|
4601
|
+
coreRosterScrollUp: "Vorherige Elevationen anzeigen",
|
|
4602
|
+
coreRosterScrollDown: "Weitere Elevationen anzeigen",
|
|
4595
4603
|
coreOriginStyleDescription: "Greife, ziehe und schleudere Feinde, um sie in Munition zu verwandeln.",
|
|
4596
4604
|
coreSmasherTitle: "DER ZERMALMER",
|
|
4597
4605
|
coreSmasherDescription: "Das Bewusstsein, das behauptet, dass jeder Körper unendlich nützlicher ist, wenn er flach ist.",
|
|
@@ -4779,6 +4787,8 @@ const C = {
|
|
|
4779
4787
|
coreRosterSkillPoints: "ESPERIENZA NUCLEICA",
|
|
4780
4788
|
coreRosterNext: "PROSSIMO SBLOCCO",
|
|
4781
4789
|
coreRosterNoNext: "Nessun altro sblocco definito.",
|
|
4790
|
+
coreRosterScrollUp: "Mostra elevazioni precedenti",
|
|
4791
|
+
coreRosterScrollDown: "Mostra altre elevazioni",
|
|
4782
4792
|
coreOriginStyleDescription: "Afferra, trascina e lancia i nemici per trasformarli in munizioni.",
|
|
4783
4793
|
coreSmasherTitle: "IL FRANTUMATORE",
|
|
4784
4794
|
coreSmasherDescription: "La coscienza che sostiene che ogni corpo sia infinitamente più utile quando è piatto.",
|
|
@@ -4966,6 +4976,8 @@ const C = {
|
|
|
4966
4976
|
coreRosterSkillPoints: "EXPERIÊNCIA NUCLEICA",
|
|
4967
4977
|
coreRosterNext: "PRÓXIMO DESBLOQUEIO",
|
|
4968
4978
|
coreRosterNoNext: "Nenhum outro desbloqueio definido.",
|
|
4979
|
+
coreRosterScrollUp: "Ver elevações anteriores",
|
|
4980
|
+
coreRosterScrollDown: "Ver mais elevações",
|
|
4969
4981
|
coreOriginStyleDescription: "Agarra, arrasta e lança inimigos para transformá-los em munição.",
|
|
4970
4982
|
coreSmasherTitle: "O ESMAGADOR",
|
|
4971
4983
|
coreSmasherDescription: "A consciência que transforma um agarre num esmagamento.",
|
|
@@ -5153,6 +5165,8 @@ const C = {
|
|
|
5153
5165
|
coreRosterSkillPoints: "NUCLEAIRE ERVARING",
|
|
5154
5166
|
coreRosterNext: "VOLGENDE VRIJSPELING",
|
|
5155
5167
|
coreRosterNoNext: "Geen volgende vrijspeling gedefinieerd.",
|
|
5168
|
+
coreRosterScrollUp: "Vorige elevaties bekijken",
|
|
5169
|
+
coreRosterScrollDown: "Meer elevaties bekijken",
|
|
5156
5170
|
coreOriginStyleDescription: "Grijp, sleep en werp vijanden om ze in munitie te veranderen.",
|
|
5157
5171
|
coreSmasherTitle: "DE VERPLETTERAAR",
|
|
5158
5172
|
coreSmasherDescription: "Het bewustzijn dat een greep in een verpletterende klap verandert.",
|
|
@@ -5340,6 +5354,8 @@ const C = {
|
|
|
5340
5354
|
coreRosterSkillPoints: "NUKLEÄR ERFARENHET",
|
|
5341
5355
|
coreRosterNext: "NÄSTA UPPLÅSNING",
|
|
5342
5356
|
coreRosterNoNext: "Ingen ytterligare upplåsning definierad.",
|
|
5357
|
+
coreRosterScrollUp: "Visa tidigare elevationer",
|
|
5358
|
+
coreRosterScrollDown: "Visa fler elevationer",
|
|
5343
5359
|
coreOriginStyleDescription: "Greppa, dra och kasta fiender för att göra dem till ammunition.",
|
|
5344
5360
|
coreSmasherTitle: "MIAŻDŻYCEL",
|
|
5345
5361
|
coreSmasherDescription: "Medvetandet som förvandlar ett grepp till en krossande smäll.",
|
|
@@ -5527,6 +5543,8 @@ const C = {
|
|
|
5527
5543
|
coreRosterSkillPoints: "DOŚWIADCZENIE NUKLEICZNE",
|
|
5528
5544
|
coreRosterNext: "NASTĘPNE ODBLOKOWANIE",
|
|
5529
5545
|
coreRosterNoNext: "Nie zdefiniowano kolejnego odblokowania.",
|
|
5546
|
+
coreRosterScrollUp: "Pokaż wcześniejsze elewacje",
|
|
5547
|
+
coreRosterScrollDown: "Pokaż więcej elewacji",
|
|
5530
5548
|
coreOriginStyleDescription: "Chwytaj, przeciągaj i rzucaj wrogami, zmieniając ich w amunicję.",
|
|
5531
5549
|
coreSmasherTitle: "SANG PENGHANCUR",
|
|
5532
5550
|
coreSmasherDescription: "Świadomość, która zmienia chwyt w miażdżące uderzenie.",
|
|
@@ -5714,6 +5732,8 @@ const C = {
|
|
|
5714
5732
|
coreRosterSkillPoints: "PENGALAMAN NUKLEAT",
|
|
5715
5733
|
coreRosterNext: "PEMBUKAAN BERIKUTNYA",
|
|
5716
5734
|
coreRosterNoNext: "Belum ada pembukaan lain.",
|
|
5735
|
+
coreRosterScrollUp: "Lihat elevasi sebelumnya",
|
|
5736
|
+
coreRosterScrollDown: "Lihat elevasi lainnya",
|
|
5717
5737
|
coreOriginStyleDescription: "Tangkap, seret, dan lempar musuh untuk mengubahnya menjadi amunisi.",
|
|
5718
5738
|
coreSmasherTitle: "EZİCİ",
|
|
5719
5739
|
coreSmasherDescription: "Kesadaran yang mengubah cengkeraman menjadi hantaman penghancur.",
|
|
@@ -5901,6 +5921,8 @@ const C = {
|
|
|
5901
5921
|
coreRosterSkillPoints: "NÜKLEİK DENEYİM",
|
|
5902
5922
|
coreRosterNext: "SONRAKİ AÇILIM",
|
|
5903
5923
|
coreRosterNoNext: "Başka açılım tanımlanmadı.",
|
|
5924
|
+
coreRosterScrollUp: "Önceki yükselişleri gör",
|
|
5925
|
+
coreRosterScrollDown: "Daha fazla yükseliş gör",
|
|
5904
5926
|
coreOriginStyleDescription: "Düşmanları yakala, sürükle ve fırlat; onları mühimmata dönüştür.",
|
|
5905
5927
|
coreSmasherTitle: "КРУШИТЕЛЬ",
|
|
5906
5928
|
coreSmasherDescription: "Kavrayışı ezici bir darbeye dönüştüren bilinç.",
|
|
@@ -6088,6 +6110,8 @@ const C = {
|
|
|
6088
6110
|
coreRosterSkillPoints: "НУКЛЕИЧЕСКИЙ ОПЫТ",
|
|
6089
6111
|
coreRosterNext: "СЛЕДУЮЩЕЕ ОТКРЫТИЕ",
|
|
6090
6112
|
coreRosterNoNext: "Следующее открытие не определено.",
|
|
6113
|
+
coreRosterScrollUp: "Показать предыдущие возвышения",
|
|
6114
|
+
coreRosterScrollDown: "Показать другие возвышения",
|
|
6091
6115
|
coreOriginStyleDescription: "Хватайте, тащите и бросайте врагов, превращая их в боеприпасы.",
|
|
6092
6116
|
coreSmasherTitle: "スマッシャー",
|
|
6093
6117
|
coreSmasherDescription: "Сознание, превращающее захват в сокрушительный удар.",
|
|
@@ -6275,6 +6299,8 @@ const C = {
|
|
|
6275
6299
|
coreRosterSkillPoints: "ヌクレア経験",
|
|
6276
6300
|
coreRosterNext: "次のアンロック",
|
|
6277
6301
|
coreRosterNoNext: "次のアンロックは未定義です。",
|
|
6302
|
+
coreRosterScrollUp: "前のエレベーションを見る",
|
|
6303
|
+
coreRosterScrollDown: "さらにエレベーションを見る",
|
|
6278
6304
|
coreOriginStyleDescription: "敵をつかみ、引き寄せ、投げて弾薬に変える。",
|
|
6279
6305
|
coreSmasherTitle: "THE SMASHER",
|
|
6280
6306
|
coreSmasherDescription: "つかんだものを粉砕の一撃に変える意識。",
|
|
@@ -6462,6 +6488,8 @@ const C = {
|
|
|
6462
6488
|
coreRosterSkillPoints: "뉴클레익 경험",
|
|
6463
6489
|
coreRosterNext: "다음 해금",
|
|
6464
6490
|
coreRosterNoNext: "다음 해금은 정의되지 않았습니다.",
|
|
6491
|
+
coreRosterScrollUp: "이전 엘리베이션 보기",
|
|
6492
|
+
coreRosterScrollDown: "더 많은 엘리베이션 보기",
|
|
6465
6493
|
coreOriginStyleDescription: "적을 붙잡고 끌어당기고 던져 탄약으로 바꿉니다.",
|
|
6466
6494
|
coreSmasherTitle: "분쇄기",
|
|
6467
6495
|
coreSmasherDescription: "붙잡기를 분쇄의 일격으로 바꾸는 의식입니다.",
|
|
@@ -6649,6 +6677,8 @@ const C = {
|
|
|
6649
6677
|
coreRosterSkillPoints: "核质经验",
|
|
6650
6678
|
coreRosterNext: "下一个解锁",
|
|
6651
6679
|
coreRosterNoNext: "尚未定义下一个解锁。",
|
|
6680
|
+
coreRosterScrollUp: "查看之前的晋升",
|
|
6681
|
+
coreRosterScrollDown: "查看更多晋升",
|
|
6652
6682
|
coreOriginStyleDescription: "抓住、拖拽并投掷敌人,将其变成弹药。",
|
|
6653
6683
|
coreSmasherTitle: "粉碎者",
|
|
6654
6684
|
coreSmasherDescription: "将抓取转化为粉碎一击的意识。",
|
|
@@ -7965,7 +7995,7 @@ const xa = {
|
|
|
7965
7995
|
};
|
|
7966
7996
|
for (const [r, e] of Object.entries(xa))
|
|
7967
7997
|
Object.assign(C[r], e);
|
|
7968
|
-
const
|
|
7998
|
+
const Sa = {
|
|
7969
7999
|
es: {
|
|
7970
8000
|
codexSporeLore: "Organismo tóxico que convierte el rechazo en una reunión útil.",
|
|
7971
8001
|
codexClusterLore: "Energía dopaminérgica contenida en una criatura que no sabe bajar el ritmo.",
|
|
@@ -8897,9 +8927,9 @@ const ba = {
|
|
|
8897
8927
|
codexHeavyEntryCaused6: "最后一次放电落下时,大寂静仍在寻找最弱者。它在一个已经无用的地方继续执行使命,并因此哭泣。"
|
|
8898
8928
|
}
|
|
8899
8929
|
};
|
|
8900
|
-
for (const [r, e] of Object.entries(
|
|
8930
|
+
for (const [r, e] of Object.entries(Sa))
|
|
8901
8931
|
Object.assign(C[r], e);
|
|
8902
|
-
const
|
|
8932
|
+
const ba = {
|
|
8903
8933
|
es: {
|
|
8904
8934
|
codexPiercerLore: "Criatura puntiaguda que atraviesa la materia siguiendo campos electromagnéticos.",
|
|
8905
8935
|
codexParasiteLore: "Criatura social que convierte cada encuentro en un abrazo gravitatorio."
|
|
@@ -8961,7 +8991,7 @@ const Sa = {
|
|
|
8961
8991
|
codexParasiteLore: "把每次相遇都变成引力拥抱的社交生物。"
|
|
8962
8992
|
}
|
|
8963
8993
|
};
|
|
8964
|
-
for (const [r, e] of Object.entries(
|
|
8994
|
+
for (const [r, e] of Object.entries(ba))
|
|
8965
8995
|
Object.assign(C[r], e);
|
|
8966
8996
|
const Ca = ["es", "en", "fr", "de", "it", "pt", "nl", "sv", "pl", "id", "tr", "ru", "ja", "ko", "zh"];
|
|
8967
8997
|
function re(r) {
|
|
@@ -9701,7 +9731,7 @@ class Ka {
|
|
|
9701
9731
|
}
|
|
9702
9732
|
renderSkinSelector(e, t) {
|
|
9703
9733
|
const a = t.id === "core-default" ? "DEFAULT" : t.id.replace("core-", "").replaceAll("-", " ").toUpperCase(), i = this.getSkinStatus(t);
|
|
9704
|
-
return `<button type="button" class="axon-core-skin-selector-entry ${this.getSkinStateClass(t)}" data-core-action="equip-skin" data-core-id="${e.id}" data-skin-id="${t.id}" ${this.getDisabledAttribute(t.unlocked)} aria-label="${a} · ${i}" aria-pressed="${t.selected}"><span class="axon-core-skin-portrait"><canvas class="axon-core-skin-miniature" width="120" height="120" data-skin-preview-id="${t.id}" data-skin-preview-silhouette="${t.unlocked ? "false" : "true"}" aria-hidden="true"></canvas></span
|
|
9734
|
+
return `<button type="button" class="axon-core-skin-selector-entry ${this.getSkinStateClass(t)}" data-core-action="equip-skin" data-core-id="${e.id}" data-skin-id="${t.id}" ${this.getDisabledAttribute(t.unlocked)} aria-label="${a} · ${i}" aria-pressed="${t.selected}"><span class="axon-core-skin-portrait"><canvas class="axon-core-skin-miniature" width="120" height="120" data-skin-preview-id="${t.id}" data-skin-preview-silhouette="${t.unlocked ? "false" : "true"}" aria-hidden="true"></canvas></span></button>`;
|
|
9705
9735
|
}
|
|
9706
9736
|
getSkinStatus(e) {
|
|
9707
9737
|
return e.selected ? this.i18n.translate("coreRosterSelected") : e.unlocked ? this.i18n.translate("coreRosterSelect") : this.i18n.translate("coreRosterLocked");
|
|
@@ -9712,9 +9742,6 @@ class Ka {
|
|
|
9712
9742
|
getDisabledAttribute(e) {
|
|
9713
9743
|
return e ? "" : "disabled";
|
|
9714
9744
|
}
|
|
9715
|
-
renderSelectionMark() {
|
|
9716
|
-
return '<svg class="axon-core-skin-selected-mark" viewBox="0 0 24 24" aria-hidden="true"><path d="m12 3 2.1 6.1L20 12l-5.9 2.1L12 21l-2.1-6.9L4 12l5.9-2.9L12 3Z"/></svg>';
|
|
9717
|
-
}
|
|
9718
9745
|
renderOrganicGrowthIcon() {
|
|
9719
9746
|
return '<svg viewBox="0 0 44 44" role="img" aria-hidden="true"><circle cx="22" cy="22" r="3.2"/><ellipse cx="22" cy="22" rx="17" ry="7"/><ellipse cx="22" cy="22" rx="17" ry="7" transform="rotate(60 22 22)"/><ellipse cx="22" cy="22" rx="17" ry="7" transform="rotate(-60 22 22)"/><circle class="axon-atom-electron" cx="39" cy="22" r="2.3"/><circle class="axon-atom-electron" cx="13.5" cy="7.3" r="2.3"/><circle class="axon-atom-electron" cx="13.5" cy="36.7" r="2.3"/></svg>';
|
|
9720
9747
|
}
|
|
@@ -9739,7 +9766,10 @@ class Ka {
|
|
|
9739
9766
|
}
|
|
9740
9767
|
renderSkillTree(e) {
|
|
9741
9768
|
const t = this.getWisdomProgress(e), a = e.wisdomTrack.map((i, o) => this.renderElevationRow(i, o, e.profile.wisdomLevel, t)).join("");
|
|
9742
|
-
return `<div class="axon-core-tree-layout"><section class="axon-core-elevation-ledger"><header class="axon-core-elevation-ledger-header"><div><span>${this.i18n.translate("coreRosterWisdom")}</span><strong>${e.profile.wisdomLevel}/${e.wisdomTrack.length}</strong></div><div class="axon-core-elevation-legend"><span class="is-complete">${this.i18n.translate("coreRosterCurrent")}</span><span class="is-next">${this.i18n.translate("coreRosterNext")}</span><span class="is-locked">${this.i18n.translate("coreRosterLocked")}</span></div></header><div class="axon-core-elevation-list">${a}</div></section></div>`;
|
|
9769
|
+
return `<div class="axon-core-tree-layout"><section class="axon-core-elevation-ledger"><header class="axon-core-elevation-ledger-header"><div><span>${this.i18n.translate("coreRosterWisdom")}</span><strong>${e.profile.wisdomLevel}/${e.wisdomTrack.length}</strong></div><div class="axon-core-elevation-legend"><span class="is-complete">${this.i18n.translate("coreRosterCurrent")}</span><span class="is-next">${this.i18n.translate("coreRosterNext")}</span><span class="is-locked">${this.i18n.translate("coreRosterLocked")}</span></div></header><div class="axon-core-elevation-list-shell"><button type="button" class="axon-core-elevation-scroll-button axon-core-elevation-scroll-up" data-elevation-scroll="up" aria-label="${this.i18n.translate("coreRosterScrollUp")}" hidden>${this.renderScrollArrow("up")}</button><div class="axon-core-elevation-list">${a}</div><button type="button" class="axon-core-elevation-scroll-button axon-core-elevation-scroll-down" data-elevation-scroll="down" aria-label="${this.i18n.translate("coreRosterScrollDown")}" hidden>${this.renderScrollArrow("down")}</button></div></section></div>`;
|
|
9770
|
+
}
|
|
9771
|
+
renderScrollArrow(e) {
|
|
9772
|
+
return `<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m5 9 7 7 7-7" transform="${e === "up" ? "rotate(180 12 12)" : ""}"/></svg>`;
|
|
9743
9773
|
}
|
|
9744
9774
|
renderElevationRow(e, t, a, i) {
|
|
9745
9775
|
const o = this.getElevationRowState(t, a), n = this.getElevationRowStateLabel(o), s = o === "next" ? i : 0;
|
|
@@ -9810,7 +9840,9 @@ class Fa {
|
|
|
9810
9840
|
}
|
|
9811
9841
|
render() {
|
|
9812
9842
|
const e = this.roster.getSnapshots(), t = this.previewCoreId ? this.roster.getSnapshot(this.previewCoreId) : this.roster.getSelectedCore();
|
|
9813
|
-
this.stopPreview()
|
|
9843
|
+
this.stopPreview();
|
|
9844
|
+
const a = this.view === "elevations";
|
|
9845
|
+
this.container.classList.toggle("axon-core-roster-elevations-view", a), this.container.innerHTML = this.view === "elevations" ? this.renderElevationsMarkup(t) : this.renderMarkup(e, t), this.bindEvents(), this.isOpen && this.startPreview();
|
|
9814
9846
|
}
|
|
9815
9847
|
renderMarkup(e, t) {
|
|
9816
9848
|
return `<div class="axon-core-roster-shell axon-core-roster-immersive-shell axon-genetic-memory-shell">${this.renderHeader()}<p class="axon-core-roster-hint">${this.i18n.translate("coreRosterHint")}</p><div class="axon-core-roster-stage"><nav class="axon-core-roster-selector" aria-label="${this.i18n.translate("coreRosterTitle")}"><div class="axon-core-selector-heading"><span>${this.i18n.translate("coreRosterCombatProfile")}</span><small>${this.i18n.translate("coreRosterSelected")}</small></div><div class="axon-core-selector-list">${e.map((a, i) => this.renderer.renderSelector(a, i)).join("")}</div></nav><main class="axon-core-showcase" data-accent="${t.accent}">${this.renderer.renderShowcase(t)}</main></div></div>`;
|
|
@@ -9824,7 +9856,28 @@ class Fa {
|
|
|
9824
9856
|
bindEvents() {
|
|
9825
9857
|
this.container.querySelector("#axon-core-roster-close")?.addEventListener("click", this.onClose), this.container.querySelectorAll("[data-core-action]").forEach((e) => {
|
|
9826
9858
|
e.addEventListener("click", () => this.handleCoreAction(e));
|
|
9827
|
-
});
|
|
9859
|
+
}), this.bindElevationScrollControls();
|
|
9860
|
+
}
|
|
9861
|
+
bindElevationScrollControls() {
|
|
9862
|
+
const e = this.container.querySelector(".axon-core-elevation-list");
|
|
9863
|
+
e && (this.container.querySelectorAll("[data-elevation-scroll]").forEach((t) => {
|
|
9864
|
+
t.addEventListener("click", () => this.scrollElevations(e, t.dataset.elevationScroll === "up" ? -1 : 1));
|
|
9865
|
+
}), e.addEventListener("scroll", () => this.updateElevationScrollControls(e)), this.focusCurrentElevation(e), this.updateElevationScrollControls(e));
|
|
9866
|
+
}
|
|
9867
|
+
focusCurrentElevation(e) {
|
|
9868
|
+
const t = [...e.querySelectorAll(".axon-core-elevation-row")], a = e.querySelector(".axon-core-elevation-next") ?? t[t.length - 1];
|
|
9869
|
+
if (!a) return;
|
|
9870
|
+
const i = a.offsetTop - Math.max(0, (e.clientHeight - a.offsetHeight) / 2);
|
|
9871
|
+
e.scrollTop = Math.max(0, i);
|
|
9872
|
+
}
|
|
9873
|
+
scrollElevations(e, t) {
|
|
9874
|
+
e.scrollBy({ top: t * Math.max(120, e.clientHeight * 0.72), behavior: "smooth" });
|
|
9875
|
+
}
|
|
9876
|
+
updateElevationScrollControls(e) {
|
|
9877
|
+
const t = [...this.container.querySelectorAll("[data-elevation-scroll]")], a = t.find((n) => n.dataset.elevationScroll === "up"), i = t.find((n) => n.dataset.elevationScroll === "down");
|
|
9878
|
+
if (!a || !i) return;
|
|
9879
|
+
const o = e.scrollHeight > e.clientHeight + 2;
|
|
9880
|
+
a.hidden = !o, i.hidden = !o, a.disabled = e.scrollTop <= 2, i.disabled = e.scrollTop + e.clientHeight >= e.scrollHeight - 2;
|
|
9828
9881
|
}
|
|
9829
9882
|
handleCoreAction(e) {
|
|
9830
9883
|
const t = e.dataset.coreAction;
|
|
@@ -10179,7 +10232,7 @@ class Va {
|
|
|
10179
10232
|
return `
|
|
10180
10233
|
<div class="axon-title-halo">
|
|
10181
10234
|
<h1 class="axon-title">${this.i18n.translate("title")}</h1>
|
|
10182
|
-
<p class="axon-version-mark">v0.
|
|
10235
|
+
<p class="axon-version-mark">v0.39.0</p>
|
|
10183
10236
|
<button id="axon-start-btn" class="axon-start-button">${this.i18n.translate("startButton")}</button>
|
|
10184
10237
|
${this.renderSecondaryActions()}
|
|
10185
10238
|
</div>
|
|
@@ -10513,11 +10566,11 @@ class L {
|
|
|
10513
10566
|
this.accentColor = null, this.eyeProfile = "none", this.visualProfile = "default", this.variantState = {}, this.variantTrail = [], this.strategy = null;
|
|
10514
10567
|
}
|
|
10515
10568
|
}
|
|
10516
|
-
const
|
|
10569
|
+
const S = (r, e, t) => r?.[e] ?? t, Ee = (r, e) => r?.[e] ?? null, Ja = (r, e) => ({
|
|
10517
10570
|
...r.behavior,
|
|
10518
10571
|
...e?.behaviorOverrides ?? {}
|
|
10519
10572
|
}), Xa = (r, e) => e.synergyKey ?? e.behavior.synergyKey?.(r) ?? e.id, Qa = (r) => r.initialRotation === "random" ? Math.random() * Math.PI * 2 : 0, ei = (r, e) => {
|
|
10520
|
-
const t =
|
|
10573
|
+
const t = S(e, "canBeManipulatedByCore", !0);
|
|
10521
10574
|
return {
|
|
10522
10575
|
variantId: Ee(e, "id"),
|
|
10523
10576
|
variantRendererId: Ee(e, "rendererId"),
|
|
@@ -10525,15 +10578,15 @@ const b = (r, e, t) => r?.[e] ?? t, Ee = (r, e) => r?.[e] ?? null, Ja = (r, e) =
|
|
|
10525
10578
|
isGrabbed: !1,
|
|
10526
10579
|
isThrown: !1,
|
|
10527
10580
|
canBeManipulatedByCore: t,
|
|
10528
|
-
canBeDamagedByCore:
|
|
10529
|
-
canBeKilledByCoreRepelWave:
|
|
10581
|
+
canBeDamagedByCore: S(e, "canBeDamagedByCore", !0),
|
|
10582
|
+
canBeKilledByCoreRepelWave: S(e, "canBeKilledByCoreRepelWave", !1),
|
|
10530
10583
|
isGrabbable: !!r.canBeGrabbed && t,
|
|
10531
|
-
variantPulseInterval:
|
|
10584
|
+
variantPulseInterval: S(e, "pulseInterval", 0),
|
|
10532
10585
|
variantPulseTimer: 0,
|
|
10533
|
-
blocksFrontImpacts:
|
|
10534
|
-
frontCoverageArc:
|
|
10535
|
-
frontCoverageRadiusMultiplier:
|
|
10536
|
-
visualProfile:
|
|
10586
|
+
blocksFrontImpacts: S(e, "blocksFrontImpacts", !1),
|
|
10587
|
+
frontCoverageArc: S(e, "frontCoverageArc", 0),
|
|
10588
|
+
frontCoverageRadiusMultiplier: S(e, "frontCoverageRadiusMultiplier", 1),
|
|
10589
|
+
visualProfile: S(e, "visualProfile", "default"),
|
|
10537
10590
|
variantState: {},
|
|
10538
10591
|
variantTrail: []
|
|
10539
10592
|
};
|
|
@@ -10560,7 +10613,7 @@ class ti {
|
|
|
10560
10613
|
Object.assign(e, ei(t, a));
|
|
10561
10614
|
}
|
|
10562
10615
|
applyDefinition(e, t, a) {
|
|
10563
|
-
e.radius = t.radius, e.hitRadiusPadding = t.hitRadiusPadding ?? 0.2, e.color =
|
|
10616
|
+
e.radius = t.radius, e.hitRadiusPadding = t.hitRadiusPadding ?? 0.2, e.color = S(a, "color", t.color), e.accentColor = Ee(a, "accentColor"), e.eyeProfile = S(a, "eyeProfile", t.eyeProfile), e.strategy = t.impactStrategyFactory?.() ?? null, e.behavior = Ja(t, a), e.synergyKey = Xa(e, t), e.maxSpeed = t.maxSpeed * S(a, "maxSpeedMultiplier", 1), e.rotation = Qa(t);
|
|
10564
10617
|
}
|
|
10565
10618
|
applyMotion(e, t, a, i) {
|
|
10566
10619
|
e.position = { ...t };
|
|
@@ -11079,7 +11132,7 @@ const ii = (r) => ({
|
|
|
11079
11132
|
const e = r.getConfig().cluster;
|
|
11080
11133
|
r.updateConfig({ cluster: { ...e, hasHoming: !0 } });
|
|
11081
11134
|
}
|
|
11082
|
-
}),
|
|
11135
|
+
}), Si = (r) => ({
|
|
11083
11136
|
id: "piercer_aoe",
|
|
11084
11137
|
titleKey: "pu_piercer_aoe_title",
|
|
11085
11138
|
descKey: "pu_piercer_aoe_desc",
|
|
@@ -11093,7 +11146,7 @@ const ii = (r) => ({
|
|
|
11093
11146
|
const e = r.getConfig().piercer;
|
|
11094
11147
|
r.updateConfig({ piercer: { ...e, terminalAoERadius: (e.terminalAoERadius || 0) + 160 } });
|
|
11095
11148
|
}
|
|
11096
|
-
}),
|
|
11149
|
+
}), bi = (r) => ({
|
|
11097
11150
|
id: "piercer_homing",
|
|
11098
11151
|
requiredUnlockId: "piercer_homing",
|
|
11099
11152
|
requiredEnemyId: "piercer",
|
|
@@ -11131,8 +11184,8 @@ const ii = (r) => ({
|
|
|
11131
11184
|
vi(r),
|
|
11132
11185
|
fi(r),
|
|
11133
11186
|
xi(r),
|
|
11134
|
-
bi(r),
|
|
11135
11187
|
Si(r),
|
|
11188
|
+
bi(r),
|
|
11136
11189
|
Ci(r)
|
|
11137
11190
|
], Ii = (r) => [
|
|
11138
11191
|
...ui(r),
|
|
@@ -12399,17 +12452,17 @@ function xo(r) {
|
|
|
12399
12452
|
const e = /* @__PURE__ */ new Set();
|
|
12400
12453
|
for (const [t, a] of Object.entries(r))
|
|
12401
12454
|
for (const i of a)
|
|
12402
|
-
|
|
12455
|
+
So(i.id, t, i.condition.target, e);
|
|
12403
12456
|
return r;
|
|
12404
12457
|
}
|
|
12405
|
-
function
|
|
12458
|
+
function So(r, e, t, a) {
|
|
12406
12459
|
const i = `${e}:${r}`;
|
|
12407
12460
|
if (!r || a.has(i)) throw new Error(`Duplicate or empty ${e} objective: ${r}`);
|
|
12408
12461
|
if (t <= 0 || !Number.isFinite(t))
|
|
12409
12462
|
throw new Error(`Invalid ${e} objective target: ${r}`);
|
|
12410
12463
|
a.add(i);
|
|
12411
12464
|
}
|
|
12412
|
-
function
|
|
12465
|
+
function bo(r, e) {
|
|
12413
12466
|
const t = Co(e);
|
|
12414
12467
|
if (!r) return t;
|
|
12415
12468
|
try {
|
|
@@ -12494,7 +12547,7 @@ function Z(r) {
|
|
|
12494
12547
|
function ue(r) {
|
|
12495
12548
|
return Object.fromEntries(r);
|
|
12496
12549
|
}
|
|
12497
|
-
const wo = 2, qe = 1, ko = 480 * 60 * 1e3,
|
|
12550
|
+
const wo = 2, qe = 1, ko = 480 * 60 * 1e3, b = () => ({
|
|
12498
12551
|
progress: 0,
|
|
12499
12552
|
completed: !1,
|
|
12500
12553
|
claimed: !1,
|
|
@@ -12547,7 +12600,7 @@ class Oo {
|
|
|
12547
12600
|
return (e ? this.getDefinitions(e) : [...this.definitions.missions, ...this.definitions.challenges, ...this.definitions.achievements]).filter((a) => e !== "mission" || this.activeMissionIds.includes(a.id)).map((a) => this.getSnapshot(a.kind, a.id));
|
|
12548
12601
|
}
|
|
12549
12602
|
getSnapshot(e, t) {
|
|
12550
|
-
const a = this.getDefinition(e, t), i = this.progress.get(e).get(t) ??
|
|
12603
|
+
const a = this.getDefinition(e, t), i = this.progress.get(e).get(t) ?? b(), o = {
|
|
12551
12604
|
...i,
|
|
12552
12605
|
kind: e,
|
|
12553
12606
|
id: t,
|
|
@@ -12560,7 +12613,7 @@ class Oo {
|
|
|
12560
12613
|
return n.rules !== void 0 && (o.rules = n.rules), n.preset !== void 0 && (o.preset = n.preset), n.requiredCoreId !== void 0 && (o.requiredCoreId = n.requiredCoreId), n.providerId !== void 0 && (o.providerId = n.providerId), o;
|
|
12561
12614
|
}
|
|
12562
12615
|
installMission(e, t = Date.now()) {
|
|
12563
|
-
this.missionDefinitions.set(e.id, e), this.progress.get("mission").set(e.id,
|
|
12616
|
+
this.missionDefinitions.set(e.id, e), this.progress.get("mission").set(e.id, b()), this.activeMissionIds = [e.id], this.missionAssignedAt = t, this.persist(), this.notify({ kind: "mission", id: e.id, type: "rotated" });
|
|
12564
12617
|
}
|
|
12565
12618
|
canRerollMission(e = Date.now()) {
|
|
12566
12619
|
return !!(this.getSnapshots("mission")[0] && (this.missionRerolls > 0 || e - this.missionAssignedAt >= ko));
|
|
@@ -12583,13 +12636,13 @@ class Oo {
|
|
|
12583
12636
|
}
|
|
12584
12637
|
startChallenge(e, t) {
|
|
12585
12638
|
if (!this.canStartChallenge(e, t)) return !1;
|
|
12586
|
-
const a = this.progress.get("challenge").get(e) ??
|
|
12587
|
-
return this.progress.get("challenge").set(e, { ...
|
|
12639
|
+
const a = this.progress.get("challenge").get(e) ?? b();
|
|
12640
|
+
return this.progress.get("challenge").set(e, { ...b(), claims: a.claims }), this.activeChallengeId = e, this.persist(), this.notify({ kind: "challenge", id: e, type: "challenge-started" }), !0;
|
|
12588
12641
|
}
|
|
12589
12642
|
cancelActiveChallenge() {
|
|
12590
12643
|
if (!this.activeChallengeId) return;
|
|
12591
|
-
const e = this.activeChallengeId, t = this.progress.get("challenge").get(e) ??
|
|
12592
|
-
t.completed || (this.progress.get("challenge").set(e, { ...
|
|
12644
|
+
const e = this.activeChallengeId, t = this.progress.get("challenge").get(e) ?? b();
|
|
12645
|
+
t.completed || (this.progress.get("challenge").set(e, { ...b(), claims: t.claims }), this.notify({ kind: "challenge", id: e, type: "challenge-failed" })), this.activeChallengeId = null, this.persist();
|
|
12593
12646
|
}
|
|
12594
12647
|
getDefinitions(e) {
|
|
12595
12648
|
return Mo(this.definitions, this.missionDefinitions, e);
|
|
@@ -12626,10 +12679,10 @@ class Oo {
|
|
|
12626
12679
|
hydrateDefaults() {
|
|
12627
12680
|
for (const e of ["mission", "challenge", "achievement"])
|
|
12628
12681
|
for (const t of this.getDefinitions(e))
|
|
12629
|
-
this.progress.get(e).set(t.id,
|
|
12682
|
+
this.progress.get(e).set(t.id, b());
|
|
12630
12683
|
}
|
|
12631
12684
|
load() {
|
|
12632
|
-
const e =
|
|
12685
|
+
const e = bo(this.storage, this.activeMissionIds);
|
|
12633
12686
|
e.activeMissionDefinition && this.registerStoredMission(e.activeMissionDefinition), this.loadProgress("mission", e.missions), this.loadProgress("challenge", e.challenges), this.loadProgress("achievement", e.achievements), this.activeMissionIds = this.getKnownMissionIds(e.activeMissionIds), this.missionAssignedAt = e.missionAssignedAt ?? Date.now(), this.missionRerolls = typeof e.missionRerolls == "number" ? Math.max(0, Math.floor(e.missionRerolls)) : 1, this.activeChallengeId = null, this.unlockedRewardIds = new Set(e.unlockedRewardIds), e.version !== wo && this.persist();
|
|
12634
12687
|
}
|
|
12635
12688
|
getKnownMissionIds(e) {
|
|
@@ -12637,7 +12690,7 @@ class Oo {
|
|
|
12637
12690
|
return a.length > 0 ? a : this.definitions.missions.slice(0, qe).map((i) => i.id);
|
|
12638
12691
|
}
|
|
12639
12692
|
registerStoredMission(e) {
|
|
12640
|
-
this.missionDefinitions.set(e.id, e), this.progress.get("mission").set(e.id,
|
|
12693
|
+
this.missionDefinitions.set(e.id, e), this.progress.get("mission").set(e.id, b());
|
|
12641
12694
|
}
|
|
12642
12695
|
loadProgress(e, t) {
|
|
12643
12696
|
const a = this.progress.get(e);
|
|
@@ -12676,14 +12729,14 @@ class jo extends Oo {
|
|
|
12676
12729
|
}
|
|
12677
12730
|
claim(e, t) {
|
|
12678
12731
|
if (e !== "mission") return !1;
|
|
12679
|
-
const a = this.getDefinition(e, t), i = this.progress.get(e).get(t) ??
|
|
12732
|
+
const a = this.getDefinition(e, t), i = this.progress.get(e).get(t) ?? b();
|
|
12680
12733
|
if (!i.completed || i.claimed) return !1;
|
|
12681
12734
|
for (const n of a.rewards) this.applyReward(n);
|
|
12682
12735
|
const o = i.claims + 1;
|
|
12683
12736
|
return this.progress.get(e).set(t, No(e, a, i, o)), this.persist(), this.notify({ kind: e, id: t, type: "claimed" }), !0;
|
|
12684
12737
|
}
|
|
12685
12738
|
debugComplete(e, t) {
|
|
12686
|
-
const a = this.getDefinition(e, t), i = this.progress.get(e), o = i.get(t) ??
|
|
12739
|
+
const a = this.getDefinition(e, t), i = this.progress.get(e), o = i.get(t) ?? b();
|
|
12687
12740
|
return i.set(t, {
|
|
12688
12741
|
...o,
|
|
12689
12742
|
progress: a.condition.target,
|
|
@@ -12698,7 +12751,7 @@ class jo extends Oo {
|
|
|
12698
12751
|
for (const i of t) this.updateDefinition(i, a);
|
|
12699
12752
|
}
|
|
12700
12753
|
updateDefinition(e, t) {
|
|
12701
|
-
const a = this.progress.get(e.kind), i = a.get(e.id) ??
|
|
12754
|
+
const a = this.progress.get(e.kind), i = a.get(e.id) ?? b();
|
|
12702
12755
|
if (i.completed || !_o(e.condition, t)) return;
|
|
12703
12756
|
const o = Math.max(1, Math.floor(t.amount ?? 1)), n = Lo(e.condition.event, i.progress, o), s = n >= e.condition.target;
|
|
12704
12757
|
a.set(e.id, {
|
|
@@ -13643,7 +13696,7 @@ const rn = (r, e, t) => e !== r && !t.includes(e) && e.active && !e.isGrabbed &&
|
|
|
13643
13696
|
const t = e.right - e.left, a = e.bottom - e.top, i = gt(e);
|
|
13644
13697
|
let o = Me(r) * i;
|
|
13645
13698
|
return o <= t ? { x: e.left + o, y: e.top } : (o -= t, o <= a ? { x: e.right, y: e.top + o } : (o -= a, o <= t ? { x: e.right - o, y: e.bottom } : (o -= t, { x: e.left, y: e.bottom - o })));
|
|
13646
|
-
},
|
|
13699
|
+
}, Sn = (r, e) => {
|
|
13647
13700
|
const t = e.right - e.left, a = e.bottom - e.top;
|
|
13648
13701
|
return [
|
|
13649
13702
|
{
|
|
@@ -13663,14 +13716,14 @@ const rn = (r, e, t) => e !== r && !t.includes(e) && e.active && !e.isGrabbed &&
|
|
|
13663
13716
|
progress: 0.75 + (1 - Math.max(0, Math.min(1, (r.y - e.top) / a))) * 0.25
|
|
13664
13717
|
}
|
|
13665
13718
|
].reduce((o, n) => n.distance < o.distance ? n : o).progress;
|
|
13666
|
-
},
|
|
13719
|
+
}, bn = (r, e) => {
|
|
13667
13720
|
const t = Me(r);
|
|
13668
13721
|
return t < 0.25 ? 0 : t < 0.5 ? Math.PI / 2 : t < 0.75 ? Math.PI : -Math.PI / 2;
|
|
13669
13722
|
}, Cn = (r, e) => {
|
|
13670
13723
|
const t = r.variantState;
|
|
13671
13724
|
if (t.initialized === 1) return;
|
|
13672
13725
|
const a = mt(r, e.width, e.height);
|
|
13673
|
-
t.initialized = 1, t.phase = 0, t.progress =
|
|
13726
|
+
t.initialized = 1, t.phase = 0, t.progress = Sn(r.position, a), t.direction = Math.random() < 0.5 ? 1 : -1, t.remaining = 0.25, t.perimeterSpeed = 520, t.chargeSpeed = 560;
|
|
13674
13727
|
}, An = (r, e) => {
|
|
13675
13728
|
const t = r.variantState;
|
|
13676
13729
|
t.phase = 1;
|
|
@@ -13683,7 +13736,7 @@ const rn = (r, e, t) => e !== r && !t.includes(e) && e.active && !e.isGrabbed &&
|
|
|
13683
13736
|
return;
|
|
13684
13737
|
}
|
|
13685
13738
|
r.position = xn(t.progress, a), r.velocity = { x: 0, y: 0 };
|
|
13686
|
-
const o =
|
|
13739
|
+
const o = bn(t.progress);
|
|
13687
13740
|
r.rotation = (t.direction ?? 1) > 0 ? o : o + Math.PI;
|
|
13688
13741
|
}, Rn = (r, e) => {
|
|
13689
13742
|
r.isGrabbed || r.isThrown || (Cn(r, e), r.variantState.phase === 0 && In(r, e));
|
|
@@ -14077,7 +14130,7 @@ const rn = (r, e, t) => e !== r && !t.includes(e) && e.active && !e.isGrabbed &&
|
|
|
14077
14130
|
canBeDamagedByCore: !0,
|
|
14078
14131
|
canBeKilledByCoreRepelWave: !1
|
|
14079
14132
|
}
|
|
14080
|
-
],
|
|
14133
|
+
], Se = new Fo({
|
|
14081
14134
|
enemies: Kn,
|
|
14082
14135
|
variants: [...Wn, ...qn, ...$n, ...Yn, ...Fn, ...Zn],
|
|
14083
14136
|
areas: [
|
|
@@ -14156,7 +14209,7 @@ const rn = (r, e, t) => e !== r && !t.includes(e) && e.active && !e.isGrabbed &&
|
|
|
14156
14209
|
],
|
|
14157
14210
|
tutorials: Gn
|
|
14158
14211
|
});
|
|
14159
|
-
|
|
14212
|
+
Se.validate();
|
|
14160
14213
|
class Jn {
|
|
14161
14214
|
canvas;
|
|
14162
14215
|
context;
|
|
@@ -14642,19 +14695,19 @@ class vs {
|
|
|
14642
14695
|
}
|
|
14643
14696
|
function fs(r, e) {
|
|
14644
14697
|
const t = new L("mission-specimen");
|
|
14645
|
-
return xs(t, r),
|
|
14698
|
+
return xs(t, r), Ss(t, r, e), t.behavior = bs(r.behavior, e?.behaviorOverrides), t.position = { x: 0, y: 0 }, t.active = !0, t;
|
|
14646
14699
|
}
|
|
14647
14700
|
function xs(r, e) {
|
|
14648
14701
|
r.type = e.id, r.radius = e.radius;
|
|
14649
14702
|
}
|
|
14650
|
-
function
|
|
14703
|
+
function Ss(r, e, t) {
|
|
14651
14704
|
if (t) {
|
|
14652
14705
|
r.variantId = t.id, r.variantRendererId = t.rendererId ?? null, r.color = t.color ?? e.color, r.accentColor = t.accentColor ?? null, r.eyeProfile = t.eyeProfile ?? e.eyeProfile, r.visualProfile = t.visualProfile ?? "default";
|
|
14653
14706
|
return;
|
|
14654
14707
|
}
|
|
14655
14708
|
r.variantId = null, r.variantRendererId = null, r.color = e.color, r.accentColor = null, r.eyeProfile = e.eyeProfile, r.visualProfile = "default";
|
|
14656
14709
|
}
|
|
14657
|
-
function
|
|
14710
|
+
function bs(r, e) {
|
|
14658
14711
|
return { ...r, ...e ?? {} };
|
|
14659
14712
|
}
|
|
14660
14713
|
function Cs(r, e) {
|
|
@@ -15384,7 +15437,7 @@ function Ys(r, e) {
|
|
|
15384
15437
|
}
|
|
15385
15438
|
function Zs(r) {
|
|
15386
15439
|
const e = Ti();
|
|
15387
|
-
r.configManager = new N(), r.content =
|
|
15440
|
+
r.configManager = new N(), r.content = Se, r.corePreview = new Je(0, 0, r.configManager.getConfig().core), r.powerUpRegistry = new ai(r.configManager, Ii), r.geneticMemory = new W(Ri, new T(e)), r.coreRoster = new Zi(Di, r.geneticMemory, e), r.codex = new oo(po, e), r.missionGenerator = new vo(r.codex), r.bossCodex = new F(fo, e), r.objectives = new jo(Bo, e, (t) => r.applyObjectiveReward(t)), r.areaDirector = new Ho(Se), r.bossEncounter = new Ko(ht());
|
|
15388
15441
|
}
|
|
15389
15442
|
function Js(r, e) {
|
|
15390
15443
|
r.container = e.root, r.container.classList.add("axon-game-root"), r.i18n = new Ya(e.language), r.themeManager = new pr(e.theme, r.container), r.platform = e.platform || new Za(), r.canvas = document.createElement("canvas"), r.canvas.className = "axon-canvas", r.container.appendChild(r.canvas), r.resizeCanvas(), window.addEventListener("resize", () => r.resizeCanvas());
|
|
@@ -15783,16 +15836,16 @@ function fl(r, e) {
|
|
|
15783
15836
|
t.effectId && vl[t.effectId](e, t);
|
|
15784
15837
|
}
|
|
15785
15838
|
function xl(r) {
|
|
15786
|
-
|
|
15839
|
+
Sl(r), bl(r);
|
|
15787
15840
|
const e = Cl(r);
|
|
15788
15841
|
wl(r, e);
|
|
15789
15842
|
}
|
|
15790
|
-
function
|
|
15843
|
+
function Sl(r) {
|
|
15791
15844
|
r.eventBus.on("onCoreDamaged", () => {
|
|
15792
15845
|
r.settingsModal.isHapticsEnabled() && r.platform.haptics.notification("error");
|
|
15793
15846
|
});
|
|
15794
15847
|
}
|
|
15795
|
-
function
|
|
15848
|
+
function bl(r) {
|
|
15796
15849
|
r.eventBus.on("onGameOver", () => {
|
|
15797
15850
|
if (!r.isDeathSequenceActive) {
|
|
15798
15851
|
if (r.isChallengeRun()) {
|
|
@@ -16317,12 +16370,12 @@ function fc(r, e) {
|
|
|
16317
16370
|
}
|
|
16318
16371
|
function xc(r) {
|
|
16319
16372
|
for (const e of r.enemies)
|
|
16320
|
-
|
|
16373
|
+
Sc(r, e) && Ac(r, e);
|
|
16321
16374
|
}
|
|
16322
|
-
function
|
|
16323
|
-
return
|
|
16375
|
+
function Sc(r, e) {
|
|
16376
|
+
return bc(e) && Cc(r, e);
|
|
16324
16377
|
}
|
|
16325
|
-
function
|
|
16378
|
+
function bc(r) {
|
|
16326
16379
|
return r.active && r.bossLaunchPhase === "outbound" && !r.isGrabbed && !r.isThrown && !r.wasManipulated;
|
|
16327
16380
|
}
|
|
16328
16381
|
function Cc(r, e) {
|
|
@@ -16498,7 +16551,7 @@ const zc = {
|
|
|
16498
16551
|
yellowThreshold: 32,
|
|
16499
16552
|
redThreshold: 256
|
|
16500
16553
|
};
|
|
16501
|
-
class
|
|
16554
|
+
class be {
|
|
16502
16555
|
id;
|
|
16503
16556
|
position;
|
|
16504
16557
|
velocity;
|
|
@@ -16568,7 +16621,7 @@ class Se {
|
|
|
16568
16621
|
this.lifecycle.beginMerge(this, e);
|
|
16569
16622
|
}
|
|
16570
16623
|
}
|
|
16571
|
-
class
|
|
16624
|
+
class St {
|
|
16572
16625
|
id;
|
|
16573
16626
|
definition;
|
|
16574
16627
|
position = { x: 0, y: 0 };
|
|
@@ -16628,7 +16681,7 @@ function Gc(r, e) {
|
|
|
16628
16681
|
}
|
|
16629
16682
|
function Vc(r) {
|
|
16630
16683
|
const e = r.powerUpRegistry.getRandomOptions(3, r.geneticMemory, r.waveDirector.getAvailableEnemyIds(), r.coreRoster.getSelectedCoreId());
|
|
16631
|
-
return e.map((t, a) => new
|
|
16684
|
+
return e.map((t, a) => new St("orb_" + Date.now() + "_" + a, t, a * Math.PI * 2 / e.length));
|
|
16632
16685
|
}
|
|
16633
16686
|
function Wc(r) {
|
|
16634
16687
|
for (const e of r.enemies)
|
|
@@ -16637,7 +16690,7 @@ function Wc(r) {
|
|
|
16637
16690
|
enemyId: e.type,
|
|
16638
16691
|
...e.variantId ? { variantId: e.variantId } : {},
|
|
16639
16692
|
coreId: r.coreRoster.getSelectedCoreId()
|
|
16640
|
-
}), r.experienceOrbs.push(new
|
|
16693
|
+
}), r.experienceOrbs.push(new be(e.position, 1, r.configManager.getConfig().experience)), r.getEcosomaDropPolicy().shouldDrop(r.progressBar.getLevel()) && r.ecosomaOrbs.push(new ft(e.position)));
|
|
16641
16694
|
}
|
|
16642
16695
|
function qc(r, e) {
|
|
16643
16696
|
r.codex.recordSeen(e.type), e.variantId && r.isEnemyVisible(e) && r.codex.recordVariant(e.type, e.variantId);
|
|
@@ -16663,7 +16716,7 @@ class Ze {
|
|
|
16663
16716
|
}
|
|
16664
16717
|
function Zc(r, e) {
|
|
16665
16718
|
const t = r.configManager.getConfig();
|
|
16666
|
-
|
|
16719
|
+
be.attractNearby(r.experienceOrbs, t.experience, e), be.mergeNearby(r.experienceOrbs, t.experience.mergeDistance);
|
|
16667
16720
|
for (const a of r.experienceOrbs) Jc(r, a, e, t.magnet);
|
|
16668
16721
|
r.experienceOrbs = r.experienceOrbs.filter((a) => a.active);
|
|
16669
16722
|
}
|
|
@@ -16731,7 +16784,7 @@ function id(r) {
|
|
|
16731
16784
|
const e = r.powerUpRegistry.getRandomOptions(3, r.geneticMemory, r.waveDirector.getAvailableEnemyIds(), r.coreRoster.getSelectedCoreId());
|
|
16732
16785
|
r.orbitingOrbs = e.map((t, a) => {
|
|
16733
16786
|
const i = a * Math.PI * 2 / e.length;
|
|
16734
|
-
return new
|
|
16787
|
+
return new St(`orb_${Date.now()}_${a}`, t, i);
|
|
16735
16788
|
});
|
|
16736
16789
|
}
|
|
16737
16790
|
function od(r) {
|
package/dist/i18n/locales.d.ts
CHANGED
|
@@ -229,6 +229,8 @@ export interface Translations {
|
|
|
229
229
|
coreRosterSkillPoints: string;
|
|
230
230
|
coreRosterNext: string;
|
|
231
231
|
coreRosterNoNext: string;
|
|
232
|
+
coreRosterScrollUp: string;
|
|
233
|
+
coreRosterScrollDown: string;
|
|
232
234
|
coreOriginStyleDescription: string;
|
|
233
235
|
coreLauncherTitle: string;
|
|
234
236
|
coreLauncherDescription: string;
|