valtech-components 4.0.587 → 4.0.591
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/esm2022/lib/components/organisms/mini-games/chessimals-adventure.component.mjs +26 -5
- package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +7 -1
- package/esm2022/lib/components/organisms/mini-games/christianity-rules.mjs +141 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +172 -5
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/phone-display/phone-display.component.d.ts +1 -1
- package/lib/components/organisms/mini-games/chessimals-adventure.component.d.ts +1 -0
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -86,6 +86,8 @@ export function playCardFromHand(game, seat, card, options = {}) {
|
|
|
86
86
|
spendOfferings(player, spentOfferings);
|
|
87
87
|
}
|
|
88
88
|
next.historyZone.push(card.id);
|
|
89
|
+
next.players[seat] = player;
|
|
90
|
+
resolveCardEffect(next, card, seat);
|
|
89
91
|
}
|
|
90
92
|
else if (card.type === 'place') {
|
|
91
93
|
const previousPlace = next.placeZone[0];
|
|
@@ -268,4 +270,142 @@ function offeringAbilityReserveGain(abilityText, fallbackValue) {
|
|
|
268
270
|
export function opponentSeat(seat) {
|
|
269
271
|
return seat === 'P1' ? 'P2' : 'P1';
|
|
270
272
|
}
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyaXN0aWFuaXR5LXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL2NocmlzdGlhbml0eS1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFzQzNDLE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBK0I7SUFDNUQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEUsTUFBTSxDQUFDLHdCQUF3QixJQUFJLENBQUMsQ0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQStCO0lBQzVELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FDekIsSUFBMkIsRUFDM0IsSUFBc0IsRUFDdEIsSUFBZ0M7SUFFaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVO1FBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0Is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Q0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDckQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDckYsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBc0I7SUFDakQsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hyaXN0aWFuaXR5Q2FyZERlZmluaXRpb24sXG4gIENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlLFxuICBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIENocmlzdGlhbml0eVBsYXllclN0YXRlLFxuICBDaHJpc3RpYW5pdHlTZWF0LFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IENIUklTVElBTklUWV9CQVRUTEVfU0xPVFMgPSA0O1xuXG5leHBvcnQgaW50ZXJmYWNlIENocmlzdGlhbml0eVJ1bGVNZXNzYWdlcyB7XG4gIGF0dGFja3NPcHBvbmVudExlYWRlcjogc3RyaW5nO1xuICBhdHRhY2tzWW91ckxlYWRlcjogc3RyaW5nO1xuICBjb21iYXRzQWdhaW5zdDogc3RyaW5nO1xuICBkcmF3c0NhcmQ6IHN0cmluZztcbiAgZGVja0lzRW1wdHk6IHN0cmluZztcbiAgdHVybk9mOiBzdHJpbmc7XG4gIHlvdVdpbjogc3RyaW5nO1xuICBvcHBvbmVudFdpbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaHJpc3RpYW5pdHlQbGF5Q2FyZFJlc3VsdCB7XG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZTtcbiAgcGxheWVkOiBib29sZWFuO1xuICBwbGF5ZWRPZmZlcmluZ1ZhbHVlOiBudW1iZXI7XG4gIHNwZW50T2ZmZXJpbmdzOiBudW1iZXI7XG4gIGxvZzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hyaXN0aWFuaXR5QXR0YWNrUmVzdWx0IHtcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlO1xuICBhdHRhY2tlZDogYm9vbGVhbjtcbiAgYXR0YWNrZXJEYW1hZ2U6IG51bWJlcjtcbiAgdGFyZ2V0RGFtYWdlOiBudW1iZXI7XG4gIGxvZzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hyaXN0aWFuaXR5T2ZmZXJpbmdBYmlsaXR5UmVzdWx0IHtcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlO1xuICByZXNvbHZlZDogYm9vbGVhbjtcbiAgbGVhZGVyRGFtYWdlOiBudW1iZXI7XG4gIHJlc2VydmVHYWluOiBudW1iZXI7XG4gIHNwZW50T2ZmZXJpbmdzOiBudW1iZXI7XG4gIGxvZzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkeU9mZmVyaW5ncyhwbGF5ZXI6IENocmlzdGlhbml0eVBsYXllclN0YXRlKTogbnVtYmVyIHtcbiAgcmV0dXJuIHBsYXllci5vZmZlcmluZ3MucmVkdWNlKFxuICAgICh0b3RhbCwgb2ZmZXJpbmcpID0+IHRvdGFsICsgKG9mZmVyaW5nLnJlYWR5ID8gb2ZmZXJpbmcudmFsdWUgOiAwKSxcbiAgICBwbGF5ZXIudGVtcG9yYXJ5T2ZmZXJpbmdSZXNlcnZlID8/IDBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvdGFsT2ZmZXJpbmdzKHBsYXllcjogQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGUpOiBudW1iZXIge1xuICByZXR1cm4gcGxheWVyLm9mZmVyaW5ncy5yZWR1Y2UoKHRvdGFsLCBvZmZlcmluZykgPT4gdG90YWwgKyBvZmZlcmluZy52YWx1ZSwgMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5QbGF5Q2FyZChcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBzZWF0OiBDaHJpc3RpYW5pdHlTZWF0LFxuICBjYXJkOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvblxuKTogYm9vbGVhbiB7XG4gIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCBnYW1lLnR1cm5Pd25lciAhPT0gc2VhdCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwbGF5ZXIgPSBnYW1lLnBsYXllcnNbc2VhdF07XG4gIGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHJldHVybiAhcGxheWVyLm9mZmVyaW5nUGxheWVkVGhpc1R1cm47XG4gIGlmIChjYXJkLnR5cGUgPT09ICdjaGFyYWN0ZXInKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlYWR5T2ZmZXJpbmdzKHBsYXllcikgPj0gKGNhcmQuY29zdCA/PyAwKSAmJlxuICAgICAgcGxheWVyLmJhdHRsZVpvbmUubGVuZ3RoIDwgQ0hSSVNUSUFOSVRZX0JBVFRMRV9TTE9UU1xuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGNhcmQudHlwZSA9PT0gJ2FjdGlvbicgfHxcbiAgICBjYXJkLnR5cGUgPT09ICd3aXNkb20nIHx8XG4gICAgY2FyZC50eXBlID09PSAnZXZlbnQnIHx8XG4gICAgY2FyZC50eXBlID09PSAndG9vbCdcbiAgKSB7XG4gICAgcmV0dXJuIHJlYWR5T2ZmZXJpbmdzKHBsYXllcikgPj0gKGNhcmQuY29zdCA/PyAwKTtcbiAgfVxuICBpZiAoY2FyZC50eXBlID09PSAncGxhY2UnKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxheUNhcmRGcm9tSGFuZChcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBzZWF0OiBDaHJpc3RpYW5pdHlTZWF0LFxuICBjYXJkOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbixcbiAgb3B0aW9uczogeyBzbG90SW5kZXg/OiBudW1iZXI7IGRpc3BsYXlOYW1lPzogc3RyaW5nIH0gPSB7fVxuKTogQ2hyaXN0aWFuaXR5UGxheUNhcmRSZXN1bHQge1xuICBpZiAoIWNhblBsYXlDYXJkKGdhbWUsIHNlYXQsIGNhcmQpKSB7XG4gICAgcmV0dXJuIHsgZ2FtZSwgcGxheWVkOiBmYWxzZSwgcGxheWVkT2ZmZXJpbmdWYWx1ZTogMCwgc3BlbnRPZmZlcmluZ3M6IDAsIGxvZzogW10gfTtcbiAgfVxuXG4gIGNvbnN0IG5leHQgPSBzdHJ1Y3R1cmVkQ2xvbmUoZ2FtZSk7XG4gIGNvbnN0IHBsYXllciA9IG5leHQucGxheWVyc1tzZWF0XTtcbiAgY29uc3QgaGFuZEluZGV4ID0gcGxheWVyLmhhbmQ/LmluZGV4T2YoY2FyZC5pZCkgPz8gLTE7XG4gIGlmIChoYW5kSW5kZXggPCAwIHx8ICFwbGF5ZXIuaGFuZCkge1xuICAgIHJldHVybiB7IGdhbWUsIHBsYXllZDogZmFsc2UsIHBsYXllZE9mZmVyaW5nVmFsdWU6IDAsIHNwZW50T2ZmZXJpbmdzOiAwLCBsb2c6IFtdIH07XG4gIH1cblxuICBjb25zdCBkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUgPz8gY2FyZC5uYW1lO1xuICBsZXQgcGxheWVkT2ZmZXJpbmdWYWx1ZSA9IDA7XG4gIGxldCBzcGVudE9mZmVyaW5ncyA9IDA7XG5cbiAgcGxheWVyLmhhbmQuc3BsaWNlKGhhbmRJbmRleCwgMSk7XG4gIGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHtcbiAgICBwbGF5ZWRPZmZlcmluZ1ZhbHVlID0gY2FyZC5vZmZlcmluZ1ZhbHVlID8/IGNhcmQubGlmZSA/PyAxO1xuICAgIHBsYXllci5vZmZlcmluZ3MucHVzaCh7XG4gICAgICBpbnN0YW5jZUlkOiBgJHtzZWF0LnRvTG93ZXJDYXNlKCl9X29mZmVyaW5nXyR7bmV4dC5yZXZpc2lvbiArIDF9YCxcbiAgICAgIGNhcmRJZDogY2FyZC5pZCxcbiAgICAgIG5hbWU6IGRpc3BsYXlOYW1lLFxuICAgICAgb3duZXI6IHNlYXQsXG4gICAgICByZWFkeTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBwbGF5ZWRPZmZlcmluZ1ZhbHVlLFxuICAgICAgYWJpbGl0eU5hbWU6IGNhcmQuYWJpbGl0eU5hbWUsXG4gICAgICBhYmlsaXR5VGV4dDogY2FyZC5hYmlsaXR5VGV4dCxcbiAgICAgIGFiaWxpdHlDb3N0OiBjYXJkLmFiaWxpdHlDb3N0LFxuICAgIH0pO1xuICAgIHBsYXllci5vZmZlcmluZ1BsYXllZFRoaXNUdXJuID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChjYXJkLnR5cGUgPT09ICdjaGFyYWN0ZXInKSB7XG4gICAgY29uc3Qgb2NjdXBpZWRTbG90cyA9IG5ldyBTZXQoXG4gICAgICBwbGF5ZXIuYmF0dGxlWm9uZS5tYXAoKGNoYXJhY3RlciwgaW5kZXgpID0+XG4gICAgICAgIE51bWJlci5pc0ludGVnZXIoY2hhcmFjdGVyLnNsb3QpID8gKGNoYXJhY3Rlci5zbG90ID8/IGluZGV4KSA6IGluZGV4XG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCB0YXJnZXRTbG90ID0gb3B0aW9ucy5zbG90SW5kZXggPz8gWzAsIDEsIDIsIDNdLmZpbmQoaW5kZXggPT4gIW9jY3VwaWVkU2xvdHMuaGFzKGluZGV4KSk7XG4gICAgaWYgKHRhcmdldFNsb3QgPT09IHVuZGVmaW5lZCB8fCBvY2N1cGllZFNsb3RzLmhhcyh0YXJnZXRTbG90KSkge1xuICAgICAgcmV0dXJuIHsgZ2FtZSwgcGxheWVkOiBmYWxzZSwgcGxheWVkT2ZmZXJpbmdWYWx1ZTogMCwgc3BlbnRPZmZlcmluZ3M6IDAsIGxvZzogW10gfTtcbiAgICB9XG4gICAgc3BlbnRPZmZlcmluZ3MgPSBjYXJkLmNvc3QgPz8gMDtcbiAgICBzcGVuZE9mZmVyaW5ncyhwbGF5ZXIsIHNwZW50T2ZmZXJpbmdzKTtcbiAgICBjb25zdCBsaWZlID0gY2FyZC5saWZlID8/IDE7XG4gICAgcGxheWVyLmJhdHRsZVpvbmUucHVzaCh7XG4gICAgICBpbnN0YW5jZUlkOiBgJHtzZWF0LnRvTG93ZXJDYXNlKCl9XyR7bmV4dC5yZXZpc2lvbiArIDF9XyR7cGxheWVyLmJhdHRsZVpvbmUubGVuZ3RofWAsXG4gICAgICBjYXJkSWQ6IGNhcmQuaWQsXG4gICAgICBuYW1lOiBkaXNwbGF5TmFtZSxcbiAgICAgIG93bmVyOiBzZWF0LFxuICAgICAgY29udHJvbGxlcjogc2VhdCxcbiAgICAgIHNsb3Q6IHRhcmdldFNsb3QsXG4gICAgICBhdHRhY2s6IGNhcmQuYXR0YWNrID8/IDAsXG4gICAgICBjdXJyZW50SHA6IGxpZmUsXG4gICAgICBtYXhIcDogbGlmZSxcbiAgICAgIGNhbkF0dGFjazogZmFsc2UsXG4gICAgfSk7XG4gICAgcGxheWVyLmJhdHRsZVpvbmUuc29ydCgobGVmdCwgcmlnaHQpID0+IChsZWZ0LnNsb3QgPz8gMCkgLSAocmlnaHQuc2xvdCA/PyAwKSk7XG4gIH0gZWxzZSBpZiAoXG4gICAgY2FyZC50eXBlID09PSAnYWN0aW9uJyB8fFxuICAgIGNhcmQudHlwZSA9PT0gJ3dpc2RvbScgfHxcbiAgICBjYXJkLnR5cGUgPT09ICdldmVudCcgfHxcbiAgICBjYXJkLnR5cGUgPT09ICd0b29sJ1xuICApIHtcbiAgICBzcGVudE9mZmVyaW5ncyA9IGNhcmQuY29zdCA/PyAwO1xuICAgIGlmIChzcGVudE9mZmVyaW5ncyA+IDApIHtcbiAgICAgIHNwZW5kT2ZmZXJpbmdzKHBsYXllciwgc3BlbnRPZmZlcmluZ3MpO1xuICAgIH1cbiAgICBuZXh0Lmhpc3Rvcnlab25lLnB1c2goY2FyZC5pZCk7XG4gIH0gZWxzZSBpZiAoY2FyZC50eXBlID09PSAncGxhY2UnKSB7XG4gICAgY29uc3QgcHJldmlvdXNQbGFjZSA9IG5leHQucGxhY2Vab25lWzBdO1xuICAgIGlmIChwcmV2aW91c1BsYWNlKSB7XG4gICAgICBuZXh0Lmhpc3Rvcnlab25lLnB1c2gocHJldmlvdXNQbGFjZSk7XG4gICAgfVxuICAgIG5leHQucGxhY2Vab25lID0gW2NhcmQuaWRdO1xuICB9XG5cbiAgbmV4dC5yZXZpc2lvbisrO1xuICBjb25zdCBsb2cgPSBbcGxheUNhcmRMb2coY2FyZCwgZGlzcGxheU5hbWUpXTtcbiAgbmV4dC5sb2cgPSBbLi4ubG9nLCAuLi5uZXh0LmxvZ10uc2xpY2UoMCwgNCk7XG4gIHJldHVybiB7IGdhbWU6IG5leHQsIHBsYXllZDogdHJ1ZSwgcGxheWVkT2ZmZXJpbmdWYWx1ZSwgc3BlbnRPZmZlcmluZ3MsIGxvZyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuVXNlT2ZmZXJpbmdBYmlsaXR5KFxuICBnYW1lOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIHNlYXQ6IENocmlzdGlhbml0eVNlYXQsXG4gIG9mZmVyaW5nSW5zdGFuY2VJZDogc3RyaW5nXG4pOiBib29sZWFuIHtcbiAgaWYgKGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8IGdhbWUudHVybk93bmVyICE9PSBzZWF0KSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHBsYXllciA9IGdhbWUucGxheWVyc1tzZWF0XTtcbiAgY29uc3Qgb2ZmZXJpbmcgPSBwbGF5ZXIub2ZmZXJpbmdzLmZpbmQoY2FyZCA9PiBjYXJkLmluc3RhbmNlSWQgPT09IG9mZmVyaW5nSW5zdGFuY2VJZCk7XG4gIGlmICghb2ZmZXJpbmc/LnJlYWR5IHx8ICFvZmZlcmluZy5hYmlsaXR5TmFtZSB8fCBvZmZlcmluZy5hYmlsaXR5VXNlZFRoaXNUdXJuKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiByZWFkeU9mZmVyaW5ncyhwbGF5ZXIpID49IChvZmZlcmluZy5hYmlsaXR5Q29zdCA/PyAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVPZmZlcmluZ0FiaWxpdHkoXG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZSxcbiAgc2VhdDogQ2hyaXN0aWFuaXR5U2VhdCxcbiAgb2ZmZXJpbmdJbnN0YW5jZUlkOiBzdHJpbmcsXG4gIG1lc3NhZ2VzPzogQ2hyaXN0aWFuaXR5UnVsZU1lc3NhZ2VzXG4pOiBDaHJpc3RpYW5pdHlPZmZlcmluZ0FiaWxpdHlSZXN1bHQge1xuICBpZiAoIWNhblVzZU9mZmVyaW5nQWJpbGl0eShnYW1lLCBzZWF0LCBvZmZlcmluZ0luc3RhbmNlSWQpKSB7XG4gICAgcmV0dXJuIHsgZ2FtZSwgcmVzb2x2ZWQ6IGZhbHNlLCBsZWFkZXJEYW1hZ2U6IDAsIHJlc2VydmVHYWluOiAwLCBzcGVudE9mZmVyaW5nczogMCwgbG9nOiBbXSB9O1xuICB9XG5cbiAgY29uc3QgbmV4dCA9IHN0cnVjdHVyZWRDbG9uZShnYW1lKTtcbiAgY29uc3QgcGxheWVyID0gbmV4dC5wbGF5ZXJzW3NlYXRdO1xuICBjb25zdCBsaXZlT2ZmZXJpbmcgPSBwbGF5ZXIub2ZmZXJpbmdzLmZpbmQoY2FyZCA9PiBjYXJkLmluc3RhbmNlSWQgPT09IG9mZmVyaW5nSW5zdGFuY2VJZCk7XG4gIGlmICghbGl2ZU9mZmVyaW5nKVxuICAgIHJldHVybiB7IGdhbWUsIHJlc29sdmVkOiBmYWxzZSwgbGVhZGVyRGFtYWdlOiAwLCByZXNlcnZlR2FpbjogMCwgc3BlbnRPZmZlcmluZ3M6IDAsIGxvZzogW10gfTtcblxuICBjb25zdCBzcGVudE9mZmVyaW5ncyA9IGxpdmVPZmZlcmluZy5hYmlsaXR5Q29zdCA/PyAwO1xuICBpZiAoc3BlbnRPZmZlcmluZ3MgPiAwKSB7XG4gICAgc3BlbmRPZmZlcmluZ3MocGxheWVyLCBzcGVudE9mZmVyaW5ncyk7XG4gIH1cbiAgY29uc3QgcmVzZXJ2ZUdhaW4gPSBvZmZlcmluZ0FiaWxpdHlSZXNlcnZlR2FpbihsaXZlT2ZmZXJpbmcuYWJpbGl0eVRleHQsIGxpdmVPZmZlcmluZy52YWx1ZSk7XG4gIHBsYXllci50ZW1wb3JhcnlPZmZlcmluZ1Jlc2VydmUgPSAocGxheWVyLnRlbXBvcmFyeU9mZmVyaW5nUmVzZXJ2ZSA/PyAwKSArIHJlc2VydmVHYWluO1xuICBwbGF5ZXIub2ZmZXJpbmdzID0gcGxheWVyLm9mZmVyaW5ncy5tYXAoY2FyZCA9PlxuICAgIGNhcmQuaW5zdGFuY2VJZCA9PT0gb2ZmZXJpbmdJbnN0YW5jZUlkID8geyAuLi5jYXJkLCBhYmlsaXR5VXNlZFRoaXNUdXJuOiB0cnVlIH0gOiBjYXJkXG4gICk7XG4gIHBsYXllci5sZWFkZXJIcCA9IE1hdGgubWF4KDAsIHBsYXllci5sZWFkZXJIcCAtIDEpO1xuICBuZXh0LnJldmlzaW9uKys7XG4gIGNvbnN0IGxvZyA9IFtgJHtsaXZlT2ZmZXJpbmcubmFtZX06ICR7bGl2ZU9mZmVyaW5nLmFiaWxpdHlOYW1lfS5gXTtcbiAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgZXZhbHVhdGVWaWN0b3J5KG5leHQsIGxvZywgbWVzc2FnZXMpO1xuICB9XG4gIG5leHQubG9nID0gWy4uLmxvZywgLi4ubmV4dC5sb2ddLnNsaWNlKDAsIDQpO1xuICByZXR1cm4geyBnYW1lOiBuZXh0LCByZXNvbHZlZDogdHJ1ZSwgbGVhZGVyRGFtYWdlOiAxLCByZXNlcnZlR2Fpbiwgc3BlbnRPZmZlcmluZ3MsIGxvZyB9O1xufVxuXG5mdW5jdGlvbiBwbGF5Q2FyZExvZyhjYXJkOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbiwgZGlzcGxheU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHJldHVybiBgJHtkaXNwbGF5TmFtZX0gcXVlZGEgbGlzdGEgY29tbyBvZnJlbmRhLmA7XG4gIGlmIChjYXJkLnR5cGUgPT09ICdwbGFjZScpIHJldHVybiBgJHtkaXNwbGF5TmFtZX0gcXVlZGEgY29tbyBsdWdhciBhY3Rpdm8uYDtcbiAgaWYgKGNhcmQudHlwZSA9PT0gJ2FjdGlvbicgfHwgY2FyZC50eXBlID09PSAnZXZlbnQnKSByZXR1cm4gYCR7ZGlzcGxheU5hbWV9IGZ1ZSBqdWdhZGEuYDtcbiAgaWYgKGNhcmQudHlwZSA9PT0gJ3dpc2RvbScpIHJldHVybiBgJHtkaXNwbGF5TmFtZX0gZnVlIHJldmVsYWRhLmA7XG4gIGlmIChjYXJkLnR5cGUgPT09ICd0b29sJykgcmV0dXJuIGAke2Rpc3BsYXlOYW1lfSBmdWUgZXF1aXBhZGEuYDtcbiAgcmV0dXJuIGAke2Rpc3BsYXlOYW1lfSBlbnRyYSBlbiBiYXRhbGxhLmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQXR0YWNrTGVhZGVyKFxuICBnYW1lOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIGF0dGFja2VyU2VhdDogQ2hyaXN0aWFuaXR5U2VhdCxcbiAgYXR0YWNrZXJJbnN0YW5jZUlkOiBzdHJpbmcsXG4gIG1lc3NhZ2VzOiBDaHJpc3RpYW5pdHlSdWxlTWVzc2FnZXNcbik6IENocmlzdGlhbml0eUF0dGFja1Jlc3VsdCB7XG4gIGNvbnN0IGRlZmVuZGVyU2VhdCA9IG9wcG9uZW50U2VhdChhdHRhY2tlclNlYXQpO1xuICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHwgZ2FtZS5wbGF5ZXJzW2RlZmVuZGVyU2VhdF0uYmF0dGxlWm9uZS5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHsgZ2FtZSwgYXR0YWNrZWQ6IGZhbHNlLCBhdHRhY2tlckRhbWFnZTogMCwgdGFyZ2V0RGFtYWdlOiAwLCBsb2c6IFtdIH07XG4gIH1cblxuICBjb25zdCBuZXh0ID0gc3RydWN0dXJlZENsb25lKGdhbWUpO1xuICBjb25zdCBhdHRhY2tlciA9IG5leHQucGxheWVyc1thdHRhY2tlclNlYXRdLmJhdHRsZVpvbmUuZmluZChcbiAgICBjYXJkID0+IGNhcmQuaW5zdGFuY2VJZCA9PT0gYXR0YWNrZXJJbnN0YW5jZUlkXG4gICk7XG4gIGlmICghYXR0YWNrZXIgfHwgIWF0dGFja2VyLmNhbkF0dGFjaylcbiAgICByZXR1cm4geyBnYW1lLCBhdHRhY2tlZDogZmFsc2UsIGF0dGFja2VyRGFtYWdlOiAwLCB0YXJnZXREYW1hZ2U6IDAsIGxvZzogW10gfTtcblxuICBjb25zdCBkYW1hZ2UgPSBhdHRhY2tlci5hdHRhY2s7XG4gIG5leHQucGxheWVyc1tkZWZlbmRlclNlYXRdLmxlYWRlckhwID0gTWF0aC5tYXgoMCwgbmV4dC5wbGF5ZXJzW2RlZmVuZGVyU2VhdF0ubGVhZGVySHAgLSBkYW1hZ2UpO1xuICBhdHRhY2tlci5jYW5BdHRhY2sgPSBmYWxzZTtcbiAgY29uc3QgbG9nID0gW1xuICAgIGAke2F0dGFja2VyLm5hbWV9ICR7YXR0YWNrZXJTZWF0ID09PSAnUDEnID8gbWVzc2FnZXMuYXR0YWNrc09wcG9uZW50TGVhZGVyIDogbWVzc2FnZXMuYXR0YWNrc1lvdXJMZWFkZXJ9YCxcbiAgXTtcbiAgZXZhbHVhdGVWaWN0b3J5KG5leHQsIGxvZywgbWVzc2FnZXMpO1xuICBuZXh0LnJldmlzaW9uKys7XG4gIG5leHQubG9nID0gWy4uLmxvZywgLi4ubmV4dC5sb2ddLnNsaWNlKDAsIDQpO1xuICByZXR1cm4geyBnYW1lOiBuZXh0LCBhdHRhY2tlZDogdHJ1ZSwgYXR0YWNrZXJEYW1hZ2U6IDAsIHRhcmdldERhbWFnZTogZGFtYWdlLCBsb2cgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBdHRhY2tDaGFyYWN0ZXIoXG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZSxcbiAgYXR0YWNrZXJTZWF0OiBDaHJpc3RpYW5pdHlTZWF0LFxuICBhdHRhY2tlckluc3RhbmNlSWQ6IHN0cmluZyxcbiAgdGFyZ2V0SW5zdGFuY2VJZDogc3RyaW5nLFxuICBtZXNzYWdlczogQ2hyaXN0aWFuaXR5UnVsZU1lc3NhZ2VzXG4pOiBDaHJpc3RpYW5pdHlBdHRhY2tSZXN1bHQge1xuICBjb25zdCBkZWZlbmRlclNlYXQgPSBvcHBvbmVudFNlYXQoYXR0YWNrZXJTZWF0KTtcbiAgaWYgKGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKVxuICAgIHJldHVybiB7IGdhbWUsIGF0dGFja2VkOiBmYWxzZSwgYXR0YWNrZXJEYW1hZ2U6IDAsIHRhcmdldERhbWFnZTogMCwgbG9nOiBbXSB9O1xuXG4gIGNvbnN0IG5leHQgPSBzdHJ1Y3R1cmVkQ2xvbmUoZ2FtZSk7XG4gIGNvbnN0IGF0dGFja2VyID0gbmV4dC5wbGF5ZXJzW2F0dGFja2VyU2VhdF0uYmF0dGxlWm9uZS5maW5kKFxuICAgIGNhcmQgPT4gY2FyZC5pbnN0YW5jZUlkID09PSBhdHRhY2tlckluc3RhbmNlSWRcbiAgKTtcbiAgY29uc3QgdGFyZ2V0ID0gbmV4dC5wbGF5ZXJzW2RlZmVuZGVyU2VhdF0uYmF0dGxlWm9uZS5maW5kKFxuICAgIGNhcmQgPT4gY2FyZC5pbnN0YW5jZUlkID09PSB0YXJnZXRJbnN0YW5jZUlkXG4gICk7XG4gIGlmICghYXR0YWNrZXIgfHwgIXRhcmdldCB8fCAhYXR0YWNrZXIuY2FuQXR0YWNrKSB7XG4gICAgcmV0dXJuIHsgZ2FtZSwgYXR0YWNrZWQ6IGZhbHNlLCBhdHRhY2tlckRhbWFnZTogMCwgdGFyZ2V0RGFtYWdlOiAwLCBsb2c6IFtdIH07XG4gIH1cblxuICB0YXJnZXQuY3VycmVudEhwIC09IGF0dGFja2VyLmF0dGFjaztcbiAgYXR0YWNrZXIuY3VycmVudEhwIC09IHRhcmdldC5hdHRhY2s7XG4gIGF0dGFja2VyLmNhbkF0dGFjayA9IGZhbHNlO1xuICBjbGVhbnVwRGVzdHJveWVkKG5leHQucGxheWVyc1thdHRhY2tlclNlYXRdLCBuZXh0KTtcbiAgY2xlYW51cERlc3Ryb3llZChuZXh0LnBsYXllcnNbZGVmZW5kZXJTZWF0XSwgbmV4dCk7XG4gIGNvbnN0IGxvZyA9IFtgJHthdHRhY2tlci5uYW1lfSAke21lc3NhZ2VzLmNvbWJhdHNBZ2FpbnN0fSAke3RhcmdldC5uYW1lfS5gXTtcbiAgZXZhbHVhdGVWaWN0b3J5KG5leHQsIGxvZywgbWVzc2FnZXMpO1xuICBuZXh0LnJldmlzaW9uKys7XG4gIG5leHQubG9nID0gWy4uLmxvZywgLi4ubmV4dC5sb2ddLnNsaWNlKDAsIDQpO1xuXG4gIHJldHVybiB7XG4gICAgZ2FtZTogbmV4dCxcbiAgICBhdHRhY2tlZDogdHJ1ZSxcbiAgICBhdHRhY2tlckRhbWFnZTogdGFyZ2V0LmF0dGFjayxcbiAgICB0YXJnZXREYW1hZ2U6IGF0dGFja2VyLmF0dGFjayxcbiAgICBsb2csXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZHZhbmNlVHVybihcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBtZXNzYWdlczogQ2hyaXN0aWFuaXR5UnVsZU1lc3NhZ2VzXG4pOiBzdHJpbmdbXSB7XG4gIGdhbWUucGxheWVyc1tnYW1lLnR1cm5Pd25lcl0udGVtcG9yYXJ5T2ZmZXJpbmdSZXNlcnZlID0gMDtcbiAgZ2FtZS50dXJuT3duZXIgPSBvcHBvbmVudFNlYXQoZ2FtZS50dXJuT3duZXIpO1xuICBnYW1lLnR1cm5Db3VudCsrO1xuICBjb25zdCBjdXJyZW50ID0gZ2FtZS5wbGF5ZXJzW2dhbWUudHVybk93bmVyXTtcbiAgY3VycmVudC5vZmZlcmluZ1BsYXllZFRoaXNUdXJuID0gZmFsc2U7XG4gIGN1cnJlbnQub2ZmZXJpbmdzID0gY3VycmVudC5vZmZlcmluZ3MubWFwKG9mZmVyaW5nID0+ICh7XG4gICAgLi4ub2ZmZXJpbmcsXG4gICAgcmVhZHk6IHRydWUsXG4gICAgYWJpbGl0eVVzZWRUaGlzVHVybjogZmFsc2UsXG4gIH0pKTtcbiAgY3VycmVudC5iYXR0bGVab25lID0gY3VycmVudC5iYXR0bGVab25lLm1hcChjYXJkID0+ICh7IC4uLmNhcmQsIGNhbkF0dGFjazogdHJ1ZSB9KSk7XG4gIGNvbnN0IGRyYXduQ2FyZCA9IGdhbWUuc2hhcmVkRGVjay5zaGlmdCgpO1xuICBjb25zdCBsb2c6IHN0cmluZ1tdID0gW107XG4gIGlmIChkcmF3bkNhcmQpIHtcbiAgICBpZiAoY3VycmVudC5oYW5kKSB7XG4gICAgICBjdXJyZW50LmhhbmQucHVzaChkcmF3bkNhcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50LmhhbmRDb3VudCA9IChjdXJyZW50LmhhbmRDb3VudCA/PyAwKSArIDE7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGV2YWx1YXRlVmljdG9yeShnYW1lLCBsb2csIG1lc3NhZ2VzKTtcbiAgfVxuICByZXR1cm4gW1xuICAgIGRyYXduQ2FyZCA/IGAke2N1cnJlbnQuZGlzcGxheU5hbWV9ICR7bWVzc2FnZXMuZHJhd3NDYXJkfWAgOiBtZXNzYWdlcy5kZWNrSXNFbXB0eSxcbiAgICBgJHttZXNzYWdlcy50dXJuT2Z9ICR7Y3VycmVudC5kaXNwbGF5TmFtZX0uYCxcbiAgICAuLi5sb2csXG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmFsdWF0ZVZpY3RvcnkoXG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZSxcbiAgbG9nOiBzdHJpbmdbXSxcbiAgbWVzc2FnZXM6IENocmlzdGlhbml0eVJ1bGVNZXNzYWdlc1xuKTogdm9pZCB7XG4gIGlmIChnYW1lLnBsYXllcnMuUDEubGVhZGVySHAgPiAwICYmIGdhbWUucGxheWVycy5QMi5sZWFkZXJIcCA+IDAgJiYgZ2FtZS5zaGFyZWREZWNrLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuO1xuICBnYW1lLnN0YXR1cyA9ICdmaW5pc2hlZCc7XG4gIGNvbnN0IHdpbm5lcjogQ2hyaXN0aWFuaXR5U2VhdCA9XG4gICAgZ2FtZS5wbGF5ZXJzLlAxLmxlYWRlckhwIDw9IDBcbiAgICAgID8gJ1AyJ1xuICAgICAgOiBnYW1lLnBsYXllcnMuUDIubGVhZGVySHAgPD0gMFxuICAgICAgICA/ICdQMSdcbiAgICAgICAgOiBnYW1lLnBsYXllcnMuUDEubGVhZGVySHAgPj0gZ2FtZS5wbGF5ZXJzLlAyLmxlYWRlckhwXG4gICAgICAgICAgPyAnUDEnXG4gICAgICAgICAgOiAnUDInO1xuICBnYW1lLm1hdGNoU2NvcmVbd2lubmVyXSArPSAxO1xuICBsb2cucHVzaCh3aW5uZXIgPT09ICdQMScgPyBtZXNzYWdlcy55b3VXaW4gOiBtZXNzYWdlcy5vcHBvbmVudFdpbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW51cERlc3Ryb3llZChcbiAgcGxheWVyOiBDaHJpc3RpYW5pdHlQbGF5ZXJTdGF0ZSxcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlXG4pOiB2b2lkIHtcbiAgY29uc3QgZGVzdHJveWVkID0gcGxheWVyLmJhdHRsZVpvbmUuZmlsdGVyKGNhcmQgPT4gY2FyZC5jdXJyZW50SHAgPD0gMCk7XG4gIGlmICghZGVzdHJveWVkLmxlbmd0aCkgcmV0dXJuO1xuICBnYW1lLmhpc3Rvcnlab25lLnB1c2goLi4uZGVzdHJveWVkLm1hcChjYXJkID0+IGNhcmQuY2FyZElkKSk7XG4gIHBsYXllci5iYXR0bGVab25lID0gcGxheWVyLmJhdHRsZVpvbmUuZmlsdGVyKGNhcmQgPT4gY2FyZC5jdXJyZW50SHAgPiAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwZW5kT2ZmZXJpbmdzKHBsYXllcjogQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGUsIGNvc3Q6IG51bWJlcik6IHZvaWQge1xuICBsZXQgcmVtYWluaW5nID0gY29zdDtcbiAgY29uc3QgdGVtcG9yYXJ5UmVzZXJ2ZSA9IHBsYXllci50ZW1wb3JhcnlPZmZlcmluZ1Jlc2VydmUgPz8gMDtcbiAgaWYgKHRlbXBvcmFyeVJlc2VydmUgPiAwKSB7XG4gICAgY29uc3Qgc3BlbnRUZW1wb3JhcnlSZXNlcnZlID0gTWF0aC5taW4odGVtcG9yYXJ5UmVzZXJ2ZSwgcmVtYWluaW5nKTtcbiAgICBwbGF5ZXIudGVtcG9yYXJ5T2ZmZXJpbmdSZXNlcnZlID0gdGVtcG9yYXJ5UmVzZXJ2ZSAtIHNwZW50VGVtcG9yYXJ5UmVzZXJ2ZTtcbiAgICByZW1haW5pbmcgLT0gc3BlbnRUZW1wb3JhcnlSZXNlcnZlO1xuICB9XG4gIHBsYXllci5vZmZlcmluZ3MgPSBwbGF5ZXIub2ZmZXJpbmdzLm1hcChvZmZlcmluZyA9PiB7XG4gICAgaWYgKHJlbWFpbmluZyA8PSAwIHx8ICFvZmZlcmluZy5yZWFkeSkgcmV0dXJuIG9mZmVyaW5nO1xuICAgIHJlbWFpbmluZyAtPSBvZmZlcmluZy52YWx1ZTtcbiAgICByZXR1cm4geyAuLi5vZmZlcmluZywgcmVhZHk6IGZhbHNlIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvZmZlcmluZ0FiaWxpdHlSZXNlcnZlR2FpbihcbiAgYWJpbGl0eVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZmFsbGJhY2tWYWx1ZTogbnVtYmVyXG4pOiBudW1iZXIge1xuICBjb25zdCBtYXRjaCA9IGFiaWxpdHlUZXh0Py5tYXRjaCgvdmFsb3IgZGUgKFxcZCspIG9mcmVuZGFzPy9pKTtcbiAgY29uc3QgcGFyc2VkID0gbWF0Y2ggPyBOdW1iZXIobWF0Y2hbMV0pIDogTnVtYmVyLk5hTjtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShwYXJzZWQpICYmIHBhcnNlZCA+IDAgPyBwYXJzZWQgOiBNYXRoLm1heCgxLCBmYWxsYmFja1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wcG9uZW50U2VhdChzZWF0OiBDaHJpc3RpYW5pdHlTZWF0KTogQ2hyaXN0aWFuaXR5U2VhdCB7XG4gIHJldHVybiBzZWF0ID09PSAnUDEnID8gJ1AyJyA6ICdQMSc7XG59XG4iXX0=
|
|
273
|
+
// --- Effect resolution (H7) ---
|
|
274
|
+
function resolveCardEffect(game, card, seat) {
|
|
275
|
+
const text = card.abilities?.[0]?.text ?? '';
|
|
276
|
+
switch (card.strategy) {
|
|
277
|
+
case 'directdamage':
|
|
278
|
+
effectDirectDamage(game, card, text, seat);
|
|
279
|
+
break;
|
|
280
|
+
case 'restore':
|
|
281
|
+
effectRestore(game, card, text, seat);
|
|
282
|
+
break;
|
|
283
|
+
case 'draw':
|
|
284
|
+
effectDraw(game, card, text, seat);
|
|
285
|
+
break;
|
|
286
|
+
case 'discard':
|
|
287
|
+
effectDiscard(game, card, text, seat);
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
function effectDirectDamage(game, card, text, seat) {
|
|
292
|
+
const opponent = opponentSeat(seat);
|
|
293
|
+
const lower = text.toLowerCase();
|
|
294
|
+
let dmg;
|
|
295
|
+
if (lower.includes('tantos')) {
|
|
296
|
+
dmg = game.players[seat].battleZone.length;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
dmg = parseSpanishNumber(text);
|
|
300
|
+
}
|
|
301
|
+
if (dmg <= 0)
|
|
302
|
+
return;
|
|
303
|
+
game.players[opponent].leaderHp = Math.max(0, game.players[opponent].leaderHp - dmg);
|
|
304
|
+
}
|
|
305
|
+
function effectRestore(game, card, text, seat) {
|
|
306
|
+
const lower = text.toLowerCase();
|
|
307
|
+
const n = Math.max(1, parseSpanishNumber(text) || 1);
|
|
308
|
+
if (lower.includes('los líderes') || lower.includes('los lideres')) {
|
|
309
|
+
for (const s of ['P1', 'P2']) {
|
|
310
|
+
const p = game.players[s];
|
|
311
|
+
p.leaderHp = Math.min(p.leaderMaxHp ?? 30, p.leaderHp + n);
|
|
312
|
+
}
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
if (lower.includes('tus personajes') || lower.includes('personajes en juego')) {
|
|
316
|
+
for (const ch of game.players[seat].battleZone) {
|
|
317
|
+
ch.currentHp = Math.min(ch.maxHp, ch.currentHp + n);
|
|
318
|
+
}
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
if (lower.includes('del líder') ||
|
|
322
|
+
lower.includes('al líder') ||
|
|
323
|
+
lower.includes('del lider') ||
|
|
324
|
+
lower.includes('al lider')) {
|
|
325
|
+
const p = game.players[seat];
|
|
326
|
+
p.leaderHp = Math.min(p.leaderMaxHp ?? 30, p.leaderHp + n);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
function effectDraw(game, card, text, seat) {
|
|
330
|
+
const lower = text.toLowerCase();
|
|
331
|
+
if (lower.includes('los jugadores')) {
|
|
332
|
+
const n = Math.max(1, parseSpanishNumber(text) || 1);
|
|
333
|
+
for (let i = 0; i < n; i++) {
|
|
334
|
+
drawCardFor(game, 'P1');
|
|
335
|
+
drawCardFor(game, 'P2');
|
|
336
|
+
}
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
if (lower.includes('por cada personaje oponente')) {
|
|
340
|
+
const n = game.players[opponentSeat(seat)].battleZone.length;
|
|
341
|
+
for (let i = 0; i < n; i++)
|
|
342
|
+
drawCardFor(game, seat);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
const n = Math.max(1, parseSpanishNumber(text) || 1);
|
|
346
|
+
for (let i = 0; i < n; i++)
|
|
347
|
+
drawCardFor(game, seat);
|
|
348
|
+
}
|
|
349
|
+
function effectDiscard(game, card, text, seat) {
|
|
350
|
+
const lower = text.toLowerCase();
|
|
351
|
+
const opponent = opponentSeat(seat);
|
|
352
|
+
if (lower.includes('ambos jugadores descartan su mano') ||
|
|
353
|
+
lower.includes('los jugadores descartan su mano')) {
|
|
354
|
+
for (const s of ['P1', 'P2']) {
|
|
355
|
+
const p = game.players[s];
|
|
356
|
+
game.historyZone.push(...(p.hand ?? []));
|
|
357
|
+
p.hand = [];
|
|
358
|
+
}
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
if ((lower.includes('oponente') && lower.includes('azar')) ||
|
|
362
|
+
lower.includes('tu oponente descarta')) {
|
|
363
|
+
const n = Math.max(1, parseSpanishNumber(text) || 1);
|
|
364
|
+
const op = game.players[opponent];
|
|
365
|
+
const hand = op.hand ?? [];
|
|
366
|
+
let seed = game.revision * 31 + game.turnCount * 7;
|
|
367
|
+
for (let i = 0; i < n && hand.length > 0; i++) {
|
|
368
|
+
seed = (seed * 1664525 + 1013904223) & 0xffffffff;
|
|
369
|
+
const idx = Math.abs(seed) % hand.length;
|
|
370
|
+
game.historyZone.push(hand[idx]);
|
|
371
|
+
hand.splice(idx, 1);
|
|
372
|
+
}
|
|
373
|
+
op.hand = hand;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
function drawCardFor(game, seat) {
|
|
377
|
+
const card = game.sharedDeck.shift();
|
|
378
|
+
if (!card)
|
|
379
|
+
return;
|
|
380
|
+
const p = game.players[seat];
|
|
381
|
+
if (p.hand)
|
|
382
|
+
p.hand.push(card);
|
|
383
|
+
else
|
|
384
|
+
p.handCount = (p.handCount ?? 0) + 1;
|
|
385
|
+
}
|
|
386
|
+
function parseSpanishNumber(text) {
|
|
387
|
+
const words = {
|
|
388
|
+
un: 1,
|
|
389
|
+
una: 1,
|
|
390
|
+
uno: 1,
|
|
391
|
+
dos: 2,
|
|
392
|
+
tres: 3,
|
|
393
|
+
cuatro: 4,
|
|
394
|
+
cinco: 5,
|
|
395
|
+
seis: 6,
|
|
396
|
+
siete: 7,
|
|
397
|
+
ocho: 8,
|
|
398
|
+
nueve: 9,
|
|
399
|
+
diez: 10,
|
|
400
|
+
};
|
|
401
|
+
const digitMatch = text.match(/\b(\d+)\b/);
|
|
402
|
+
if (digitMatch)
|
|
403
|
+
return parseInt(digitMatch[1], 10);
|
|
404
|
+
const lower = text.toLowerCase();
|
|
405
|
+
for (const [word, n] of Object.entries(words)) {
|
|
406
|
+
if (new RegExp(`\\b${word}\\b`).test(lower))
|
|
407
|
+
return n;
|
|
408
|
+
}
|
|
409
|
+
return 0;
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyaXN0aWFuaXR5LXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL2NocmlzdGlhbml0eS1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFzQzNDLE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBK0I7SUFDNUQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEUsTUFBTSxDQUFDLHdCQUF3QixJQUFJLENBQUMsQ0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQStCO0lBQzVELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FDekIsSUFBMkIsRUFDM0IsSUFBc0IsRUFDdEIsSUFBZ0M7SUFFaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVO1FBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0Is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LEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUF1QixFQUFFLENBQUM7WUFDbkQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUUsQ0FBUyxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztRQUM5RSxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0MsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFDRCxJQUNFLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQzFCLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBRSxDQUFTLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQ2pCLElBQTJCLEVBQzNCLElBQWdDLEVBQ2hDLElBQVksRUFDWixJQUFzQjtJQUV0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNCLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEIsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixJQUEyQixFQUMzQixJQUFnQyxFQUNoQyxJQUFZLEVBQ1osSUFBc0I7SUFFdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxJQUNFLEtBQUssQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUM7UUFDbkQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUNqRCxDQUFDO1FBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQXVCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFDRCxJQUNFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFDdEMsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBQ2xELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDakIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUEyQixFQUFFLElBQXNCO0lBQ3RFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBQ2xCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsSUFBSSxDQUFDLENBQUMsSUFBSTtRQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOztRQUN6QixDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBWTtJQUN0QyxNQUFNLEtBQUssR0FBMkI7UUFDcEMsRUFBRSxFQUFFLENBQUM7UUFDTCxHQUFHLEVBQUUsQ0FBQztRQUNOLEdBQUcsRUFBRSxDQUFDO1FBQ04sR0FBRyxFQUFFLENBQUM7UUFDTixJQUFJLEVBQUUsQ0FBQztRQUNQLE1BQU0sRUFBRSxDQUFDO1FBQ1QsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLEVBQUUsQ0FBQztRQUNQLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxFQUFFLENBQUM7UUFDUCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQztJQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsSUFBSSxVQUFVO1FBQUUsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlDLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hyaXN0aWFuaXR5Q2FyZERlZmluaXRpb24sXG4gIENocmlzdGlhbml0eUNoYXJhY3Rlckluc3RhbmNlLFxuICBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIENocmlzdGlhbml0eVBsYXllclN0YXRlLFxuICBDaHJpc3RpYW5pdHlTZWF0LFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IENIUklTVElBTklUWV9CQVRUTEVfU0xPVFMgPSA0O1xuXG5leHBvcnQgaW50ZXJmYWNlIENocmlzdGlhbml0eVJ1bGVNZXNzYWdlcyB7XG4gIGF0dGFja3NPcHBvbmVudExlYWRlcjogc3RyaW5nO1xuICBhdHRhY2tzWW91ckxlYWRlcjogc3RyaW5nO1xuICBjb21iYXRzQWdhaW5zdDogc3RyaW5nO1xuICBkcmF3c0NhcmQ6IHN0cmluZztcbiAgZGVja0lzRW1wdHk6IHN0cmluZztcbiAgdHVybk9mOiBzdHJpbmc7XG4gIHlvdVdpbjogc3RyaW5nO1xuICBvcHBvbmVudFdpbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaHJpc3RpYW5pdHlQbGF5Q2FyZFJlc3VsdCB7XG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZTtcbiAgcGxheWVkOiBib29sZWFuO1xuICBwbGF5ZWRPZmZlcmluZ1ZhbHVlOiBudW1iZXI7XG4gIHNwZW50T2ZmZXJpbmdzOiBudW1iZXI7XG4gIGxvZzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hyaXN0aWFuaXR5QXR0YWNrUmVzdWx0IHtcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlO1xuICBhdHRhY2tlZDogYm9vbGVhbjtcbiAgYXR0YWNrZXJEYW1hZ2U6IG51bWJlcjtcbiAgdGFyZ2V0RGFtYWdlOiBudW1iZXI7XG4gIGxvZzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hyaXN0aWFuaXR5T2ZmZXJpbmdBYmlsaXR5UmVzdWx0IHtcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlO1xuICByZXNvbHZlZDogYm9vbGVhbjtcbiAgbGVhZGVyRGFtYWdlOiBudW1iZXI7XG4gIHJlc2VydmVHYWluOiBudW1iZXI7XG4gIHNwZW50T2ZmZXJpbmdzOiBudW1iZXI7XG4gIGxvZzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkeU9mZmVyaW5ncyhwbGF5ZXI6IENocmlzdGlhbml0eVBsYXllclN0YXRlKTogbnVtYmVyIHtcbiAgcmV0dXJuIHBsYXllci5vZmZlcmluZ3MucmVkdWNlKFxuICAgICh0b3RhbCwgb2ZmZXJpbmcpID0+IHRvdGFsICsgKG9mZmVyaW5nLnJlYWR5ID8gb2ZmZXJpbmcudmFsdWUgOiAwKSxcbiAgICBwbGF5ZXIudGVtcG9yYXJ5T2ZmZXJpbmdSZXNlcnZlID8/IDBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvdGFsT2ZmZXJpbmdzKHBsYXllcjogQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGUpOiBudW1iZXIge1xuICByZXR1cm4gcGxheWVyLm9mZmVyaW5ncy5yZWR1Y2UoKHRvdGFsLCBvZmZlcmluZykgPT4gdG90YWwgKyBvZmZlcmluZy52YWx1ZSwgMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5QbGF5Q2FyZChcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBzZWF0OiBDaHJpc3RpYW5pdHlTZWF0LFxuICBjYXJkOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvblxuKTogYm9vbGVhbiB7XG4gIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCBnYW1lLnR1cm5Pd25lciAhPT0gc2VhdCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwbGF5ZXIgPSBnYW1lLnBsYXllcnNbc2VhdF07XG4gIGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHJldHVybiAhcGxheWVyLm9mZmVyaW5nUGxheWVkVGhpc1R1cm47XG4gIGlmIChjYXJkLnR5cGUgPT09ICdjaGFyYWN0ZXInKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlYWR5T2ZmZXJpbmdzKHBsYXllcikgPj0gKGNhcmQuY29zdCA/PyAwKSAmJlxuICAgICAgcGxheWVyLmJhdHRsZVpvbmUubGVuZ3RoIDwgQ0hSSVNUSUFOSVRZX0JBVFRMRV9TTE9UU1xuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGNhcmQudHlwZSA9PT0gJ2FjdGlvbicgfHxcbiAgICBjYXJkLnR5cGUgPT09ICd3aXNkb20nIHx8XG4gICAgY2FyZC50eXBlID09PSAnZXZlbnQnIHx8XG4gICAgY2FyZC50eXBlID09PSAndG9vbCdcbiAgKSB7XG4gICAgcmV0dXJuIHJlYWR5T2ZmZXJpbmdzKHBsYXllcikgPj0gKGNhcmQuY29zdCA/PyAwKTtcbiAgfVxuICBpZiAoY2FyZC50eXBlID09PSAncGxhY2UnKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxheUNhcmRGcm9tSGFuZChcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBzZWF0OiBDaHJpc3RpYW5pdHlTZWF0LFxuICBjYXJkOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbixcbiAgb3B0aW9uczogeyBzbG90SW5kZXg/OiBudW1iZXI7IGRpc3BsYXlOYW1lPzogc3RyaW5nIH0gPSB7fVxuKTogQ2hyaXN0aWFuaXR5UGxheUNhcmRSZXN1bHQge1xuICBpZiAoIWNhblBsYXlDYXJkKGdhbWUsIHNlYXQsIGNhcmQpKSB7XG4gICAgcmV0dXJuIHsgZ2FtZSwgcGxheWVkOiBmYWxzZSwgcGxheWVkT2ZmZXJpbmdWYWx1ZTogMCwgc3BlbnRPZmZlcmluZ3M6IDAsIGxvZzogW10gfTtcbiAgfVxuXG4gIGNvbnN0IG5leHQgPSBzdHJ1Y3R1cmVkQ2xvbmUoZ2FtZSk7XG4gIGNvbnN0IHBsYXllciA9IG5leHQucGxheWVyc1tzZWF0XTtcbiAgY29uc3QgaGFuZEluZGV4ID0gcGxheWVyLmhhbmQ/LmluZGV4T2YoY2FyZC5pZCkgPz8gLTE7XG4gIGlmIChoYW5kSW5kZXggPCAwIHx8ICFwbGF5ZXIuaGFuZCkge1xuICAgIHJldHVybiB7IGdhbWUsIHBsYXllZDogZmFsc2UsIHBsYXllZE9mZmVyaW5nVmFsdWU6IDAsIHNwZW50T2ZmZXJpbmdzOiAwLCBsb2c6IFtdIH07XG4gIH1cblxuICBjb25zdCBkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUgPz8gY2FyZC5uYW1lO1xuICBsZXQgcGxheWVkT2ZmZXJpbmdWYWx1ZSA9IDA7XG4gIGxldCBzcGVudE9mZmVyaW5ncyA9IDA7XG5cbiAgcGxheWVyLmhhbmQuc3BsaWNlKGhhbmRJbmRleCwgMSk7XG4gIGlmIChjYXJkLnR5cGUgPT09ICdvZmZlcmluZycpIHtcbiAgICBwbGF5ZWRPZmZlcmluZ1ZhbHVlID0gY2FyZC5vZmZlcmluZ1ZhbHVlID8/IGNhcmQubGlmZSA/PyAxO1xuICAgIHBsYXllci5vZmZlcmluZ3MucHVzaCh7XG4gICAgICBpbnN0YW5jZUlkOiBgJHtzZWF0LnRvTG93ZXJDYXNlKCl9X29mZmVyaW5nXyR7bmV4dC5yZXZpc2lvbiArIDF9YCxcbiAgICAgIGNhcmRJZDogY2FyZC5pZCxcbiAgICAgIG5hbWU6IGRpc3BsYXlOYW1lLFxuICAgICAgb3duZXI6IHNlYXQsXG4gICAgICByZWFkeTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBwbGF5ZWRPZmZlcmluZ1ZhbHVlLFxuICAgICAgYWJpbGl0eU5hbWU6IGNhcmQuYWJpbGl0eU5hbWUsXG4gICAgICBhYmlsaXR5VGV4dDogY2FyZC5hYmlsaXR5VGV4dCxcbiAgICAgIGFiaWxpdHlDb3N0OiBjYXJkLmFiaWxpdHlDb3N0LFxuICAgIH0pO1xuICAgIHBsYXllci5vZmZlcmluZ1BsYXllZFRoaXNUdXJuID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChjYXJkLnR5cGUgPT09ICdjaGFyYWN0ZXInKSB7XG4gICAgY29uc3Qgb2NjdXBpZWRTbG90cyA9IG5ldyBTZXQoXG4gICAgICBwbGF5ZXIuYmF0dGxlWm9uZS5tYXAoKGNoYXJhY3RlciwgaW5kZXgpID0+XG4gICAgICAgIE51bWJlci5pc0ludGVnZXIoY2hhcmFjdGVyLnNsb3QpID8gKGNoYXJhY3Rlci5zbG90ID8/IGluZGV4KSA6IGluZGV4XG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCB0YXJnZXRTbG90ID0gb3B0aW9ucy5zbG90SW5kZXggPz8gWzAsIDEsIDIsIDNdLmZpbmQoaW5kZXggPT4gIW9jY3VwaWVkU2xvdHMuaGFzKGluZGV4KSk7XG4gICAgaWYgKHRhcmdldFNsb3QgPT09IHVuZGVmaW5lZCB8fCBvY2N1cGllZFNsb3RzLmhhcyh0YXJnZXRTbG90KSkge1xuICAgICAgcmV0dXJuIHsgZ2FtZSwgcGxheWVkOiBmYWxzZSwgcGxheWVkT2ZmZXJpbmdWYWx1ZTogMCwgc3BlbnRPZmZlcmluZ3M6IDAsIGxvZzogW10gfTtcbiAgICB9XG4gICAgc3BlbnRPZmZlcmluZ3MgPSBjYXJkLmNvc3QgPz8gMDtcbiAgICBzcGVuZE9mZmVyaW5ncyhwbGF5ZXIsIHNwZW50T2ZmZXJpbmdzKTtcbiAgICBjb25zdCBsaWZlID0gY2FyZC5saWZlID8/IDE7XG4gICAgcGxheWVyLmJhdHRsZVpvbmUucHVzaCh7XG4gICAgICBpbnN0YW5jZUlkOiBgJHtzZWF0LnRvTG93ZXJDYXNlKCl9XyR7bmV4dC5yZXZpc2lvbiArIDF9XyR7cGxheWVyLmJhdHRsZVpvbmUubGVuZ3RofWAsXG4gICAgICBjYXJkSWQ6IGNhcmQuaWQsXG4gICAgICBuYW1lOiBkaXNwbGF5TmFtZSxcbiAgICAgIG93bmVyOiBzZWF0LFxuICAgICAgY29udHJvbGxlcjogc2VhdCxcbiAgICAgIHNsb3Q6IHRhcmdldFNsb3QsXG4gICAgICBhdHRhY2s6IGNhcmQuYXR0YWNrID8/IDAsXG4gICAgICBjdXJyZW50SHA6IGxpZmUsXG4gICAgICBtYXhIcDogbGlmZSxcbiAgICAgIGNhbkF0dGFjazogZmFsc2UsXG4gICAgfSk7XG4gICAgcGxheWVyLmJhdHRsZVpvbmUuc29ydCgobGVmdCwgcmlnaHQpID0+IChsZWZ0LnNsb3QgPz8gMCkgLSAocmlnaHQuc2xvdCA/PyAwKSk7XG4gIH0gZWxzZSBpZiAoXG4gICAgY2FyZC50eXBlID09PSAnYWN0aW9uJyB8fFxuICAgIGNhcmQudHlwZSA9PT0gJ3dpc2RvbScgfHxcbiAgICBjYXJkLnR5cGUgPT09ICdldmVudCcgfHxcbiAgICBjYXJkLnR5cGUgPT09ICd0b29sJ1xuICApIHtcbiAgICBzcGVudE9mZmVyaW5ncyA9IGNhcmQuY29zdCA/PyAwO1xuICAgIGlmIChzcGVudE9mZmVyaW5ncyA+IDApIHtcbiAgICAgIHNwZW5kT2ZmZXJpbmdzKHBsYXllciwgc3BlbnRPZmZlcmluZ3MpO1xuICAgIH1cbiAgICBuZXh0Lmhpc3Rvcnlab25lLnB1c2goY2FyZC5pZCk7XG4gICAgbmV4dC5wbGF5ZXJzW3NlYXRdID0gcGxheWVyO1xuICAgIHJlc29sdmVDYXJkRWZmZWN0KG5leHQsIGNhcmQsIHNlYXQpO1xuICB9IGVsc2UgaWYgKGNhcmQudHlwZSA9PT0gJ3BsYWNlJykge1xuICAgIGNvbnN0IHByZXZpb3VzUGxhY2UgPSBuZXh0LnBsYWNlWm9uZVswXTtcbiAgICBpZiAocHJldmlvdXNQbGFjZSkge1xuICAgICAgbmV4dC5oaXN0b3J5Wm9uZS5wdXNoKHByZXZpb3VzUGxhY2UpO1xuICAgIH1cbiAgICBuZXh0LnBsYWNlWm9uZSA9IFtjYXJkLmlkXTtcbiAgfVxuXG4gIG5leHQucmV2aXNpb24rKztcbiAgY29uc3QgbG9nID0gW3BsYXlDYXJkTG9nKGNhcmQsIGRpc3BsYXlOYW1lKV07XG4gIG5leHQubG9nID0gWy4uLmxvZywgLi4ubmV4dC5sb2ddLnNsaWNlKDAsIDQpO1xuICByZXR1cm4geyBnYW1lOiBuZXh0LCBwbGF5ZWQ6IHRydWUsIHBsYXllZE9mZmVyaW5nVmFsdWUsIHNwZW50T2ZmZXJpbmdzLCBsb2cgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhblVzZU9mZmVyaW5nQWJpbGl0eShcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBzZWF0OiBDaHJpc3RpYW5pdHlTZWF0LFxuICBvZmZlcmluZ0luc3RhbmNlSWQ6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCBnYW1lLnR1cm5Pd25lciAhPT0gc2VhdCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwbGF5ZXIgPSBnYW1lLnBsYXllcnNbc2VhdF07XG4gIGNvbnN0IG9mZmVyaW5nID0gcGxheWVyLm9mZmVyaW5ncy5maW5kKGNhcmQgPT4gY2FyZC5pbnN0YW5jZUlkID09PSBvZmZlcmluZ0luc3RhbmNlSWQpO1xuICBpZiAoIW9mZmVyaW5nPy5yZWFkeSB8fCAhb2ZmZXJpbmcuYWJpbGl0eU5hbWUgfHwgb2ZmZXJpbmcuYWJpbGl0eVVzZWRUaGlzVHVybikgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gcmVhZHlPZmZlcmluZ3MocGxheWVyKSA+PSAob2ZmZXJpbmcuYWJpbGl0eUNvc3QgPz8gMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT2ZmZXJpbmdBYmlsaXR5KFxuICBnYW1lOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIHNlYXQ6IENocmlzdGlhbml0eVNlYXQsXG4gIG9mZmVyaW5nSW5zdGFuY2VJZDogc3RyaW5nLFxuICBtZXNzYWdlcz86IENocmlzdGlhbml0eVJ1bGVNZXNzYWdlc1xuKTogQ2hyaXN0aWFuaXR5T2ZmZXJpbmdBYmlsaXR5UmVzdWx0IHtcbiAgaWYgKCFjYW5Vc2VPZmZlcmluZ0FiaWxpdHkoZ2FtZSwgc2VhdCwgb2ZmZXJpbmdJbnN0YW5jZUlkKSkge1xuICAgIHJldHVybiB7IGdhbWUsIHJlc29sdmVkOiBmYWxzZSwgbGVhZGVyRGFtYWdlOiAwLCByZXNlcnZlR2FpbjogMCwgc3BlbnRPZmZlcmluZ3M6IDAsIGxvZzogW10gfTtcbiAgfVxuXG4gIGNvbnN0IG5leHQgPSBzdHJ1Y3R1cmVkQ2xvbmUoZ2FtZSk7XG4gIGNvbnN0IHBsYXllciA9IG5leHQucGxheWVyc1tzZWF0XTtcbiAgY29uc3QgbGl2ZU9mZmVyaW5nID0gcGxheWVyLm9mZmVyaW5ncy5maW5kKGNhcmQgPT4gY2FyZC5pbnN0YW5jZUlkID09PSBvZmZlcmluZ0luc3RhbmNlSWQpO1xuICBpZiAoIWxpdmVPZmZlcmluZylcbiAgICByZXR1cm4geyBnYW1lLCByZXNvbHZlZDogZmFsc2UsIGxlYWRlckRhbWFnZTogMCwgcmVzZXJ2ZUdhaW46IDAsIHNwZW50T2ZmZXJpbmdzOiAwLCBsb2c6IFtdIH07XG5cbiAgY29uc3Qgc3BlbnRPZmZlcmluZ3MgPSBsaXZlT2ZmZXJpbmcuYWJpbGl0eUNvc3QgPz8gMDtcbiAgaWYgKHNwZW50T2ZmZXJpbmdzID4gMCkge1xuICAgIHNwZW5kT2ZmZXJpbmdzKHBsYXllciwgc3BlbnRPZmZlcmluZ3MpO1xuICB9XG4gIGNvbnN0IHJlc2VydmVHYWluID0gb2ZmZXJpbmdBYmlsaXR5UmVzZXJ2ZUdhaW4obGl2ZU9mZmVyaW5nLmFiaWxpdHlUZXh0LCBsaXZlT2ZmZXJpbmcudmFsdWUpO1xuICBwbGF5ZXIudGVtcG9yYXJ5T2ZmZXJpbmdSZXNlcnZlID0gKHBsYXllci50ZW1wb3JhcnlPZmZlcmluZ1Jlc2VydmUgPz8gMCkgKyByZXNlcnZlR2FpbjtcbiAgcGxheWVyLm9mZmVyaW5ncyA9IHBsYXllci5vZmZlcmluZ3MubWFwKGNhcmQgPT5cbiAgICBjYXJkLmluc3RhbmNlSWQgPT09IG9mZmVyaW5nSW5zdGFuY2VJZCA/IHsgLi4uY2FyZCwgYWJpbGl0eVVzZWRUaGlzVHVybjogdHJ1ZSB9IDogY2FyZFxuICApO1xuICBwbGF5ZXIubGVhZGVySHAgPSBNYXRoLm1heCgwLCBwbGF5ZXIubGVhZGVySHAgLSAxKTtcbiAgbmV4dC5yZXZpc2lvbisrO1xuICBjb25zdCBsb2cgPSBbYCR7bGl2ZU9mZmVyaW5nLm5hbWV9OiAke2xpdmVPZmZlcmluZy5hYmlsaXR5TmFtZX0uYF07XG4gIGlmIChtZXNzYWdlcykge1xuICAgIGV2YWx1YXRlVmljdG9yeShuZXh0LCBsb2csIG1lc3NhZ2VzKTtcbiAgfVxuICBuZXh0LmxvZyA9IFsuLi5sb2csIC4uLm5leHQubG9nXS5zbGljZSgwLCA0KTtcbiAgcmV0dXJuIHsgZ2FtZTogbmV4dCwgcmVzb2x2ZWQ6IHRydWUsIGxlYWRlckRhbWFnZTogMSwgcmVzZXJ2ZUdhaW4sIHNwZW50T2ZmZXJpbmdzLCBsb2cgfTtcbn1cblxuZnVuY3Rpb24gcGxheUNhcmRMb2coY2FyZDogQ2hyaXN0aWFuaXR5Q2FyZERlZmluaXRpb24sIGRpc3BsYXlOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoY2FyZC50eXBlID09PSAnb2ZmZXJpbmcnKSByZXR1cm4gYCR7ZGlzcGxheU5hbWV9IHF1ZWRhIGxpc3RhIGNvbW8gb2ZyZW5kYS5gO1xuICBpZiAoY2FyZC50eXBlID09PSAncGxhY2UnKSByZXR1cm4gYCR7ZGlzcGxheU5hbWV9IHF1ZWRhIGNvbW8gbHVnYXIgYWN0aXZvLmA7XG4gIGlmIChjYXJkLnR5cGUgPT09ICdhY3Rpb24nIHx8IGNhcmQudHlwZSA9PT0gJ2V2ZW50JykgcmV0dXJuIGAke2Rpc3BsYXlOYW1lfSBmdWUganVnYWRhLmA7XG4gIGlmIChjYXJkLnR5cGUgPT09ICd3aXNkb20nKSByZXR1cm4gYCR7ZGlzcGxheU5hbWV9IGZ1ZSByZXZlbGFkYS5gO1xuICBpZiAoY2FyZC50eXBlID09PSAndG9vbCcpIHJldHVybiBgJHtkaXNwbGF5TmFtZX0gZnVlIGVxdWlwYWRhLmA7XG4gIHJldHVybiBgJHtkaXNwbGF5TmFtZX0gZW50cmEgZW4gYmF0YWxsYS5gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUF0dGFja0xlYWRlcihcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBhdHRhY2tlclNlYXQ6IENocmlzdGlhbml0eVNlYXQsXG4gIGF0dGFja2VySW5zdGFuY2VJZDogc3RyaW5nLFxuICBtZXNzYWdlczogQ2hyaXN0aWFuaXR5UnVsZU1lc3NhZ2VzXG4pOiBDaHJpc3RpYW5pdHlBdHRhY2tSZXN1bHQge1xuICBjb25zdCBkZWZlbmRlclNlYXQgPSBvcHBvbmVudFNlYXQoYXR0YWNrZXJTZWF0KTtcbiAgaWYgKGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnIHx8IGdhbWUucGxheWVyc1tkZWZlbmRlclNlYXRdLmJhdHRsZVpvbmUubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7IGdhbWUsIGF0dGFja2VkOiBmYWxzZSwgYXR0YWNrZXJEYW1hZ2U6IDAsIHRhcmdldERhbWFnZTogMCwgbG9nOiBbXSB9O1xuICB9XG5cbiAgY29uc3QgbmV4dCA9IHN0cnVjdHVyZWRDbG9uZShnYW1lKTtcbiAgY29uc3QgYXR0YWNrZXIgPSBuZXh0LnBsYXllcnNbYXR0YWNrZXJTZWF0XS5iYXR0bGVab25lLmZpbmQoXG4gICAgY2FyZCA9PiBjYXJkLmluc3RhbmNlSWQgPT09IGF0dGFja2VySW5zdGFuY2VJZFxuICApO1xuICBpZiAoIWF0dGFja2VyIHx8ICFhdHRhY2tlci5jYW5BdHRhY2spXG4gICAgcmV0dXJuIHsgZ2FtZSwgYXR0YWNrZWQ6IGZhbHNlLCBhdHRhY2tlckRhbWFnZTogMCwgdGFyZ2V0RGFtYWdlOiAwLCBsb2c6IFtdIH07XG5cbiAgY29uc3QgZGFtYWdlID0gYXR0YWNrZXIuYXR0YWNrO1xuICBuZXh0LnBsYXllcnNbZGVmZW5kZXJTZWF0XS5sZWFkZXJIcCA9IE1hdGgubWF4KDAsIG5leHQucGxheWVyc1tkZWZlbmRlclNlYXRdLmxlYWRlckhwIC0gZGFtYWdlKTtcbiAgYXR0YWNrZXIuY2FuQXR0YWNrID0gZmFsc2U7XG4gIGNvbnN0IGxvZyA9IFtcbiAgICBgJHthdHRhY2tlci5uYW1lfSAke2F0dGFja2VyU2VhdCA9PT0gJ1AxJyA/IG1lc3NhZ2VzLmF0dGFja3NPcHBvbmVudExlYWRlciA6IG1lc3NhZ2VzLmF0dGFja3NZb3VyTGVhZGVyfWAsXG4gIF07XG4gIGV2YWx1YXRlVmljdG9yeShuZXh0LCBsb2csIG1lc3NhZ2VzKTtcbiAgbmV4dC5yZXZpc2lvbisrO1xuICBuZXh0LmxvZyA9IFsuLi5sb2csIC4uLm5leHQubG9nXS5zbGljZSgwLCA0KTtcbiAgcmV0dXJuIHsgZ2FtZTogbmV4dCwgYXR0YWNrZWQ6IHRydWUsIGF0dGFja2VyRGFtYWdlOiAwLCB0YXJnZXREYW1hZ2U6IGRhbWFnZSwgbG9nIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQXR0YWNrQ2hhcmFjdGVyKFxuICBnYW1lOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIGF0dGFja2VyU2VhdDogQ2hyaXN0aWFuaXR5U2VhdCxcbiAgYXR0YWNrZXJJbnN0YW5jZUlkOiBzdHJpbmcsXG4gIHRhcmdldEluc3RhbmNlSWQ6IHN0cmluZyxcbiAgbWVzc2FnZXM6IENocmlzdGlhbml0eVJ1bGVNZXNzYWdlc1xuKTogQ2hyaXN0aWFuaXR5QXR0YWNrUmVzdWx0IHtcbiAgY29uc3QgZGVmZW5kZXJTZWF0ID0gb3Bwb25lbnRTZWF0KGF0dGFja2VyU2VhdCk7XG4gIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJylcbiAgICByZXR1cm4geyBnYW1lLCBhdHRhY2tlZDogZmFsc2UsIGF0dGFja2VyRGFtYWdlOiAwLCB0YXJnZXREYW1hZ2U6IDAsIGxvZzogW10gfTtcblxuICBjb25zdCBuZXh0ID0gc3RydWN0dXJlZENsb25lKGdhbWUpO1xuICBjb25zdCBhdHRhY2tlciA9IG5leHQucGxheWVyc1thdHRhY2tlclNlYXRdLmJhdHRsZVpvbmUuZmluZChcbiAgICBjYXJkID0+IGNhcmQuaW5zdGFuY2VJZCA9PT0gYXR0YWNrZXJJbnN0YW5jZUlkXG4gICk7XG4gIGNvbnN0IHRhcmdldCA9IG5leHQucGxheWVyc1tkZWZlbmRlclNlYXRdLmJhdHRsZVpvbmUuZmluZChcbiAgICBjYXJkID0+IGNhcmQuaW5zdGFuY2VJZCA9PT0gdGFyZ2V0SW5zdGFuY2VJZFxuICApO1xuICBpZiAoIWF0dGFja2VyIHx8ICF0YXJnZXQgfHwgIWF0dGFja2VyLmNhbkF0dGFjaykge1xuICAgIHJldHVybiB7IGdhbWUsIGF0dGFja2VkOiBmYWxzZSwgYXR0YWNrZXJEYW1hZ2U6IDAsIHRhcmdldERhbWFnZTogMCwgbG9nOiBbXSB9O1xuICB9XG5cbiAgdGFyZ2V0LmN1cnJlbnRIcCAtPSBhdHRhY2tlci5hdHRhY2s7XG4gIGF0dGFja2VyLmN1cnJlbnRIcCAtPSB0YXJnZXQuYXR0YWNrO1xuICBhdHRhY2tlci5jYW5BdHRhY2sgPSBmYWxzZTtcbiAgY2xlYW51cERlc3Ryb3llZChuZXh0LnBsYXllcnNbYXR0YWNrZXJTZWF0XSwgbmV4dCk7XG4gIGNsZWFudXBEZXN0cm95ZWQobmV4dC5wbGF5ZXJzW2RlZmVuZGVyU2VhdF0sIG5leHQpO1xuICBjb25zdCBsb2cgPSBbYCR7YXR0YWNrZXIubmFtZX0gJHttZXNzYWdlcy5jb21iYXRzQWdhaW5zdH0gJHt0YXJnZXQubmFtZX0uYF07XG4gIGV2YWx1YXRlVmljdG9yeShuZXh0LCBsb2csIG1lc3NhZ2VzKTtcbiAgbmV4dC5yZXZpc2lvbisrO1xuICBuZXh0LmxvZyA9IFsuLi5sb2csIC4uLm5leHQubG9nXS5zbGljZSgwLCA0KTtcblxuICByZXR1cm4ge1xuICAgIGdhbWU6IG5leHQsXG4gICAgYXR0YWNrZWQ6IHRydWUsXG4gICAgYXR0YWNrZXJEYW1hZ2U6IHRhcmdldC5hdHRhY2ssXG4gICAgdGFyZ2V0RGFtYWdlOiBhdHRhY2tlci5hdHRhY2ssXG4gICAgbG9nLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWR2YW5jZVR1cm4oXG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZSxcbiAgbWVzc2FnZXM6IENocmlzdGlhbml0eVJ1bGVNZXNzYWdlc1xuKTogc3RyaW5nW10ge1xuICBnYW1lLnBsYXllcnNbZ2FtZS50dXJuT3duZXJdLnRlbXBvcmFyeU9mZmVyaW5nUmVzZXJ2ZSA9IDA7XG4gIGdhbWUudHVybk93bmVyID0gb3Bwb25lbnRTZWF0KGdhbWUudHVybk93bmVyKTtcbiAgZ2FtZS50dXJuQ291bnQrKztcbiAgY29uc3QgY3VycmVudCA9IGdhbWUucGxheWVyc1tnYW1lLnR1cm5Pd25lcl07XG4gIGN1cnJlbnQub2ZmZXJpbmdQbGF5ZWRUaGlzVHVybiA9IGZhbHNlO1xuICBjdXJyZW50Lm9mZmVyaW5ncyA9IGN1cnJlbnQub2ZmZXJpbmdzLm1hcChvZmZlcmluZyA9PiAoe1xuICAgIC4uLm9mZmVyaW5nLFxuICAgIHJlYWR5OiB0cnVlLFxuICAgIGFiaWxpdHlVc2VkVGhpc1R1cm46IGZhbHNlLFxuICB9KSk7XG4gIGN1cnJlbnQuYmF0dGxlWm9uZSA9IGN1cnJlbnQuYmF0dGxlWm9uZS5tYXAoY2FyZCA9PiAoeyAuLi5jYXJkLCBjYW5BdHRhY2s6IHRydWUgfSkpO1xuICBjb25zdCBkcmF3bkNhcmQgPSBnYW1lLnNoYXJlZERlY2suc2hpZnQoKTtcbiAgY29uc3QgbG9nOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoZHJhd25DYXJkKSB7XG4gICAgaWYgKGN1cnJlbnQuaGFuZCkge1xuICAgICAgY3VycmVudC5oYW5kLnB1c2goZHJhd25DYXJkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudC5oYW5kQ291bnQgPSAoY3VycmVudC5oYW5kQ291bnQgPz8gMCkgKyAxO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBldmFsdWF0ZVZpY3RvcnkoZ2FtZSwgbG9nLCBtZXNzYWdlcyk7XG4gIH1cbiAgcmV0dXJuIFtcbiAgICBkcmF3bkNhcmQgPyBgJHtjdXJyZW50LmRpc3BsYXlOYW1lfSAke21lc3NhZ2VzLmRyYXdzQ2FyZH1gIDogbWVzc2FnZXMuZGVja0lzRW1wdHksXG4gICAgYCR7bWVzc2FnZXMudHVybk9mfSAke2N1cnJlbnQuZGlzcGxheU5hbWV9LmAsXG4gICAgLi4ubG9nLFxuICBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZhbHVhdGVWaWN0b3J5KFxuICBnYW1lOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIGxvZzogc3RyaW5nW10sXG4gIG1lc3NhZ2VzOiBDaHJpc3RpYW5pdHlSdWxlTWVzc2FnZXNcbik6IHZvaWQge1xuICBpZiAoZ2FtZS5wbGF5ZXJzLlAxLmxlYWRlckhwID4gMCAmJiBnYW1lLnBsYXllcnMuUDIubGVhZGVySHAgPiAwICYmIGdhbWUuc2hhcmVkRGVjay5sZW5ndGggPiAwKVxuICAgIHJldHVybjtcbiAgZ2FtZS5zdGF0dXMgPSAnZmluaXNoZWQnO1xuICBjb25zdCB3aW5uZXI6IENocmlzdGlhbml0eVNlYXQgPVxuICAgIGdhbWUucGxheWVycy5QMS5sZWFkZXJIcCA8PSAwXG4gICAgICA/ICdQMidcbiAgICAgIDogZ2FtZS5wbGF5ZXJzLlAyLmxlYWRlckhwIDw9IDBcbiAgICAgICAgPyAnUDEnXG4gICAgICAgIDogZ2FtZS5wbGF5ZXJzLlAxLmxlYWRlckhwID49IGdhbWUucGxheWVycy5QMi5sZWFkZXJIcFxuICAgICAgICAgID8gJ1AxJ1xuICAgICAgICAgIDogJ1AyJztcbiAgZ2FtZS5tYXRjaFNjb3JlW3dpbm5lcl0gKz0gMTtcbiAgbG9nLnB1c2god2lubmVyID09PSAnUDEnID8gbWVzc2FnZXMueW91V2luIDogbWVzc2FnZXMub3Bwb25lbnRXaW5zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFudXBEZXN0cm95ZWQoXG4gIHBsYXllcjogQ2hyaXN0aWFuaXR5UGxheWVyU3RhdGUsXG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZVxuKTogdm9pZCB7XG4gIGNvbnN0IGRlc3Ryb3llZCA9IHBsYXllci5iYXR0bGVab25lLmZpbHRlcihjYXJkID0+IGNhcmQuY3VycmVudEhwIDw9IDApO1xuICBpZiAoIWRlc3Ryb3llZC5sZW5ndGgpIHJldHVybjtcbiAgZ2FtZS5oaXN0b3J5Wm9uZS5wdXNoKC4uLmRlc3Ryb3llZC5tYXAoY2FyZCA9PiBjYXJkLmNhcmRJZCkpO1xuICBwbGF5ZXIuYmF0dGxlWm9uZSA9IHBsYXllci5iYXR0bGVab25lLmZpbHRlcihjYXJkID0+IGNhcmQuY3VycmVudEhwID4gMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGVuZE9mZmVyaW5ncyhwbGF5ZXI6IENocmlzdGlhbml0eVBsYXllclN0YXRlLCBjb3N0OiBudW1iZXIpOiB2b2lkIHtcbiAgbGV0IHJlbWFpbmluZyA9IGNvc3Q7XG4gIGNvbnN0IHRlbXBvcmFyeVJlc2VydmUgPSBwbGF5ZXIudGVtcG9yYXJ5T2ZmZXJpbmdSZXNlcnZlID8/IDA7XG4gIGlmICh0ZW1wb3JhcnlSZXNlcnZlID4gMCkge1xuICAgIGNvbnN0IHNwZW50VGVtcG9yYXJ5UmVzZXJ2ZSA9IE1hdGgubWluKHRlbXBvcmFyeVJlc2VydmUsIHJlbWFpbmluZyk7XG4gICAgcGxheWVyLnRlbXBvcmFyeU9mZmVyaW5nUmVzZXJ2ZSA9IHRlbXBvcmFyeVJlc2VydmUgLSBzcGVudFRlbXBvcmFyeVJlc2VydmU7XG4gICAgcmVtYWluaW5nIC09IHNwZW50VGVtcG9yYXJ5UmVzZXJ2ZTtcbiAgfVxuICBwbGF5ZXIub2ZmZXJpbmdzID0gcGxheWVyLm9mZmVyaW5ncy5tYXAob2ZmZXJpbmcgPT4ge1xuICAgIGlmIChyZW1haW5pbmcgPD0gMCB8fCAhb2ZmZXJpbmcucmVhZHkpIHJldHVybiBvZmZlcmluZztcbiAgICByZW1haW5pbmcgLT0gb2ZmZXJpbmcudmFsdWU7XG4gICAgcmV0dXJuIHsgLi4ub2ZmZXJpbmcsIHJlYWR5OiBmYWxzZSB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb2ZmZXJpbmdBYmlsaXR5UmVzZXJ2ZUdhaW4oXG4gIGFiaWxpdHlUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGZhbGxiYWNrVmFsdWU6IG51bWJlclxuKTogbnVtYmVyIHtcbiAgY29uc3QgbWF0Y2ggPSBhYmlsaXR5VGV4dD8ubWF0Y2goL3ZhbG9yIGRlIChcXGQrKSBvZnJlbmRhcz8vaSk7XG4gIGNvbnN0IHBhcnNlZCA9IG1hdGNoID8gTnVtYmVyKG1hdGNoWzFdKSA6IE51bWJlci5OYU47XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSAmJiBwYXJzZWQgPiAwID8gcGFyc2VkIDogTWF0aC5tYXgoMSwgZmFsbGJhY2tWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcHBvbmVudFNlYXQoc2VhdDogQ2hyaXN0aWFuaXR5U2VhdCk6IENocmlzdGlhbml0eVNlYXQge1xuICByZXR1cm4gc2VhdCA9PT0gJ1AxJyA/ICdQMicgOiAnUDEnO1xufVxuXG4vLyAtLS0gRWZmZWN0IHJlc29sdXRpb24gKEg3KSAtLS1cblxuZnVuY3Rpb24gcmVzb2x2ZUNhcmRFZmZlY3QoXG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZSxcbiAgY2FyZDogQ2hyaXN0aWFuaXR5Q2FyZERlZmluaXRpb24sXG4gIHNlYXQ6IENocmlzdGlhbml0eVNlYXRcbik6IHZvaWQge1xuICBjb25zdCB0ZXh0ID0gY2FyZC5hYmlsaXRpZXM/LlswXT8udGV4dCA/PyAnJztcbiAgc3dpdGNoIChjYXJkLnN0cmF0ZWd5KSB7XG4gICAgY2FzZSAnZGlyZWN0ZGFtYWdlJzpcbiAgICAgIGVmZmVjdERpcmVjdERhbWFnZShnYW1lLCBjYXJkLCB0ZXh0LCBzZWF0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Jlc3RvcmUnOlxuICAgICAgZWZmZWN0UmVzdG9yZShnYW1lLCBjYXJkLCB0ZXh0LCBzZWF0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2RyYXcnOlxuICAgICAgZWZmZWN0RHJhdyhnYW1lLCBjYXJkLCB0ZXh0LCBzZWF0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Rpc2NhcmQnOlxuICAgICAgZWZmZWN0RGlzY2FyZChnYW1lLCBjYXJkLCB0ZXh0LCBzZWF0KTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVmZmVjdERpcmVjdERhbWFnZShcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBjYXJkOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbixcbiAgdGV4dDogc3RyaW5nLFxuICBzZWF0OiBDaHJpc3RpYW5pdHlTZWF0XG4pOiB2b2lkIHtcbiAgY29uc3Qgb3Bwb25lbnQgPSBvcHBvbmVudFNlYXQoc2VhdCk7XG4gIGNvbnN0IGxvd2VyID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICBsZXQgZG1nOiBudW1iZXI7XG4gIGlmIChsb3dlci5pbmNsdWRlcygndGFudG9zJykpIHtcbiAgICBkbWcgPSBnYW1lLnBsYXllcnNbc2VhdF0uYmF0dGxlWm9uZS5sZW5ndGg7XG4gIH0gZWxzZSB7XG4gICAgZG1nID0gcGFyc2VTcGFuaXNoTnVtYmVyKHRleHQpO1xuICB9XG4gIGlmIChkbWcgPD0gMCkgcmV0dXJuO1xuICBnYW1lLnBsYXllcnNbb3Bwb25lbnRdLmxlYWRlckhwID0gTWF0aC5tYXgoMCwgZ2FtZS5wbGF5ZXJzW29wcG9uZW50XS5sZWFkZXJIcCAtIGRtZyk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdFJlc3RvcmUoXG4gIGdhbWU6IENocmlzdGlhbml0eUdhbWVTdGF0ZSxcbiAgY2FyZDogQ2hyaXN0aWFuaXR5Q2FyZERlZmluaXRpb24sXG4gIHRleHQ6IHN0cmluZyxcbiAgc2VhdDogQ2hyaXN0aWFuaXR5U2VhdFxuKTogdm9pZCB7XG4gIGNvbnN0IGxvd2VyID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBuID0gTWF0aC5tYXgoMSwgcGFyc2VTcGFuaXNoTnVtYmVyKHRleHQpIHx8IDEpO1xuICBpZiAobG93ZXIuaW5jbHVkZXMoJ2xvcyBsw61kZXJlcycpIHx8IGxvd2VyLmluY2x1ZGVzKCdsb3MgbGlkZXJlcycpKSB7XG4gICAgZm9yIChjb25zdCBzIG9mIFsnUDEnLCAnUDInXSBhcyBDaHJpc3RpYW5pdHlTZWF0W10pIHtcbiAgICAgIGNvbnN0IHAgPSBnYW1lLnBsYXllcnNbc107XG4gICAgICBwLmxlYWRlckhwID0gTWF0aC5taW4oKHAgYXMgYW55KS5sZWFkZXJNYXhIcCA/PyAzMCwgcC5sZWFkZXJIcCArIG4pO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGxvd2VyLmluY2x1ZGVzKCd0dXMgcGVyc29uYWplcycpIHx8IGxvd2VyLmluY2x1ZGVzKCdwZXJzb25hamVzIGVuIGp1ZWdvJykpIHtcbiAgICBmb3IgKGNvbnN0IGNoIG9mIGdhbWUucGxheWVyc1tzZWF0XS5iYXR0bGVab25lKSB7XG4gICAgICBjaC5jdXJyZW50SHAgPSBNYXRoLm1pbihjaC5tYXhIcCwgY2guY3VycmVudEhwICsgbik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZiAoXG4gICAgbG93ZXIuaW5jbHVkZXMoJ2RlbCBsw61kZXInKSB8fFxuICAgIGxvd2VyLmluY2x1ZGVzKCdhbCBsw61kZXInKSB8fFxuICAgIGxvd2VyLmluY2x1ZGVzKCdkZWwgbGlkZXInKSB8fFxuICAgIGxvd2VyLmluY2x1ZGVzKCdhbCBsaWRlcicpXG4gICkge1xuICAgIGNvbnN0IHAgPSBnYW1lLnBsYXllcnNbc2VhdF07XG4gICAgcC5sZWFkZXJIcCA9IE1hdGgubWluKChwIGFzIGFueSkubGVhZGVyTWF4SHAgPz8gMzAsIHAubGVhZGVySHAgKyBuKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlZmZlY3REcmF3KFxuICBnYW1lOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsXG4gIGNhcmQ6IENocmlzdGlhbml0eUNhcmREZWZpbml0aW9uLFxuICB0ZXh0OiBzdHJpbmcsXG4gIHNlYXQ6IENocmlzdGlhbml0eVNlYXRcbik6IHZvaWQge1xuICBjb25zdCBsb3dlciA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgaWYgKGxvd2VyLmluY2x1ZGVzKCdsb3MganVnYWRvcmVzJykpIHtcbiAgICBjb25zdCBuID0gTWF0aC5tYXgoMSwgcGFyc2VTcGFuaXNoTnVtYmVyKHRleHQpIHx8IDEpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICBkcmF3Q2FyZEZvcihnYW1lLCAnUDEnKTtcbiAgICAgIGRyYXdDYXJkRm9yKGdhbWUsICdQMicpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGxvd2VyLmluY2x1ZGVzKCdwb3IgY2FkYSBwZXJzb25hamUgb3BvbmVudGUnKSkge1xuICAgIGNvbnN0IG4gPSBnYW1lLnBsYXllcnNbb3Bwb25lbnRTZWF0KHNlYXQpXS5iYXR0bGVab25lLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykgZHJhd0NhcmRGb3IoZ2FtZSwgc2VhdCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG4gPSBNYXRoLm1heCgxLCBwYXJzZVNwYW5pc2hOdW1iZXIodGV4dCkgfHwgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSBkcmF3Q2FyZEZvcihnYW1lLCBzZWF0KTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0RGlzY2FyZChcbiAgZ2FtZTogQ2hyaXN0aWFuaXR5R2FtZVN0YXRlLFxuICBjYXJkOiBDaHJpc3RpYW5pdHlDYXJkRGVmaW5pdGlvbixcbiAgdGV4dDogc3RyaW5nLFxuICBzZWF0OiBDaHJpc3RpYW5pdHlTZWF0XG4pOiB2b2lkIHtcbiAgY29uc3QgbG93ZXIgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IG9wcG9uZW50ID0gb3Bwb25lbnRTZWF0KHNlYXQpO1xuICBpZiAoXG4gICAgbG93ZXIuaW5jbHVkZXMoJ2FtYm9zIGp1Z2Fkb3JlcyBkZXNjYXJ0YW4gc3UgbWFubycpIHx8XG4gICAgbG93ZXIuaW5jbHVkZXMoJ2xvcyBqdWdhZG9yZXMgZGVzY2FydGFuIHN1IG1hbm8nKVxuICApIHtcbiAgICBmb3IgKGNvbnN0IHMgb2YgWydQMScsICdQMiddIGFzIENocmlzdGlhbml0eVNlYXRbXSkge1xuICAgICAgY29uc3QgcCA9IGdhbWUucGxheWVyc1tzXTtcbiAgICAgIGdhbWUuaGlzdG9yeVpvbmUucHVzaCguLi4ocC5oYW5kID8/IFtdKSk7XG4gICAgICBwLmhhbmQgPSBbXTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChcbiAgICAobG93ZXIuaW5jbHVkZXMoJ29wb25lbnRlJykgJiYgbG93ZXIuaW5jbHVkZXMoJ2F6YXInKSkgfHxcbiAgICBsb3dlci5pbmNsdWRlcygndHUgb3BvbmVudGUgZGVzY2FydGEnKVxuICApIHtcbiAgICBjb25zdCBuID0gTWF0aC5tYXgoMSwgcGFyc2VTcGFuaXNoTnVtYmVyKHRleHQpIHx8IDEpO1xuICAgIGNvbnN0IG9wID0gZ2FtZS5wbGF5ZXJzW29wcG9uZW50XTtcbiAgICBjb25zdCBoYW5kID0gb3AuaGFuZCA/PyBbXTtcbiAgICBsZXQgc2VlZCA9IGdhbWUucmV2aXNpb24gKiAzMSArIGdhbWUudHVybkNvdW50ICogNztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG4gJiYgaGFuZC5sZW5ndGggPiAwOyBpKyspIHtcbiAgICAgIHNlZWQgPSAoc2VlZCAqIDE2NjQ1MjUgKyAxMDEzOTA0MjIzKSAmIDB4ZmZmZmZmZmY7XG4gICAgICBjb25zdCBpZHggPSBNYXRoLmFicyhzZWVkKSAlIGhhbmQubGVuZ3RoO1xuICAgICAgZ2FtZS5oaXN0b3J5Wm9uZS5wdXNoKGhhbmRbaWR4XSk7XG4gICAgICBoYW5kLnNwbGljZShpZHgsIDEpO1xuICAgIH1cbiAgICBvcC5oYW5kID0gaGFuZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBkcmF3Q2FyZEZvcihnYW1lOiBDaHJpc3RpYW5pdHlHYW1lU3RhdGUsIHNlYXQ6IENocmlzdGlhbml0eVNlYXQpOiB2b2lkIHtcbiAgY29uc3QgY2FyZCA9IGdhbWUuc2hhcmVkRGVjay5zaGlmdCgpO1xuICBpZiAoIWNhcmQpIHJldHVybjtcbiAgY29uc3QgcCA9IGdhbWUucGxheWVyc1tzZWF0XTtcbiAgaWYgKHAuaGFuZCkgcC5oYW5kLnB1c2goY2FyZCk7XG4gIGVsc2UgcC5oYW5kQ291bnQgPSAocC5oYW5kQ291bnQgPz8gMCkgKyAxO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNwYW5pc2hOdW1iZXIodGV4dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3Qgd29yZHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICAgdW46IDEsXG4gICAgdW5hOiAxLFxuICAgIHVubzogMSxcbiAgICBkb3M6IDIsXG4gICAgdHJlczogMyxcbiAgICBjdWF0cm86IDQsXG4gICAgY2luY286IDUsXG4gICAgc2VpczogNixcbiAgICBzaWV0ZTogNyxcbiAgICBvY2hvOiA4LFxuICAgIG51ZXZlOiA5LFxuICAgIGRpZXo6IDEwLFxuICB9O1xuICBjb25zdCBkaWdpdE1hdGNoID0gdGV4dC5tYXRjaCgvXFxiKFxcZCspXFxiLyk7XG4gIGlmIChkaWdpdE1hdGNoKSByZXR1cm4gcGFyc2VJbnQoZGlnaXRNYXRjaFsxXSwgMTApO1xuICBjb25zdCBsb3dlciA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgZm9yIChjb25zdCBbd29yZCwgbl0gb2YgT2JqZWN0LmVudHJpZXMod29yZHMpKSB7XG4gICAgaWYgKG5ldyBSZWdFeHAoYFxcXFxiJHt3b3JkfVxcXFxiYCkudGVzdChsb3dlcikpIHJldHVybiBuO1xuICB9XG4gIHJldHVybiAwO1xufVxuIl19
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '4.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '4.0.591';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC41OTEnO1xuIl19
|
|
@@ -59,7 +59,7 @@ import fixWebmDuration from 'fix-webm-duration';
|
|
|
59
59
|
* Current version of valtech-components.
|
|
60
60
|
* This is automatically updated during the publish process.
|
|
61
61
|
*/
|
|
62
|
-
const VERSION = '4.0.
|
|
62
|
+
const VERSION = '4.0.591';
|
|
63
63
|
|
|
64
64
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
65
65
|
let isRefreshing = false;
|
|
@@ -63672,6 +63672,9 @@ class ChessimalsAdventureComponent {
|
|
|
63672
63672
|
t(key) {
|
|
63673
63673
|
return this.i18n.t(key, 'MiniGames');
|
|
63674
63674
|
}
|
|
63675
|
+
avatarSrc(profileId) {
|
|
63676
|
+
return `assets/games/chessimals/challenge-avatars/${profileId}.png`;
|
|
63677
|
+
}
|
|
63675
63678
|
nodeIcon(type) {
|
|
63676
63679
|
switch (type) {
|
|
63677
63680
|
case 'battle':
|
|
@@ -63776,7 +63779,16 @@ class ChessimalsAdventureComponent {
|
|
|
63776
63779
|
(click)="onNodeTap(nodeView)"
|
|
63777
63780
|
type="button"
|
|
63778
63781
|
>
|
|
63779
|
-
|
|
63782
|
+
@if (nodeView.node.profileId) {
|
|
63783
|
+
<img
|
|
63784
|
+
class="adventure-node__avatar"
|
|
63785
|
+
[src]="avatarSrc(nodeView.node.profileId)"
|
|
63786
|
+
[alt]="t(nodeView.node.titleKey)"
|
|
63787
|
+
loading="lazy"
|
|
63788
|
+
/>
|
|
63789
|
+
} @else {
|
|
63790
|
+
<span class="adventure-node__icon">{{ nodeIcon(nodeView.node.type) }}</span>
|
|
63791
|
+
}
|
|
63780
63792
|
<span class="adventure-node__label">{{ t(nodeView.node.titleKey) }}</span>
|
|
63781
63793
|
<span class="adventure-node__stars">
|
|
63782
63794
|
@for (i of [0, 1, 2]; track i) {
|
|
@@ -63800,7 +63812,7 @@ class ChessimalsAdventureComponent {
|
|
|
63800
63812
|
}
|
|
63801
63813
|
</div>
|
|
63802
63814
|
</div>
|
|
63803
|
-
`, isInline: true, styles: [".adventure-hub{padding:0 0 40px}.adventure-hub__header{padding:20px 16px 24px;text-align:center}.adventure-hub__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ion-color-medium);margin:0 0 6px}.adventure-hub__title{font-size:1.75rem;font-weight:800;margin:0 0 6px;color:var(--ion-text-color)}.adventure-hub__subtitle{font-size:.9rem;color:var(--ion-color-medium);margin:0 0 12px}.adventure-hub__stars{display:inline-flex;align-items:center;gap:4px;background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:20px;padding:4px 14px;font-weight:700;font-size:.95rem;color:var(--ion-color-warning)}.adventure-hub__stars ion-icon{color:var(--ion-color-warning);font-size:1rem}.adventure-hub__acts{display:flex;flex-direction:column;gap:16px;padding:0 12px}.adventure-act{border-radius:16px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color));overflow:hidden}.adventure-act--locked{opacity:.5}.adventure-act--done{border-color:var(--ion-color-success)}.adventure-act__head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.adventure-act__emoji{font-size:1.75rem;line-height:1;flex-shrink:0}.adventure-act__meta{flex:1;min-width:0}.adventure-act__name{font-size:1rem;font-weight:700;margin:0 0 2px;color:var(--ion-text-color)}.adventure-act__desc{font-size:.8rem;color:var(--ion-color-medium);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adventure-act__lock{color:var(--ion-color-medium);font-size:1.25rem;flex-shrink:0}.adventure-act__progress{font-size:.8rem;font-weight:700;color:var(--ion-color-medium);flex-shrink:0}.adventure-act__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:12px}.adventure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border-radius:12px;border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #f8f8f8);cursor:pointer;text-align:center;transition:transform .12s ease,border-color .12s ease}.adventure-node:active{transform:scale(.97)}.adventure-node--available{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 6%,transparent)}.adventure-node--completed{border-color:var(--ion-color-success);background:color-mix(in srgb,var(--ion-color-success) 6%,transparent)}.adventure-node--locked{opacity:.4;cursor:default}.adventure-node__icon{font-size:1.5rem;line-height:1}.adventure-node__label{font-size:.75rem;font-weight:600;color:var(--ion-text-color);line-height:1.2}.adventure-node__stars{display:flex;gap:1px}.adventure-node__star{font-size:.7rem;color:var(--ion-color-medium)}.adventure-node__star--filled{color:var(--ion-color-warning)}.adventure-node__badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;padding:2px 5px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
|
|
63815
|
+
`, isInline: true, styles: [".adventure-hub{padding:0 0 40px}.adventure-hub__header{padding:20px 16px 24px;text-align:center}.adventure-hub__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ion-color-medium);margin:0 0 6px}.adventure-hub__title{font-size:1.75rem;font-weight:800;margin:0 0 6px;color:var(--ion-text-color)}.adventure-hub__subtitle{font-size:.9rem;color:var(--ion-color-medium);margin:0 0 12px}.adventure-hub__stars{display:inline-flex;align-items:center;gap:4px;background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:20px;padding:4px 14px;font-weight:700;font-size:.95rem;color:var(--ion-color-warning)}.adventure-hub__stars ion-icon{color:var(--ion-color-warning);font-size:1rem}.adventure-hub__acts{display:flex;flex-direction:column;gap:16px;padding:0 12px}.adventure-act{border-radius:16px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color));overflow:hidden}.adventure-act--locked{opacity:.5}.adventure-act--done{border-color:var(--ion-color-success)}.adventure-act__head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.adventure-act__emoji{font-size:1.75rem;line-height:1;flex-shrink:0}.adventure-act__meta{flex:1;min-width:0}.adventure-act__name{font-size:1rem;font-weight:700;margin:0 0 2px;color:var(--ion-text-color)}.adventure-act__desc{font-size:.8rem;color:var(--ion-color-medium);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adventure-act__lock{color:var(--ion-color-medium);font-size:1.25rem;flex-shrink:0}.adventure-act__progress{font-size:.8rem;font-weight:700;color:var(--ion-color-medium);flex-shrink:0}.adventure-act__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:12px}.adventure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border-radius:12px;border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #f8f8f8);cursor:pointer;text-align:center;transition:transform .12s ease,border-color .12s ease}.adventure-node:active{transform:scale(.97)}.adventure-node--available{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 6%,transparent)}.adventure-node--completed{border-color:var(--ion-color-success);background:color-mix(in srgb,var(--ion-color-success) 6%,transparent)}.adventure-node--locked{opacity:.4;cursor:default}.adventure-node__avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid var(--ion-border-color, rgba(0, 0, 0, .1))}.adventure-node--available .adventure-node__avatar{border-color:var(--ion-color-primary)}.adventure-node--completed .adventure-node__avatar{border-color:var(--ion-color-success)}.adventure-node__icon{font-size:1.5rem;line-height:1}.adventure-node__label{font-size:.75rem;font-weight:600;color:var(--ion-text-color);line-height:1.2}.adventure-node__stars{display:flex;gap:1px}.adventure-node__star{font-size:.7rem;color:var(--ion-color-medium)}.adventure-node__star--filled{color:var(--ion-color-warning)}.adventure-node__badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;padding:2px 5px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
|
|
63804
63816
|
}
|
|
63805
63817
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChessimalsAdventureComponent, decorators: [{
|
|
63806
63818
|
type: Component,
|
|
@@ -63852,7 +63864,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
63852
63864
|
(click)="onNodeTap(nodeView)"
|
|
63853
63865
|
type="button"
|
|
63854
63866
|
>
|
|
63855
|
-
|
|
63867
|
+
@if (nodeView.node.profileId) {
|
|
63868
|
+
<img
|
|
63869
|
+
class="adventure-node__avatar"
|
|
63870
|
+
[src]="avatarSrc(nodeView.node.profileId)"
|
|
63871
|
+
[alt]="t(nodeView.node.titleKey)"
|
|
63872
|
+
loading="lazy"
|
|
63873
|
+
/>
|
|
63874
|
+
} @else {
|
|
63875
|
+
<span class="adventure-node__icon">{{ nodeIcon(nodeView.node.type) }}</span>
|
|
63876
|
+
}
|
|
63856
63877
|
<span class="adventure-node__label">{{ t(nodeView.node.titleKey) }}</span>
|
|
63857
63878
|
<span class="adventure-node__stars">
|
|
63858
63879
|
@for (i of [0, 1, 2]; track i) {
|
|
@@ -63876,7 +63897,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
63876
63897
|
}
|
|
63877
63898
|
</div>
|
|
63878
63899
|
</div>
|
|
63879
|
-
`, styles: [".adventure-hub{padding:0 0 40px}.adventure-hub__header{padding:20px 16px 24px;text-align:center}.adventure-hub__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ion-color-medium);margin:0 0 6px}.adventure-hub__title{font-size:1.75rem;font-weight:800;margin:0 0 6px;color:var(--ion-text-color)}.adventure-hub__subtitle{font-size:.9rem;color:var(--ion-color-medium);margin:0 0 12px}.adventure-hub__stars{display:inline-flex;align-items:center;gap:4px;background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:20px;padding:4px 14px;font-weight:700;font-size:.95rem;color:var(--ion-color-warning)}.adventure-hub__stars ion-icon{color:var(--ion-color-warning);font-size:1rem}.adventure-hub__acts{display:flex;flex-direction:column;gap:16px;padding:0 12px}.adventure-act{border-radius:16px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color));overflow:hidden}.adventure-act--locked{opacity:.5}.adventure-act--done{border-color:var(--ion-color-success)}.adventure-act__head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.adventure-act__emoji{font-size:1.75rem;line-height:1;flex-shrink:0}.adventure-act__meta{flex:1;min-width:0}.adventure-act__name{font-size:1rem;font-weight:700;margin:0 0 2px;color:var(--ion-text-color)}.adventure-act__desc{font-size:.8rem;color:var(--ion-color-medium);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adventure-act__lock{color:var(--ion-color-medium);font-size:1.25rem;flex-shrink:0}.adventure-act__progress{font-size:.8rem;font-weight:700;color:var(--ion-color-medium);flex-shrink:0}.adventure-act__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:12px}.adventure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border-radius:12px;border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #f8f8f8);cursor:pointer;text-align:center;transition:transform .12s ease,border-color .12s ease}.adventure-node:active{transform:scale(.97)}.adventure-node--available{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 6%,transparent)}.adventure-node--completed{border-color:var(--ion-color-success);background:color-mix(in srgb,var(--ion-color-success) 6%,transparent)}.adventure-node--locked{opacity:.4;cursor:default}.adventure-node__icon{font-size:1.5rem;line-height:1}.adventure-node__label{font-size:.75rem;font-weight:600;color:var(--ion-text-color);line-height:1.2}.adventure-node__stars{display:flex;gap:1px}.adventure-node__star{font-size:.7rem;color:var(--ion-color-medium)}.adventure-node__star--filled{color:var(--ion-color-warning)}.adventure-node__badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;padding:2px 5px}\n"] }]
|
|
63900
|
+
`, styles: [".adventure-hub{padding:0 0 40px}.adventure-hub__header{padding:20px 16px 24px;text-align:center}.adventure-hub__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ion-color-medium);margin:0 0 6px}.adventure-hub__title{font-size:1.75rem;font-weight:800;margin:0 0 6px;color:var(--ion-text-color)}.adventure-hub__subtitle{font-size:.9rem;color:var(--ion-color-medium);margin:0 0 12px}.adventure-hub__stars{display:inline-flex;align-items:center;gap:4px;background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:20px;padding:4px 14px;font-weight:700;font-size:.95rem;color:var(--ion-color-warning)}.adventure-hub__stars ion-icon{color:var(--ion-color-warning);font-size:1rem}.adventure-hub__acts{display:flex;flex-direction:column;gap:16px;padding:0 12px}.adventure-act{border-radius:16px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color));overflow:hidden}.adventure-act--locked{opacity:.5}.adventure-act--done{border-color:var(--ion-color-success)}.adventure-act__head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.adventure-act__emoji{font-size:1.75rem;line-height:1;flex-shrink:0}.adventure-act__meta{flex:1;min-width:0}.adventure-act__name{font-size:1rem;font-weight:700;margin:0 0 2px;color:var(--ion-text-color)}.adventure-act__desc{font-size:.8rem;color:var(--ion-color-medium);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adventure-act__lock{color:var(--ion-color-medium);font-size:1.25rem;flex-shrink:0}.adventure-act__progress{font-size:.8rem;font-weight:700;color:var(--ion-color-medium);flex-shrink:0}.adventure-act__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:12px}.adventure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border-radius:12px;border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #f8f8f8);cursor:pointer;text-align:center;transition:transform .12s ease,border-color .12s ease}.adventure-node:active{transform:scale(.97)}.adventure-node--available{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 6%,transparent)}.adventure-node--completed{border-color:var(--ion-color-success);background:color-mix(in srgb,var(--ion-color-success) 6%,transparent)}.adventure-node--locked{opacity:.4;cursor:default}.adventure-node__avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid var(--ion-border-color, rgba(0, 0, 0, .1))}.adventure-node--available .adventure-node__avatar{border-color:var(--ion-color-primary)}.adventure-node--completed .adventure-node__avatar{border-color:var(--ion-color-success)}.adventure-node__icon{font-size:1.5rem;line-height:1}.adventure-node__label{font-size:.75rem;font-weight:600;color:var(--ion-text-color);line-height:1.2}.adventure-node__stars{display:flex;gap:1px}.adventure-node__star{font-size:.7rem;color:var(--ion-color-medium)}.adventure-node__star--filled{color:var(--ion-color-warning)}.adventure-node__badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;padding:2px 5px}\n"] }]
|
|
63880
63901
|
}], ctorParameters: () => [] });
|
|
63881
63902
|
|
|
63882
63903
|
const ANIMALS$1 = ['eagle', 'bull', 'kangaroo', 'lion'];
|
|
@@ -68457,6 +68478,12 @@ class ChessimalsGameComponent {
|
|
|
68457
68478
|
}
|
|
68458
68479
|
backToHome() {
|
|
68459
68480
|
this.cancelActiveGameplayFeedback();
|
|
68481
|
+
const adventureNode = this.adventureNodeId();
|
|
68482
|
+
if (adventureNode) {
|
|
68483
|
+
this.adventureNodeId.set('');
|
|
68484
|
+
void this.router.navigateByUrl('/mini-games/chessimals/adventure').catch(() => undefined);
|
|
68485
|
+
return;
|
|
68486
|
+
}
|
|
68460
68487
|
this.screen.set('home');
|
|
68461
68488
|
this.audio.flip();
|
|
68462
68489
|
}
|
|
@@ -74066,6 +74093,8 @@ function playCardFromHand(game, seat, card, options = {}) {
|
|
|
74066
74093
|
spendOfferings(player, spentOfferings);
|
|
74067
74094
|
}
|
|
74068
74095
|
next.historyZone.push(card.id);
|
|
74096
|
+
next.players[seat] = player;
|
|
74097
|
+
resolveCardEffect(next, card, seat);
|
|
74069
74098
|
}
|
|
74070
74099
|
else if (card.type === 'place') {
|
|
74071
74100
|
const previousPlace = next.placeZone[0];
|
|
@@ -74248,6 +74277,144 @@ function offeringAbilityReserveGain(abilityText, fallbackValue) {
|
|
|
74248
74277
|
function opponentSeat(seat) {
|
|
74249
74278
|
return seat === 'P1' ? 'P2' : 'P1';
|
|
74250
74279
|
}
|
|
74280
|
+
// --- Effect resolution (H7) ---
|
|
74281
|
+
function resolveCardEffect(game, card, seat) {
|
|
74282
|
+
const text = card.abilities?.[0]?.text ?? '';
|
|
74283
|
+
switch (card.strategy) {
|
|
74284
|
+
case 'directdamage':
|
|
74285
|
+
effectDirectDamage(game, card, text, seat);
|
|
74286
|
+
break;
|
|
74287
|
+
case 'restore':
|
|
74288
|
+
effectRestore(game, card, text, seat);
|
|
74289
|
+
break;
|
|
74290
|
+
case 'draw':
|
|
74291
|
+
effectDraw(game, card, text, seat);
|
|
74292
|
+
break;
|
|
74293
|
+
case 'discard':
|
|
74294
|
+
effectDiscard(game, card, text, seat);
|
|
74295
|
+
break;
|
|
74296
|
+
}
|
|
74297
|
+
}
|
|
74298
|
+
function effectDirectDamage(game, card, text, seat) {
|
|
74299
|
+
const opponent = opponentSeat(seat);
|
|
74300
|
+
const lower = text.toLowerCase();
|
|
74301
|
+
let dmg;
|
|
74302
|
+
if (lower.includes('tantos')) {
|
|
74303
|
+
dmg = game.players[seat].battleZone.length;
|
|
74304
|
+
}
|
|
74305
|
+
else {
|
|
74306
|
+
dmg = parseSpanishNumber(text);
|
|
74307
|
+
}
|
|
74308
|
+
if (dmg <= 0)
|
|
74309
|
+
return;
|
|
74310
|
+
game.players[opponent].leaderHp = Math.max(0, game.players[opponent].leaderHp - dmg);
|
|
74311
|
+
}
|
|
74312
|
+
function effectRestore(game, card, text, seat) {
|
|
74313
|
+
const lower = text.toLowerCase();
|
|
74314
|
+
const n = Math.max(1, parseSpanishNumber(text) || 1);
|
|
74315
|
+
if (lower.includes('los líderes') || lower.includes('los lideres')) {
|
|
74316
|
+
for (const s of ['P1', 'P2']) {
|
|
74317
|
+
const p = game.players[s];
|
|
74318
|
+
p.leaderHp = Math.min(p.leaderMaxHp ?? 30, p.leaderHp + n);
|
|
74319
|
+
}
|
|
74320
|
+
return;
|
|
74321
|
+
}
|
|
74322
|
+
if (lower.includes('tus personajes') || lower.includes('personajes en juego')) {
|
|
74323
|
+
for (const ch of game.players[seat].battleZone) {
|
|
74324
|
+
ch.currentHp = Math.min(ch.maxHp, ch.currentHp + n);
|
|
74325
|
+
}
|
|
74326
|
+
return;
|
|
74327
|
+
}
|
|
74328
|
+
if (lower.includes('del líder') ||
|
|
74329
|
+
lower.includes('al líder') ||
|
|
74330
|
+
lower.includes('del lider') ||
|
|
74331
|
+
lower.includes('al lider')) {
|
|
74332
|
+
const p = game.players[seat];
|
|
74333
|
+
p.leaderHp = Math.min(p.leaderMaxHp ?? 30, p.leaderHp + n);
|
|
74334
|
+
}
|
|
74335
|
+
}
|
|
74336
|
+
function effectDraw(game, card, text, seat) {
|
|
74337
|
+
const lower = text.toLowerCase();
|
|
74338
|
+
if (lower.includes('los jugadores')) {
|
|
74339
|
+
const n = Math.max(1, parseSpanishNumber(text) || 1);
|
|
74340
|
+
for (let i = 0; i < n; i++) {
|
|
74341
|
+
drawCardFor(game, 'P1');
|
|
74342
|
+
drawCardFor(game, 'P2');
|
|
74343
|
+
}
|
|
74344
|
+
return;
|
|
74345
|
+
}
|
|
74346
|
+
if (lower.includes('por cada personaje oponente')) {
|
|
74347
|
+
const n = game.players[opponentSeat(seat)].battleZone.length;
|
|
74348
|
+
for (let i = 0; i < n; i++)
|
|
74349
|
+
drawCardFor(game, seat);
|
|
74350
|
+
return;
|
|
74351
|
+
}
|
|
74352
|
+
const n = Math.max(1, parseSpanishNumber(text) || 1);
|
|
74353
|
+
for (let i = 0; i < n; i++)
|
|
74354
|
+
drawCardFor(game, seat);
|
|
74355
|
+
}
|
|
74356
|
+
function effectDiscard(game, card, text, seat) {
|
|
74357
|
+
const lower = text.toLowerCase();
|
|
74358
|
+
const opponent = opponentSeat(seat);
|
|
74359
|
+
if (lower.includes('ambos jugadores descartan su mano') ||
|
|
74360
|
+
lower.includes('los jugadores descartan su mano')) {
|
|
74361
|
+
for (const s of ['P1', 'P2']) {
|
|
74362
|
+
const p = game.players[s];
|
|
74363
|
+
game.historyZone.push(...(p.hand ?? []));
|
|
74364
|
+
p.hand = [];
|
|
74365
|
+
}
|
|
74366
|
+
return;
|
|
74367
|
+
}
|
|
74368
|
+
if ((lower.includes('oponente') && lower.includes('azar')) ||
|
|
74369
|
+
lower.includes('tu oponente descarta')) {
|
|
74370
|
+
const n = Math.max(1, parseSpanishNumber(text) || 1);
|
|
74371
|
+
const op = game.players[opponent];
|
|
74372
|
+
const hand = op.hand ?? [];
|
|
74373
|
+
let seed = game.revision * 31 + game.turnCount * 7;
|
|
74374
|
+
for (let i = 0; i < n && hand.length > 0; i++) {
|
|
74375
|
+
seed = (seed * 1664525 + 1013904223) & 0xffffffff;
|
|
74376
|
+
const idx = Math.abs(seed) % hand.length;
|
|
74377
|
+
game.historyZone.push(hand[idx]);
|
|
74378
|
+
hand.splice(idx, 1);
|
|
74379
|
+
}
|
|
74380
|
+
op.hand = hand;
|
|
74381
|
+
}
|
|
74382
|
+
}
|
|
74383
|
+
function drawCardFor(game, seat) {
|
|
74384
|
+
const card = game.sharedDeck.shift();
|
|
74385
|
+
if (!card)
|
|
74386
|
+
return;
|
|
74387
|
+
const p = game.players[seat];
|
|
74388
|
+
if (p.hand)
|
|
74389
|
+
p.hand.push(card);
|
|
74390
|
+
else
|
|
74391
|
+
p.handCount = (p.handCount ?? 0) + 1;
|
|
74392
|
+
}
|
|
74393
|
+
function parseSpanishNumber(text) {
|
|
74394
|
+
const words = {
|
|
74395
|
+
un: 1,
|
|
74396
|
+
una: 1,
|
|
74397
|
+
uno: 1,
|
|
74398
|
+
dos: 2,
|
|
74399
|
+
tres: 3,
|
|
74400
|
+
cuatro: 4,
|
|
74401
|
+
cinco: 5,
|
|
74402
|
+
seis: 6,
|
|
74403
|
+
siete: 7,
|
|
74404
|
+
ocho: 8,
|
|
74405
|
+
nueve: 9,
|
|
74406
|
+
diez: 10,
|
|
74407
|
+
};
|
|
74408
|
+
const digitMatch = text.match(/\b(\d+)\b/);
|
|
74409
|
+
if (digitMatch)
|
|
74410
|
+
return parseInt(digitMatch[1], 10);
|
|
74411
|
+
const lower = text.toLowerCase();
|
|
74412
|
+
for (const [word, n] of Object.entries(words)) {
|
|
74413
|
+
if (new RegExp(`\\b${word}\\b`).test(lower))
|
|
74414
|
+
return n;
|
|
74415
|
+
}
|
|
74416
|
+
return 0;
|
|
74417
|
+
}
|
|
74251
74418
|
|
|
74252
74419
|
class ChristianityCardComponent {
|
|
74253
74420
|
constructor() {
|