@rpg-engine/long-bow 0.8.197 → 0.8.199
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/components/Marketplace/GroupedRowContainer.d.ts +1 -0
- package/dist/components/Store/Store.d.ts +11 -1
- package/dist/components/Store/sections/StoreRedeemSection.d.ts +11 -0
- package/dist/index.d.ts +1 -0
- package/dist/long-bow.cjs.development.js +331 -95
- package/dist/long-bow.cjs.development.js.map +1 -1
- package/dist/long-bow.cjs.production.min.js +1 -1
- package/dist/long-bow.cjs.production.min.js.map +1 -1
- package/dist/long-bow.esm.js +332 -97
- package/dist/long-bow.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Marketplace/BuyOrderRows.tsx +1 -0
- package/src/components/Marketplace/BuyPanel.tsx +6 -3
- package/src/components/Marketplace/CharacterMarketplaceRows.tsx +2 -2
- package/src/components/Marketplace/GroupedRowContainer.tsx +9 -4
- package/src/components/Marketplace/ManagmentPanel.tsx +2 -2
- package/src/components/Marketplace/Marketplace.tsx +2 -2
- package/src/components/Marketplace/MarketplaceRows.tsx +3 -2
- package/src/components/Store/Store.tsx +27 -4
- package/src/components/Store/__test__/StoreRedeemSection.spec.tsx +232 -0
- package/src/components/Store/sections/StoreRedeemSection.tsx +258 -0
- package/src/constants/skillInfoData.ts +124 -60
- package/src/index.tsx +1 -0
- package/src/utils/__test__/atlasUtils.spec.ts +15 -0
- package/src/utils/atlasUtils.ts +59 -1
|
@@ -23,7 +23,7 @@ var lodash = require('lodash');
|
|
|
23
23
|
var mobxReactLite = require('mobx-react-lite');
|
|
24
24
|
var ai = require('react-icons/ai');
|
|
25
25
|
var reactColorful = require('react-colorful');
|
|
26
|
-
var
|
|
26
|
+
var DateTime = require('pixelarticons/react/DateTime');
|
|
27
27
|
var Settings2 = require('pixelarticons/react/Settings2');
|
|
28
28
|
var ShoppingBag = require('pixelarticons/react/ShoppingBag');
|
|
29
29
|
var ShoppingCart = require('pixelarticons/react/ShoppingCart');
|
|
@@ -35,10 +35,9 @@ var Search = require('pixelarticons/react/Search');
|
|
|
35
35
|
var Delete = require('pixelarticons/react/Delete');
|
|
36
36
|
require('rpgui/rpgui.css');
|
|
37
37
|
require('rpgui/rpgui.min.js');
|
|
38
|
-
var Coins = require('pixelarticons/react/Coins');
|
|
39
|
-
var Box = require('pixelarticons/react/Box');
|
|
40
38
|
var Crown = require('pixelarticons/react/Crown');
|
|
41
39
|
var Gift = require('pixelarticons/react/Gift');
|
|
40
|
+
var Package = require('pixelarticons/react/Package');
|
|
42
41
|
var capitalize = _interopDefault(require('lodash/capitalize'));
|
|
43
42
|
|
|
44
43
|
function _arrayLikeToArray(r, a) {
|
|
@@ -638,7 +637,9 @@ var ButtonContainer = /*#__PURE__*/styled__default.button.withConfig({
|
|
|
638
637
|
})(["height:45px;font-size:", ";"], uiFonts.size.small);
|
|
639
638
|
|
|
640
639
|
var NO_IMAGE_SPRITE_KEY = 'others/no-image.png';
|
|
640
|
+
var atlasSpriteAliases = /*#__PURE__*/new Map([['mysticstaff', 'staffs/mystic-lightning-staff.png'], ['silverarrow', 'ranged-weapons/silvermoon-arrow.png']]);
|
|
641
641
|
var atlasBaseNameLookupCache = /*#__PURE__*/new WeakMap();
|
|
642
|
+
var atlasNormalizedNameLookupCache = /*#__PURE__*/new WeakMap();
|
|
642
643
|
var getBaseName = function getBaseName(spriteKey) {
|
|
643
644
|
var normalizedKey = spriteKey.trim();
|
|
644
645
|
if (!normalizedKey) {
|
|
@@ -650,6 +651,13 @@ var getBaseName = function getBaseName(spriteKey) {
|
|
|
650
651
|
}
|
|
651
652
|
return fileName.replace(/\.png$/, '');
|
|
652
653
|
};
|
|
654
|
+
var normalizeBaseName = function normalizeBaseName(spriteKey) {
|
|
655
|
+
var baseName = getBaseName(spriteKey);
|
|
656
|
+
if (!baseName) {
|
|
657
|
+
return null;
|
|
658
|
+
}
|
|
659
|
+
return baseName.replace(/([a-z0-9])([A-Z])/g, '$1-$2').replace(/[^a-zA-Z0-9]+/g, '').toLowerCase();
|
|
660
|
+
};
|
|
653
661
|
var getAtlasBaseNameLookup = function getAtlasBaseNameLookup(atlasJSON) {
|
|
654
662
|
var _atlasJSON$frames;
|
|
655
663
|
if (!atlasJSON || typeof atlasJSON !== 'object') {
|
|
@@ -670,8 +678,28 @@ var getAtlasBaseNameLookup = function getAtlasBaseNameLookup(atlasJSON) {
|
|
|
670
678
|
atlasBaseNameLookupCache.set(atlasJSON, lookup);
|
|
671
679
|
return lookup;
|
|
672
680
|
};
|
|
681
|
+
var getAtlasNormalizedNameLookup = function getAtlasNormalizedNameLookup(atlasJSON) {
|
|
682
|
+
var _atlasJSON$frames2;
|
|
683
|
+
if (!atlasJSON || typeof atlasJSON !== 'object') {
|
|
684
|
+
return new Map();
|
|
685
|
+
}
|
|
686
|
+
var cachedLookup = atlasNormalizedNameLookupCache.get(atlasJSON);
|
|
687
|
+
if (cachedLookup) {
|
|
688
|
+
return cachedLookup;
|
|
689
|
+
}
|
|
690
|
+
var frames = (_atlasJSON$frames2 = atlasJSON == null ? void 0 : atlasJSON.frames) != null ? _atlasJSON$frames2 : {};
|
|
691
|
+
var lookup = new Map();
|
|
692
|
+
Object.keys(frames).forEach(function (frameKey) {
|
|
693
|
+
var normalizedBaseName = normalizeBaseName(frameKey);
|
|
694
|
+
if (normalizedBaseName && !lookup.has(normalizedBaseName)) {
|
|
695
|
+
lookup.set(normalizedBaseName, frameKey);
|
|
696
|
+
}
|
|
697
|
+
});
|
|
698
|
+
atlasNormalizedNameLookupCache.set(atlasJSON, lookup);
|
|
699
|
+
return lookup;
|
|
700
|
+
};
|
|
673
701
|
var resolveAtlasSpriteKey = function resolveAtlasSpriteKey(atlasJSON, spriteKey) {
|
|
674
|
-
var
|
|
702
|
+
var _getAtlasNormalizedNa;
|
|
675
703
|
if (!spriteKey) {
|
|
676
704
|
return null;
|
|
677
705
|
}
|
|
@@ -694,7 +722,19 @@ var resolveAtlasSpriteKey = function resolveAtlasSpriteKey(atlasJSON, spriteKey)
|
|
|
694
722
|
if (!baseName) {
|
|
695
723
|
return null;
|
|
696
724
|
}
|
|
697
|
-
|
|
725
|
+
var directBaseMatch = getAtlasBaseNameLookup(atlasJSON).get(baseName);
|
|
726
|
+
if (directBaseMatch) {
|
|
727
|
+
return directBaseMatch;
|
|
728
|
+
}
|
|
729
|
+
var normalizedBaseName = normalizeBaseName(normalizedKey);
|
|
730
|
+
if (!normalizedBaseName) {
|
|
731
|
+
return null;
|
|
732
|
+
}
|
|
733
|
+
var aliasedSpriteKey = atlasSpriteAliases.get(normalizedBaseName);
|
|
734
|
+
if (aliasedSpriteKey && frames[aliasedSpriteKey]) {
|
|
735
|
+
return aliasedSpriteKey;
|
|
736
|
+
}
|
|
737
|
+
return (_getAtlasNormalizedNa = getAtlasNormalizedNameLookup(atlasJSON).get(normalizedBaseName)) != null ? _getAtlasNormalizedNa : null;
|
|
698
738
|
};
|
|
699
739
|
|
|
700
740
|
var toUppercaseHexColor = function toUppercaseHexColor(color) {
|
|
@@ -45129,7 +45169,9 @@ var GroupedRowContainer = function GroupedRowContainer(_ref) {
|
|
|
45129
45169
|
var mainRow = _ref.mainRow,
|
|
45130
45170
|
subRows = _ref.subRows,
|
|
45131
45171
|
_ref$badgeLabel = _ref.badgeLabel,
|
|
45132
|
-
badgeLabel = _ref$badgeLabel === void 0 ? 'offers' : _ref$badgeLabel
|
|
45172
|
+
badgeLabel = _ref$badgeLabel === void 0 ? 'offers' : _ref$badgeLabel,
|
|
45173
|
+
_ref$metaRightInset = _ref.metaRightInset,
|
|
45174
|
+
metaRightInset = _ref$metaRightInset === void 0 ? 120 : _ref$metaRightInset;
|
|
45133
45175
|
var _useState = React.useState(false),
|
|
45134
45176
|
expanded = _useState[0],
|
|
45135
45177
|
setExpanded = _useState[1];
|
|
@@ -45142,7 +45184,9 @@ var GroupedRowContainer = function GroupedRowContainer(_ref) {
|
|
|
45142
45184
|
return !e;
|
|
45143
45185
|
});
|
|
45144
45186
|
} : undefined
|
|
45145
|
-
}, mainRow, hasMultiple && React__default.createElement(GroupMeta,
|
|
45187
|
+
}, mainRow, hasMultiple && React__default.createElement(GroupMeta, {
|
|
45188
|
+
"$rightInset": metaRightInset
|
|
45189
|
+
}, React__default.createElement(OfferBadge, null, totalCount, " ", badgeLabel), React__default.createElement(Chevron, {
|
|
45146
45190
|
"$expanded": expanded
|
|
45147
45191
|
}, "\u25B8"))), expanded && React__default.createElement(SubRows, null, subRows));
|
|
45148
45192
|
};
|
|
@@ -45160,7 +45204,10 @@ var GroupHeader = /*#__PURE__*/styled__default.div.withConfig({
|
|
|
45160
45204
|
var GroupMeta = /*#__PURE__*/styled__default.div.withConfig({
|
|
45161
45205
|
displayName: "GroupedRowContainer__GroupMeta",
|
|
45162
45206
|
componentId: "sc-12q03tq-2"
|
|
45163
|
-
})(["position:absolute;right:
|
|
45207
|
+
})(["position:absolute;right:", ";top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:4px;padding-left:10px;background:linear-gradient(to left,rgba(25,23,23,0.85),rgba(25,23,23,0));pointer-events:none;z-index:1;"], function (_ref3) {
|
|
45208
|
+
var $rightInset = _ref3.$rightInset;
|
|
45209
|
+
return $rightInset + "px";
|
|
45210
|
+
});
|
|
45164
45211
|
var OfferBadge = /*#__PURE__*/styled__default.span.withConfig({
|
|
45165
45212
|
displayName: "GroupedRowContainer__OfferBadge",
|
|
45166
45213
|
componentId: "sc-12q03tq-3"
|
|
@@ -45168,8 +45215,8 @@ var OfferBadge = /*#__PURE__*/styled__default.span.withConfig({
|
|
|
45168
45215
|
var Chevron = /*#__PURE__*/styled__default.span.withConfig({
|
|
45169
45216
|
displayName: "GroupedRowContainer__Chevron",
|
|
45170
45217
|
componentId: "sc-12q03tq-4"
|
|
45171
|
-
})(["display:inline-block;font-size:0.7rem;color:rgba(255,255,255,0.4);transition:transform 0.2s ease;transform:rotate(", ");"], function (
|
|
45172
|
-
var $expanded =
|
|
45218
|
+
})(["display:inline-block;font-size:0.7rem;color:rgba(255,255,255,0.4);transition:transform 0.2s ease;transform:rotate(", ");"], function (_ref4) {
|
|
45219
|
+
var $expanded = _ref4.$expanded;
|
|
45173
45220
|
return $expanded ? '90deg' : '0deg';
|
|
45174
45221
|
});
|
|
45175
45222
|
var SubRows = /*#__PURE__*/styled__default.div.withConfig({
|
|
@@ -45494,7 +45541,8 @@ var GroupedBuyOrderRow = function GroupedBuyOrderRow(_ref2) {
|
|
|
45494
45541
|
return React__default.createElement(GroupedRowContainer, {
|
|
45495
45542
|
mainRow: makeRow(bestOrder),
|
|
45496
45543
|
subRows: otherOrders.map(makeRow),
|
|
45497
|
-
badgeLabel: "requests"
|
|
45544
|
+
badgeLabel: "requests",
|
|
45545
|
+
metaRightInset: 156
|
|
45498
45546
|
});
|
|
45499
45547
|
};
|
|
45500
45548
|
// ── Styled components matching MarketplaceRows layout ──
|
|
@@ -45960,7 +46008,7 @@ var MarketplaceRows = function MarketplaceRows(_ref) {
|
|
|
45960
46008
|
spriteKey: "others/definya-coin.png",
|
|
45961
46009
|
imgScale: 1
|
|
45962
46010
|
}))), React__default.createElement(DCPrice, null, shared.formatDCAmount(dcEquivalentPrice)))))), React__default.createElement(ActionSection$1, null, React__default.createElement(CTAButton, {
|
|
45963
|
-
icon: onMarketPlaceItemBuy ? React__default.createElement(
|
|
46011
|
+
icon: onMarketPlaceItemBuy ? React__default.createElement(Wallet.Wallet, {
|
|
45964
46012
|
width: 18,
|
|
45965
46013
|
height: 18
|
|
45966
46014
|
}) : React__default.createElement(Delete.Delete, {
|
|
@@ -46012,7 +46060,8 @@ var GroupedMarketplaceRow = function GroupedMarketplaceRow(_ref2) {
|
|
|
46012
46060
|
return React__default.createElement(GroupedRowContainer, {
|
|
46013
46061
|
mainRow: makeRow(bestListing),
|
|
46014
46062
|
subRows: otherListings.map(makeRow),
|
|
46015
|
-
badgeLabel: "offers"
|
|
46063
|
+
badgeLabel: "offers",
|
|
46064
|
+
metaRightInset: 132
|
|
46016
46065
|
});
|
|
46017
46066
|
};
|
|
46018
46067
|
var ItemSection$1 = /*#__PURE__*/styled__default.div.withConfig({
|
|
@@ -46553,7 +46602,7 @@ var WrapperContainer$1 = /*#__PURE__*/styled__default.div.withConfig({
|
|
|
46553
46602
|
var ItemComponentScrollWrapper$1 = /*#__PURE__*/styled__default.div.withConfig({
|
|
46554
46603
|
displayName: "BuyPanel__ItemComponentScrollWrapper",
|
|
46555
46604
|
componentId: "sc-1si8t7i-7"
|
|
46556
|
-
})(["overflow-y:
|
|
46605
|
+
})(["display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;max-height:390px;min-height:120px;width:95%;margin:1rem auto 0 auto;background:rgba(0,0,0,0.2);border:1px solid rgba(255,255,255,0.05);border-radius:4px;@media (max-width:950px){max-height:250px;}"]);
|
|
46557
46606
|
var MarketSection = /*#__PURE__*/styled__default.div.withConfig({
|
|
46558
46607
|
displayName: "BuyPanel__MarketSection",
|
|
46559
46608
|
componentId: "sc-1si8t7i-8"
|
|
@@ -46977,7 +47026,7 @@ var ManagmentPanel = function ManagmentPanel(_ref) {
|
|
|
46977
47026
|
})), React__default.createElement(BalanceAmount$1, {
|
|
46978
47027
|
"$disabled": false
|
|
46979
47028
|
}, dcBalance), React__default.createElement(BalanceCurrencyLabel, null, "DC")), React__default.createElement(SmallCTAButton, {
|
|
46980
|
-
icon: React__default.createElement(
|
|
47029
|
+
icon: React__default.createElement(Wallet.Wallet, {
|
|
46981
47030
|
width: 18,
|
|
46982
47031
|
height: 18
|
|
46983
47032
|
}),
|
|
@@ -48192,7 +48241,7 @@ var Marketplace = function Marketplace(props) {
|
|
|
48192
48241
|
}, {
|
|
48193
48242
|
id: 'history',
|
|
48194
48243
|
label: 'History',
|
|
48195
|
-
icon: React__default.createElement(
|
|
48244
|
+
icon: React__default.createElement(DateTime.DateTime, {
|
|
48196
48245
|
width: 18,
|
|
48197
48246
|
height: 18
|
|
48198
48247
|
})
|
|
@@ -48371,7 +48420,7 @@ var CharacterMarketplaceRows = function CharacterMarketplaceRows(_ref) {
|
|
|
48371
48420
|
spriteKey: "others/definya-coin.png",
|
|
48372
48421
|
imgScale: 1
|
|
48373
48422
|
})), React__default.createElement(DCPrice$2, null, shared.formatDCAmount(price))), isBeingBought && React__default.createElement(PendingBadge$1, null, "Sale Pending"))), React__default.createElement(ActionSection$2, null, React__default.createElement(CTAButton, {
|
|
48374
|
-
icon: onCharacterBuy ? React__default.createElement(
|
|
48423
|
+
icon: onCharacterBuy ? React__default.createElement(Wallet.Wallet, {
|
|
48375
48424
|
width: 18,
|
|
48376
48425
|
height: 18
|
|
48377
48426
|
}) : undefined,
|
|
@@ -49834,146 +49883,150 @@ var COMBAT_COLOR = '#C5283D';
|
|
|
49834
49883
|
var CRAFTING_COLOR = '#597DCE';
|
|
49835
49884
|
var ATTRIBUTE_COLOR = '#6833A3';
|
|
49836
49885
|
var LEVEL_COLOR = '#0E79B2';
|
|
49886
|
+
// Keep this copy aligned with ../rpg-api:
|
|
49887
|
+
// SkillIncrease.ts, BattleDamageCalculator.ts, BattleEvent.ts,
|
|
49888
|
+
// ResourceRequirementConstants.ts, PlantHarvest.ts,
|
|
49889
|
+
// ItemCraftableQueue.ts, ItemMinLevelCalculator.ts, NPCExperience.ts.
|
|
49837
49890
|
var SKILL_INFO_DATA = {
|
|
49838
49891
|
first: {
|
|
49839
49892
|
name: 'Fist',
|
|
49840
49893
|
color: COMBAT_COLOR,
|
|
49841
|
-
description: '
|
|
49842
|
-
howToTrain: '
|
|
49843
|
-
notes: '
|
|
49894
|
+
description: 'Used for unarmed attacks. Higher Fist improves your chance to hit and the damage you deal while fighting empty-handed.',
|
|
49895
|
+
howToTrain: 'Land non-spell hits with no weapon equipped.',
|
|
49896
|
+
notes: 'Some gloves require Fist, but you train it by fighting unarmed. Berserkers learn it especially well.'
|
|
49844
49897
|
},
|
|
49845
49898
|
club: {
|
|
49846
49899
|
name: 'Club',
|
|
49847
49900
|
color: COMBAT_COLOR,
|
|
49848
|
-
description: '
|
|
49849
|
-
howToTrain: '
|
|
49850
|
-
notes: '
|
|
49901
|
+
description: 'Used for maces and clubs. Higher Club improves your chance to hit and the damage you deal with those weapons.',
|
|
49902
|
+
howToTrain: 'Land non-spell hits with a mace or club weapon equipped.',
|
|
49903
|
+
notes: 'Some mace-type weapons require Club to equip. Warriors and Berserkers learn it faster than most classes.'
|
|
49851
49904
|
},
|
|
49852
49905
|
sword: {
|
|
49853
49906
|
name: 'Sword',
|
|
49854
49907
|
color: COMBAT_COLOR,
|
|
49855
|
-
description: '
|
|
49856
|
-
howToTrain: '
|
|
49857
|
-
notes: '
|
|
49908
|
+
description: 'Used for swords. Higher Sword improves your chance to hit and the damage you deal with sword attacks.',
|
|
49909
|
+
howToTrain: 'Land non-spell hits with a sword equipped.',
|
|
49910
|
+
notes: 'Some swords require Sword to equip. Warriors and Berserkers are the natural Sword classes.'
|
|
49858
49911
|
},
|
|
49859
49912
|
axe: {
|
|
49860
49913
|
name: 'Axe',
|
|
49861
49914
|
color: COMBAT_COLOR,
|
|
49862
|
-
description: '
|
|
49863
|
-
howToTrain: '
|
|
49864
|
-
notes: '
|
|
49915
|
+
description: 'Used for axes. Higher Axe improves your chance to hit and the damage you deal with axe attacks.',
|
|
49916
|
+
howToTrain: 'Land non-spell hits with an axe equipped.',
|
|
49917
|
+
notes: 'Some axes require Axe to equip. Berserkers are the natural Axe class, with Warriors close behind.'
|
|
49865
49918
|
},
|
|
49866
49919
|
distance: {
|
|
49867
49920
|
name: 'Distance',
|
|
49868
49921
|
color: COMBAT_COLOR,
|
|
49869
|
-
description: '
|
|
49870
|
-
howToTrain: '
|
|
49871
|
-
notes: '
|
|
49922
|
+
description: 'Used for ranged weapons and spears. Higher Distance improves your accuracy and damage, especially for Hunters.',
|
|
49923
|
+
howToTrain: 'Land non-spell hits with a ranged weapon or spear.',
|
|
49924
|
+
notes: 'Some ranged weapons and abilities also require Distance. Hunters rely on it the most for bows and spears.'
|
|
49872
49925
|
},
|
|
49873
49926
|
shielding: {
|
|
49874
49927
|
name: 'Shielding',
|
|
49875
49928
|
color: COMBAT_COLOR,
|
|
49876
|
-
description: '
|
|
49877
|
-
howToTrain: '
|
|
49878
|
-
notes: '
|
|
49929
|
+
description: 'Used when reducing incoming damage with a shield. With a shield equipped, Shielding boosts your defense and lets the shield absorb part of each hit.',
|
|
49930
|
+
howToTrain: 'Take hits or blocks while a shield is equipped.',
|
|
49931
|
+
notes: 'Shielding gains use a hard cooldown, so extra hits do not spam progress. Warriors benefit from it the most, with Berserkers also training it well.'
|
|
49879
49932
|
},
|
|
49880
49933
|
dagger: {
|
|
49881
49934
|
name: 'Dagger',
|
|
49882
49935
|
color: COMBAT_COLOR,
|
|
49883
|
-
description: '
|
|
49884
|
-
howToTrain: '
|
|
49885
|
-
notes: '
|
|
49936
|
+
description: 'Used for daggers. Higher Dagger improves your chance to hit and the damage you deal with dagger attacks.',
|
|
49937
|
+
howToTrain: 'Land non-spell hits with a dagger equipped.',
|
|
49938
|
+
notes: 'Some daggers require Dagger to equip. Rogues are the main Dagger class, and Hunters also train it well.'
|
|
49886
49939
|
},
|
|
49887
49940
|
fishing: {
|
|
49888
49941
|
name: 'Fishing',
|
|
49889
49942
|
color: CRAFTING_COLOR,
|
|
49890
|
-
description: '
|
|
49891
|
-
howToTrain: '
|
|
49892
|
-
notes: '
|
|
49943
|
+
description: 'Governs fishing rewards and access to higher-tier catches. Higher Fishing lets you catch better fish and shell rewards.',
|
|
49944
|
+
howToTrain: 'Successfully fish reward items such as fish or shell resources.',
|
|
49945
|
+
notes: 'Higher-tier catches also depend on the rod you are using.'
|
|
49893
49946
|
},
|
|
49894
49947
|
farming: {
|
|
49895
49948
|
name: 'Farming',
|
|
49896
49949
|
color: CRAFTING_COLOR,
|
|
49897
|
-
description: '
|
|
49898
|
-
howToTrain: 'Plant
|
|
49899
|
-
notes: '
|
|
49950
|
+
description: 'Governs plant harvesting. Higher Farming increases crop yield and improves harvest rarity when plants are collected.',
|
|
49951
|
+
howToTrain: 'Plant and harvest crops. Harvesting plants grants Farming SP.',
|
|
49952
|
+
notes: 'Some seeds require Farming before you can plant them.'
|
|
49900
49953
|
},
|
|
49901
49954
|
mining: {
|
|
49902
49955
|
name: 'Mining',
|
|
49903
49956
|
color: CRAFTING_COLOR,
|
|
49904
|
-
description: 'Governs
|
|
49905
|
-
howToTrain: 'Mine
|
|
49906
|
-
notes: '
|
|
49957
|
+
description: 'Governs mining rewards and unlocks higher-tier ore, stone, and gem drops.',
|
|
49958
|
+
howToTrain: 'Mine resource nodes and successfully receive mining rewards.',
|
|
49959
|
+
notes: 'Better mining rewards depend on both your Mining level and your pickaxe.'
|
|
49907
49960
|
},
|
|
49908
49961
|
lumberjacking: {
|
|
49909
49962
|
name: 'Lumberjacking',
|
|
49910
49963
|
color: CRAFTING_COLOR,
|
|
49911
|
-
description: '
|
|
49912
|
-
howToTrain: 'Chop
|
|
49913
|
-
notes: '
|
|
49964
|
+
description: 'Governs woodcutting rewards and unlocks higher-tier wood drops.',
|
|
49965
|
+
howToTrain: 'Chop resource nodes and successfully receive wood rewards.',
|
|
49966
|
+
notes: 'Better wood tiers depend on both your Lumberjacking level and the tool you are using.'
|
|
49914
49967
|
},
|
|
49915
49968
|
blacksmithing: {
|
|
49916
49969
|
name: 'Blacksmithing',
|
|
49917
49970
|
color: CRAFTING_COLOR,
|
|
49918
|
-
description: '
|
|
49919
|
-
howToTrain:
|
|
49920
|
-
notes: '
|
|
49971
|
+
description: 'Governs blacksmithing recipes and ingot processing. Higher Blacksmithing improves craft success and unlocks stronger smithing recipes.',
|
|
49972
|
+
howToTrain: 'Successfully smelt bars or craft gear with Blacksmithing recipes.',
|
|
49973
|
+
notes: 'You only gain SP from successful crafts.'
|
|
49921
49974
|
},
|
|
49922
49975
|
cooking: {
|
|
49923
49976
|
name: 'Cooking',
|
|
49924
49977
|
color: CRAFTING_COLOR,
|
|
49925
|
-
description: 'Governs
|
|
49926
|
-
howToTrain: '
|
|
49927
|
-
notes: '
|
|
49978
|
+
description: 'Governs cooking recipes. Higher Cooking improves craft success and unlocks recipes with higher cooking requirements.',
|
|
49979
|
+
howToTrain: 'Successfully cook food with Cooking recipes.',
|
|
49980
|
+
notes: 'You only gain SP from successful crafts.'
|
|
49928
49981
|
},
|
|
49929
49982
|
alchemy: {
|
|
49930
49983
|
name: 'Alchemy',
|
|
49931
49984
|
color: CRAFTING_COLOR,
|
|
49932
|
-
description: '
|
|
49933
|
-
howToTrain: '
|
|
49934
|
-
notes: '
|
|
49985
|
+
description: 'Governs alchemy recipes. Higher Alchemy improves craft success and unlocks recipes with higher alchemy requirements.',
|
|
49986
|
+
howToTrain: 'Successfully brew potions or craft reagents with Alchemy recipes.',
|
|
49987
|
+
notes: 'You only gain SP from successful crafts.'
|
|
49935
49988
|
},
|
|
49936
49989
|
magic: {
|
|
49937
49990
|
name: 'Magic',
|
|
49938
49991
|
color: ATTRIBUTE_COLOR,
|
|
49939
|
-
description: '
|
|
49940
|
-
howToTrain: '
|
|
49941
|
-
notes: '
|
|
49992
|
+
description: 'Used for spell power, rune scaling, staff or magic-weapon attacks, gear used by mage classes, and some carry-weight calculations.',
|
|
49993
|
+
howToTrain: 'Cast spells or land non-spell hits with magic or staff weapons.',
|
|
49994
|
+
notes: 'Sorcerers and Druids are the mage classes, and both lean on Magic and staves. They also use Magic instead of Strength for max carry weight.'
|
|
49942
49995
|
},
|
|
49943
49996
|
magicResistance: {
|
|
49944
49997
|
name: 'Magic Resistance',
|
|
49945
49998
|
color: ATTRIBUTE_COLOR,
|
|
49946
|
-
description: '
|
|
49947
|
-
howToTrain: '
|
|
49948
|
-
notes: '
|
|
49999
|
+
description: 'Used when reducing incoming magic damage. Higher Magic Resistance improves your defense against spells and other magical attacks.',
|
|
50000
|
+
howToTrain: 'Take damage from spells, magic weapons, runes, or other magical attacks.',
|
|
50001
|
+
notes: 'This only trains on incoming magic damage, not on casting. Sorcerers and Druids improve it faster than other classes.'
|
|
49949
50002
|
},
|
|
49950
50003
|
strength: {
|
|
49951
50004
|
name: 'Strength',
|
|
49952
50005
|
color: ATTRIBUTE_COLOR,
|
|
49953
|
-
description: '
|
|
49954
|
-
howToTrain: '
|
|
49955
|
-
notes: '
|
|
50006
|
+
description: 'Used for physical damage, carry weight for non-mages, item requirements, and many strength-scaling abilities.',
|
|
50007
|
+
howToTrain: 'Land non-spell hits with physical weapons or while fighting unarmed.',
|
|
50008
|
+
notes: 'When you attack with magic or staff weapons, Strength is not trained. Warriors and Berserkers get the most out of it.'
|
|
49956
50009
|
},
|
|
49957
50010
|
resistance: {
|
|
49958
50011
|
name: 'Resistance',
|
|
49959
50012
|
color: ATTRIBUTE_COLOR,
|
|
49960
|
-
description: '
|
|
49961
|
-
howToTrain: '
|
|
49962
|
-
notes: '
|
|
50013
|
+
description: 'Used in physical defense and damage reduction. Higher Resistance lowers the damage you take from non-magic attacks.',
|
|
50014
|
+
howToTrain: 'Take non-magic damage from melee, ranged, or other physical attacks.',
|
|
50015
|
+
notes: 'Shield users stack Resistance with Shielding for better mitigation. Warriors are strongest here, with Berserkers and Druids also holding up well.'
|
|
49963
50016
|
},
|
|
49964
50017
|
dexterity: {
|
|
49965
50018
|
name: 'Dexterity',
|
|
49966
50019
|
color: ATTRIBUTE_COLOR,
|
|
49967
|
-
description: '
|
|
49968
|
-
howToTrain: '
|
|
49969
|
-
notes: '
|
|
50020
|
+
description: 'Dexterity affects accuracy and blocking, and Hunters also rely on it heavily for ranged damage. Some Rogue and Hunter abilities scale from it.',
|
|
50021
|
+
howToTrain: 'Make incoming attacks miss you. Each miss grants Dexterity SP.',
|
|
50022
|
+
notes: 'Some accessories require Dexterity. Hunters and Rogues lean on it the most.'
|
|
49970
50023
|
},
|
|
49971
50024
|
level: {
|
|
49972
50025
|
name: 'Character Level',
|
|
49973
50026
|
color: LEVEL_COLOR,
|
|
49974
|
-
description: 'Your overall character level
|
|
49975
|
-
howToTrain: 'XP
|
|
49976
|
-
notes: '
|
|
50027
|
+
description: 'Your overall character level. It affects attack, defense, damage, movement speed, health, mana, spell unlocks, and other progression systems.',
|
|
50028
|
+
howToTrain: 'Gain XP from defeated enemies and other experience rewards.',
|
|
50029
|
+
notes: 'Level-ups refresh derived stats such as max health and max mana and can unlock new spells.'
|
|
49977
50030
|
}
|
|
49978
50031
|
};
|
|
49979
50032
|
|
|
@@ -73127,6 +73180,173 @@ var QuantityInput$1 = /*#__PURE__*/styled__default.input.withConfig({
|
|
|
73127
73180
|
componentId: "sc-ulazq3-11"
|
|
73128
73181
|
})(["width:40px;text-align:center;margin:0 auto;font-size:0.875rem;background:rgba(0,0,0,0.2);color:#ffffff;border:none;padding:0.25rem;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}"]);
|
|
73129
73182
|
|
|
73183
|
+
var StoreRedeemSection = function StoreRedeemSection(_ref) {
|
|
73184
|
+
var onRedeem = _ref.onRedeem,
|
|
73185
|
+
onInputFocus = _ref.onInputFocus,
|
|
73186
|
+
onInputBlur = _ref.onInputBlur;
|
|
73187
|
+
var _useState = React.useState(''),
|
|
73188
|
+
code = _useState[0],
|
|
73189
|
+
setCode = _useState[1];
|
|
73190
|
+
var _useState2 = React.useState('idle'),
|
|
73191
|
+
status = _useState2[0],
|
|
73192
|
+
setStatus = _useState2[1];
|
|
73193
|
+
var _useState3 = React.useState(),
|
|
73194
|
+
dcAmount = _useState3[0],
|
|
73195
|
+
setDcAmount = _useState3[1];
|
|
73196
|
+
var _useState4 = React.useState(''),
|
|
73197
|
+
errorMessage = _useState4[0],
|
|
73198
|
+
setErrorMessage = _useState4[1];
|
|
73199
|
+
var canSubmit = code.trim().length > 0 && status !== 'loading';
|
|
73200
|
+
var handleSubmit = /*#__PURE__*/function () {
|
|
73201
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
73202
|
+
var normalizedCode, result, _result$error;
|
|
73203
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
73204
|
+
while (1) switch (_context.prev = _context.next) {
|
|
73205
|
+
case 0:
|
|
73206
|
+
if (canSubmit) {
|
|
73207
|
+
_context.next = 2;
|
|
73208
|
+
break;
|
|
73209
|
+
}
|
|
73210
|
+
return _context.abrupt("return");
|
|
73211
|
+
case 2:
|
|
73212
|
+
normalizedCode = code.trim().toUpperCase();
|
|
73213
|
+
setStatus('loading');
|
|
73214
|
+
setErrorMessage('');
|
|
73215
|
+
_context.prev = 5;
|
|
73216
|
+
_context.next = 8;
|
|
73217
|
+
return onRedeem(normalizedCode);
|
|
73218
|
+
case 8:
|
|
73219
|
+
result = _context.sent;
|
|
73220
|
+
if (result.success) {
|
|
73221
|
+
setStatus('success');
|
|
73222
|
+
setDcAmount(result.dcAmount);
|
|
73223
|
+
} else {
|
|
73224
|
+
setStatus('error');
|
|
73225
|
+
setErrorMessage((_result$error = result.error) != null ? _result$error : 'Redemption failed. Please try again.');
|
|
73226
|
+
}
|
|
73227
|
+
_context.next = 16;
|
|
73228
|
+
break;
|
|
73229
|
+
case 12:
|
|
73230
|
+
_context.prev = 12;
|
|
73231
|
+
_context.t0 = _context["catch"](5);
|
|
73232
|
+
setStatus('error');
|
|
73233
|
+
setErrorMessage('Something went wrong. Please try again.');
|
|
73234
|
+
case 16:
|
|
73235
|
+
case "end":
|
|
73236
|
+
return _context.stop();
|
|
73237
|
+
}
|
|
73238
|
+
}, _callee, null, [[5, 12]]);
|
|
73239
|
+
}));
|
|
73240
|
+
return function handleSubmit() {
|
|
73241
|
+
return _ref2.apply(this, arguments);
|
|
73242
|
+
};
|
|
73243
|
+
}();
|
|
73244
|
+
var handleReset = function handleReset() {
|
|
73245
|
+
setCode('');
|
|
73246
|
+
setStatus('idle');
|
|
73247
|
+
setDcAmount(undefined);
|
|
73248
|
+
setErrorMessage('');
|
|
73249
|
+
};
|
|
73250
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
73251
|
+
if (e.key === 'Enter') {
|
|
73252
|
+
void handleSubmit();
|
|
73253
|
+
}
|
|
73254
|
+
};
|
|
73255
|
+
if (status === 'success') {
|
|
73256
|
+
return React__default.createElement(Container$O, null, React__default.createElement(ResultContainer, null, React__default.createElement(SuccessIcon, null, React__default.createElement(fa.FaCheckCircle, {
|
|
73257
|
+
size: 32
|
|
73258
|
+
})), React__default.createElement(SuccessTitle, null, "Code Redeemed!"), dcAmount != null && React__default.createElement(DCAmountDisplay, null, "+", dcAmount.toLocaleString(), " DC"), React__default.createElement(SuccessHint, null, "Your wallet balance has been updated."), React__default.createElement(ButtonWrapper$3, null, React__default.createElement(CTAButton, {
|
|
73259
|
+
icon: React__default.createElement(fa.FaTicketAlt, null),
|
|
73260
|
+
label: "Redeem Another",
|
|
73261
|
+
onClick: handleReset
|
|
73262
|
+
}))));
|
|
73263
|
+
}
|
|
73264
|
+
if (status === 'error') {
|
|
73265
|
+
return React__default.createElement(Container$O, null, React__default.createElement(ResultContainer, null, React__default.createElement(ErrorIcon, null, React__default.createElement(fa.FaExclamationCircle, {
|
|
73266
|
+
size: 32
|
|
73267
|
+
})), React__default.createElement(ErrorTitle, null, errorMessage), React__default.createElement(ButtonWrapper$3, null, React__default.createElement(CTAButton, {
|
|
73268
|
+
icon: React__default.createElement(fa.FaTicketAlt, null),
|
|
73269
|
+
label: "Try Again",
|
|
73270
|
+
onClick: handleReset
|
|
73271
|
+
}))));
|
|
73272
|
+
}
|
|
73273
|
+
return React__default.createElement(Container$O, null, React__default.createElement(Title$p, null, "Redeem a Voucher Code"), React__default.createElement(Description$7, null, "Enter your voucher code below to receive Definya Coins."), React__default.createElement(InputRow, null, React__default.createElement(CodeInput, {
|
|
73274
|
+
type: "text",
|
|
73275
|
+
value: code,
|
|
73276
|
+
onChange: function onChange(e) {
|
|
73277
|
+
return setCode(e.target.value);
|
|
73278
|
+
},
|
|
73279
|
+
onFocus: onInputFocus,
|
|
73280
|
+
onBlur: onInputBlur,
|
|
73281
|
+
onKeyDown: handleKeyDown,
|
|
73282
|
+
placeholder: "Enter code...",
|
|
73283
|
+
disabled: status === 'loading',
|
|
73284
|
+
autoComplete: "off",
|
|
73285
|
+
spellCheck: false
|
|
73286
|
+
})), React__default.createElement(ButtonWrapper$3, null, React__default.createElement(CTAButton, {
|
|
73287
|
+
icon: React__default.createElement(fa.FaTicketAlt, null),
|
|
73288
|
+
label: status === 'loading' ? 'Redeeming...' : 'Redeem Code',
|
|
73289
|
+
onClick: function onClick() {
|
|
73290
|
+
void handleSubmit();
|
|
73291
|
+
},
|
|
73292
|
+
disabled: !canSubmit,
|
|
73293
|
+
fullWidth: true
|
|
73294
|
+
})));
|
|
73295
|
+
};
|
|
73296
|
+
var Container$O = /*#__PURE__*/styled__default.div.withConfig({
|
|
73297
|
+
displayName: "StoreRedeemSection__Container",
|
|
73298
|
+
componentId: "sc-1pzosml-0"
|
|
73299
|
+
})(["display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1.5rem;max-width:420px;margin:0 auto;gap:1rem;"]);
|
|
73300
|
+
var Title$p = /*#__PURE__*/styled__default.h3.withConfig({
|
|
73301
|
+
displayName: "StoreRedeemSection__Title",
|
|
73302
|
+
componentId: "sc-1pzosml-1"
|
|
73303
|
+
})(["font-family:'Press Start 2P',cursive;font-size:0.85rem;color:", ";margin:0;text-align:center;"], uiColors.white);
|
|
73304
|
+
var Description$7 = /*#__PURE__*/styled__default.p.withConfig({
|
|
73305
|
+
displayName: "StoreRedeemSection__Description",
|
|
73306
|
+
componentId: "sc-1pzosml-2"
|
|
73307
|
+
})(["font-family:'Press Start 2P',cursive;font-size:0.55rem;color:", ";margin:0;text-align:center;line-height:1.6;"], uiColors.lightGray);
|
|
73308
|
+
var InputRow = /*#__PURE__*/styled__default.div.withConfig({
|
|
73309
|
+
displayName: "StoreRedeemSection__InputRow",
|
|
73310
|
+
componentId: "sc-1pzosml-3"
|
|
73311
|
+
})(["width:100%;"]);
|
|
73312
|
+
var CodeInput = /*#__PURE__*/styled__default.input.withConfig({
|
|
73313
|
+
displayName: "StoreRedeemSection__CodeInput",
|
|
73314
|
+
componentId: "sc-1pzosml-4"
|
|
73315
|
+
})(["width:100%;padding:12px 14px;font-family:'Press Start 2P',cursive;font-size:0.75rem;color:", ";background:rgba(0,0,0,0.4);border:2px solid #f59e0b;border-radius:4px;text-transform:uppercase;letter-spacing:2px;text-align:center;box-sizing:border-box;outline:none;&::placeholder{color:", ";text-transform:none;letter-spacing:0;}&:focus{border-color:#fbbf24;box-shadow:0 0 8px rgba(251,191,36,0.3);}&:disabled{opacity:0.5;cursor:not-allowed;}"], uiColors.white, uiColors.lightGray);
|
|
73316
|
+
var ButtonWrapper$3 = /*#__PURE__*/styled__default.div.withConfig({
|
|
73317
|
+
displayName: "StoreRedeemSection__ButtonWrapper",
|
|
73318
|
+
componentId: "sc-1pzosml-5"
|
|
73319
|
+
})(["width:100%;margin-top:0.5rem;"]);
|
|
73320
|
+
var ResultContainer = /*#__PURE__*/styled__default.div.withConfig({
|
|
73321
|
+
displayName: "StoreRedeemSection__ResultContainer",
|
|
73322
|
+
componentId: "sc-1pzosml-6"
|
|
73323
|
+
})(["display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem 0;"]);
|
|
73324
|
+
var glowPulse$1 = /*#__PURE__*/styled.keyframes(["0%,100%{opacity:1;}50%{opacity:0.7;}"]);
|
|
73325
|
+
var SuccessIcon = /*#__PURE__*/styled__default.div.withConfig({
|
|
73326
|
+
displayName: "StoreRedeemSection__SuccessIcon",
|
|
73327
|
+
componentId: "sc-1pzosml-7"
|
|
73328
|
+
})(["color:", ";animation:", " 1.5s ease-in-out infinite;"], uiColors.green, glowPulse$1);
|
|
73329
|
+
var SuccessTitle = /*#__PURE__*/styled__default.h3.withConfig({
|
|
73330
|
+
displayName: "StoreRedeemSection__SuccessTitle",
|
|
73331
|
+
componentId: "sc-1pzosml-8"
|
|
73332
|
+
})(["font-family:'Press Start 2P',cursive;font-size:0.85rem;color:", ";margin:0;"], uiColors.green);
|
|
73333
|
+
var DCAmountDisplay = /*#__PURE__*/styled__default.div.withConfig({
|
|
73334
|
+
displayName: "StoreRedeemSection__DCAmountDisplay",
|
|
73335
|
+
componentId: "sc-1pzosml-9"
|
|
73336
|
+
})(["font-family:'Press Start 2P',cursive;font-size:1.2rem;color:#fef08a;text-shadow:0 0 10px rgba(254,240,138,0.5);"]);
|
|
73337
|
+
var SuccessHint = /*#__PURE__*/styled__default.p.withConfig({
|
|
73338
|
+
displayName: "StoreRedeemSection__SuccessHint",
|
|
73339
|
+
componentId: "sc-1pzosml-10"
|
|
73340
|
+
})(["font-family:'Press Start 2P',cursive;font-size:0.5rem;color:", ";margin:0;"], uiColors.lightGray);
|
|
73341
|
+
var ErrorIcon = /*#__PURE__*/styled__default.div.withConfig({
|
|
73342
|
+
displayName: "StoreRedeemSection__ErrorIcon",
|
|
73343
|
+
componentId: "sc-1pzosml-11"
|
|
73344
|
+
})(["color:", ";"], uiColors.red);
|
|
73345
|
+
var ErrorTitle = /*#__PURE__*/styled__default.p.withConfig({
|
|
73346
|
+
displayName: "StoreRedeemSection__ErrorTitle",
|
|
73347
|
+
componentId: "sc-1pzosml-12"
|
|
73348
|
+
})(["font-family:'Press Start 2P',cursive;font-size:0.65rem;color:", ";margin:0;text-align:center;line-height:1.6;"], uiColors.red);
|
|
73349
|
+
|
|
73130
73350
|
var StoreItemDetails = function StoreItemDetails(_ref) {
|
|
73131
73351
|
var _item$regionalPrice;
|
|
73132
73352
|
var item = _ref.item,
|
|
@@ -73140,12 +73360,12 @@ var StoreItemDetails = function StoreItemDetails(_ref) {
|
|
|
73140
73360
|
if (typeof imageUrl === 'string') return imageUrl;
|
|
73141
73361
|
return imageUrl["default"] || imageUrl.src;
|
|
73142
73362
|
};
|
|
73143
|
-
return React__default.createElement(Container$
|
|
73363
|
+
return React__default.createElement(Container$P, null, React__default.createElement(Header$j, null, React__default.createElement(BackButton, {
|
|
73144
73364
|
onClick: onBack
|
|
73145
73365
|
}, React__default.createElement(fa.FaArrowLeft, null), React__default.createElement("span", null, "Back"))), React__default.createElement(Content$5, null, React__default.createElement(DetailsGrid, null, React__default.createElement(ItemIcon, null, React__default.createElement("img", {
|
|
73146
73366
|
src: getImageSrc(),
|
|
73147
73367
|
alt: item.name
|
|
73148
|
-
})), React__default.createElement(ItemInfo$3, null, React__default.createElement(ItemName$9, null, item.name), React__default.createElement(ItemPrice$2, null, currencySymbol, 'priceUSD' in item ? item.priceUSD : (_item$regionalPrice = item.regionalPrice) != null ? _item$regionalPrice : item.price, item.dcPrice ? " \xB7 " + item.dcPrice.toLocaleString() + " DC" : ''), React__default.createElement(Description$
|
|
73368
|
+
})), React__default.createElement(ItemInfo$3, null, React__default.createElement(ItemName$9, null, item.name), React__default.createElement(ItemPrice$2, null, currencySymbol, 'priceUSD' in item ? item.priceUSD : (_item$regionalPrice = item.regionalPrice) != null ? _item$regionalPrice : item.price, item.dcPrice ? " \xB7 " + item.dcPrice.toLocaleString() + " DC" : ''), React__default.createElement(Description$8, null, item.description))), React__default.createElement(Actions$1, null, React__default.createElement(CTAButton, {
|
|
73149
73369
|
icon: React__default.createElement(fa.FaCartPlus, null),
|
|
73150
73370
|
label: "Add to Cart",
|
|
73151
73371
|
onClick: function onClick() {
|
|
@@ -73154,7 +73374,7 @@ var StoreItemDetails = function StoreItemDetails(_ref) {
|
|
|
73154
73374
|
fullWidth: true
|
|
73155
73375
|
}))));
|
|
73156
73376
|
};
|
|
73157
|
-
var Container$
|
|
73377
|
+
var Container$P = /*#__PURE__*/styled__default.div.withConfig({
|
|
73158
73378
|
displayName: "StoreItemDetails__Container",
|
|
73159
73379
|
componentId: "sc-k3ho5z-0"
|
|
73160
73380
|
})(["display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem;height:100%;"]);
|
|
@@ -73190,7 +73410,7 @@ var ItemPrice$2 = /*#__PURE__*/styled__default.div.withConfig({
|
|
|
73190
73410
|
displayName: "StoreItemDetails__ItemPrice",
|
|
73191
73411
|
componentId: "sc-k3ho5z-8"
|
|
73192
73412
|
})(["font-family:'Press Start 2P',cursive;font-size:1rem;color:#fef08a;"]);
|
|
73193
|
-
var Description$
|
|
73413
|
+
var Description$8 = /*#__PURE__*/styled__default.p.withConfig({
|
|
73194
73414
|
displayName: "StoreItemDetails__Description",
|
|
73195
73415
|
componentId: "sc-k3ho5z-9"
|
|
73196
73416
|
})(["margin:0;font-family:'Press Start 2P',cursive;font-size:0.875rem;line-height:1.6;color:#ffffff;"]);
|
|
@@ -73243,7 +73463,10 @@ var Store = function Store(_ref) {
|
|
|
73243
73463
|
onPurchaseError = _ref.onPurchaseError,
|
|
73244
73464
|
onBuyDC = _ref.onBuyDC,
|
|
73245
73465
|
_ref$currencySymbol = _ref.currencySymbol,
|
|
73246
|
-
currencySymbol = _ref$currencySymbol === void 0 ? '$' : _ref$currencySymbol
|
|
73466
|
+
currencySymbol = _ref$currencySymbol === void 0 ? '$' : _ref$currencySymbol,
|
|
73467
|
+
onRedeem = _ref.onRedeem,
|
|
73468
|
+
onRedeemInputFocus = _ref.onRedeemInputFocus,
|
|
73469
|
+
onRedeemInputBlur = _ref.onRedeemInputBlur;
|
|
73247
73470
|
var _useState = React.useState(null),
|
|
73248
73471
|
selectedPack = _useState[0],
|
|
73249
73472
|
setSelectedPack = _useState[1];
|
|
@@ -73365,7 +73588,7 @@ var Store = function Store(_ref) {
|
|
|
73365
73588
|
return React__default.createElement(ErrorMessage$3, null, error);
|
|
73366
73589
|
}
|
|
73367
73590
|
// Build tabs dynamically based on props
|
|
73368
|
-
var tabIds = [].concat(tabOrder != null ? tabOrder : ['premium', 'packs', 'items'], onShowWallet || customWalletContent ? ['wallet'] : [], onShowHistory || customHistoryContent ? ['history'] : []);
|
|
73591
|
+
var tabIds = [].concat(tabOrder != null ? tabOrder : ['premium', 'packs', 'items'], onRedeem ? ['redeem'] : [], onShowWallet || customWalletContent ? ['wallet'] : [], onShowHistory || customHistoryContent ? ['history'] : []);
|
|
73369
73592
|
var availableTabIds = Array.from(new Set(tabIds.filter(function (id) {
|
|
73370
73593
|
return !(hidePremiumTab && id === 'premium');
|
|
73371
73594
|
})));
|
|
@@ -73485,7 +73708,7 @@ var Store = function Store(_ref) {
|
|
|
73485
73708
|
items: {
|
|
73486
73709
|
id: 'items',
|
|
73487
73710
|
title: 'Items',
|
|
73488
|
-
icon: React__default.createElement(
|
|
73711
|
+
icon: React__default.createElement(Package.Package, {
|
|
73489
73712
|
width: 18,
|
|
73490
73713
|
height: 18
|
|
73491
73714
|
}),
|
|
@@ -73505,6 +73728,18 @@ var Store = function Store(_ref) {
|
|
|
73505
73728
|
currencySymbol: currencySymbol
|
|
73506
73729
|
})
|
|
73507
73730
|
},
|
|
73731
|
+
redeem: {
|
|
73732
|
+
id: 'redeem',
|
|
73733
|
+
title: 'Redeem',
|
|
73734
|
+
icon: React__default.createElement(fa.FaTicketAlt, {
|
|
73735
|
+
size: 16
|
|
73736
|
+
}),
|
|
73737
|
+
content: onRedeem ? React__default.createElement(StoreRedeemSection, {
|
|
73738
|
+
onRedeem: onRedeem,
|
|
73739
|
+
onInputFocus: onRedeemInputFocus,
|
|
73740
|
+
onInputBlur: onRedeemInputBlur
|
|
73741
|
+
}) : null
|
|
73742
|
+
},
|
|
73508
73743
|
wallet: {
|
|
73509
73744
|
id: 'wallet',
|
|
73510
73745
|
title: walletLabel != null ? walletLabel : 'Wallet',
|
|
@@ -73589,7 +73824,7 @@ var Store = function Store(_ref) {
|
|
|
73589
73824
|
return handleAddPackToCart(selectedPack);
|
|
73590
73825
|
},
|
|
73591
73826
|
currencySymbol: currencySymbol
|
|
73592
|
-
}) : React__default.createElement(Container$
|
|
73827
|
+
}) : React__default.createElement(Container$Q, null, featuredItems && featuredItems.length > 0 && React__default.createElement(FeaturedBanner, {
|
|
73593
73828
|
items: featuredItems,
|
|
73594
73829
|
atlasJSON: atlasJSON,
|
|
73595
73830
|
atlasIMG: atlasIMG,
|
|
@@ -73671,7 +73906,7 @@ var Store = function Store(_ref) {
|
|
|
73671
73906
|
fullWidth: true
|
|
73672
73907
|
}))));
|
|
73673
73908
|
};
|
|
73674
|
-
var Container$
|
|
73909
|
+
var Container$Q = /*#__PURE__*/styled__default.div.withConfig({
|
|
73675
73910
|
displayName: "Store__Container",
|
|
73676
73911
|
componentId: "sc-64dj00-0"
|
|
73677
73912
|
})(["display:flex;flex-direction:column;width:100%;height:100%;gap:0.5rem;position:relative;"]);
|
|
@@ -74054,7 +74289,7 @@ var TradingMenu = function TradingMenu(_ref) {
|
|
|
74054
74289
|
width: "500px",
|
|
74055
74290
|
cancelDrag: "#TraderContainer",
|
|
74056
74291
|
scale: scale
|
|
74057
|
-
}, React__default.createElement(Container$
|
|
74292
|
+
}, React__default.createElement(Container$R, null, React__default.createElement(Title$q, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React__default.createElement("hr", {
|
|
74058
74293
|
className: "golden"
|
|
74059
74294
|
}), React__default.createElement(ScrollWrapper, {
|
|
74060
74295
|
id: "TraderContainer"
|
|
@@ -74071,7 +74306,7 @@ var TradingMenu = function TradingMenu(_ref) {
|
|
|
74071
74306
|
scale: scale,
|
|
74072
74307
|
isBuy: isBuy()
|
|
74073
74308
|
});
|
|
74074
|
-
})), React__default.createElement(InfoSection$2, null, React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Available Gold:"), React__default.createElement("p", null, "$", characterAvailableGold.toFixed(2))), React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Total:"), React__default.createElement("p", null, "$", sum)), !hasGoldForSale() ? React__default.createElement(AlertText, null, "Sorry, not enough money.") : React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Final Gold:"), React__default.createElement("p", null, "$", getFinalGold().toFixed(2)))), React__default.createElement(ButtonWrapper$
|
|
74309
|
+
})), React__default.createElement(InfoSection$2, null, React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Available Gold:"), React__default.createElement("p", null, "$", characterAvailableGold.toFixed(2))), React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Total:"), React__default.createElement("p", null, "$", sum)), !hasGoldForSale() ? React__default.createElement(AlertText, null, "Sorry, not enough money.") : React__default.createElement(GoldInfo, null, React__default.createElement("p", null, "Final Gold:"), React__default.createElement("p", null, "$", getFinalGold().toFixed(2)))), React__default.createElement(ButtonWrapper$4, null, React__default.createElement(Button, {
|
|
74075
74310
|
buttonType: exports.ButtonTypes.RPGUIButton,
|
|
74076
74311
|
disabled: !hasGoldForSale(),
|
|
74077
74312
|
onPointerDown: function onPointerDown() {
|
|
@@ -74082,11 +74317,11 @@ var TradingMenu = function TradingMenu(_ref) {
|
|
|
74082
74317
|
onPointerDown: onClose
|
|
74083
74318
|
}, "Cancel"))));
|
|
74084
74319
|
};
|
|
74085
|
-
var Container$
|
|
74320
|
+
var Container$R = /*#__PURE__*/styled__default.div.withConfig({
|
|
74086
74321
|
displayName: "TradingMenu__Container",
|
|
74087
74322
|
componentId: "sc-1wjsz1l-0"
|
|
74088
74323
|
})(["width:100%;"]);
|
|
74089
|
-
var Title$
|
|
74324
|
+
var Title$q = /*#__PURE__*/styled__default.h1.withConfig({
|
|
74090
74325
|
displayName: "TradingMenu__Title",
|
|
74091
74326
|
componentId: "sc-1wjsz1l-1"
|
|
74092
74327
|
})(["font-size:0.7rem !important;color:yellow !important;text-align:center;"]);
|
|
@@ -74106,7 +74341,7 @@ var AlertText = /*#__PURE__*/styled__default.p.withConfig({
|
|
|
74106
74341
|
displayName: "TradingMenu__AlertText",
|
|
74107
74342
|
componentId: "sc-1wjsz1l-5"
|
|
74108
74343
|
})(["color:red !important;text-align:center;margin:0.3rem 0;font-size:0.5rem;"]);
|
|
74109
|
-
var ButtonWrapper$
|
|
74344
|
+
var ButtonWrapper$4 = /*#__PURE__*/styled__default.div.withConfig({
|
|
74110
74345
|
displayName: "TradingMenu__ButtonWrapper",
|
|
74111
74346
|
componentId: "sc-1wjsz1l-6"
|
|
74112
74347
|
})(["display:flex;justify-content:space-around;width:100%;margin-top:1rem;"]);
|
|
@@ -74116,11 +74351,11 @@ var Truncate = function Truncate(_ref) {
|
|
|
74116
74351
|
var _ref$maxLines = _ref.maxLines,
|
|
74117
74352
|
maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
|
|
74118
74353
|
children = _ref.children;
|
|
74119
|
-
return React__default.createElement(Container$
|
|
74354
|
+
return React__default.createElement(Container$S, {
|
|
74120
74355
|
maxLines: maxLines
|
|
74121
74356
|
}, children);
|
|
74122
74357
|
};
|
|
74123
|
-
var Container$
|
|
74358
|
+
var Container$S = /*#__PURE__*/styled__default.div.withConfig({
|
|
74124
74359
|
displayName: "Truncate__Container",
|
|
74125
74360
|
componentId: "sc-6x00qb-0"
|
|
74126
74361
|
})(["display:-webkit-box;max-width:100%;max-height:100%;-webkit-line-clamp:", ";-webkit-box-orient:vertical;overflow:hidden;"], function (props) {
|
|
@@ -74229,7 +74464,7 @@ var TutorialStepper = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
74229
74464
|
};
|
|
74230
74465
|
});
|
|
74231
74466
|
}, [lessons, imageStyle]);
|
|
74232
|
-
return React__default.createElement(Container$
|
|
74467
|
+
return React__default.createElement(Container$T, null, React__default.createElement(Stepper, {
|
|
74233
74468
|
steps: generateLessons,
|
|
74234
74469
|
finalCTAButton: {
|
|
74235
74470
|
label: 'Close',
|
|
@@ -74247,7 +74482,7 @@ var LessonBody = /*#__PURE__*/styled__default.div.withConfig({
|
|
|
74247
74482
|
displayName: "TutorialStepper__LessonBody",
|
|
74248
74483
|
componentId: "sc-7tgzv2-1"
|
|
74249
74484
|
})([""]);
|
|
74250
|
-
var Container$
|
|
74485
|
+
var Container$T = /*#__PURE__*/styled__default.div.withConfig({
|
|
74251
74486
|
displayName: "TutorialStepper__Container",
|
|
74252
74487
|
componentId: "sc-7tgzv2-2"
|
|
74253
74488
|
})(["width:80%;max-width:600px;@media (max-width:600px){width:95%;}"]);
|
|
@@ -74376,6 +74611,7 @@ exports.SpriteFromAtlas = SpriteFromAtlas;
|
|
|
74376
74611
|
exports.Stepper = Stepper;
|
|
74377
74612
|
exports.Store = Store;
|
|
74378
74613
|
exports.StoreBadges = StoreBadges;
|
|
74614
|
+
exports.StoreRedeemSection = StoreRedeemSection;
|
|
74379
74615
|
exports.TRANSACTION_TYPE_FILTER_ALL = TRANSACTION_TYPE_FILTER_ALL;
|
|
74380
74616
|
exports.TabBody = TabBody;
|
|
74381
74617
|
exports.Table = Table;
|