{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/cards/freeze-purple.svg","webpack:///./src/assets/orbs/bronze.svg","webpack:///./src/assets/cards/chalice-red.svg","webpack:///./src/assets/cards/hatchet-bronze.svg","webpack:///./src/assets/cards/sword-gold.svg","webpack:///./src/assets/cards/chalice-purple.svg","webpack:///./src/assets/cards/strike-red.svg","webpack:///./src/assets/cards/goblin.svg","webpack:///./src/assets/cards/hourglass-yellow.svg","webpack:///./src/assets sync ^\\.\\/.*$","webpack:///./src/assets/cards/scythe-bronze.svg","webpack:///./src/assets/cards/damage-red.svg","webpack:///./src/assets/orbs/grain.svg","webpack:///./src/components/util/igt-card-reveal-modal.vue?66c2","webpack:///./src/assets/cards/forest-fire.svg","webpack:///./src/assets/cards/hatchet-gold.svg","webpack:///./src/assets/cards/asclepius.svg","webpack:///./src/assets/cards/rat.svg","webpack:///./src/assets/cards/shield-viking.svg","webpack:///./src/assets/cards/hourglass-purple.svg","webpack:///./src/assets/cards/pig.svg","webpack:///./src/assets/cards/farmer.svg","webpack:///./src/assets/cards/scythe-silver.svg","webpack:///./src/assets/cards/scythe-stone.svg","webpack:///./src/assets/cards/spider-large.svg","webpack:///./src/assets/orbs/ice.svg","webpack:///./src/assets/cards/sword-bronze.svg","webpack:///./src/assets/orbs/wood.svg","webpack:///./src/assets/cards/hatchet-stone.svg","webpack:///./src/assets/cards/ore-bronze.svg","webpack:///./src/assets/cards/pickaxe-stone.svg","webpack:///./src/assets/cards/pickaxe-silver.svg","webpack:///./src/assets/cards/magic-touch.svg","webpack:///./src/assets/cards sync ^\\.\\/hatchet\\-.*\\.svg$","webpack:///./src/components/orbs/cq-orb.vue?af8c","webpack:///./src/assets/cards/grain.svg","webpack:///./src/assets/cards/land-mine.svg","webpack:///./src/assets/cards sync ^\\.\\/.*$","webpack:///./src/assets/cards/skeleton-king.svg","webpack:///./src/assets/cards/draw-card.svg","webpack:///./src/assets/cards/freeze-blue.svg","webpack:///./src/assets/cards/discard-hand.svg","webpack:///./src/assets/cards/tree.svg","webpack:///./src/assets/orbs/gold.svg","webpack:///./src/assets/cards/forest.svg","webpack:///./src/assets/cards sync ^\\.\\/scythe\\-.*\\.svg$","webpack:///./src/assets/cards/dragon.svg","webpack:///./src/assets/card-random.svg","webpack:///./src/assets/cards/straw.svg","webpack:///./src/assets/cards/hourglass-red.svg","webpack:///./src/assets/cards/bread.svg","webpack:///./src/assets/cards/damage-yellow.svg","webpack:///./src/assets/cards/pickaxe-bronze.svg","webpack:///./src/assets/cards/troll.svg","webpack:///./src/assets/orbs/sword.svg","webpack:///./src/assets/cards/ore-gold.svg","webpack:///./src/assets/cards/sword-silver.svg","webpack:///./src/components/cq-card.vue?3952","webpack:///./src/assets/cards/log.svg","webpack:///./src/assets/cards/sacrifice-hand.svg","webpack:///./src/assets/cards/pickaxe-gold.svg","webpack:///./src/assets/cards/ore-silver.svg","webpack:///./src/assets/cards/cow.svg","webpack:///./src/assets/orbs/silver.svg","webpack:///./src/assets/orbs sync ^\\.\\/.*$","webpack:///./src/assets/cards/strike-purple.svg","webpack:///./src/assets/cards/damage-purple.svg","webpack:///./src/assets/cards/chalice-yellow.svg","webpack:///./src/assets/cards/skeleton.svg","webpack:///./src/ig-template/GameState.ts","webpack:///./src/App.vue?2e8b","webpack:///./src/ig-template/tools/saving/LocalStorage.ts","webpack:///./src/ig-template/features/wallet/CurrencyType.ts","webpack:///./src/ig-template/developer-panel/DeveloperPanel.ts","webpack:///./src/card-quest/cards/CardType.ts","webpack:///./src/ig-template/developer-panel/DeveloperPanelTab.ts","webpack:///./src/ig-template/developer-panel/fields/AbstractField.ts","webpack:///./src/ig-template/developer-panel/fields/FunctionField.ts","webpack:///./src/ig-template/developer-panel/fields/DisplayField.ts","webpack:///./src/ig-template/developer-panel/fields/ChoiceField.ts","webpack:///./src/ig-template/features/Feature.ts","webpack:///./src/ig-template/developer-panel/fields/NumberField.ts","webpack:///./src/ig-template/developer-panel/fields/RangeField.ts","webpack:///./src/ig-template/features/wallet/Wallet.ts","webpack:///./src/ig-template/tools/hotkeys/KeyEventType.ts","webpack:///./src/ig-template/tools/requirements/Progress.ts","webpack:///./src/ig-template/tools/requirements/Requirement.ts","webpack:///./src/ig-template/tools/requirements/NoRequirement.ts","webpack:///./src/ig-template/tools/hotkeys/KeyBind.ts","webpack:///./src/ig-template/tools/hotkeys/HotKeys.ts","webpack:///./src/card-quest/cards/abstract/PlayableCard.ts","webpack:///./src/card-quest/cards/CardId.ts","webpack:///./src/card-quest/cards/EmptyCard.ts","webpack:///./src/card-quest/adventure/Adventure.ts","webpack:///./src/card-quest/cards/abstract/ActionCard.ts","webpack:///./src/card-quest/adventure/tools/ToolType.ts","webpack:///./src/card-quest/cards/content/action/ToolCard.ts","webpack:///./src/card-quest/adventure/tools/ToolTier.ts","webpack:///./src/card-quest/adventure/LevelId.ts","webpack:///./src/ig-template/features/wallet/Currency.ts","webpack:///./src/ig-template/tools/probability/Random.ts","webpack:///./src/card-quest/cards/Deck.ts","webpack:///./src/card-quest/cards/abstract/HealthCard.ts","webpack:///./src/card-quest/cards/content/monster/EnemyCard.ts","webpack:///./src/card-quest/cards/content/action/MagicTouchCard.ts","webpack:///./src/card-quest/cards/content/resource/WoodCard.ts","webpack:///./src/ig-template/tools/EnumHelpers.ts","webpack:///./src/card-quest/cards/IdDeck.ts","webpack:///./src/card-quest/cards/content/resource/OreCard.ts","webpack:///./src/card-quest/cards/content/weapon/WeaponCard.ts","webpack:///./src/card-quest/adventure/Weapon.ts","webpack:///./src/card-quest/cards/content/action/DrawCardsCard.ts","webpack:///./src/card-quest/cards/content/resource/GrainCard.ts","webpack:///./src/card-quest/cards/content/action/HealingCard.ts","webpack:///./src/card-quest/cards/content/action/InstantDamageCard.ts","webpack:///./src/card-quest/cards/content/action/LoseTurnsCard.ts","webpack:///./src/card-quest/cards/content/action/ForestFire.ts","webpack:///./src/card-quest/cards/content/monster/LandMineCard.ts","webpack:///./src/card-quest/cards/content/action/DiscardHand.ts","webpack:///./src/card-quest/cards/content/monster/NecromancerCard.ts","webpack:///./src/card-quest/cards/content/action/RodOfAsclepiusCard.ts","webpack:///./src/card-quest/cards/content/action/SacrificeHandCard.ts","webpack:///./src/card-quest/cards/content/action/InstantDamagePlayerCard.ts","webpack:///./src/card-quest/cards/content/action/FreezeMonstersCard.ts","webpack:///./src/card-quest/cards/CardRepository.ts","webpack:///./src/card-quest/features/card-collection/CardPackId.ts","webpack:///./src/card-quest/adventure/Level.ts","webpack:///./src/ig-template/features/statistics/requirements/ArrayStatisticRequirement.ts","webpack:///./src/ig-template/features/statistics/StatisticId.ts","webpack:///./src/card-quest/LevelRequirement.ts","webpack:///./src/card-quest/adventure/LevelRepository.ts","webpack:///./src/ig-template/features/settings/SettingId.ts","webpack:///./src/ig-template/Game.ts","webpack:///./src/ig-template/features/settings/Setting.ts","webpack:///./src/ig-template/features/achievements/AchievementId.ts","webpack:///./src/ig-template/features/settings/SettingOption.ts","webpack:///./src/ig-template/features/settings/BooleanSetting.ts","webpack:///./src/ig-template/features/settings/Settings.ts","webpack:///./src/ig-template/features/statistics/AbstractStatistic.ts","webpack:///./src/ig-template/features/statistics/NumberStatistic.ts","webpack:///./src/ig-template/features/statistics/StatisticsSaveData.ts","webpack:///./src/ig-template/features/statistics/ArrayStatistic.ts","webpack:///./src/ig-template/features/statistics/Statistics.ts","webpack:///./src/card-quest/features/card-collection/DeckPreset.ts","webpack:///./src/card-quest/features/card-collection/CardCollection.ts","webpack:///./src/ig-template/tools/probability/WeightedDistribution.ts","webpack:///./src/card-quest/features/card-collection/CardPack.ts","webpack:///./src/ig-template/tools/probability/Outcome.ts","webpack:///./src/card-quest/adventure/PlayerStats.ts","webpack:///./src/ig-template/tools/requirements/ImpossibleRequirement.ts","webpack:///./src/card-quest/adventure/EmptyAdventure.ts","webpack:///./src/card-quest/adventure/super-powers/SuperPower.ts","webpack:///./src/card-quest/adventure/super-powers/SuperPowers.ts","webpack:///./src/ig-template/features/achievements/Achievement.ts","webpack:///./src/ig-template/features/achievements/AchievementSaveData.ts","webpack:///./src/card-quest/features/automation/AutomationStrategyId.ts","webpack:///./src/ig-template/tools/requirements/ManualRequirement.ts","webpack:///./src/ig-template/features/achievements/CustomAchievement.ts","webpack:///./src/ig-template/features/statistics/requirements/NumberStatisticRequirement.ts","webpack:///./src/ig-template/features/achievements/Achievements.ts","webpack:///./src/card-quest/features/automation/AutomationStrategy.ts","webpack:///./src/card-quest/features/automation/DummyStrategy.ts","webpack:///./src/card-quest/features/automation/Automation.ts","webpack:///./src/card-quest/features/level-editor/LevelEditor.ts","webpack:///./src/App.ts","webpack:///./src/components/cq-adventure.vue?a3bb","webpack:///./src/components/cq-card.vue?6733","webpack:///./src/components/orbs/cq-orb.vue?995f","webpack:///src/components/orbs/cq-orb.vue","webpack:///./src/components/orbs/cq-orb.vue?73a6","webpack:///./src/components/orbs/cq-orb.vue?0b7f","webpack:///src/components/cq-card.vue","webpack:///./src/components/cq-card.vue?840f","webpack:///./src/components/cq-card.vue?57d3","webpack:///./src/components/cq-player-stats.vue?c0ce","webpack:///src/components/cq-player-stats.vue","webpack:///./src/components/cq-player-stats.vue?15d2","webpack:///./src/components/cq-player-stats.vue","webpack:///./src/components/cg-level-progress.vue?0f4b","webpack:///src/components/cg-level-progress.vue","webpack:///./src/components/cg-level-progress.vue?6336","webpack:///./src/components/cg-level-progress.vue","webpack:///./src/components/cq-card-placeholder.vue?7f8e","webpack:///src/components/cq-card-placeholder.vue","webpack:///./src/components/cq-card-placeholder.vue?8977","webpack:///./src/components/cq-card-placeholder.vue","webpack:///src/components/cq-adventure.vue","webpack:///./src/components/cq-adventure.vue?fb8a","webpack:///./src/components/cq-adventure.vue","webpack:///./src/components/cg-card-collection.vue?5d91","webpack:///./src/components/util/igt-tabs.vue?99ea","webpack:///src/components/util/igt-tabs.vue","webpack:///./src/components/util/igt-tabs.vue?3780","webpack:///./src/components/util/igt-tabs.vue","webpack:///./src/components/util/igt-tab.vue?430c","webpack:///src/components/util/igt-tab.vue","webpack:///./src/components/util/igt-tab.vue?82dc","webpack:///./src/components/util/igt-tab.vue","webpack:///./src/components/cq-card-selection-list.vue?0aac","webpack:///./src/components/settings/igt-boolean-setting.vue?9199","webpack:///src/components/settings/igt-boolean-setting.vue","webpack:///./src/components/settings/igt-boolean-setting.vue?cce1","webpack:///./src/components/settings/igt-boolean-setting.vue","webpack:///src/components/cq-card-selection-list.vue","webpack:///./src/components/cq-card-selection-list.vue?c145","webpack:///./src/components/cq-card-selection-list.vue","webpack:///./src/components/cq-deck-presets.vue?ccbb","webpack:///src/components/cq-deck-presets.vue","webpack:///./src/components/cq-deck-presets.vue?0ebb","webpack:///./src/components/cq-deck-presets.vue","webpack:///./src/components/cq-pack-shop.vue?980d","webpack:///./src/components/cq-card-pack-preview.vue?90a6","webpack:///src/components/cq-card-pack-preview.vue","webpack:///./src/components/cq-card-pack-preview.vue?8e85","webpack:///./src/components/cq-card-pack-preview.vue","webpack:///src/components/cq-pack-shop.vue","webpack:///./src/components/cq-pack-shop.vue?854d","webpack:///./src/components/cq-pack-shop.vue","webpack:///src/components/cg-card-collection.vue","webpack:///./src/components/cg-card-collection.vue?d6b5","webpack:///./src/components/cg-card-collection.vue","webpack:///./src/components/cq-level-selection.vue?c82f","webpack:///./src/components/cq-super-powers.vue?1995","webpack:///./src/components/cq-super-power.vue?4b89","webpack:///src/components/cq-super-power.vue","webpack:///./src/components/cq-super-power.vue?edc1","webpack:///./src/components/cq-super-power.vue","webpack:///src/components/cq-super-powers.vue","webpack:///./src/components/cq-super-powers.vue?0ded","webpack:///./src/components/cq-super-powers.vue","webpack:///src/components/cq-level-selection.vue","webpack:///./src/components/cq-level-selection.vue?c836","webpack:///./src/components/cq-level-selection.vue","webpack:///./src/components/util/igt-notifications.vue?9f11","webpack:///src/components/util/igt-notifications.vue","webpack:///./src/components/util/igt-notifications.vue?fba1","webpack:///./src/components/util/igt-notifications.vue","webpack:///./src/components/igt-achievements.vue?1b5d","webpack:///src/components/igt-achievements.vue","webpack:///./src/components/igt-achievements.vue?839d","webpack:///./src/components/igt-achievements.vue","webpack:///./src/components/settings/igt-settings.vue?2e38","webpack:///src/components/settings/igt-settings.vue","webpack:///./src/components/settings/igt-settings.vue?084e","webpack:///./src/components/settings/igt-settings.vue","webpack:///./src/components/util/igt-card-reveal-modal.vue?9477","webpack:///src/components/util/igt-card-reveal-modal.vue","webpack:///./src/components/util/igt-card-reveal-modal.vue?4b91","webpack:///./src/components/util/igt-card-reveal-modal.vue?a8b9","webpack:///./src/components/cq-how-to-play.vue?436f","webpack:///src/components/cq-how-to-play.vue","webpack:///./src/components/cq-how-to-play.vue?d02c","webpack:///./src/components/cq-how-to-play.vue?2d77","webpack:///./src/components/cq-automation.vue?e6ed","webpack:///src/components/cq-automation.vue","webpack:///./src/components/cq-automation.vue?c3fb","webpack:///./src/components/cq-automation.vue","webpack:///./src/components/cq-level-editor.vue?3927","webpack:///src/components/cq-level-editor.vue","webpack:///./src/components/cq-level-editor.vue?8b1a","webpack:///./src/components/cq-level-editor.vue","webpack:///./src/components/cq-lose-modal.vue?3802","webpack:///src/components/cq-lose-modal.vue","webpack:///./src/components/cq-lose-modal.vue?8fdf","webpack:///./src/components/cq-lose-modal.vue?e510","webpack:///./src/components/cq-credits.vue?1982","webpack:///src/components/cq-credits.vue","webpack:///./src/components/cq-credits.vue?d59f","webpack:///./src/components/cq-credits.vue?b0df","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/VueFilters.ts","webpack:///./src/main.ts","webpack:///./src/components/cq-how-to-play.vue?470d","webpack:///./src/assets/cards/shield-cracked.svg","webpack:///./src/assets/logo.png","webpack:///./src/assets/orbs/souls.svg","webpack:///./src/assets/cards/strike-yellow.svg","webpack:///./src/assets/orbs/heart.svg","webpack:///./src/assets/cards/chicken.svg","webpack:///./src/assets/cards/hatchet-silver.svg","webpack:///./src/components/cq-lose-modal.vue?92ae","webpack:///./src/assets/cards/sword.svg","webpack:///./src/components/cq-credits.vue?d1be","webpack:///./src/assets/orbs/clock.svg","webpack:///./src/assets/cards sync ^\\.\\/pickaxe\\-.*\\.svg$","webpack:///./src/assets/cards/default.svg","webpack:///./src/assets/cards/spider-small.svg","webpack:///./src/assets/coins.svg","webpack:///./src/assets/cards/scythe-gold.svg"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","GameState","_vm","this","_h","$createElement","_c","_self","attrs","gainedCards","on","$event","showModal","slot","staticClass","_v","_e","showLoseModal","game","features","adventure","allLevels","automation","achievements","editor","settings","wallet","money","_s","_f","staticRenderFns","CurrencyType","localStorage","setItem","JSON","stringify","parse","getItem","removeItem","CardType","tabs","label","children","propertyName","cssClass","undefined","console","warn","componentName","func","setComponentName","options","saveKey","type","delta","min","max","step","supportedCurrencies","_currencies","_multipliers","_onCurrencyGain","_supportedCurrencies","Wood","Grain","Souls","Bronze","Silver","Gold","supportsCurrencyType","currency","multiply","getCurrencyMultiplier","isValid","dispatch","amount","toString","costs","cost","hasCurrency","currencies","loseCurrency","hasCurrencies","loseMultipleCurrencies","multiplier","isNaN","includes","Money","asEvent","setCssClass","KeyEventType","actual","target","actualValue","targetValue","Math","description","callback","requirement","eventType","KeyDown","keyBind","isCompleted","_keyBinds","action","filter","unbind","trigger","keysText","join","reset","CardId","title","cardType","image","goesToField","_onDefeated","playerDeck","level","playerStats","MAX_CARDS","playerHand","field","deletionQueue","currentTurn","_onWin","_onLose","_onStart","_onCardPlayed","_onCardPlayedByLevel","isActive","Array","fill","startingCards","draw","wait","forfeit","addKeyBind","play","tap","discard","index","free","card","canPlay","payMultipleIfPossible","_play","turnHasPassed","onDefeated","subscribe","defeated","queueDeletion","canDraw","health","indexOf","checkForLevelCard","checkWinLoseConditions","isWon","isLost","getCardsLeftCount","Monster","getCardAtTurn","isEmpty","handSpace","count","ToolType","ToolTier","tier","Tool","Axe","activeAxe","Pickaxe","activePickaxe","Scythe","activeScythe","LevelId","error","floor","random","probability","requireNormalizedProbability","chance","intBetween","array","arrayIndex","temporaryValue","randomIndex","currentIndex","cards","shuffle","dispatchDefeat","reward","attack","defense","attackInterval","frozenCooldown","_onAttack","nextAttack","gainCurrency","getAttack","damage","takeDamage","performAttack","attackFor","MagicTouch","Action","Resource","getWoodCuttingDamage","EnumHelpers","getNames","getObjValues","v","stringConverter","selectList","Map","getValues","forEach","val","set","from","getSelectList","presentation","k","ids","getAllCardsIds","newAmount","concat","reduce","a","b","deckString","getIdDeckFromString","IdDeck","getMiningDamage","weapon","activeWeapon","getForagingDamage","Curse","ForestFire","Infinity","countDown","DiscardHand","spawn","cardToSpawn","getCard","RodOfAsclepius","SacrificeHand","turns","LogCard","TreeCard","ForestCard","BronzeOre","SilverOre","GoldOre","SmallGrain","MediumGrain","Bread","setCosts","ChaliceSmall","ChaliceMedium","ChaliceLarge","Draw3Card","LoseTurnsSmall","LoseTurnsMedium","LoseTurnsLarge","InstantDamagePlayerSmall","InstantDamagePlayerMedium","InstantDamagePlayerLarge","FreezeMonstersSmall","FreezeMonstersMedium","InstantDamageSmall","InstantDamageMedium","InstantDamageLarge","BasicSword","BronzeSword","SilverSword","GoldSword","CrackedShield","VikingShield","Rat","Chicken","Cow","Pig","Farmer","LandMine","Skeleton","SkeletonKing","Troll","Spider","Spiderling","Dragon","BronzeAxe","SilverAxe","GoldAxe","BronzePickaxe","SilverPickaxe","GoldPickaxe","BronzeScythe","SilverScythe","GoldScythe","split","string","parseInt","getDeckFromCardIds","idDeck","getDeckFromString","toDeckString","addCard","CardPackId","rewardPack","moneyReward","rewardCount","shuffleDeck","floatBetween","turn","getFutureCards","find","StatisticId","statistic","SettingId","TutorialLevel","BeginnerPack","TheFarm","BronzeTierPack","statistics","getStatistic","LevelsCompleted","SpidersDen","TheWizard","SilverTierPack","TheDragon","GoldTierPack","TheTroll","ActionCardPack","TheNecromancer","Legendary","getAllLevelsIds","getLevel","_tickInterval","TICK_DURATION","SAVE_INTERVAL","_nextSave","gameSpeed","_lastUpdate","_onSave","SAVE_KEY","state","Launching","setObject","start","pause","resume","stop","featureList","feature","fields","getDeveloperPanelFields","tab","now","Date","getTime","timeDifference","Playing","update","save","getTotalCurrencyMultiplier","initialize","collection","hasEnoughCards","currentDeckIsValid","deckIsValid","canAffordSuperPowers","_goOnAnAdventure","levelId","canStartAdventure","newLevel","canAccess","newAdventure","getDeckFromIdDeck","currentDeck","superPowers","getPlayerStats","registerAdventureSubscribers","resetTemporaryCurrencies","payIfPossible","getTotalCosts","assign","registerAdventure","onWin","openCardPack","getMoneyReward","onLose","startAdventure","Stopped","setInterval","debug","printStateWarning","clearInterval","Paused","res","store","delete","saveData","featureSaveData","load","reason","values","AchievementId","displayName","defaultValue","validValue","option","displayText","list","setting","getSetting","add","ShowUnobtainedCards","ShowSaveMessage","settingSave","alert","registerStatistic","TotalMoneyGained","CardsPlayed","getCardCount","CardsPlayedByLevel","getLevelCount","CardsPlayedPerType","getCardTypeCount","onCurrencyGain","incrementNumberStatistic","onCardPlayed","incrementArrayStatistic","onCardPlayedByLevel","hasStatistic","newValue","json","addStatistic","match","cardPacks","deckPresets","MAX_CARD_AMOUNT","MIN_DECK_SIZE","_onCardsGain","_wallet","cardPack","getCardPack","buyable","cardIds","gainCards","pack","getSize","notify","_gainCard","current","entry","fromDeckString","presets","preset","outcomes","canGet","outcomesWithMetRequirements","totalWeight","getTotalWeight","weight","outcome","item","fromArray","Stone","ignoreDefense","actualDefense","getDefense","actualDamage","bonuses","descriptions","scythe","axe","pickaxe","unlocked","progress","AutomationStrategyId","isSet","forceCompletion","ACHIEVEMENT_CHECK_TIME","checkCounter","_onUnlock","registerAchievement","Played100Resources","Played100Actions","Played100Tools","Played100Curses","Played100Monsters","PlayedGobletOfFire","PlayedFrozen2","EnemyPlayedForestFire","AtLeastOneSuperPower","TotalMoney100","TotalMoney1000","TotalMoney10000","FirstLevelCompleted","FarmLevelCompleted","SpiderLevelCompleted","TrollLevelCompleted","WizardLevelCompleted","DragonLevelCompleted","NecromancerLevelCompleted","onStart","achievement","getAchievement","forceComplete","checkForAchievementsCompleted","requirementsCompleted","isJustUnlocked","unlock","hasAchievement","addAchievement","Dummy","canAfford","canTap","booleanWithProbability","AUTOMATION_INTERVAL","_nextTick","_adventure","strategies","selectedStrategy","selectedLevel","performAutomation","goOnAnAdventure","performAction","MAX_SIZE","currentCards","resetToDefault","getCleanLevel","levelString","test","sort","getDefaultGame","FarmPack","MonsterPack","CursePack","gainCard","selectAllCards","_l","nativeOn","class","deckSize","directives","rawName","expression","domProps","isArray","_i","$$a","$$el","$$c","checked","$$v","$$i","$set","colorClass","isDisabled","canClick","canHover","showFront","isInHand","toLowerCase","svg","formattedValue","props","String","required","computed","component","components","defaultImg","Boolean","default","mounted","onAttack","setTimeout","stats","wood","grain","souls","bronze","silver","gold","showCurrentTurn","futureCard","firstCardLarge","Number","futureCards","firstCard","getNextCard","methods","shiftKey","hand","deck","displayableCards","actionCards","resourceCards","toolCards","monsterCards","curseCards","headerClass","selectTab","_t","created","$children","selected","canSelect","showUnobtainedCardsSetting","getCountForCard","removeCard","toggle","classObject","atMax","emptyCurrentDeck","$$selectedVal","_value","selection","multiple","selectionChanged","cardCount","composing","saveToPreset","loadFromPreset","importPreset","CardRepository","exportPreset","buyPack","cardCollection","packId","rewardCards","packs","buyablePacks","buyCardPack","canBuyCardPack","getCardsWithAmount","getCardsWithAmountByType","canAffordPowers","totalCosts","powers","power","valueText","down","maxLevel","up","levels","availableLevels","scopedSlots","_u","fn","ref","notifications","notification","text","achievementsFeature","onUnlock","resetSave","saveSetting","confirm","deleteSave","location","reload","isOpen","$emit","_m","strategy","goOnCustomAdventure","exportLevel","importLevel","document","getElementById","click","toLevelString","fromLevelString","availableCards","CqCredits","CqLoseModal","CqLevelEditor","CqAutomation","CqHowToPlay","IgtModal","IgtSettings","IgtTabs","IgtTab","IgtAchievements","LevelRepository","onSave","onCardsGain","charAt","toUpperCase","replace","config","productionTip","use","onload","log","App","render","h","$mount"],"mappings":"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","file":"js/app.db5de01f.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/freeze-purple.aa19bc11.svg\";","module.exports = __webpack_public_path__ + \"img/bronze.75ea7d2b.svg\";","module.exports = __webpack_public_path__ + \"img/chalice-red.418f691f.svg\";","module.exports = __webpack_public_path__ + \"img/hatchet-bronze.0e31eefd.svg\";","module.exports = __webpack_public_path__ + \"img/sword-gold.0e63caca.svg\";","module.exports = __webpack_public_path__ + \"img/chalice-purple.7e9b369e.svg\";","module.exports = __webpack_public_path__ + \"img/strike-red.853f83c0.svg\";","module.exports = __webpack_public_path__ + \"img/goblin.04772788.svg\";","module.exports = __webpack_public_path__ + \"img/hourglass-yellow.bbce69e8.svg\";","var map = {\n\t\"./card-random.svg\": \"7d77\",\n\t\"./cards/asclepius.svg\": \"23ec\",\n\t\"./cards/bread.svg\": \"8426\",\n\t\"./cards/chalice-purple.svg\": \"0f63\",\n\t\"./cards/chalice-red.svg\": \"0713\",\n\t\"./cards/chalice-yellow.svg\": \"c33d\",\n\t\"./cards/chicken.svg\": \"dcc5\",\n\t\"./cards/cow.svg\": \"aabc\",\n\t\"./cards/damage-purple.svg\": \"c2bd\",\n\t\"./cards/damage-red.svg\": \"1d84\",\n\t\"./cards/damage-yellow.svg\": \"8437\",\n\t\"./cards/default.svg\": \"f23d\",\n\t\"./cards/discard-hand.svg\": \"6eed\",\n\t\"./cards/dragon.svg\": \"7d5b\",\n\t\"./cards/draw-card.svg\": \"6bc4\",\n\t\"./cards/farmer.svg\": \"2f68\",\n\t\"./cards/forest-fire.svg\": \"207c\",\n\t\"./cards/forest.svg\": \"71c0\",\n\t\"./cards/freeze-blue.svg\": \"6e85\",\n\t\"./cards/freeze-purple.svg\": \"008b\",\n\t\"./cards/goblin.svg\": \"128e\",\n\t\"./cards/grain.svg\": \"6508\",\n\t\"./cards/hatchet-bronze.svg\": \"0bab\",\n\t\"./cards/hatchet-gold.svg\": \"2216\",\n\t\"./cards/hatchet-silver.svg\": \"de9a\",\n\t\"./cards/hatchet-stone.svg\": \"5390\",\n\t\"./cards/hourglass-purple.svg\": \"2651\",\n\t\"./cards/hourglass-red.svg\": \"7f2f\",\n\t\"./cards/hourglass-yellow.svg\": \"160d\",\n\t\"./cards/land-mine.svg\": \"65e1\",\n\t\"./cards/log.svg\": \"9cb0\",\n\t\"./cards/magic-touch.svg\": \"5a8a\",\n\t\"./cards/ore-bronze.svg\": \"56d2\",\n\t\"./cards/ore-gold.svg\": \"950c\",\n\t\"./cards/ore-silver.svg\": \"a1e3\",\n\t\"./cards/pickaxe-bronze.svg\": \"8e27\",\n\t\"./cards/pickaxe-gold.svg\": \"a164\",\n\t\"./cards/pickaxe-silver.svg\": \"59b6\",\n\t\"./cards/pickaxe-stone.svg\": \"59b5\",\n\t\"./cards/pig.svg\": \"2d1e\",\n\t\"./cards/rat.svg\": \"24a4\",\n\t\"./cards/sacrifice-hand.svg\": \"9cc9\",\n\t\"./cards/scythe-bronze.svg\": \"1be8\",\n\t\"./cards/scythe-gold.svg\": \"feae\",\n\t\"./cards/scythe-silver.svg\": \"370c\",\n\t\"./cards/scythe-stone.svg\": \"3dc5\",\n\t\"./cards/shield-cracked.svg\": \"ce81\",\n\t\"./cards/shield-viking.svg\": \"254a\",\n\t\"./cards/skeleton-king.svg\": \"6b48\",\n\t\"./cards/skeleton.svg\": \"cb5a\",\n\t\"./cards/spider-large.svg\": \"446f\",\n\t\"./cards/spider-small.svg\": \"fa78\",\n\t\"./cards/straw.svg\": \"7e84\",\n\t\"./cards/strike-purple.svg\": \"bcef\",\n\t\"./cards/strike-red.svg\": \"11b3\",\n\t\"./cards/strike-yellow.svg\": \"d167\",\n\t\"./cards/sword-bronze.svg\": \"4d2a\",\n\t\"./cards/sword-gold.svg\": \"0d68\",\n\t\"./cards/sword-silver.svg\": \"9879\",\n\t\"./cards/sword.svg\": \"e7a0\",\n\t\"./cards/tree.svg\": \"6f7d\",\n\t\"./cards/troll.svg\": \"8f9a\",\n\t\"./coins.svg\": \"fe61\",\n\t\"./logo.png\": \"cf05\",\n\t\"./orbs/bronze.svg\": \"050f\",\n\t\"./orbs/clock.svg\": \"e947\",\n\t\"./orbs/gold.svg\": \"70c0\",\n\t\"./orbs/grain.svg\": \"1ed1\",\n\t\"./orbs/heart.svg\": \"d5ac\",\n\t\"./orbs/ice.svg\": \"45e6\",\n\t\"./orbs/silver.svg\": \"ad29\",\n\t\"./orbs/souls.svg\": \"d0d2\",\n\t\"./orbs/sword.svg\": \"9021\",\n\t\"./orbs/wood.svg\": \"5123\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"1771\";","module.exports = __webpack_public_path__ + \"img/scythe-bronze.4a4ae7ab.svg\";","module.exports = __webpack_public_path__ + \"img/damage-red.9d34ffa3.svg\";","module.exports = __webpack_public_path__ + \"img/grain.8a23a188.svg\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-card-reveal-modal.vue?vue&type=style&index=0&id=e424259c&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/forest-fire.9d01f028.svg\";","module.exports = __webpack_public_path__ + \"img/hatchet-gold.dfae9be7.svg\";","module.exports = __webpack_public_path__ + \"img/asclepius.9d70ae39.svg\";","module.exports = __webpack_public_path__ + \"img/rat.b01d4d3e.svg\";","module.exports = __webpack_public_path__ + \"img/shield-viking.ee4f6a8d.svg\";","module.exports = __webpack_public_path__ + \"img/hourglass-purple.3541530d.svg\";","module.exports = __webpack_public_path__ + \"img/pig.8b71ce95.svg\";","module.exports = __webpack_public_path__ + \"img/farmer.9c0694cf.svg\";","module.exports = __webpack_public_path__ + \"img/scythe-silver.e4fb6dad.svg\";","module.exports = __webpack_public_path__ + \"img/scythe-stone.c8ed2100.svg\";","module.exports = __webpack_public_path__ + \"img/spider-large.e3b7ff26.svg\";","module.exports = __webpack_public_path__ + \"img/ice.800aabc1.svg\";","module.exports = __webpack_public_path__ + \"img/sword-bronze.5f1c62a3.svg\";","module.exports = __webpack_public_path__ + \"img/wood.8bb65a20.svg\";","module.exports = __webpack_public_path__ + \"img/hatchet-stone.788b2a27.svg\";","module.exports = __webpack_public_path__ + \"img/ore-bronze.5ae79e4b.svg\";","module.exports = __webpack_public_path__ + \"img/pickaxe-stone.d0f18f7c.svg\";","module.exports = __webpack_public_path__ + \"img/pickaxe-silver.d2f9bab8.svg\";","module.exports = __webpack_public_path__ + \"img/magic-touch.3cfe11f0.svg\";","var map = {\n\t\"./hatchet-bronze.svg\": \"0bab\",\n\t\"./hatchet-gold.svg\": \"2216\",\n\t\"./hatchet-silver.svg\": \"de9a\",\n\t\"./hatchet-stone.svg\": \"5390\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"5a8f\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-orb.vue?vue&type=style&index=0&id=441ba894&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/grain.05eff511.svg\";","module.exports = __webpack_public_path__ + \"img/land-mine.ba642c5a.svg\";","var map = {\n\t\"./asclepius.svg\": \"23ec\",\n\t\"./bread.svg\": \"8426\",\n\t\"./chalice-purple.svg\": \"0f63\",\n\t\"./chalice-red.svg\": \"0713\",\n\t\"./chalice-yellow.svg\": \"c33d\",\n\t\"./chicken.svg\": \"dcc5\",\n\t\"./cow.svg\": \"aabc\",\n\t\"./damage-purple.svg\": \"c2bd\",\n\t\"./damage-red.svg\": \"1d84\",\n\t\"./damage-yellow.svg\": \"8437\",\n\t\"./default.svg\": \"f23d\",\n\t\"./discard-hand.svg\": \"6eed\",\n\t\"./dragon.svg\": \"7d5b\",\n\t\"./draw-card.svg\": \"6bc4\",\n\t\"./farmer.svg\": \"2f68\",\n\t\"./forest-fire.svg\": \"207c\",\n\t\"./forest.svg\": \"71c0\",\n\t\"./freeze-blue.svg\": \"6e85\",\n\t\"./freeze-purple.svg\": \"008b\",\n\t\"./goblin.svg\": \"128e\",\n\t\"./grain.svg\": \"6508\",\n\t\"./hatchet-bronze.svg\": \"0bab\",\n\t\"./hatchet-gold.svg\": \"2216\",\n\t\"./hatchet-silver.svg\": \"de9a\",\n\t\"./hatchet-stone.svg\": \"5390\",\n\t\"./hourglass-purple.svg\": \"2651\",\n\t\"./hourglass-red.svg\": \"7f2f\",\n\t\"./hourglass-yellow.svg\": \"160d\",\n\t\"./land-mine.svg\": \"65e1\",\n\t\"./log.svg\": \"9cb0\",\n\t\"./magic-touch.svg\": \"5a8a\",\n\t\"./ore-bronze.svg\": \"56d2\",\n\t\"./ore-gold.svg\": \"950c\",\n\t\"./ore-silver.svg\": \"a1e3\",\n\t\"./pickaxe-bronze.svg\": \"8e27\",\n\t\"./pickaxe-gold.svg\": \"a164\",\n\t\"./pickaxe-silver.svg\": \"59b6\",\n\t\"./pickaxe-stone.svg\": \"59b5\",\n\t\"./pig.svg\": \"2d1e\",\n\t\"./rat.svg\": \"24a4\",\n\t\"./sacrifice-hand.svg\": \"9cc9\",\n\t\"./scythe-bronze.svg\": \"1be8\",\n\t\"./scythe-gold.svg\": \"feae\",\n\t\"./scythe-silver.svg\": \"370c\",\n\t\"./scythe-stone.svg\": \"3dc5\",\n\t\"./shield-cracked.svg\": \"ce81\",\n\t\"./shield-viking.svg\": \"254a\",\n\t\"./skeleton-king.svg\": \"6b48\",\n\t\"./skeleton.svg\": \"cb5a\",\n\t\"./spider-large.svg\": \"446f\",\n\t\"./spider-small.svg\": \"fa78\",\n\t\"./straw.svg\": \"7e84\",\n\t\"./strike-purple.svg\": \"bcef\",\n\t\"./strike-red.svg\": \"11b3\",\n\t\"./strike-yellow.svg\": \"d167\",\n\t\"./sword-bronze.svg\": \"4d2a\",\n\t\"./sword-gold.svg\": \"0d68\",\n\t\"./sword-silver.svg\": \"9879\",\n\t\"./sword.svg\": \"e7a0\",\n\t\"./tree.svg\": \"6f7d\",\n\t\"./troll.svg\": \"8f9a\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"6863\";","module.exports = __webpack_public_path__ + \"img/skeleton-king.1d9580bc.svg\";","module.exports = __webpack_public_path__ + \"img/draw-card.fb1ebdc4.svg\";","module.exports = __webpack_public_path__ + \"img/freeze-blue.0ac580a5.svg\";","module.exports = __webpack_public_path__ + \"img/discard-hand.cd1bea63.svg\";","module.exports = __webpack_public_path__ + \"img/tree.9676b0e0.svg\";","module.exports = __webpack_public_path__ + \"img/gold.0255c7f6.svg\";","module.exports = __webpack_public_path__ + \"img/forest.82e68667.svg\";","var map = {\n\t\"./scythe-bronze.svg\": \"1be8\",\n\t\"./scythe-gold.svg\": \"feae\",\n\t\"./scythe-silver.svg\": \"370c\",\n\t\"./scythe-stone.svg\": \"3dc5\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"79ed\";","module.exports = __webpack_public_path__ + \"img/dragon.8e5991f1.svg\";","module.exports = __webpack_public_path__ + \"img/card-random.ae703437.svg\";","module.exports = __webpack_public_path__ + \"img/straw.5aef2f85.svg\";","module.exports = __webpack_public_path__ + \"img/hourglass-red.e260fa47.svg\";","module.exports = __webpack_public_path__ + \"img/bread.d3ca998c.svg\";","module.exports = __webpack_public_path__ + \"img/damage-yellow.25bf58d0.svg\";","module.exports = __webpack_public_path__ + \"img/pickaxe-bronze.4af047fa.svg\";","module.exports = __webpack_public_path__ + \"img/troll.a910efcb.svg\";","module.exports = __webpack_public_path__ + \"img/sword.84fb8e90.svg\";","module.exports = __webpack_public_path__ + \"img/ore-gold.e67dd5f7.svg\";","module.exports = __webpack_public_path__ + \"img/sword-silver.34623b0a.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card.vue?vue&type=style&index=0&id=1c4b1c6e&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/log.7f14c8b6.svg\";","module.exports = __webpack_public_path__ + \"img/sacrifice-hand.3d284f9c.svg\";","module.exports = __webpack_public_path__ + \"img/pickaxe-gold.5401ba1c.svg\";","module.exports = __webpack_public_path__ + \"img/ore-silver.a81376a0.svg\";","module.exports = __webpack_public_path__ + \"img/cow.ea92a2cd.svg\";","module.exports = __webpack_public_path__ + \"img/silver.1d962be5.svg\";","var map = {\n\t\"./bronze.svg\": \"050f\",\n\t\"./clock.svg\": \"e947\",\n\t\"./gold.svg\": \"70c0\",\n\t\"./grain.svg\": \"1ed1\",\n\t\"./heart.svg\": \"d5ac\",\n\t\"./ice.svg\": \"45e6\",\n\t\"./silver.svg\": \"ad29\",\n\t\"./souls.svg\": \"d0d2\",\n\t\"./sword.svg\": \"9021\",\n\t\"./wood.svg\": \"5123\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"b165\";","module.exports = __webpack_public_path__ + \"img/strike-purple.a59d58d6.svg\";","module.exports = __webpack_public_path__ + \"img/damage-purple.dc6c9ed8.svg\";","module.exports = __webpack_public_path__ + \"img/chalice-yellow.7993550c.svg\";","module.exports = __webpack_public_path__ + \"img/skeleton.a4c6e423.svg\";","/**\n * Launching: The default, game is still starting up\n * Playing: Normal gameplay\n * Paused: Gameplay is suspended, to continue you need to resume\n * Stopped: Gameplay is stopped, to continue you need to start\n */\nexport enum GameState {\n Launching = \"Launching\",\n Playing = \"Playing\",\n Paused = \"Paused\",\n Stopped = \"Stopped\",\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('igt-notifications'),(_vm.showModal)?_c('igt-modal',{attrs:{\"cards\":_vm.gainedCards},on:{\"close\":function($event){_vm.showModal = false}}},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('p',{staticClass:\"text-2xl font-semibold text-white\"},[_vm._v(\"Success!\")])])]):_vm._e(),(_vm.showLoseModal)?_c('cq-lose-modal',{on:{\"close\":function($event){_vm.showLoseModal = false}}},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('p',{staticClass:\"text-2xl font-semibold text-white\"},[_vm._v(\"Failure!\")])])]):_vm._e(),_c('igt-tabs',{attrs:{\"header-class\":'bg-cq-slate'}},[_c('igt-tab',{attrs:{\"name\":\"Card Collection\",\"selected\":true}},[_c('cq-card-collection')],1),_c('igt-tab',{attrs:{\"name\":\"Adventure\",\"id\":\"adventure-tab-button\"}},[(_vm.game.features.adventure.isActive)?_c('cq-adventure'):_c('cq-level-selection',{attrs:{\"levels\":_vm.allLevels}})],1),_c('igt-tab',{attrs:{\"name\":\"Automation\"}},[_c('cq-automation',{attrs:{\"automation\":_vm.game.features.automation}})],1),_c('igt-tab',{attrs:{\"name\":\"Achievements\"}},[_c('igt-achievements',{attrs:{\"achievements-feature\":_vm.game.features.achievements}})],1),_c('igt-tab',{attrs:{\"name\":\"Level Editor\"}},[_c('cq-level-editor',{attrs:{\"editor\":_vm.game.features.editor}})],1),_c('igt-tab',{attrs:{\"name\":\"Settings\"}},[_c('igt-settings',{attrs:{\"settings\":_vm.game.features.settings}})],1),_c('igt-tab',{attrs:{\"name\":\"How to play\"}},[_c('cq-how-to-play')],1),_c('igt-tab',{attrs:{\"name\":\"Credits\"}},[_c('cq-credits')],1),_c('li',{staticClass:\"ml-8\",attrs:{\"slot\":\"other\"},slot:\"other\"},[_c('div',{staticClass:\"flex flex-row items-center\",attrs:{\"title\":'You have ' + _vm.game.features.wallet.money + ' coins'}},[_c('p',{staticClass:\"text-lg text-white p-2\"},[_vm._v(_vm._s(_vm._f(\"numberFormat\")(_vm.game.features.wallet.money))+\" \")]),_c('img',{staticClass:\"h-8 w-8\",attrs:{\"src\":require(\"@/assets/coins.svg\"),\"alt\":\"coins.svg\"}})])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export class LocalStorage {\n public static store(key: string, data: Record): void {\n localStorage.setItem(key, JSON.stringify(data));\n }\n\n // TODO(@Isha) add error handling here\n public static get(key: string): Record {\n return JSON.parse(localStorage.getItem(key) as string) as Record;\n }\n\n public static delete(key: string): void {\n localStorage.removeItem(key)\n }\n}\n","export enum CurrencyType {\n Money = \"Money\",\n Souls = \"Souls\",\n Wood = \"Wood\",\n Grain = \"Grain\",\n Bronze = \"Bronze\",\n Silver = \"Silver\",\n Gold = \"Gold\",\n}\n","import {DeveloperPanelTab} from \"@/ig-template/developer-panel/DeveloperPanelTab\";\n\nexport class DeveloperPanel {\n tabs: DeveloperPanelTab[];\n\n constructor(tabs: DeveloperPanelTab[]) {\n this.tabs = tabs;\n }\n}","export enum CardType {\n Monster,\n Action,\n Resource,\n Tool,\n Curse,\n}","import {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\n\nexport class DeveloperPanelTab {\n label: string;\n children: AbstractField[];\n\n\n constructor(label: string, children: AbstractField[]) {\n this.label = label;\n this.children = children;\n }\n\n isEmpty(): boolean {\n return this.children.length == 0;\n }\n}","export class AbstractField {\n object: object | undefined;\n componentName: string | undefined;\n\n propertyName: string;\n label: string | undefined;\n\n cssClass: string;\n\n constructor(propertyName: string, label?: string) {\n this.propertyName = propertyName;\n this.label = label;\n this.cssClass = 'btn-green';\n }\n\n get displayLabel() {\n return this.label ?? this.propertyName;\n }\n\n get value() {\n if (this.object == undefined) {\n console.warn(`Cannot get warning as object is undefined for AbstractField ${this.propertyName}`)\n return '';\n }\n return (this.object as any)[this.propertyName];\n }\n\n set value(value: any) {\n (this.object as any)[this.propertyName] = value;\n }\n\n setObject(object: object): this {\n this.object = object;\n return this;\n }\n\n setCssClass(cssClass: string): this {\n this.cssClass = cssClass;\n return this;\n }\n\n setComponentName(name: string): this {\n this.componentName = name;\n return this;\n }\n}","import {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\n\n/**\n * Runs a custom function when the button is pressed\n */\nexport class FunctionField extends AbstractField {\n\n func: Function ;\n\n constructor(func: Function, label?: string) {\n super('', label);\n this.func = func;\n this.setComponentName('igt-button-field');\n }\n\n}","import {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\n\nexport class DisplayField extends AbstractField {\n\n constructor(propertyName: string, label?: string) {\n super(propertyName, label);\n this.setComponentName('igt-display-field');\n }\n\n}","import {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\n\nexport class ChoiceField extends AbstractField {\n options: [string, number][];\n\n constructor(propertyName: string, options: [string, number][], label?: string) {\n super(propertyName, label);\n this.options = options;\n this.setComponentName('igt-choice-field');\n }\n\n}","import {Saveable} from \"@/ig-template/tools/saving/Saveable\";\nimport {SaveData} from \"@/ig-template/tools/saving/SaveData\";\nimport {CurrencyType} from \"@/ig-template/features/wallet/CurrencyType\";\nimport {Features} from \"@/ig-template/Features\";\nimport {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\n\n/**\n * An abstract class that all features should extend for.\n */\nexport abstract class Feature implements Saveable {\n\n /**\n * Initialize all feature attributes.\n * Note that you should not assume other features exist already here\n * @param saveKey\n */\n protected constructor(saveKey: string) {\n this.saveKey = saveKey;\n }\n\n /**\n * Called in dev mode, decides which fields to show in the developer panel.\n */\n getDeveloperPanelFields(): AbstractField[] {\n return []\n }\n\n /**\n * Called after all features are created.\n * Can be used to subscribe to other features events\n */\n initialize(features: Features): void {\n // This method intentionally left blank\n }\n\n /**\n * Runs when the game gets started. Can be run multiple times if the player can stop the game\n */\n start(): void {\n // This method intentionally left blank\n }\n\n /**\n * Runs when the game gets stopped. NOT when the game closes\n */\n stop(): void {\n // This method intentionally left blank\n }\n\n /**\n * Default false to avoid not implementing the proper restrictions\n */\n canAccess(): boolean {\n return false;\n }\n\n /**\n * Override in features if specified\n * IMPORTANT: Make sure to always return 1 as the default\n */\n getTotalCurrencyMultiplier(type: CurrencyType) {\n return 1;\n }\n\n /**\n * Gets called every Game.TICK_DURATION\n * @param delta time since last update\n */\n update(delta: number): void {\n // Override in subclass if needed\n }\n\n // Saving logic\n saveKey: string;\n\n abstract load(data: SaveData): void;\n\n abstract save(): SaveData;\n\n\n}\n","import {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\n\nexport class NumberField extends AbstractField {\n\n\n constructor(propertyName: string, label?: string) {\n super(propertyName, label);\n this.setComponentName('igt-number-field');\n }\n\n}","import {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\n\nexport class RangeField extends AbstractField {\n\n min: number;\n max: number\n step: number\n\n constructor(propertyName: string, min: number = 0, max: number = 100, step = 1, label?: string) {\n super(propertyName, label);\n this.min = min;\n this.max = max;\n this.step = step;\n this.setComponentName('igt-range-field');\n }\n\n}","import {Currency} from \"./Currency\";\nimport {CurrencyType} from \"./CurrencyType\";\n\nimport {ISimpleEvent, SimpleEventDispatcher} from \"strongly-typed-events\";\nimport {Feature} from \"@/ig-template/features/Feature\";\nimport {WalletSaveData} from \"@/ig-template/features/wallet/WalletSaveData\";\nimport {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\nimport {NumberField} from \"@/ig-template/developer-panel/fields/NumberField\";\nimport {FunctionField} from \"@/ig-template/developer-panel/fields/FunctionField\";\nimport {RangeField} from \"@/ig-template/developer-panel/fields/RangeField\";\n\n\nexport class Wallet extends Feature {\n private _currencies: Record = {} as Record\n private _multipliers: Record = {} as Record\n\n private _onCurrencyGain = new SimpleEventDispatcher();\n\n private readonly _supportedCurrencies: CurrencyType[];\n\n constructor(supportedCurrencies: CurrencyType[]) {\n super(\"wallet\");\n\n this._supportedCurrencies = supportedCurrencies;\n\n // Initialize currencies and multipliers\n for (const type of this._supportedCurrencies) {\n this._currencies[type as CurrencyType] = 0;\n this._multipliers[type as CurrencyType] = 1;\n }\n }\n\n public resetTemporaryCurrencies() {\n this._currencies[CurrencyType.Wood] = 0;\n this._currencies[CurrencyType.Grain] = 0;\n this._currencies[CurrencyType.Souls] = 0;\n this._currencies[CurrencyType.Bronze] = 0;\n this._currencies[CurrencyType.Silver] = 0;\n this._currencies[CurrencyType.Gold] = 0;\n }\n\n public getAmount(type: CurrencyType): number {\n if (!this.supportsCurrencyType(type)) {\n return 0;\n }\n return this._currencies[type];\n }\n\n /**\n * Gain the specified currency and apply the global multiplier\n */\n public gainCurrency(currency: Currency): void {\n currency.multiply(this.getCurrencyMultiplier(currency.type));\n\n if (!currency.isValid() || !this.supportsCurrencyType(currency.type)) {\n console.warn(`Could not add currency ${currency.toString()}`);\n return;\n }\n\n this._onCurrencyGain.dispatch(currency);\n this._currencies[currency.type] += currency.amount;\n }\n\n /**\n * Return true if the currency is valid and the player has the specified amount.\n */\n public hasCurrency(currency: Currency): boolean {\n if (!this.supportsCurrencyType(currency.type)) {\n return false;\n }\n return this._currencies[currency.type] >= currency.amount;\n }\n\n /**\n * Return true if all currencies are valid and the player has the specified amount.\n */\n hasCurrencies(costs: Currency[]) {\n for (const cost of costs) {\n if (!this.hasCurrency(cost)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Remove the currency amount from the specified currency.\n * IMPORTANT: This method does not care if amounts go negative\n * @param currency\n */\n public loseCurrency(currency: Currency): void {\n if (!currency.isValid() || !this.supportsCurrencyType(currency.type)) {\n console.warn(`Could not lose currency ${currency.toString()}`);\n return;\n }\n this._currencies[currency.type] -= currency.amount;\n }\n\n public loseMultipleCurrencies(currencies: Currency[]) {\n for (const currency of currencies) {\n this.loseCurrency(currency);\n }\n }\n\n public payMultipleIfPossible(currencies: Currency[]): boolean {\n if (this.hasCurrencies(currencies)) {\n this.loseMultipleCurrencies(currencies);\n return true;\n }\n return false;\n }\n\n /**\n * Subtracts the specified currency and returns true if the wallet has enough.\n * Otherwise return false and don't subtract anything\n * @param currency\n * @constructor\n */\n public payIfPossible(currency: Currency): boolean {\n if (this.hasCurrency(currency)) {\n this.loseCurrency(currency);\n return true;\n }\n return false;\n }\n\n /**\n * Return 1 if the multiplier is not set\n */\n public getCurrencyMultiplier(type: CurrencyType): number {\n return this._multipliers[type] ?? 1;\n }\n\n public setCurrencyMultiplier(multiplier: number, type: CurrencyType): void {\n if (multiplier <= 0 || isNaN(multiplier) || !this.supportsCurrencyType(type)) {\n return;\n }\n this._multipliers[type] = multiplier;\n }\n\n public supportsCurrencyType(type: CurrencyType): boolean {\n return this._supportedCurrencies.includes(type);\n }\n\n public canAccess(): boolean {\n return true;\n }\n\n public save(): WalletSaveData {\n return {\n money: this._currencies[CurrencyType.Money],\n }\n }\n\n public load(data: WalletSaveData): void {\n this._currencies[CurrencyType.Money] = data.money ?? this._currencies[CurrencyType.Money];\n }\n\n /**\n * Emitted whenever a currency is gained\n * @private\n */\n public get onCurrencyGain(): ISimpleEvent {\n return this._onCurrencyGain.asEvent();\n }\n\n public get money(): number {\n return this._currencies.Money;\n }\n\n public set money(value: number) {\n this._currencies.Money = value;\n }\n\n public get wood(): number {\n return this._currencies.Wood;\n }\n\n public get grain(): number {\n return this._currencies.Grain;\n }\n\n public get souls(): number {\n return this._currencies.Souls;\n }\n\n public get bronze(): number {\n return this._currencies.Bronze;\n }\n\n public get silver(): number {\n return this._currencies.Silver;\n }\n\n public get gold(): number {\n return this._currencies.Gold;\n }\n\n getDeveloperPanelFields(): AbstractField[] {\n return [\n new NumberField('money', 'Money'),\n new FunctionField(() => {\n this.money = 10\n }, 'Set money to 10').setCssClass('btn-blue'),\n new RangeField('money', 0, 100, 2, 'Money Slider'),\n ]\n }\n}\n","export enum KeyEventType {\n KeyPress = \"keypress\",\n KeyDown = \"keydown\",\n KeyUp = \"keyup\"\n}\n","export class Progress {\n actual: number;\n target: number;\n\n constructor(actual: number, target: number) {\n this.actual = actual;\n this.target = target;\n }\n}\n","import {Progress} from \"./Progress\";\n\n/**\n * Abstract class that can be configured to whatever requirements you like.\n */\nexport abstract class Requirement {\n\n // Getters as the user should view these as attributes\n\n get isCompleted(): boolean {\n return this.actualValue >= this.targetValue;\n }\n\n get progress(): Progress {\n return new Progress(Math.min(this.actualValue, this.targetValue), this.targetValue);\n }\n\n abstract get hint(): string;\n\n abstract get actualValue(): number;\n\n abstract get targetValue(): number;\n}\n","import {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\n\n/**\n * A requirement that is always completed\n */\nexport class NoRequirement extends Requirement {\n\n get isCompleted(): boolean {\n return true;\n }\n\n get actualValue(): number {\n return 0;\n }\n\n get hint(): string {\n return \"\";\n }\n\n get targetValue(): number {\n return 0;\n }\n}\n","import {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {KeyEventType} from \"@/ig-template/tools/hotkeys/KeyEventType\";\nimport {NoRequirement} from \"@/ig-template/tools/requirements/NoRequirement\";\n\nexport class KeyBind {\n keys: string | string[];\n description: string;\n callback: Function;\n requirement: Requirement;\n eventType: KeyEventType;\n\n /**\n * @param keys Can be any string that is accepted by Mousetrap (https://craig.is/killing/mice)\n * @param description\n * @param callback\n * @param requirement\n * @param eventType\n */\n constructor(keys: string | string[], description: string, callback: Function, requirement: Requirement = new NoRequirement(), eventType: KeyEventType = KeyEventType.KeyDown) {\n this.keys = keys;\n this.description = description;\n this.callback = callback;\n this.requirement = requirement;\n this.eventType = eventType;\n }\n}\n","import Mousetrap from 'mousetrap';\nimport {KeyBind} from \"@/ig-template/tools/hotkeys/KeyBind\";\nimport {KeyEventType} from \"@/ig-template/tools/hotkeys/KeyEventType\";\nimport {KeyBindDescription} from \"@/ig-template/tools/hotkeys/KeyBindDescription\";\n\n/**\n * Easily add KeyBinds from anywhere in your codebase.\n * Very useful to easily switch tabs or claim resources!\n */\nexport class HotKeys {\n\n /**\n * List of all registered keybinds\n * @private\n */\n private static _keyBinds: KeyBind[] = [];\n\n /**\n * Register a keybind with mousetrap, but add the requirement in the callback.\n */\n public static addKeyBind(keyBind: KeyBind) {\n Mousetrap.bind(keyBind.keys, () => {\n if (keyBind.requirement.isCompleted) {\n keyBind.callback();\n }\n }, keyBind.eventType)\n this._keyBinds.push(keyBind);\n }\n\n /**\n * Unregister a keybind from mousetrap.\n */\n public static removeKeyBind(keys: string | string[], action = KeyEventType.KeyDown) {\n this._keyBinds = this._keyBinds.filter((keyBind) => keyBind.keys !== keys);\n Mousetrap.unbind(keys, action);\n }\n\n /**\n * Manyally trigger a callback. Note that the requirement still needs to be completed for it to run.\n */\n public static trigger(keys: string, action = KeyEventType.KeyDown) {\n Mousetrap.trigger(keys, action);\n }\n\n /**\n * Generate a list of all descriptions to show in the UI.\n */\n public static getKeyBindDescriptions(): KeyBindDescription[] {\n return this._keyBinds.map(keyBind => {\n const keysText: string = (typeof keyBind.keys === 'string') ? keyBind.keys : keyBind.keys.join(\", \");\n\n return {\n 'keys': keysText,\n 'description': keyBind.description\n };\n });\n }\n\n /**\n * Remove all registered keybinds.\n */\n public static reset(): void {\n this._keyBinds = [];\n Mousetrap.reset();\n }\n}\n","import {CardId} from \"@/card-quest/cards/CardId\";\nimport {ISimpleEvent, SimpleEventDispatcher} from \"strongly-typed-events\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {Wallet} from \"@/ig-template/features/wallet/Wallet\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport abstract class PlayableCard {\n private _onDefeated = new SimpleEventDispatcher();\n\n id: CardId;\n title: string;\n description: string;\n image: string;\n costs: Currency[];\n goesToField: boolean;\n cardType: CardType;\n\n protected constructor(id: CardId, title: string, description: string, cardType: CardType, image: string, costs: Currency[] = [], goesToField: boolean = false) {\n this.id = id;\n this.title = title;\n this.description = description;\n this.cardType = cardType;\n this.image = image;\n this.costs = costs;\n this.goesToField = goesToField\n }\n\n\n setCosts(costs: Currency[]): this {\n this.costs = costs;\n return this;\n }\n\n abstract canPlay(adventure: Adventure): boolean;\n\n public canAfford(wallet: Wallet): boolean {\n return wallet.hasCurrencies(this.costs);\n }\n\n abstract turnHasPassed(adventure: Adventure): void;\n\n abstract play(adventure: Adventure): void;\n\n abstract tap(adventure: Adventure): void;\n\n abstract defeated(adventure: Adventure): void;\n\n protected dispatchDefeat() {\n this._onDefeated.dispatch(this);\n }\n\n /**\n * Whatever that means is up to the card\n * @private\n */\n public get onDefeated(): ISimpleEvent {\n return this._onDefeated.asEvent();\n }\n}","/**\n * Every id should map to one card.\n */\nexport enum CardId {\n // Resources\n LogCard,\n TreeCard,\n ForestCard,\n\n BronzeOre,\n SilverOre,\n GoldOre,\n\n SmallGrain,\n MediumGrain,\n\n // Actions\n MagicTouch,\n SacrificeHand,\n\n Draw3Card,\n\n LoseTurnsSmall,\n LoseTurnsMedium,\n LoseTurnsLarge,\n\n InstantDamagePlayerSmall,\n InstantDamagePlayerMedium,\n InstantDamagePlayerLarge,\n\n FreezeMonstersSmall,\n FreezeMonstersMedium,\n\n // Curses\n InstantDamageSmall,\n InstantDamageMedium,\n InstantDamageLarge,\n\n DiscardHand,\n ForestFire,\n RodOfAsclepius,\n\n\n // Healing\n Bread,\n ChaliceSmall,\n ChaliceMedium,\n ChaliceLarge,\n\n\n // Monsters\n Rat,\n Chicken,\n Cow,\n Pig,\n Farmer,\n LandMine,\n Skeleton,\n SkeletonKing,\n Troll,\n Spider,\n Spiderling,\n Dragon ,\n\n // Tools\n BronzeAxe,\n SilverAxe,\n GoldAxe,\n\n BronzePickaxe,\n SilverPickaxe,\n GoldPickaxe,\n\n BronzeScythe,\n SilverScythe,\n GoldScythe,\n\n // Weapons\n BasicSword,\n BronzeSword,\n SilverSword,\n GoldSword,\n\n CrackedShield,\n VikingShield,\n}","import {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class EmptyCard extends PlayableCard {\n\n\n constructor() {\n super(-1 as CardId, '', '', -1 as CardType, 'default.svg');\n }\n\n canPlay(): boolean {\n return false;\n }\n\n defeated(): void {\n // Empty\n }\n\n play(): void {\n // Empty\n }\n\n tap(): void {\n // Empty\n }\n\n turnHasPassed(): void {\n // Empty\n }\n\n}","import {Deck} from \"@/card-quest/cards/Deck\";\nimport {Level} from \"@/card-quest/adventure/Level\";\nimport {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\nimport {Feature} from \"@/ig-template/features/Feature\";\nimport {SaveData} from \"@/ig-template/tools/saving/SaveData\";\nimport {Wallet} from \"@/ig-template/features/wallet/Wallet\";\nimport {Features} from \"@/ig-template/Features\";\nimport {PlayerStats} from \"@/card-quest/adventure/PlayerStats\";\nimport {ISimpleEvent, SimpleEventDispatcher} from \"strongly-typed-events\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\nimport {KeyBind} from \"@/ig-template/tools/hotkeys/KeyBind\";\nimport {HotKeys} from \"@/ig-template/tools/hotkeys/HotKeys\";\nimport {EmptyCard} from \"@/card-quest/cards/EmptyCard\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\n\nexport class Adventure extends Feature {\n\n public readonly MAX_CARDS = 7;\n isActive: boolean;\n playerDeck: Deck;\n\n level: Level;\n\n playerHand: PlayableCard[] = [];\n field: PlayableCard[] = [];\n\n wallet: Wallet;\n playerStats: PlayerStats\n\n deletionQueue: PlayableCard[] = [];\n\n currentTurn: number = 0;\n\n private _onWin = new SimpleEventDispatcher();\n private _onLose = new SimpleEventDispatcher();\n private _onStart = new SimpleEventDispatcher();\n private _onCardPlayed = new SimpleEventDispatcher();\n private _onCardPlayedByLevel = new SimpleEventDispatcher();\n\n /**\n * Emitted whenever a new adventure is started\n */\n public get onStart(): ISimpleEvent {\n return this._onStart.asEvent();\n }\n\n /**\n * Emitted whenever the game is won\n */\n public get onWin(): ISimpleEvent {\n return this._onWin.asEvent();\n }\n\n /**\n * Emitted whenever the game is lost\n */\n public get onLose(): ISimpleEvent {\n return this._onLose.asEvent();\n }\n\n /**\n * Emitted whenever a card is played by the player\n */\n public get onCardPlayed(): ISimpleEvent {\n return this._onCardPlayed.asEvent();\n }\n\n /**\n * Emitted whenever a card is played by the level\n */\n public get onCardPlayedByLevel(): ISimpleEvent {\n return this._onCardPlayedByLevel.asEvent();\n }\n\n\n constructor(playerDeck: Deck, level: Level, playerStats: PlayerStats) {\n super('adventure');\n this.playerDeck = playerDeck;\n this.level = level;\n this.playerStats = playerStats;\n\n // Dummy wallet, will be overridden in initialize.\n this.wallet = new Wallet([]);\n this.isActive = false;\n\n this.playerHand = Array(this.MAX_CARDS).fill(new EmptyCard())\n\n }\n\n startAdventure() {\n if (this.isActive) {\n console.warn(\"Tried to activate adventure that was already active\");\n }\n this.isActive = true;\n this._onStart.dispatch(this);\n for (let i = 0; i < this.playerStats.startingCards; i++) {\n this.draw(true);\n }\n }\n\n initialize(features: Features) {\n this.wallet = features.wallet;\n\n const draw = new KeyBind(\"d\",\n \"Draw a card\", () => {\n if (this.isActive) {\n this.draw();\n }\n },\n );\n const wait = new KeyBind(\"w\",\n \"Wait a turn\", () => {\n if (this.isActive) {\n this.wait();\n }\n },\n );\n const forfeit = new KeyBind(\"q\",\n \"Forfeit the adventure\", () => {\n if (this.isActive) {\n this.forfeit();\n }\n },\n );\n\n for (let i = 1; i < 10; i++) {\n HotKeys.addKeyBind(new KeyBind(i.toString(), `Play card ${i}`, () => {\n if (this.isActive) {\n this.play(i - 1);\n }\n }));\n HotKeys.addKeyBind(new KeyBind(`ctrl+${i}`, `Tap card ${i}`, () => {\n if (this.isActive) {\n this.tap(i - 1);\n }\n }));\n HotKeys.addKeyBind(new KeyBind(`shift+${i}`, `Discard card ${i}`, () => {\n if (this.isActive) {\n this.discard(i - 1);\n }\n }));\n }\n HotKeys.addKeyBind(draw);\n HotKeys.addKeyBind(wait);\n HotKeys.addKeyBind(forfeit);\n\n }\n\n play(index: number, free: boolean = false) {\n const card = this.playerHand[index];\n if (!card || !card.canPlay(this)) {\n console.warn(`Cannot play card at index ${index}`);\n return;\n }\n\n if (!this.wallet.payMultipleIfPossible(card.costs)) {\n return;\n }\n\n\n this.playerHand.splice(index, 1, new EmptyCard());\n\n this._onCardPlayed.dispatch(card.id);\n\n this._play(card);\n\n this.turnHasPassed(free);\n }\n\n\n discard(index: number) {\n const card = this.playerHand[index];\n if (!card) {\n return;\n }\n this.playerHand.splice(index, 1, new EmptyCard());\n }\n\n\n public _play(card: PlayableCard) {\n if (card.goesToField) {\n this.field.push(card);\n card.onDefeated.subscribe(() => {\n card.defeated(this);\n this.queueDeletion(card);\n })\n }\n\n card.play(this);\n }\n\n tap(index: number) {\n const card = this.field[index];\n if (!card) {\n console.warn(`Cannot tap card at index ${index}`);\n return;\n }\n\n card.tap(this);\n\n this.turnHasPassed();\n }\n\n /**\n * Draw a card\n * @param free if the card was free, a turn won't pass afterwards.\n */\n draw(free: boolean = false) {\n if (!this.canDraw()) {\n console.warn('Cannot draw');\n return;\n }\n const card = this.playerDeck.draw()\n if (card != undefined) {\n for (let i = 0; i < this.playerHand.length; i++) {\n if (this.playerHand[i].id === -1) {\n this.playerHand.splice(i, 1, card);\n break;\n }\n }\n }\n\n this.turnHasPassed(free);\n }\n\n wait() {\n this.turnHasPassed();\n }\n\n forfeit() {\n this.playerStats.health = 0;\n this.turnHasPassed();\n }\n\n private turnHasPassed(free: boolean = false) {\n if (!free) {\n for (const card of this.field) {\n card.turnHasPassed(this);\n }\n this.currentTurn++;\n }\n\n // Remove cards queued for deletion\n for (const card of this.deletionQueue) {\n const index = this.field.indexOf(card, 0);\n if (index > -1) {\n this.field.splice(index, 1);\n }\n }\n\n this.checkForLevelCard();\n this.checkWinLoseConditions();\n }\n\n private checkWinLoseConditions() {\n if (this.isWon()) {\n this.isActive = false;\n\n this._onWin.dispatch(this.level);\n }\n\n if (this.isLost()) {\n this.isActive = false;\n\n this._onLose.dispatch(this.level);\n }\n }\n\n\n private isWon(): boolean {\n if (this.level.getCardsLeftCount() > 0) {\n return false;\n }\n for (const card of this.field) {\n if (card.cardType === CardType.Monster) {\n return false;\n }\n }\n return true;\n }\n\n private isLost(): boolean {\n return this.playerStats.health <= 0;\n }\n\n private checkForLevelCard() {\n const card = this.level.getCardAtTurn(this.currentTurn);\n if (!card) {\n return;\n }\n\n this._onCardPlayedByLevel.dispatch(card.id);\n this._play(card);\n this.turnHasPassed(true);\n\n }\n\n public canDraw() {\n return !this.playerDeck.isEmpty() && this.handSpace > 0;\n }\n\n public get handSpace() {\n let count = 0;\n for (const card of this.playerHand) {\n if (card.id === -1) {\n count++;\n }\n }\n return count;\n }\n\n load(): void {\n // Empty\n }\n\n save(): SaveData {\n return [];\n }\n\n private queueDeletion(card: PlayableCard) {\n this.deletionQueue.push(card);\n }\n}","import {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\n/**\n * Abstract class for action cards.\n * They have an immediate effect and do not go to the resource.\n */\nexport abstract class ActionCard extends PlayableCard {\n protected constructor(id: CardId, title: string, description: string, cardType: CardType, image: string) {\n super(id, title, description, cardType, image);\n this.goesToField = false;\n }\n\n canPlay(): boolean {\n return true;\n }\n\n defeated(): void {\n // Empty\n }\n\n tap(): void {\n // Empty\n }\n\n turnHasPassed(): void {\n // Empty\n }\n\n}","export enum ToolType {\n Axe,\n Pickaxe,\n Scythe,\n}","import {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {ToolTier} from \"@/card-quest/adventure/tools/ToolTier\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {ToolType} from \"@/card-quest/adventure/tools/ToolType\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class ToolCard extends ActionCard {\n type: ToolType;\n tier: ToolTier;\n\n\n constructor(id: CardId, title: string, description: string, image: string, type: ToolType, tier: ToolTier) {\n super(id, title, description, CardType.Tool, image);\n this.type = type;\n this.tier = tier;\n }\n\n play(adventure: Adventure): void {\n switch (this.type) {\n case ToolType.Axe:\n adventure.playerStats.activeAxe = Math.max(adventure.playerStats.activeAxe, this.tier);\n break;\n case ToolType.Pickaxe:\n adventure.playerStats.activePickaxe = Math.max(adventure.playerStats.activePickaxe, this.tier);\n break;\n case ToolType.Scythe:\n adventure.playerStats.activeScythe = Math.max(adventure.playerStats.activeScythe, this.tier);\n break;\n }\n }\n\n}","export enum ToolTier {\n Stone,\n Bronze,\n Silver,\n Gold,\n}","export enum LevelId {\n TutorialLevel,\n TheFarm,\n SpidersDen,\n TheWizard,\n TheTroll,\n TheDragon,\n TheNecromancer,\n}","import {CurrencyType} from \"./CurrencyType\";\n\n/**\n * A class to store currency amounts\n */\nexport class Currency {\n amount: number;\n type: CurrencyType;\n\n constructor(amount: number, type: CurrencyType) {\n this.amount = amount;\n this.type = type;\n }\n\n /**\n * Whether or not this currency is valid. Your game can have different rules\n */\n public isValid(): boolean {\n if (isNaN(this.amount)) {\n return false;\n }\n return this.amount >= 0;\n }\n\n public toString(): string {\n return `${this.amount} ${this.type}`;\n }\n\n // Math methods as TS does not support operator overloading\n public add(amount: number) {\n this.amount += amount;\n }\n\n public subtract(amount: number) {\n this.amount -= amount;\n }\n\n public multiply(amount: number) {\n this.amount *= amount;\n }\n\n public divide(amount: number) {\n if (amount === 0) {\n console.error(`Cannot divide ${this} by 0`);\n return;\n }\n this.amount /= amount;\n }\n}\n","export class Random {\n /**\n * Return a random integer between min (inclusive) and max (exclusive)\n * @param min inclusive\n * @param max exclusive\n */\n static intBetween(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min) + min);\n }\n\n /**\n * Return a boolean with probability [0, 1] to be true.\n * Returns false if the probability is not in this range. Can be ignored with the second argument requireNormalizedProbability.\n */\n static booleanWithProbability(probability: number, requireNormalizedProbability: boolean = true): boolean {\n if (requireNormalizedProbability && (probability < 0 || probability > 1)) {\n console.warn(`Trying to generate a boolean with probability ${probability} outside of [0,1].\n Run this method with requireNormalizedProbability=false if you're okay with this.`);\n return false;\n }\n return Math.random() < probability;\n }\n\n /**\n * Return a boolean with a 1 in chance to be true.\n * booleanWithChance(300) for example\n * @param chance\n */\n static booleanWithOneInChance(chance: number): boolean {\n return this.intBetween(0, chance) == 0;\n }\n\n /**\n * Return a random float between min (inclusive) and max (exclusive)\n * @param min inclusive\n * @param max exclusive\n */\n static floatBetween(min: number, max: number): number {\n return Math.random() * (max - min) + min;\n }\n\n /**\n * Return a random index from the array\n */\n static arrayIndex(array: T[]): number {\n return this.intBetween(0, array.length);\n }\n\n /**\n * Get a random entry from the array\n */\n static fromArray(array: T[]): T {\n return array[this.arrayIndex(array)];\n }\n\n /**\n * Shuffle an array using fisher-yates\n * @param array\n */\n static shuffle(array: T[]): T[] {\n let currentIndex = array.length, temporaryValue, randomIndex;\n\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n\n return array;\n }\n}\n","import {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\nimport {Random} from \"@/ig-template/tools/probability/Random\";\n\nexport class Deck {\n cards: PlayableCard[]\n\n constructor(cards: PlayableCard[] = []) {\n this.cards = cards;\n }\n\n public shuffle() {\n this.cards = Random.shuffle(this.cards);\n }\n\n public draw(): undefined | PlayableCard {\n if (this.isEmpty()) {\n return undefined;\n }\n return this.cards.shift();\n }\n\n public isEmpty() {\n return this.cards.length === 0;\n }\n\n public toDeckString(): string {\n return this.cards.join('.');\n }\n\n public getSize(): number {\n return this.cards.length;\n }\n}","import {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport abstract class HealthCard extends PlayableCard {\n health: number;\n\n protected constructor(id: CardId, title: string, description: string, cardType: CardType, image: string, health: number) {\n super(id, title, description, cardType, image);\n this.health = health;\n this.goesToField = true;\n }\n\n takeDamage(amount: number) {\n amount = Math.max(0, amount);\n this.health -= amount;\n if (this.health <= 0) {\n this.dispatchDefeat();\n }\n }\n\n}","import {HealthCard} from \"@/card-quest/cards/abstract/HealthCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CurrencyType} from \"@/ig-template/features/wallet/CurrencyType\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {ISignal, SignalDispatcher} from \"strongly-typed-events\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class EnemyCard extends HealthCard {\n reward: number\n\n attack: number;\n defense: number;\n\n attackInterval: number;\n nextAttack: number;\n\n frozenCooldown: number = 0;\n\n private _onAttack = new SignalDispatcher();\n\n constructor(id: CardId, title: string, description: string, image: string, health: number, reward: number, attack: number, defense: number, attackInterval: number) {\n super(id, title, `${description}\\nGain ${reward} souls on defeat`, CardType.Monster, image, health);\n this.reward = reward;\n this.attack = attack;\n this.defense = defense;\n this.attackInterval = attackInterval;\n this.nextAttack = attackInterval;\n this.goesToField = true;\n }\n\n canPlay(): boolean {\n return true;\n }\n\n defeated(adventure: Adventure): void {\n adventure.wallet.gainCurrency(new Currency(this.reward, CurrencyType.Souls))\n }\n\n play(): void {\n // Empty\n }\n\n tap(adventure: Adventure): void {\n const attack = adventure.playerStats.getAttack();\n const damage = attack - this.defense;\n this.takeDamage(damage);\n }\n\n turnHasPassed(adventure: Adventure): void {\n if (this.frozenCooldown > 0) {\n this.frozenCooldown--;\n return;\n }\n\n this.nextAttack--;\n if (this.nextAttack <= 0) {\n this.performAttack(adventure);\n this.nextAttack = this.attackInterval;\n }\n }\n\n protected performAttack(adventure: Adventure) {\n if (this.health <= 0) {\n return;\n }\n adventure.playerStats.attackFor(this.attack);\n this._onAttack.dispatch();\n }\n\n /**\n * Emitted whenever this monster attacks\n */\n public get onAttack(): ISignal {\n return this._onAttack.asEvent();\n }\n}","import {CardId} from \"@/card-quest/cards/CardId\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class MagicTouchCard extends ActionCard {\n\n constructor() {\n super(CardId.MagicTouch, 'Magic touch', 'Tap every card in the field once', CardType.Action, 'magic-touch.svg');\n }\n\n play(adventure: Adventure): void {\n for (const card of adventure.field) {\n card.tap(adventure);\n }\n }\n\n}","import {HealthCard} from \"@/card-quest/cards/abstract/HealthCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class WoodCard extends HealthCard {\n reward: Currency;\n\n\n constructor(id: CardId, title: string, image: string, health: number, reward: Currency) {\n super(id, title, `Gain ${reward} when cut down`, CardType.Resource, image, health);\n this.reward = reward;\n }\n\n defeated(adventure: Adventure): void {\n adventure.wallet.gainCurrency(this.reward);\n }\n\n\n canPlay(): boolean {\n return true;\n }\n\n play(): void {\n // Empty\n }\n\n tap(adventure: Adventure): void {\n this.takeDamage(adventure.playerStats.getWoodCuttingDamage());\n }\n\n turnHasPassed(): void {\n // Empty\n }\n\n}","export class EnumHelpers {\n\n static getNamesAndValues(e: any) {\n return EnumHelpers.getNames(e).map(n => ({ name: n, value: e[n] as T }));\n }\n\n static getNames(e: any) {\n return EnumHelpers.getObjValues(e).filter(v => typeof v === 'string') as string[];\n }\n\n static getValues(e: any) {\n return EnumHelpers.getObjValues(e).filter(v => typeof v === 'number') as T[];\n }\n\n static getSelectList(e: any, stringConverter: (arg: U) => string) {\n const selectList = new Map();\n this.getValues(e).forEach(val => selectList.set(val as T, stringConverter(val as unknown as U)));\n return selectList;\n }\n\n static getSelectListAsArray(e: any, stringConverter: (arg: U) => string) {\n return Array.from(this.getSelectList(e, stringConverter), value => ({ value: value[0] as T, presentation: value[1] }));\n }\n\n private static getObjValues(e: any): (number | string)[] {\n return Object.keys(e).map(k => e[k]);\n }\n}","import {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardRepository} from \"@/card-quest/cards/CardRepository\";\n\nexport class IdDeck {\n cards: number[] = [];\n\n constructor() {\n const ids = CardRepository.getAllCardsIds();\n\n for (let i = 0; i < ids.length; i++) {\n this.cards.push(0);\n }\n\n }\n\n public addCard(id: CardId) {\n const newAmount = this.cards[id] + 1;\n this.cards.splice(id, 1, newAmount)\n }\n\n public removeCard(id: CardId) {\n const newAmount = Math.max(0, this.cards[id] - 1);\n this.cards.splice(id, 1, newAmount)\n }\n\n public getCountForCard(id: CardId): number {\n return this.cards[id];\n }\n\n public isEmpty() {\n return this.cards.length === 0;\n }\n\n public toDeckString(): string {\n let ids: number[] = [];\n for (let i = 0; i < this.cards.length; i++) {\n if (this.cards[i] != 0) {\n ids = ids.concat(Array(this.cards[i]).fill(i));\n }\n }\n return ids.join('.');\n }\n\n public static fromDeckString(deckString: string): IdDeck {\n return CardRepository.getIdDeckFromString(deckString) ?? new IdDeck();\n }\n\n public getSize(): number {\n return this.cards.reduce((a, b) => a + b, 0);\n }\n}","import {HealthCard} from \"@/card-quest/cards/abstract/HealthCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class OreCard extends HealthCard {\n reward: Currency;\n\n\n constructor(id: CardId, title: string, image: string, health: number, reward: Currency) {\n super(id, title, `Gain ${reward} ore when mined`, CardType.Resource, image, health);\n this.reward = reward;\n }\n\n defeated(adventure: Adventure): void {\n adventure.wallet.gainCurrency(this.reward);\n }\n\n\n canPlay(): boolean {\n return true;\n }\n\n play(): void {\n // Empty\n }\n\n tap(adventure: Adventure): void {\n this.takeDamage(adventure.playerStats.getMiningDamage());\n }\n\n turnHasPassed(): void {\n // Empty\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {Weapon} from \"@/card-quest/adventure/Weapon\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class WeaponCard extends ActionCard {\n weapon: Weapon;\n\n\n constructor(id: CardId, title: string, description: string, image: string, weapon: Weapon) {\n super(id, title, `${description}.\\nReplaces current weapon`, CardType.Tool, image);\n this.weapon = weapon;\n }\n\n play(adventure: Adventure): void {\n adventure.playerStats.activeWeapon = this.weapon;\n }\n\n}","export class Weapon {\n name: string;\n attack: number;\n defense: number;\n\n constructor(name: string, attack: number, defense: number) {\n this.name = name;\n this.attack = attack;\n this.defense = defense;\n }\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class DrawCardsCard extends ActionCard {\n amount: number;\n\n\n constructor(id: CardId, image: string, amount: number) {\n super(id, `Draw ${amount} cards`, `Draw ${amount} cards in a single turn`, CardType.Action, image);\n this.amount = amount;\n }\n\n play(adventure: Adventure): void {\n for (let i = 0; i < this.amount; i++) {\n adventure.draw(true);\n }\n }\n\n}","import {HealthCard} from \"@/card-quest/cards/abstract/HealthCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class GrainCard extends HealthCard {\n reward: Currency;\n\n\n constructor(id: CardId, title: string, image: string, health: number, reward: Currency) {\n super(id, title, `Gain ${reward} when cut down`, CardType.Resource, image, health);\n this.reward = reward;\n }\n\n defeated(adventure: Adventure): void {\n adventure.wallet.gainCurrency(this.reward);\n }\n\n\n canPlay(): boolean {\n return true;\n }\n\n play(): void {\n // Empty\n }\n\n tap(adventure: Adventure): void {\n this.takeDamage(adventure.playerStats.getForagingDamage());\n }\n\n turnHasPassed(): void {\n // Empty\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class HealingCard extends ActionCard {\n amount: number;\n\n\n constructor(id: CardId, title: string, description: string, image: string, amount: number) {\n super(id, title, description, CardType.Action, image);\n this.amount = amount;\n }\n\n play(adventure: Adventure): void {\n adventure.playerStats.health += this.amount;\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class InstantDamageCard extends ActionCard {\n damage: number\n\n constructor(id: CardId, title: string, image: string, damage: number) {\n super(id, title, `Instantly deal ${damage} damage, ignoring defense`, CardType.Curse, image);\n this.damage = damage;\n }\n\n play(adventure: Adventure): void {\n adventure.playerStats.attackFor(this.damage, true);\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class LoseTurnsCard extends ActionCard {\n amount: number;\n\n\n constructor(id: CardId, image: string, amount: number) {\n super(id, `-${amount} turns`, `Travel ${amount} turns back to the past`, CardType.Action, image);\n this.amount = amount;\n }\n\n play(adventure: Adventure): void {\n // Substract one more, so playing this card won't count as a turn.\n adventure.currentTurn = Math.max(0, adventure.currentTurn - (this.amount + 1));\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {WoodCard} from \"@/card-quest/cards/content/resource/WoodCard\";\nimport {CurrencyType} from \"@/ig-template/features/wallet/CurrencyType\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class ForestFire extends ActionCard {\n\n\n constructor() {\n super(CardId.ForestFire, 'Forest Fire', 'Remove all wood resources from the field', CardType.Curse, 'forest-fire.svg');\n }\n\n play(adventure: Adventure): void {\n for (const card of adventure.field) {\n if (card instanceof WoodCard) {\n card.reward = new Currency(0, CurrencyType.Wood);\n card.takeDamage(Infinity);\n }\n }\n }\n\n}","import {EnemyCard} from \"@/card-quest/cards/content/monster/EnemyCard\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\n\nexport class LandMineCard extends EnemyCard {\n\n constructor(id: CardId, title: string, image: string, reward: number, countDown: number) {\n super(id, title, `Explodes when tapped. Self-destructs.`, image, Infinity, reward, 10, 0, countDown);\n }\n\n\n tap(adventure: Adventure): void {\n this.performAttack(adventure);\n this.health = 0;\n this.takeDamage(Infinity);\n\n }\n\n turnHasPassed(): void {\n this.nextAttack--;\n if (this.nextAttack <= 0) {\n this.health = 0;\n this.takeDamage(Infinity)\n }\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\n\nexport class DiscardHand extends ActionCard {\n\n constructor() {\n super(CardId.DiscardHand, 'Discard hand', 'The player is forced to discard their entire hand', CardType.Curse, 'discard-hand.svg');\n }\n\n play(adventure: Adventure): void {\n for (let i = 0; i < adventure.playerHand.length; i++) {\n adventure.discard(i);\n }\n }\n\n}","import {EnemyCard} from \"@/card-quest/cards/content/monster/EnemyCard\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardRepository} from \"@/card-quest/cards/CardRepository\";\n\nexport class NecromancerCard extends EnemyCard {\n spawn: CardId;\n\n\n constructor(id: CardId, title: string, description: string, image: string, health: number, reward: number, defense: number, attackInterval: number, spawn: CardId) {\n super(id, title, description, image, health, reward, 0, defense, attackInterval);\n this.spawn = spawn;\n }\n\n protected performAttack(adventure: Adventure) {\n if (this.health <= 0) {\n return;\n }\n\n const cardToSpawn = CardRepository.getCard(this.spawn);\n adventure._play(cardToSpawn);\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {EnemyCard} from \"@/card-quest/cards/content/monster/EnemyCard\";\n\nexport class RodOfAsclepiusCard extends ActionCard {\n\n constructor() {\n super(CardId.RodOfAsclepius, 'Rod of Asclepius', 'All monsters in the field gain 3 health', CardType.Curse, 'asclepius.svg');\n }\n\n play(adventure: Adventure): void {\n for (const card of adventure.field) {\n if (card instanceof EnemyCard) {\n card.health += 3;\n }\n }\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CurrencyType} from \"@/ig-template/features/wallet/CurrencyType\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\n\nexport class SacrificeHandCard extends ActionCard {\n\n constructor() {\n super(CardId.SacrificeHand, 'Sacrifice hand', 'Discard entire hand.\\nGain 3 souls', CardType.Action, 'sacrifice-hand.svg');\n }\n\n play(adventure: Adventure): void {\n for (let i = 0; i < adventure.playerHand.length; i++) {\n adventure.discard(i);\n }\n adventure.wallet.gainCurrency(new Currency(3, CurrencyType.Souls));\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\nimport {EnemyCard} from \"@/card-quest/cards/content/monster/EnemyCard\";\n\nexport class InstantDamagePlayerCard extends ActionCard {\n damage: number\n\n constructor(id: CardId, title: string, image: string, damage: number) {\n super(id, title, `Instantly deal ${damage} damage to each monster, ignoring defense`, CardType.Action, image);\n this.damage = damage;\n }\n\n play(adventure: Adventure): void {\n for (const card of adventure.field) {\n if (card instanceof EnemyCard) {\n card.takeDamage(this.damage);\n }\n }\n }\n\n}","import {ActionCard} from \"@/card-quest/cards/abstract/ActionCard\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\nimport {EnemyCard} from \"@/card-quest/cards/content/monster/EnemyCard\";\n\nexport class FreezeMonstersCard extends ActionCard {\n turns: number\n\n constructor(id: CardId, title: string, image: string, turns: number) {\n super(id, title, `Freeze all monsters for ${turns} turns`, CardType.Action, image);\n this.turns = turns;\n }\n\n play(adventure: Adventure): void {\n for (const card of adventure.field) {\n if (card instanceof EnemyCard) {\n card.frozenCooldown += this.turns + 1;\n }\n }\n }\n\n}","import {CardId} from \"@/card-quest/cards/CardId\";\nimport {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\nimport {ToolCard} from \"@/card-quest/cards/content/action/ToolCard\";\nimport {ToolType} from \"@/card-quest/adventure/tools/ToolType\";\nimport {ToolTier} from \"@/card-quest/adventure/tools/ToolTier\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {CurrencyType} from \"@/ig-template/features/wallet/CurrencyType\";\nimport {Deck} from \"@/card-quest/cards/Deck\";\nimport {EnemyCard} from \"@/card-quest/cards/content/monster/EnemyCard\";\nimport {MagicTouchCard} from \"@/card-quest/cards/content/action/MagicTouchCard\";\nimport {WoodCard} from \"@/card-quest/cards/content/resource/WoodCard\";\nimport {EnumHelpers} from \"@/ig-template/tools/EnumHelpers\";\nimport {IdDeck} from \"@/card-quest/cards/IdDeck\";\nimport {OreCard} from \"@/card-quest/cards/content/resource/OreCard\";\nimport {WeaponCard} from \"@/card-quest/cards/content/weapon/WeaponCard\";\nimport {Weapon} from \"@/card-quest/adventure/Weapon\";\nimport {DrawCardsCard} from \"@/card-quest/cards/content/action/DrawCardsCard\";\nimport {GrainCard} from \"@/card-quest/cards/content/resource/GrainCard\";\nimport {HealingCard} from \"@/card-quest/cards/content/action/HealingCard\";\nimport {InstantDamageCard} from \"@/card-quest/cards/content/action/InstantDamageCard\";\nimport {LoseTurnsCard} from \"@/card-quest/cards/content/action/LoseTurnsCard\";\nimport {ForestFire} from \"@/card-quest/cards/content/action/ForestFire\";\nimport {LandMineCard} from \"@/card-quest/cards/content/monster/LandMineCard\";\nimport {DiscardHand} from \"@/card-quest/cards/content/action/DiscardHand\";\nimport {NecromancerCard} from \"@/card-quest/cards/content/monster/NecromancerCard\";\nimport {RodOfAsclepiusCard} from \"@/card-quest/cards/content/action/RodOfAsclepiusCard\";\nimport {SacrificeHandCard} from \"@/card-quest/cards/content/action/SacrificeHandCard\";\nimport {InstantDamagePlayerCard} from \"@/card-quest/cards/content/action/InstantDamagePlayerCard\";\nimport {FreezeMonstersCard} from \"@/card-quest/cards/content/action/FreezeMonstersCard\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class CardRepository {\n\n public static getCard(id: CardId): PlayableCard {\n switch (id) {\n case CardId.LogCard:\n return new WoodCard(CardId.LogCard, 'Log', 'log.svg', 3, new Currency(1, CurrencyType.Wood));\n case CardId.TreeCard:\n return new WoodCard(CardId.TreeCard, 'Tree', 'tree.svg', 6, new Currency(3, CurrencyType.Wood));\n case CardId.ForestCard:\n return new WoodCard(CardId.ForestCard, 'Forest', 'forest.svg', 10, new Currency(5, CurrencyType.Wood));\n\n case CardId.BronzeOre:\n return new OreCard(CardId.BronzeOre, 'Bronze ore', 'ore-bronze.svg', 3, new Currency(1, CurrencyType.Bronze));\n case CardId.SilverOre:\n return new OreCard(CardId.SilverOre, 'Silver ore', 'ore-silver.svg', 6, new Currency(1, CurrencyType.Silver));\n case CardId.GoldOre:\n return new OreCard(CardId.GoldOre, 'Gold ore', 'ore-gold.svg', 10, new Currency(1, CurrencyType.Gold));\n\n case CardId.SmallGrain:\n return new GrainCard(CardId.SmallGrain, 'Grain', 'grain.svg', 3, new Currency(1, CurrencyType.Grain));\n case CardId.MediumGrain:\n return new GrainCard(CardId.MediumGrain, 'Straw', 'straw.svg', 6, new Currency(3, CurrencyType.Grain));\n\n\n // Healing\n case CardId.Bread:\n return new HealingCard(CardId.Bread, 'Bread', 'Heal 10 hitpoints', 'bread.svg', 10).setCosts([new Currency(3, CurrencyType.Grain)]);\n case CardId.ChaliceSmall:\n return new HealingCard(CardId.ChaliceSmall, 'Goblet of Energy', 'Heal 5 hitpoints', 'chalice-yellow.svg', 5).setCosts([new Currency(3, CurrencyType.Souls)])\n case CardId.ChaliceMedium:\n return new HealingCard(CardId.ChaliceMedium, 'Goblet of Fire', 'Heal 10 hitpoints', 'chalice-red.svg', 10).setCosts([new Currency(6, CurrencyType.Souls)])\n case CardId.ChaliceLarge:\n return new HealingCard(CardId.ChaliceLarge, 'Goblet of Mystics', 'Heal 15 hitpoints', 'chalice-purple.svg', 15).setCosts([new Currency(9, CurrencyType.Souls)])\n\n // Actions\n case CardId.MagicTouch:\n return new MagicTouchCard().setCosts([new Currency(2, CurrencyType.Souls)]);\n case CardId.SacrificeHand:\n return new SacrificeHandCard();\n case CardId.Draw3Card:\n return new DrawCardsCard(CardId.Draw3Card, 'draw-card.svg', 3).setCosts([new Currency(1, CurrencyType.Souls)]);\n\n\n case CardId.LoseTurnsSmall:\n return new LoseTurnsCard(CardId.LoseTurnsSmall, 'hourglass-yellow.svg', 5).setCosts([new Currency(1, CurrencyType.Souls)])\n case CardId.LoseTurnsMedium:\n return new LoseTurnsCard(CardId.LoseTurnsMedium, 'hourglass-red.svg', 10).setCosts([new Currency(2, CurrencyType.Souls)])\n case CardId.LoseTurnsLarge:\n return new LoseTurnsCard(CardId.LoseTurnsLarge, 'hourglass-purple.svg', 15).setCosts([new Currency(3, CurrencyType.Souls)])\n\n case CardId.InstantDamagePlayerSmall:\n return new InstantDamagePlayerCard(CardId.InstantDamagePlayerSmall, 'Energy Strike', 'strike-yellow.svg', 3).setCosts([new Currency(3, CurrencyType.Souls)])\n case CardId.InstantDamagePlayerMedium:\n return new InstantDamagePlayerCard(CardId.InstantDamagePlayerMedium, 'Fire Strike', 'strike-red.svg', 5).setCosts([new Currency(4, CurrencyType.Souls)])\n case CardId.InstantDamagePlayerLarge:\n return new InstantDamagePlayerCard(CardId.InstantDamagePlayerLarge, 'Mystic Strike', 'strike-purple.svg', 7).setCosts([new Currency(5, CurrencyType.Souls)])\n\n case CardId.FreezeMonstersSmall:\n return new FreezeMonstersCard(CardId.FreezeMonstersSmall, 'Frozen Blast', 'freeze-blue.svg', 5).setCosts([new Currency(2, CurrencyType.Souls)]);\n case CardId.FreezeMonstersMedium:\n return new FreezeMonstersCard(CardId.FreezeMonstersMedium, 'Frozen 2 Blast', 'freeze-purple.svg', 10).setCosts([new Currency(3, CurrencyType.Souls)]);\n\n // Curses\n case CardId.InstantDamageSmall:\n return new InstantDamageCard(CardId.InstantDamageSmall, 'Energy Surge', 'damage-yellow.svg', 3)\n case CardId.InstantDamageMedium:\n return new InstantDamageCard(CardId.InstantDamageMedium, 'Fire Surge', 'damage-red.svg', 5)\n case CardId.InstantDamageLarge:\n return new InstantDamageCard(CardId.InstantDamageLarge, 'Mystic Surge', 'damage-purple.svg', 10)\n\n case CardId.DiscardHand:\n return new DiscardHand();\n\n case CardId.ForestFire:\n return new ForestFire();\n case CardId.RodOfAsclepius:\n return new RodOfAsclepiusCard();\n\n // Weapons\n case CardId.BasicSword:\n return new WeaponCard(CardId.BasicSword, 'Basic Sword', \"A bit stronger\", 'sword.svg', new Weapon('Basic Sword', 2, 0)).setCosts([new Currency(2, CurrencyType.Wood)])\n case CardId.BronzeSword:\n return new WeaponCard(CardId.BronzeSword, 'Bronze Sword', \"Made from the bronzest bronze\", 'sword-bronze.svg', new Weapon('Bronze Sword', 3, 1)).setCosts([new Currency(3, CurrencyType.Wood), new Currency(1, CurrencyType.Bronze)])\n case CardId.SilverSword:\n return new WeaponCard(CardId.SilverSword, 'Silver Sword', \"It looks nice and shiny\", 'sword-silver.svg', new Weapon('Silver Sword', 4, 2)).setCosts([new Currency(3, CurrencyType.Wood), new Currency(2, CurrencyType.Silver)])\n case CardId.GoldSword:\n return new WeaponCard(CardId.GoldSword, 'Gold Sword', \"Worth its weight in gold\", 'sword-gold.svg', new Weapon('Gold Sword', 6, 2)).setCosts([new Currency(4, CurrencyType.Wood), new Currency(2, CurrencyType.Gold)])\n case CardId.CrackedShield:\n return new WeaponCard(CardId.CrackedShield, 'Cracked Shield', 'Better than nothing', 'shield-cracked.svg', new Weapon('Cracked Shield', 0, 1));\n case CardId.VikingShield:\n return new WeaponCard(CardId.VikingShield, 'Viking Shield', 'Very good at blocking, but renders you unable to attack', 'shield-viking.svg', new Weapon('Viking Shield', 0, 5)).setCosts([new Currency(2, CurrencyType.Wood), new Currency(2, CurrencyType.Silver)])\n\n // Monsters\n case CardId.Rat:\n return new EnemyCard(CardId.Rat, 'Rat', 'When the counter reaches 0, it attacks.', 'rat.svg', 2, 1, 1, 0, 3);\n case CardId.Chicken:\n return new EnemyCard(CardId.Chicken, 'Chicken', 'Cluck cluck.', 'chicken.svg', 2, 1, 1, 0, 3);\n case CardId.Cow:\n return new EnemyCard(CardId.Cow, 'Cow', 'Moo?', 'cow.svg', 5, 2, 2, 0, 3);\n case CardId.Pig:\n return new EnemyCard(CardId.Pig, 'Pig', 'Oink oink', 'pig.svg', 3, 1, 2, 0, 2);\n case CardId.Farmer:\n return new EnemyCard(CardId.Farmer, 'Master Farmer', 'Cor blimey mate, what are ye doing in me pockets?', 'farmer.svg', 9, 2, 1, 1, 4);\n case CardId.LandMine:\n return new LandMineCard(CardId.LandMine, 'Land Mine', 'land-mine.svg', 2, 10);\n case CardId.Skeleton:\n return new EnemyCard(CardId.Skeleton, 'Skeleton', 'Very spooky but moderately scary', 'skeleton.svg', 8, 1, 2, 1, 4);\n case CardId.SkeletonKing:\n return new NecromancerCard(CardId.SkeletonKing, 'Skeleton King', 'Has the power to raise skeletons from the dead', 'skeleton-king.svg', 20, 5, 1, 3, CardId.Skeleton);\n case CardId.Troll:\n return new EnemyCard(CardId.Troll, 'Troll', 'It does not smell good', 'troll.svg', 6, 2, 2, 2, 5);\n case CardId.Spider:\n return new NecromancerCard(CardId.Spider, 'Spider', 'Kill it before it gives birth to spiderlings!', 'spider-large.svg', 20, 3, 0, 5, CardId.Spiderling);\n case CardId.Spiderling:\n return new EnemyCard(CardId.Spiderling, 'Spiderling', 'It looks kind of cute.', 'spider-small.svg', 3, 0, 2, 0, 3);\n case CardId.Dragon:\n return new EnemyCard(CardId.Dragon, 'Dragon', 'It breathes fire... and oxygen.', 'dragon.svg', 22, 5, 3, 2, 4);\n\n // Tools\n case CardId.BronzeAxe:\n return new ToolCard(CardId.BronzeAxe, 'Bronze axe', '2 woodcutting damage', 'hatchet-bronze.svg', ToolType.Axe, ToolTier.Bronze).setCosts([new Currency(1, CurrencyType.Wood), new Currency(1, CurrencyType.Bronze)]);\n case CardId.SilverAxe:\n return new ToolCard(CardId.SilverAxe, 'Silver axe', '3 woodcutting damage', 'hatchet-silver.svg', ToolType.Axe, ToolTier.Silver).setCosts([new Currency(2, CurrencyType.Wood), new Currency(1, CurrencyType.Silver)]);\n case CardId.GoldAxe:\n return new ToolCard(CardId.GoldAxe, 'Gold axe', '4 woodcutting damage', 'hatchet-gold.svg', ToolType.Axe, ToolTier.Gold).setCosts([new Currency(3, CurrencyType.Wood), new Currency(1, CurrencyType.Gold)]);\n\n case CardId.BronzePickaxe:\n return new ToolCard(CardId.BronzePickaxe, 'Bronze Pickaxe', '2 mining damage', 'pickaxe-bronze.svg', ToolType.Pickaxe, ToolTier.Bronze).setCosts([new Currency(1, CurrencyType.Wood), new Currency(1, CurrencyType.Bronze)]);\n case CardId.SilverPickaxe:\n return new ToolCard(CardId.SilverPickaxe, 'Silver Pickaxe', '3 mining damage', 'pickaxe-silver.svg', ToolType.Pickaxe, ToolTier.Silver).setCosts([new Currency(2, CurrencyType.Wood), new Currency(1, CurrencyType.Silver)]);\n case CardId.GoldPickaxe:\n return new ToolCard(CardId.GoldPickaxe, 'Gold Pickaxe', '4 mining damage', 'pickaxe-gold.svg', ToolType.Pickaxe, ToolTier.Gold).setCosts([new Currency(3, CurrencyType.Wood), new Currency(1, CurrencyType.Gold)]);\n\n case CardId.BronzeScythe:\n return new ToolCard(CardId.BronzeScythe, 'Bronze Scythe', '2 foraging damage', 'scythe-bronze.svg', ToolType.Scythe, ToolTier.Bronze).setCosts([new Currency(1, CurrencyType.Wood), new Currency(1, CurrencyType.Bronze)]);\n case CardId.SilverScythe:\n return new ToolCard(CardId.SilverScythe, 'Silver Scythe', '3 foraging damage', 'scythe-silver.svg', ToolType.Scythe, ToolTier.Silver).setCosts([new Currency(2, CurrencyType.Wood), new Currency(1, CurrencyType.Silver)]);\n case CardId.GoldScythe:\n return new ToolCard(CardId.GoldScythe, 'Gold Scythe', '4 foraging damage', 'scythe-gold.svg', ToolType.Scythe, ToolTier.Gold).setCosts([new Currency(3, CurrencyType.Wood), new Currency(1, CurrencyType.Gold)]);\n\n\n default:\n throw new Error(`Card with id ${id} not found.`)\n }\n }\n\n public static getAllCardsIds(): CardId[] {\n return EnumHelpers.getValues(CardId);\n }\n\n public static getCardTypeCount() {\n return EnumHelpers.getValues(CardType).length;\n }\n\n public static getAllCards(): PlayableCard[] {\n return this.getAllCardsIds().map(id => {\n return this.getCard(id);\n })\n }\n\n public static getCardCount(): number {\n return this.getAllCardsIds().length;\n }\n\n public static getDeckFromString(deckString: string): Deck | null {\n if (deckString === '') {\n return new Deck();\n }\n try {\n const ids = deckString.split('.').map(string => {\n return parseInt(string);\n });\n return this.getDeckFromCardIds(ids);\n } catch (e) {\n return null;\n }\n }\n\n public static getDeckFromIdDeck(idDeck: IdDeck): Deck {\n // TODO Ugly but it works\n return this.getDeckFromString(idDeck.toDeckString()) ?? new Deck();\n }\n\n public static getIdDeckFromString(deckString: string): IdDeck | null {\n if (deckString === '') {\n return new IdDeck();\n }\n try {\n const ids = deckString.split('.').map(string => {\n return parseInt(string);\n });\n const idDeck = new IdDeck();\n for (const id of ids) {\n idDeck.addCard(id);\n }\n return idDeck;\n } catch (e) {\n return null;\n }\n }\n\n public static getDeckFromCardIds(ids: CardId[]): Deck {\n const cards = ids.map(id => {\n return this.getCard(id);\n })\n return new Deck(cards);\n }\n}","export enum CardPackId {\n BeginnerPack = 'Beginner Pack',\n BronzeTierPack = 'Bronze Tier Pack',\n SilverTierPack = 'Silver Tier Pack',\n GoldTierPack = 'Gold Tier Pack',\n FarmPack = 'Farm Pack',\n ActionCardPack = 'Action Card Pack',\n MonsterPack = 'Monster Pack',\n Legendary = \"Legendary Pack\",\n CursePack = \"Curse Pack\",\n}","import {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\nimport {CardPackId} from \"@/card-quest/features/card-collection/CardPackId\";\nimport {LevelId} from \"@/card-quest/adventure/LevelId\";\nimport {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {Random} from \"@/ig-template/tools/probability/Random\";\n\nexport class Level {\n id: LevelId;\n name: string;\n description: string;\n rewardPack: CardPackId;\n rewardCount: number\n moneyReward: number;\n cards: [number, PlayableCard][];\n\n requirement: Requirement\n shuffleDeck: boolean;\n\n constructor(id: LevelId, name: string, description: string, rewardPack: CardPackId, moneyReward: number, cards: [number, PlayableCard][], requirement: Requirement, rewardCount: number = 3, shuffleDeck: boolean = true) {\n this.id = id;\n this.name = name;\n this.description = description;\n this.rewardPack = rewardPack;\n this.rewardCount = rewardCount;\n this.moneyReward = moneyReward;\n this.cards = cards;\n this.requirement = requirement;\n this.shuffleDeck = shuffleDeck;\n }\n\n getMoneyReward() {\n return Random.floatBetween(0.8, 1.2) * this.moneyReward;\n }\n\n getCardsLeftCount() {\n return this.cards.length;\n }\n\n canAccess(): boolean {\n return this.requirement.isCompleted;\n }\n\n getFutureCards(turn: number): [number, PlayableCard][] {\n return this.cards.filter(card => {\n return card[0] > turn;\n })\n }\n\n getNextCard(turn: number): PlayableCard {\n return this.getFutureCards(turn)[0][1];\n }\n\n getCardAtTurn(level: number): PlayableCard | undefined {\n const card = this.cards.find(card => {\n return card[0] === level;\n })\n if (!card) {\n return undefined\n }\n const index = this.cards.indexOf(card);\n this.cards.splice(index, 1);\n return card[1];\n }\n}","import {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {ArrayStatistic} from \"@/ig-template/features/statistics/ArrayStatistic\";\n\nexport class ArrayStatisticRequirement extends Requirement {\n statistic: ArrayStatistic;\n index: number\n targetValue: number;\n\n\n constructor(statistic: ArrayStatistic, index: number, targetValue: number) {\n super();\n this.statistic = statistic;\n this.index = index;\n this.targetValue = targetValue;\n }\n\n getTargetValue(): number {\n return this.targetValue;\n }\n\n get actualValue(): number {\n return this.statistic.value[this.index];\n }\n\n get hint(): string {\n return `The statistic ${this.statistic.description} needs to be at least ${this.targetValue}`;\n }\n}","export enum StatisticId {\n TotalMoneyGained = \"total-money-gained\",\n CardsPlayed = \"cards-played\",\n CardsPlayedByLevel = \"cards-played-by-level\",\n LevelsCompleted = \"levels-completed\",\n CardsPlayedPerType = \"cards-played-by-type\",\n}","import {ArrayStatisticRequirement} from \"@/ig-template/features/statistics/requirements/ArrayStatisticRequirement\";\nimport {ArrayStatistic} from \"@/ig-template/features/statistics/ArrayStatistic\";\nimport {LevelId} from \"@/card-quest/adventure/LevelId\";\n\nexport class LevelRequirement extends ArrayStatisticRequirement {\n\n constructor(statistic: ArrayStatistic, index: LevelId, targetValue: number) {\n super(statistic, index, targetValue);\n }\n\n get hint(): string {\n return `Complete level ${this.index} ${this.targetValue} times`;\n }\n}","import {EnumHelpers} from \"@/ig-template/tools/EnumHelpers\";\nimport {LevelId} from \"@/card-quest/adventure/LevelId\";\nimport {Level} from \"@/card-quest/adventure/Level\";\nimport {CardPackId} from \"@/card-quest/features/card-collection/CardPackId\";\nimport {CardRepository} from \"@/card-quest/cards/CardRepository\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {LevelRequirement} from \"@/card-quest/LevelRequirement\";\nimport {NoRequirement} from \"@/ig-template/tools/requirements/NoRequirement\";\nimport {StatisticId} from \"@/ig-template/features/statistics/StatisticId\";\nimport {App} from \"@/App\";\nimport {ArrayStatistic} from \"@/ig-template/features/statistics/ArrayStatistic\";\n\nexport class LevelRepository {\n public static getLevel(id: LevelId): Level {\n switch (id) {\n case LevelId.TutorialLevel:\n return new Level(LevelId.TutorialLevel, 'The Cellar', 'A good place to start',\n CardPackId.BeginnerPack,\n 50, [\n [15, CardRepository.getCard(CardId.Rat)],\n [30, CardRepository.getCard(CardId.Rat)],\n ],\n new NoRequirement(),\n );\n case LevelId.TheFarm:\n return new Level(LevelId.TheFarm, 'The farm', 'Watch out, the farmer has defense stats. You might need a stronger weapon!',\n CardPackId.BronzeTierPack,\n 100, [\n [15, CardRepository.getCard(CardId.Chicken)],\n [20, CardRepository.getCard(CardId.Chicken)],\n [25, CardRepository.getCard(CardId.Pig)],\n [30, CardRepository.getCard(CardId.Cow)],\n [40, CardRepository.getCard(CardId.Farmer)],\n ],\n new LevelRequirement(App.game.features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TutorialLevel, 1)\n );\n case LevelId.SpidersDen:\n return new Level(LevelId.SpidersDen, 'Spiders Den', 'The Spider can spawn Spiderlings, be careful!',\n CardPackId.BronzeTierPack, 150,\n [\n [10, CardRepository.getCard(CardId.Spiderling)],\n [12, CardRepository.getCard(CardId.Spider)],\n ],\n new LevelRequirement(App.game.features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheFarm, 1)\n )\n case LevelId.TheWizard:\n return new Level(LevelId.TheWizard, 'The Wizard', 'He will smite you down with his spells',\n CardPackId.SilverTierPack,\n 200, [\n [25, CardRepository.getCard(CardId.InstantDamageSmall)],\n [30, CardRepository.getCard(CardId.InstantDamageSmall)],\n [35, CardRepository.getCard(CardId.Skeleton)],\n [40, CardRepository.getCard(CardId.InstantDamageMedium)],\n [47, CardRepository.getCard(CardId.InstantDamageMedium)],\n [55, CardRepository.getCard(CardId.InstantDamageLarge)],\n [60, CardRepository.getCard(CardId.Skeleton)],\n ],\n new LevelRequirement(App.game.features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheFarm, 1)\n );\n case LevelId.TheDragon:\n return new Level(LevelId.TheDragon, 'Dragons Den', 'Can you defeat the Green Eyes Red Dragon?',\n CardPackId.GoldTierPack,\n 400, [\n [5, CardRepository.getCard(CardId.Chicken)],\n [30, CardRepository.getCard(CardId.ForestFire)],\n [32, CardRepository.getCard(CardId.Dragon)],\n [40, CardRepository.getCard(CardId.Skeleton)],\n [50, CardRepository.getCard(CardId.InstantDamageMedium)],\n [60, CardRepository.getCard(CardId.Skeleton)],\n [61, CardRepository.getCard(CardId.RodOfAsclepius)],\n [70, CardRepository.getCard(CardId.InstantDamageLarge)],\n ],\n new LevelRequirement(App.game.features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheWizard, 1)\n );\n\n case LevelId.TheTroll:\n return new Level(LevelId.TheTroll, 'The Troll', 'Prepare yourself for nonsense about to be thrown your way',\n CardPackId.ActionCardPack,\n 300, [\n [25, CardRepository.getCard(CardId.ForestFire)],\n [28, CardRepository.getCard(CardId.LandMine)],\n [32, CardRepository.getCard(CardId.InstantDamageMedium)],\n [35, CardRepository.getCard(CardId.Skeleton)],\n [45, CardRepository.getCard(CardId.DiscardHand)],\n [50, CardRepository.getCard(CardId.BasicSword)],\n [53, CardRepository.getCard(CardId.InstantDamageMedium)],\n [60, CardRepository.getCard(CardId.Troll)],\n [62, CardRepository.getCard(CardId.RodOfAsclepius)],\n [70, CardRepository.getCard(CardId.InstantDamageLarge)],\n [75, CardRepository.getCard(CardId.DiscardHand)],\n ],\n new LevelRequirement(App.game.features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheWizard, 1)\n );\n case LevelId.TheNecromancer:\n return new Level(LevelId.TheNecromancer, 'The Necromancer', 'Has the ability to raise enemies from the dead',\n CardPackId.Legendary,\n 600, [\n [25, CardRepository.getCard(CardId.Skeleton)],\n [30, CardRepository.getCard(CardId.LandMine)],\n [35, CardRepository.getCard(CardId.SkeletonKing)],\n [38, CardRepository.getCard(CardId.DiscardHand)],\n [44, CardRepository.getCard(CardId.RodOfAsclepius)],\n [51, CardRepository.getCard(CardId.SkeletonKing)],\n [53, CardRepository.getCard(CardId.InstantDamageMedium)],\n ],\n new LevelRequirement(App.game.features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheDragon, 1)\n )\n default:\n throw new Error(`Level with id ${id} not found.`)\n }\n }\n\n public static getAllLevels(): Level[] {\n return this.getAllLevelsIds().map(id => {\n return this.getLevel(id);\n })\n }\n\n public static getLevelCount(): number {\n return this.getAllLevelsIds().length;\n }\n\n public static getAllLevelsIds(): LevelId[] {\n return EnumHelpers.getValues(LevelId);\n }\n}","export enum SettingId {\n ShowSaveMessage = \"Show save message\",\n ShowUnobtainedCards = \"Show unobtained cards\",\n}\n","import {GameState} from \"./GameState\";\nimport {LocalStorage} from \"@/ig-template/tools/saving/LocalStorage\";\nimport {CurrencyType} from \"@/ig-template/features/wallet/CurrencyType\";\nimport {Features} from \"@/ig-template/Features\";\nimport {Feature} from \"@/ig-template/features/Feature\";\nimport {DeveloperPanel} from \"@/ig-template/developer-panel/DeveloperPanel\";\nimport {DeveloperPanelTab} from \"@/ig-template/developer-panel/DeveloperPanelTab\";\nimport {FunctionField} from \"@/ig-template/developer-panel/fields/FunctionField\";\nimport {DisplayField} from \"@/ig-template/developer-panel/fields/DisplayField\";\nimport {ChoiceField} from \"@/ig-template/developer-panel/fields/ChoiceField\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardRepository} from \"@/card-quest/cards/CardRepository\";\nimport {LevelRepository} from \"@/card-quest/adventure/LevelRepository\";\nimport {LevelId} from \"@/card-quest/adventure/LevelId\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {Level} from \"@/card-quest/adventure/Level\";\nimport {ISignal, ISimpleEvent, SignalDispatcher, SimpleEventDispatcher} from \"strongly-typed-events\";\n\nexport class Game {\n private _tickInterval: number = -1;\n\n /**\n * Object with registered features. If you want them as a list use this.featureList\n */\n public readonly features: Features;\n\n public state: GameState;\n\n\n private readonly TICK_DURATION = 0.1;\n private readonly SAVE_INTERVAL = 30;\n private _nextSave = this.SAVE_INTERVAL;\n\n private gameSpeed = 1;\n private _lastUpdate: number = 0;\n\n /**\n * Emitted whenever the game saves\n */\n private _onSave = new SignalDispatcher();\n\n public get onSave(): ISignal {\n return this._onSave.asEvent();\n }\n\n private _onLose = new SimpleEventDispatcher();\n /**\n * Emitted whenever the game is lost\n */\n public get onLose(): ISimpleEvent {\n return this._onLose.asEvent();\n }\n\n\n /**\n * Make sure this key is unique to your game.\n * Otherwise you might run into loading conflicts when multiple games are hosted on the same domain (such as {\n this.start()\n }, 'Start').setCssClass('btn-green'),\n new FunctionField(() => {\n this.pause()\n }, 'Pause').setCssClass('btn-blue'),\n new FunctionField(() => {\n this.resume()\n }, 'Resume').setCssClass('btn-green'),\n new FunctionField(() => {\n this.stop()\n }, 'Stop').setCssClass('btn-red'),\n ]),\n\n ];\n\n\n for (const feature of this.featureList) {\n const fields = feature.getDeveloperPanelFields();\n\n // Inject the feature into the resource.\n for (const field of fields) {\n field.setObject(feature);\n }\n\n const tab = new DeveloperPanelTab(feature.saveKey, fields)\n if (!tab.isEmpty()) {\n tabs.push(tab)\n }\n }\n return new DeveloperPanel(tabs);\n }\n\n /**\n * Update all features\n */\n public update(): void {\n const now = new Date().getTime() / 1000;\n const timeDifference = now - this._lastUpdate;\n\n if (this.state != GameState.Playing) {\n return;\n }\n\n const delta = timeDifference * this.gameSpeed;\n for (const feature of this.featureList) {\n feature.update(delta)\n }\n\n this._lastUpdate = now;\n this._nextSave -= delta;\n if (this._nextSave <= 0) {\n this.save();\n this._nextSave = this.SAVE_INTERVAL;\n }\n }\n\n public getTotalCurrencyMultiplier(type: CurrencyType): number {\n let multiplier = 1;\n for (const feature of this.featureList) {\n multiplier *= feature.getTotalCurrencyMultiplier(type);\n }\n return multiplier;\n }\n\n /**\n * Initialize all features\n */\n public initialize(): void {\n for (const feature of this.featureList) {\n feature.initialize(this.features);\n }\n }\n\n public hasEnoughCards(): boolean {\n return this.features.collection.hasEnoughCards();\n }\n\n public deckIsValid(): boolean {\n return this.features.collection.currentDeckIsValid();\n }\n\n public canStartAdventure(): boolean {\n return this.hasEnoughCards() && this.deckIsValid() && this.canAffordSuperPowers();\n }\n\n public goOnCustomAdventure(level: Level) {\n this._goOnAnAdventure(level);\n }\n\n public goOnAnAdventure(levelId: LevelId) {\n if (!this.canStartAdventure()) {\n return;\n }\n\n const newLevel = LevelRepository.getLevel(levelId);\n\n if (!newLevel.canAccess()) {\n return;\n }\n\n this._goOnAnAdventure(newLevel);\n }\n\n private _goOnAnAdventure(level: Level) {\n const newAdventure = new Adventure(\n CardRepository.getDeckFromIdDeck(this.features.collection.currentDeck),\n level,\n this.features.superPowers.getPlayerStats()\n )\n\n if (newAdventure.level.shuffleDeck) {\n newAdventure.playerDeck.shuffle();\n }\n\n this.features.statistics.registerAdventureSubscribers(newAdventure);\n\n this.features.wallet.resetTemporaryCurrencies();\n newAdventure.wallet = this.features.wallet;\n\n this.features.wallet.payIfPossible(new Currency(this.features.superPowers.getTotalCosts(), CurrencyType.Money));\n\n this.features.adventure = Object.assign(this.features.adventure, newAdventure);\n\n this.features.achievements.registerAdventureSubscribers(this.features);\n this.features.automation.registerAdventure(this.features.adventure);\n\n this.features.adventure.onWin.subscribe((level: Level) => {\n this.features.collection.openCardPack(level.rewardPack, level.rewardCount);\n this.features.wallet.gainCurrency(new Currency(level.getMoneyReward(), CurrencyType.Money));\n })\n\n this.features.adventure.onLose.subscribe(level => {\n this._onLose.dispatch(level);\n })\n\n this.features.adventure.startAdventure();\n }\n\n\n /**\n * Start the main update loop\n */\n public start(): void {\n if (this.state !== GameState.Stopped && this.state !== GameState.Launching) {\n this.printStateWarning(\"Cannot start the game twice.\");\n return;\n }\n\n for (const feature of this.featureList) {\n feature.start();\n }\n\n this._lastUpdate = new Date().getTime() / 1000;\n this._tickInterval = setInterval(() => this.update(), this.TICK_DURATION * 1000);\n\n this.state = GameState.Playing;\n console.debug(\"Game Started\");\n }\n\n public pause(): void {\n if (this.state !== GameState.Playing) {\n this.printStateWarning(\"Cannot pause the game if we're not playing.\");\n return;\n }\n clearInterval(this._tickInterval);\n\n this.state = GameState.Paused;\n console.debug(\"Game Paused\");\n }\n\n\n public resume(): void {\n if (this.state !== GameState.Paused) {\n this.printStateWarning(\"Cannot resume the game if we're not paused.\");\n return;\n }\n\n this._lastUpdate = new Date().getTime() / 1000;\n this._tickInterval = setInterval(() => this.update(), this.TICK_DURATION * 1000);\n\n this.state = GameState.Playing;\n console.debug(\"Game Resumed\");\n }\n\n /**\n * Stop the main update loop\n */\n public stop(): void {\n if (this.state === GameState.Stopped) {\n this.printStateWarning(\"Cannot stop the game if we're already stopped.\");\n return;\n }\n clearInterval(this._tickInterval);\n\n for (const feature of this.featureList) {\n feature.stop();\n }\n\n this.state = GameState.Stopped;\n console.debug(\"Stopped\");\n }\n\n /**\n * Recursively save all registered features\n */\n public save(): void {\n const res: Record = {};\n for (const feature of this.featureList) {\n res[feature.saveKey] = feature.save()\n }\n LocalStorage.store(this.SAVE_KEY, res)\n this._onSave.dispatch();\n }\n\n /**\n * Delete the locally stored save\n */\n public deleteSave(): void {\n LocalStorage.delete(this.SAVE_KEY);\n }\n\n /**\n * Recursively load all registered features\n */\n public load(): void {\n const saveData = LocalStorage.get(this.SAVE_KEY)\n if (saveData == null) {\n return;\n }\n for (const feature of this.featureList) {\n const featureSaveData: Record = saveData[feature.saveKey] as Record;\n if (featureSaveData == null) {\n continue;\n }\n feature.load(featureSaveData);\n }\n }\n\n private printStateWarning(reason: string): void {\n console.warn(`Current state = ${this.state}.`, reason);\n }\n\n private get featureList(): Feature[] {\n return Object.values(this.features)\n }\n\n private canAffordSuperPowers() {\n return this.features.wallet.hasCurrency(new Currency(this.features.superPowers.getTotalCosts(), CurrencyType.Money))\n }\n}\n","import {SettingId} from \"@/ig-template/features/settings/SettingId\";\nimport {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {NoRequirement} from \"@/ig-template/tools/requirements/NoRequirement\";\nimport {SettingOption} from \"@/ig-template/features/settings/SettingOption\";\n\n\nexport abstract class Setting {\n id: SettingId;\n displayName: string;\n options: SettingOption[];\n defaultValue: T;\n value: T;\n\n requirement: Requirement;\n\n protected constructor(id: SettingId, displayName: string, options: SettingOption[], defaultValue: T, requirement: Requirement = new NoRequirement()) {\n this.id = id;\n this.displayName = displayName;\n this.options = options;\n this.defaultValue = defaultValue;\n\n this.value = defaultValue;\n\n this.requirement = requirement;\n }\n\n set(value: T): void {\n if (!this.canAccess) {\n return;\n }\n if (this.validValue(value)) {\n this.value = value;\n } else {\n console.warn(`${value} is not a valid value for setting ${this.id}. It could be that the option is not yet unlocked.`);\n }\n }\n\n validValue(value: T): boolean {\n const option = this.options.find((option) => option.value === value);\n if (option == undefined || !option.canAccess) {\n return false;\n }\n return true;\n }\n\n isSelected(value: T): boolean {\n return this.value === value;\n }\n\n get canAccess(): boolean {\n return this.requirement.isCompleted\n }\n\n}\n","export enum AchievementId {\n PlayedGobletOfFire = \"played-goblet-of-fire\",\n PlayedFrozen2 = \"played-frozen-2\",\n EnemyPlayedForestFire = \"enemy-played-forest-fire\",\n AtLeastOneSuperPower = \"at-least-one-superpower\",\n AllSuperPowers = \"all-super-powers\",\n TotalMoney100 = \"100-total-money\",\n TotalMoney1000 = \"1000-total-money\",\n TotalMoney10000 = \"10000-total-money\",\n FirstLevelCompleted = \"first-level-completed\",\n WizardLevelCompleted = \"farm-level-completed\",\n FarmLevelCompleted = \"wizard-level-completed\",\n DragonLevelCompleted = \"dragon-level-completed\",\n SpiderLevelCompleted = \"spider-level-completed\",\n TrollLevelCompleted = \"troll-level-completed\",\n NecromancerLevelCompleted = \"necromancer-level-completed\",\n Played100Resources = \"played-100-resources\",\n Played100Monsters = \"played-100-monsters\",\n Played100Actions = \"played-100-actions\",\n Played100Curses = \"played-100-curses\",\n Played100Tools = \"played-100-tools\",\n}","import {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {NoRequirement} from \"@/ig-template/tools/requirements/NoRequirement\";\n\nexport class SettingOption {\n displayText: string;\n value: T;\n\n requirement: Requirement;\n\n\n constructor(displayText: string, value: T, requirement: Requirement = new NoRequirement()) {\n this.displayText = displayText;\n this.value = value;\n this.requirement = requirement;\n }\n\n get canAccess() {\n return this.requirement.isCompleted;\n }\n}\n","import {Setting} from \"@/ig-template/features/settings/Setting\";\nimport {SettingId} from \"@/ig-template/features/settings/SettingId\";\nimport {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {SettingOption} from \"@/ig-template/features/settings/SettingOption\";\n\n/**\n * A setting that can only be on or off.\n * The options can't have requirements but this can be solved by using the correct defaultValue and requirement.\n */\nexport class BooleanSetting extends Setting {\n\n constructor(id: SettingId, displayName: string, defaultValue: boolean, requirement?: Requirement) {\n super(id, displayName, [\n new SettingOption(\"On\", true),\n new SettingOption(\"Off\", false)\n ], defaultValue, requirement);\n }\n\n public toggle(): void {\n this.value = !this.value;\n }\n}\n","import {Feature} from \"@/ig-template/features/Feature\";\nimport {SettingsSaveData} from \"@/ig-template/features/settings/SettingsSaveData\";\nimport {Setting} from \"@/ig-template/features/settings/Setting\";\nimport {SettingId} from \"@/ig-template/features/settings/SettingId\";\nimport {AbstractField} from \"@/ig-template/developer-panel/fields/AbstractField\";\nimport {FunctionField} from \"@/ig-template/developer-panel/fields/FunctionField\";\nimport {BooleanSetting} from \"@/ig-template/features/settings/BooleanSetting\";\n\nexport class Settings extends Feature {\n list: Setting[];\n\n constructor() {\n super(\"settings\");\n this.list = [];\n }\n\n add(setting: Setting) {\n if (!this.getSetting(setting.id)) {\n this.list.push(setting);\n }\n }\n\n initialize() {\n this.add(new BooleanSetting(SettingId.ShowUnobtainedCards, \"Show unobtained cards\", false))\n this.add(new BooleanSetting(SettingId.ShowSaveMessage, \"Show save message\", true))\n }\n\n setSetting(id: SettingId, value: T) {\n const setting = this.getSetting(id);\n if (setting) {\n setting.set(value);\n } else {\n console.warn(`Setting ${id} does not exist`);\n }\n\n }\n\n getSetting(id: SettingId): Setting | null {\n for (let i = 0; i < this.list.length; i++) {\n if (this.list[i].id == id) {\n return this.list[i];\n }\n }\n console.warn(`Setting ${id} does not exist`);\n return null;\n }\n\n\n load(data: SettingsSaveData): void {\n for (const settingSave of data.list) {\n this.getSetting(settingSave.id)?.set(settingSave.value);\n }\n }\n\n save(): SettingsSaveData {\n\n return {\n list: this.list.map(setting => {\n return {\n id: setting.id,\n value: setting.value\n }\n })\n }\n\n }\n\n getDeveloperPanelFields(): AbstractField[] {\n return [\n new FunctionField(() => {\n alert('test')\n }, 'Test'),\n ]\n }\n\n}\n","import {StatisticId} from \"@/ig-template/features/statistics/StatisticId\";\nimport {StatisticsValue} from \"@/ig-template/features/statistics/StatisticsValueType\";\n\nexport abstract class AbstractStatistic {\n id: StatisticId;\n description: string;\n abstract value: StatisticsValue;\n\n protected constructor(id: StatisticId, description: string) {\n this.id = id;\n this.description = description;\n }\n\n}","import {AbstractStatistic} from \"@/ig-template/features/statistics/AbstractStatistic\";\nimport {StatisticId} from \"@/ig-template/features/statistics/StatisticId\";\n\nexport class NumberStatistic extends AbstractStatistic {\n value: number;\n\n constructor(id: StatisticId, description: string, value: number = 0) {\n super(id, description);\n this.value = value;\n }\n\n}","import {StatisticsValue} from \"./StatisticsValueType\";\nimport {StatisticId} from \"@/ig-template/features/statistics/StatisticId\";\n\nexport class StatisticsSaveData {\n list: Record;\n\n constructor() {\n this.list = {} as Record;\n }\n\n addStatistic(id: StatisticId, value: StatisticsValue): void {\n this.list[id] = value;\n }\n\n}","import {AbstractStatistic} from \"@/ig-template/features/statistics/AbstractStatistic\";\nimport {StatisticId} from \"@/ig-template/features/statistics/StatisticId\";\n\nexport class ArrayStatistic extends AbstractStatistic {\n value: number[];\n\n constructor(id: StatisticId, description: string, value: number[]) {\n super(id, description);\n this.value = value;\n }\n\n\n}","/**\n * Statistics class to keep track of increasing numbers\n */\nimport {StatisticId} from \"@/ig-template/features/statistics/StatisticId\";\nimport {NumberStatistic} from \"@/ig-template/features/statistics/NumberStatistic\";\nimport {Feature} from \"@/ig-template/features/Feature\";\nimport {AbstractStatistic} from \"@/ig-template/features/statistics/AbstractStatistic\";\nimport {StatisticsSaveData} from \"@/ig-template/features/statistics/StatisticsSaveData\";\nimport {StatisticsValue} from \"@/ig-template/features/statistics/StatisticsValueType\";\nimport {Features} from \"@/ig-template/Features\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {CurrencyType} from \"@/ig-template/features/wallet/CurrencyType\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {ArrayStatistic} from \"@/ig-template/features/statistics/ArrayStatistic\";\nimport {CardRepository} from \"@/card-quest/cards/CardRepository\";\nimport {LevelRepository} from \"@/card-quest/adventure/LevelRepository\";\nimport {Level} from \"@/card-quest/adventure/Level\";\n\nexport class Statistics extends Feature {\n\n list: Record\n\n\n constructor() {\n super('statistics');\n this.list = {} as Record;\n }\n\n initialize(features: Features): void {\n this.registerStatistic(new NumberStatistic(StatisticId.TotalMoneyGained, 'Total money'))\n this.registerStatistic(new ArrayStatistic(StatisticId.CardsPlayed, 'Cards played', Array(CardRepository.getCardCount()).fill(0)))\n this.registerStatistic(new ArrayStatistic(StatisticId.CardsPlayedByLevel, 'Cards played against you', Array(CardRepository.getCardCount()).fill(0)))\n this.registerStatistic(new ArrayStatistic(StatisticId.LevelsCompleted, 'Levels completed', Array(LevelRepository.getLevelCount()).fill(0)))\n this.registerStatistic(new ArrayStatistic(StatisticId.CardsPlayedPerType, 'Card types played', Array(CardRepository.getCardTypeCount()).fill(0)))\n\n features.wallet.onCurrencyGain.subscribe((currency: Currency) => {\n if (currency.type === CurrencyType.Money) {\n this.incrementNumberStatistic(StatisticId.TotalMoneyGained, currency.amount);\n }\n });\n this.registerAdventureSubscribers(features.adventure);\n }\n\n registerAdventureSubscribers(adventure: Adventure) {\n adventure.onCardPlayed.subscribe((id: CardId) => {\n this.incrementArrayStatistic(StatisticId.CardsPlayed, id, 1);\n this.incrementArrayStatistic(StatisticId.CardsPlayedPerType, CardRepository.getCard(id).cardType, 1);\n });\n adventure.onCardPlayedByLevel.subscribe((id: CardId) => {\n this.incrementArrayStatistic(StatisticId.CardsPlayedByLevel, id, 1);\n });\n adventure.onWin.subscribe((level: Level) => {\n this.incrementArrayStatistic(StatisticId.LevelsCompleted, level.id, 1);\n })\n }\n\n incrementNumberStatistic(id: StatisticId, amount = 1): void {\n if (!this.hasStatistic(id)) {\n console.warn(`Could not find statistic with id ${id}`)\n return;\n }\n const statistic = this.list[id];\n if (statistic instanceof NumberStatistic) {\n statistic.value += amount;\n }\n }\n\n incrementArrayStatistic(id: StatisticId, index: number, amount = 1): void {\n if (!this.hasStatistic(id)) {\n console.warn(`Could not find statistic with id ${id}`)\n return;\n }\n const statistic = this.list[id];\n if (statistic instanceof ArrayStatistic) {\n const newValue = statistic.value[index] + amount;\n statistic.value.splice(index, 1, newValue)\n }\n }\n\n public getStatistic(id: StatisticId): AbstractStatistic | null {\n if (!this.hasStatistic(id)) {\n console.warn(`Could not find statistic with id ${id}`)\n return null;\n } else {\n return this.list[id];\n }\n }\n\n private hasStatistic(id: StatisticId): boolean {\n return id in this.list\n }\n\n public registerStatistic(statistic: AbstractStatistic) {\n this.list[statistic.id] = statistic;\n }\n\n load(data: StatisticsSaveData): void {\n for (const id in data.list) {\n if (Object.prototype.hasOwnProperty.call(data.list, id)) {\n if (this.hasStatistic(id as StatisticId)) {\n this.list[id as StatisticId].value = data.list[id as StatisticId];\n } else {\n console.warn(`Could not load statistic ${id}`)\n }\n }\n }\n }\n\n parseSaveData(json: Record): StatisticsSaveData {\n const data = new StatisticsSaveData();\n const list = json.list as Record;\n for (const id in list) {\n if (Object.prototype.hasOwnProperty.call(list, id)) {\n data.addStatistic(id as StatisticId, list[id])\n }\n }\n return data;\n }\n\n save(): StatisticsSaveData {\n const data = new StatisticsSaveData();\n for (const id in this.list) {\n data.addStatistic(id as StatisticId, this.list[id as StatisticId].value);\n }\n return data;\n }\n\n}","export class DeckPreset {\n displayName: string;\n deckString: string;\n\n\n constructor(displayName: string, deckString: string) {\n this.displayName = displayName;\n this.deckString = deckString;\n }\n\n get cardCount(): number {\n const count = this.deckString.match(/\\./g)?.length;\n if (!count) {\n return 0;\n }\n return (count + 1);\n }\n}","import {Feature} from \"@/ig-template/features/Feature\";\nimport {CardCollectionSaveData} from \"@/card-quest/features/card-collection/CardCollectionSaveData\";\nimport {CardRepository} from \"@/card-quest/cards/CardRepository\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\nimport {CardPack} from \"@/card-quest/features/card-collection/CardPack\";\nimport {CardPackId} from \"@/card-quest/features/card-collection/CardPackId\";\nimport {IdDeck} from \"@/card-quest/cards/IdDeck\";\nimport {DeckPreset} from \"@/card-quest/features/card-collection/DeckPreset\";\nimport {ISimpleEvent, SimpleEventDispatcher} from \"strongly-typed-events\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\nimport {Features} from \"@/ig-template/Features\";\nimport {Wallet} from \"@/ig-template/features/wallet/Wallet\";\n\n\nexport class CardCollection extends Feature {\n cards: number[] = [];\n\n cardPacks: CardPack[];\n\n currentDeck: IdDeck;\n deckPresets: DeckPreset[] = [];\n\n // The max amount you can have of a single card\n public readonly MAX_CARD_AMOUNT = 10;\n\n // The min amount of cards needed to start\n public readonly MIN_DECK_SIZE = 15;\n\n private _onCardsGain = new SimpleEventDispatcher();\n private _wallet: Wallet;\n\n constructor(cardPacks: CardPack[]) {\n super('card-collection');\n const ids = CardRepository.getAllCardsIds();\n\n for (let i = 0; i < ids.length; i++) {\n this.cards.push(0);\n }\n\n this.deckPresets.push(new DeckPreset('First Deck', ''));\n\n this.cardPacks = cardPacks;\n\n // Dummy wallet, will be overridden in initialize.\n this._wallet = new Wallet([]);\n\n this.currentDeck = new IdDeck();\n }\n\n initialize(features: Features) {\n this._wallet = features.wallet;\n }\n\n canBuyCardPack(id: CardPackId): boolean {\n const cardPack = this.getCardPack(id);\n if (cardPack === undefined) {\n return false;\n }\n if (!cardPack.buyable) {\n return false;\n }\n if (!this._wallet.hasCurrency(cardPack.cost)) {\n return false;\n }\n return true;\n }\n\n buyCardPack(id: CardPackId) {\n const cardPack = this.getCardPack(id);\n if (cardPack === undefined) {\n console.warn(`Cannot find card pack with id ${id}`);\n return;\n }\n if (!cardPack.buyable) {\n console.warn(`Card pack with id ${id} is not buyable`);\n return;\n }\n\n if (this._wallet.payIfPossible(cardPack.cost)) {\n this.openCardPack(id, 3);\n }\n }\n\n openCardPack(id: CardPackId, amount: number = 1) {\n const cardPack = this.getCardPack(id);\n if (cardPack === undefined) {\n console.warn(`Cannot find card pack with if ${id}`);\n return;\n }\n const cardIds = [];\n for (let i = 0; i < amount; i++) {\n cardIds.push(cardPack.draw());\n }\n this.gainCards(cardIds, true);\n }\n\n getCardPack(id: CardPackId) {\n return this.cardPacks.find(pack => {\n return pack.id === id;\n })\n }\n\n public hasEnoughCards(): boolean {\n return this.currentDeck.getSize() >= this.MIN_DECK_SIZE;\n }\n\n public currentDeckIsValid() {\n for (let i = 0; i < this.cards.length; i++) {\n if (this.currentDeck.cards[i] > this.cards[i]) {\n return false;\n }\n }\n return true;\n }\n\n public selectAllCards() {\n for (let i = 0; i < this.cards.length; i++) {\n this.currentDeck.cards[i] = this.cards[i];\n }\n }\n\n public gainCard(id: CardId, amount: number, notify: boolean = false) {\n const ids = Array(amount).fill(id);\n this.gainCards(ids, notify)\n }\n\n public gainCards(ids: CardId[], notify: boolean = false) {\n for (const id of ids) {\n this._gainCard(id)\n }\n const cards = ids.map(id => {\n return CardRepository.getCard(id);\n })\n\n if (notify) {\n this._onCardsGain.dispatch(cards);\n }\n }\n\n private _gainCard(id: CardId, amount: number = 1) {\n const current = this.cards[id];\n if (current === undefined) {\n console.warn(`Card with id ${id} does not exist`);\n return;\n }\n const newAmount = Math.min(this.cards[id] + amount, this.MAX_CARD_AMOUNT);\n this.cards.splice(id, 1, newAmount)\n }\n\n getCardsWithAmount(): [PlayableCard, number][] {\n return this.cards.map((amount, id) => {\n return [CardRepository.getCard(id as CardId), amount];\n });\n }\n\n getCardsWithAmountByType(type: CardType): [PlayableCard, number][] {\n return this.cards.map((amount, id) => {\n const card = CardRepository.getCard(id as CardId);\n if (card.cardType === type) {\n return [card, amount];\n }\n }).filter(entry => {\n return entry != null;\n }) as [PlayableCard, number][];\n }\n\n emptyCurrentDeck(): void {\n this.currentDeck = new IdDeck();\n }\n\n saveToPreset(index: number): void {\n this.deckPresets[index].deckString = this.currentDeck.toDeckString();\n }\n\n loadFromPreset(index: number): void {\n this.currentDeck = IdDeck.fromDeckString(this.deckPresets[index].deckString);\n }\n\n\n get lowestEmptyPresetIndex() {\n for (let i = this.deckPresets.length - 1; i >= 0; i--) {\n if (this.deckPresets[i].deckString != \"\") {\n return i;\n }\n }\n return this.deckPresets.length;\n }\n\n get onCardsGain(): ISimpleEvent {\n return this._onCardsGain.asEvent();\n }\n\n load(data: CardCollectionSaveData): void {\n const cards = data.cards ?? [];\n for (const card of cards) {\n this.cards[card.id] = card.amount;\n }\n\n this.deckPresets = [];\n if (!data.presets || data.presets.length == 0) {\n this.deckPresets.push(new DeckPreset('First Deck', ''));\n } else {\n for (const preset of data.presets) {\n this.deckPresets.push(new DeckPreset(preset.displayName, preset.deckString));\n }\n }\n\n this.currentDeck = CardRepository.getIdDeckFromString(data.currentDeck) ?? new IdDeck();\n }\n\n save(): CardCollectionSaveData {\n const cards: {\n 'id': CardId;\n 'amount': number;\n }[] = [];\n\n this.cards.forEach((amount, id) => {\n cards.push({\n 'id': id,\n 'amount': amount\n });\n })\n\n const presets: {\n 'displayName': string;\n 'deckString': string;\n }[] = [];\n\n\n this.deckPresets.forEach(preset => {\n presets.push({\n 'displayName': preset.displayName,\n 'deckString': preset.deckString,\n })\n })\n\n return {\n 'cards': cards,\n 'currentDeck': this.currentDeck.toDeckString(),\n 'presets': presets,\n }\n }\n\n}","import {Outcome} from \"@/ig-template/tools/probability/Outcome\";\nimport {Random} from \"@/ig-template/tools/probability/Random\";\n\nexport class WeightedDistribution {\n outcomes: Outcome[];\n\n constructor(outcomes: Outcome[] = []) {\n this.outcomes = outcomes;\n }\n\n public outcomesWithMetRequirements(): Outcome[] {\n return this.outcomes.filter(o => o.canGet());\n }\n\n draw(): T {\n if (this.outcomesWithMetRequirements().length === 0) {\n throw new Error(\"Cannot draw from empty distribution\");\n }\n const totalWeight = this.getTotalWeight();\n const random = Random.floatBetween(0, totalWeight);\n\n let weight: number = 0;\n for (const outcome of this.outcomesWithMetRequirements()) {\n weight += outcome.weight;\n if (random <= weight) {\n return outcome.item;\n }\n }\n console.error(`Could not draw an item for random ${random}. This should never happen`);\n return Random.fromArray(this.outcomesWithMetRequirements()).item;\n }\n\n /**\n * Calculate the total weight of all outcomes\n */\n getTotalWeight(): number {\n let weight = 0;\n for (const outcome of this.outcomesWithMetRequirements()) {\n weight += outcome.weight;\n }\n return weight;\n }\n\n addOutcome(outcome: Outcome) {\n this.outcomes.push(outcome);\n }\n\n removeOutcome(outcome: Outcome) {\n const index = this.outcomes.indexOf(outcome);\n if (index !== -1) {\n this.outcomes.splice(index, 1);\n }\n }\n}","import {WeightedDistribution} from \"@/ig-template/tools/probability/WeightedDistribution\";\nimport {Outcome} from \"@/ig-template/tools/probability/Outcome\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardPackId} from \"@/card-quest/features/card-collection/CardPackId\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\n\nexport class CardPack extends WeightedDistribution {\n id: CardPackId;\n cost: Currency;\n buyable: boolean;\n\n constructor(id: CardPackId, cost: Currency, buyable: boolean = false, outcomes: Outcome[] = []) {\n super(outcomes);\n this.id = id;\n this.cost = cost\n this.buyable = buyable\n }\n}","import {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {NoRequirement} from \"@/ig-template/tools/requirements/NoRequirement\";\n\nexport class Outcome {\n public item: T;\n public weight: number;\n public requirement: Requirement\n\n constructor(item: T, weight: number, requirement: Requirement = new NoRequirement()) {\n this.item = item;\n this.weight = weight;\n this.requirement = requirement;\n }\n\n canGet(): boolean {\n return this.requirement.isCompleted;\n }\n}","import {ToolTier} from \"@/card-quest/adventure/tools/ToolTier\";\nimport {Weapon} from \"@/card-quest/adventure/Weapon\";\n\nexport class PlayerStats {\n startingCards: number;\n\n health: number;\n activeAxe: ToolTier;\n activePickaxe: ToolTier;\n activeScythe: ToolTier;\n\n activeWeapon: Weapon;\n\n constructor(startingCards: number, health: number, activeWeapon: Weapon = new Weapon('Training Sword', 1, 0), activeAxe: ToolTier = ToolTier.Stone, activePickaxe: ToolTier = ToolTier.Stone, activeScythe: ToolTier = ToolTier.Stone) {\n this.startingCards = startingCards;\n this.health = health;\n this.activeAxe = activeAxe;\n this.activePickaxe = activePickaxe;\n this.activeScythe = activeScythe;\n\n this.activeWeapon = activeWeapon;\n }\n\n public attackFor(amount: number, ignoreDefense: boolean = false) {\n const actualDefense = ignoreDefense ? 0 : this.getDefense();\n const actualDamage = Math.max(0, amount - actualDefense);\n this.health -= actualDamage;\n }\n\n public getWoodCuttingDamage() {\n return 1 + this.activeAxe;\n }\n\n public getMiningDamage() {\n return 1 + this.activePickaxe;\n }\n\n public getForagingDamage() {\n return 1 + this.activeScythe;\n }\n\n\n public getAttack() {\n return this.activeWeapon.attack;\n }\n\n public getDefense() {\n return this.activeWeapon.defense;\n }\n}","import {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\n\n/**\n * A requirement that is never completed\n */\nexport class ImpossibleRequirement extends Requirement {\n\n get isCompleted(): boolean {\n return false;\n }\n\n get actualValue(): number {\n return 0;\n }\n\n get hint(): string {\n return \"Impossible to complete\";\n }\n\n get targetValue(): number {\n return 1;\n }\n}\n","import {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {Deck} from \"@/card-quest/cards/Deck\";\nimport {Level} from \"@/card-quest/adventure/Level\";\nimport {PlayerStats} from \"@/card-quest/adventure/PlayerStats\";\nimport {LevelId} from \"@/card-quest/adventure/LevelId\";\nimport {CardPackId} from \"@/card-quest/features/card-collection/CardPackId\";\nimport {ImpossibleRequirement} from \"@/ig-template/tools/requirements/ImpossibleRequirement\";\n\nexport class EmptyAdventure extends Adventure {\n\n constructor() {\n super(new Deck(), new Level(-1 as LevelId, '', '', '' as CardPackId, 0, [], new ImpossibleRequirement()), new PlayerStats(5, 10));\n }\n}","export class SuperPower {\n description: string;\n\n costs: number[];\n level: number;\n bonuses: number[]\n descriptions: string[]\n\n\n constructor(description: string, costs: number[], bonuses: number[], descriptions: string[]) {\n this.costs = costs;\n this.description = description;\n this.level = 0;\n this.bonuses = bonuses;\n this.descriptions = descriptions;\n }\n\n get maxLevel() {\n return this.costs.length - 1;\n }\n\n get value() {\n return this.bonuses[this.level];\n }\n\n get valueText() {\n return this.descriptions[this.level];\n }\n\n get cost() {\n return this.costs[this.level];\n }\n}","import {PlayerStats} from \"@/card-quest/adventure/PlayerStats\";\nimport {SuperPower} from \"@/card-quest/adventure/super-powers/SuperPower\";\nimport {Weapon} from \"@/card-quest/adventure/Weapon\";\nimport {Feature} from \"@/ig-template/features/Feature\";\nimport {SaveData} from \"@/ig-template/tools/saving/SaveData\";\n\nexport class SuperPowers extends Feature {\n\n scythe: SuperPower;\n axe: SuperPower;\n pickaxe: SuperPower;\n health: SuperPower;\n startingCards: SuperPower;\n\n\n constructor() {\n super('super-powers');\n this.scythe = new SuperPower('Scythe', [0, 250, 1000, 2000], [0, 1, 2, 3, 4], ['Stone', 'Bronze', 'Silver', 'Gold']);\n this.axe = new SuperPower('Axe', [0, 250, 1000, 2000], [0, 1, 2, 3, 4], ['Stone', 'Bronze', 'Silver', 'Gold']);\n this.pickaxe = new SuperPower('Pick', [0, 250, 1000, 2000], [0, 1, 2, 3, 4], ['Stone', 'Bronze', 'Silver', 'Gold']);\n this.health = new SuperPower('Base health', [0, 250, 1000, 2000], [30, 40, 50, 60], ['30', '40', '50', '60']);\n this.startingCards = new SuperPower('Starting Cards', [0, 200, 500], [5, 6, 7], ['5', '6', '7']);\n }\n\n public getPlayerStats(): PlayerStats {\n return new PlayerStats(\n this.startingCards.value,\n this.health.value,\n new Weapon('Training Sword', 1, 0),\n this.axe.value,\n this.pickaxe.value,\n this.scythe.value,\n )\n }\n\n public getTotalCosts(): number {\n return this.scythe.cost +\n this.pickaxe.cost +\n this.axe.cost +\n this.health.cost +\n this.startingCards.cost;\n }\n\n load(): void {\n // Empty\n }\n\n save(): SaveData {\n return {};\n }\n}","import {AchievementId} from \"@/ig-template/features/achievements/AchievementId\";\nimport {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {Progress} from \"@/ig-template/tools/requirements/Progress\";\n\nexport class Achievement {\n public key: AchievementId;\n public title: string;\n public description: string;\n public image: string;\n public requirement: Requirement;\n\n public unlocked: boolean\n\n constructor(key: AchievementId, title: string, description: string, image: string, requirement: Requirement) {\n this.key = key;\n this.title = title;\n this.description = description;\n this.image = image;\n this.requirement = requirement;\n this.unlocked = false\n }\n\n /**\n * Unlock this achievement if possible.\n * Returns true if the achievement was just unlocked!\n */\n unlock(): boolean {\n if (!this.unlocked) {\n this.unlocked = true;\n return true;\n }\n return false;\n }\n\n requirementsCompleted(): boolean {\n return this.requirement.isCompleted;\n }\n\n getProgress(): Progress {\n return this.requirement.progress;\n }\n\n\n}\n","import {SaveData} from \"@/ig-template/tools/saving/SaveData\";\nimport {AchievementId} from \"@/ig-template/features/achievements/AchievementId\";\n\n/**\n * Unlocked achievements are saved as a list of keys\n */\nexport class AchievementsSaveData implements SaveData {\n list: AchievementId[];\n\n constructor() {\n this.list = [];\n }\n\n addAchievement(key: AchievementId): void {\n this.list.push(key);\n }\n\n}","export enum AutomationStrategyId {\n Dummy\n}","import {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\n\n/**\n * A requirement that can be manually set to be completed\n */\nexport class ManualRequirement extends Requirement {\n isSet: boolean\n\n constructor() {\n super();\n this.isSet = false;\n }\n\n forceCompletion(): void {\n this.isSet = true;\n }\n\n get isCompleted(): boolean {\n return this.isSet;\n }\n\n get actualValue(): number {\n return this.isSet ? this.targetValue : 0;\n }\n\n get hint(): string {\n return \"Can only be manually completed\";\n }\n\n get targetValue(): number {\n return 1;\n }\n}\n","import {Achievement} from \"@/ig-template/features/achievements/Achievement\";\nimport {ManualRequirement} from \"@/ig-template/tools/requirements/ManualRequirement\";\nimport {AchievementId} from \"@/ig-template/features/achievements/AchievementId\";\n\nexport class CustomAchievement extends Achievement {\n\n constructor(key: AchievementId, title: string, description: string, image: string) {\n super(key, title, description, image, new ManualRequirement());\n }\n\n forceComplete() {\n (this.requirement as ManualRequirement).forceCompletion();\n }\n}","import {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {NumberStatistic} from \"@/ig-template/features/statistics/NumberStatistic\";\n\nexport class NumberStatisticRequirement extends Requirement {\n statistic: NumberStatistic;\n targetValue: number;\n\n\n constructor(statistic: NumberStatistic, targetValue: number) {\n super();\n this.statistic = statistic;\n this.targetValue = targetValue;\n }\n\n getTargetValue(): number {\n return this.targetValue;\n }\n\n get actualValue(): number {\n return this.statistic.value;\n }\n\n get hint(): string {\n return `The statistic ${this.statistic.description} needs to be at least ${this.targetValue}`;\n }\n}","import {Achievement} from \"@/ig-template/features/achievements/Achievement\";\nimport {AchievementId} from \"@/ig-template/features/achievements/AchievementId\";\nimport {Feature} from \"@/ig-template/features/Feature\";\nimport {AchievementsSaveData} from \"@/ig-template/features/achievements/AchievementSaveData\";\nimport {Features} from \"@/ig-template/Features\";\nimport {ArrayStatisticRequirement} from \"@/ig-template/features/statistics/requirements/ArrayStatisticRequirement\";\nimport {StatisticId} from \"@/ig-template/features/statistics/StatisticId\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {ArrayStatistic} from \"@/ig-template/features/statistics/ArrayStatistic\";\nimport {ISimpleEvent, SimpleEventDispatcher} from \"strongly-typed-events\";\nimport {CustomAchievement} from \"@/ig-template/features/achievements/CustomAchievement\";\nimport {NumberStatisticRequirement} from \"@/ig-template/features/statistics/requirements/NumberStatisticRequirement\";\nimport {NumberStatistic} from \"@/ig-template/features/statistics/NumberStatistic\";\nimport {LevelId} from \"@/card-quest/adventure/LevelId\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\n\nexport class Achievements extends Feature {\n name: string = \"Achievements\";\n saveKey: string = 'achievements';\n\n list: Record\n\n // Delay between checking for achievements\n private readonly ACHIEVEMENT_CHECK_TIME: number = 2.0;\n private checkCounter: number = 0;\n\n private _onUnlock = new SimpleEventDispatcher();\n\n /**\n * Emitted whenever an achievement is unlocked.\n */\n public get onUnlock(): ISimpleEvent {\n return this._onUnlock.asEvent();\n }\n\n constructor() {\n super('achievements');\n this.list = {} as Record;\n }\n\n initialize(features: Features): void {\n this.registerAchievement(\n new Achievement(AchievementId.Played100Resources,\n \"As far as the eye can see\",\n 'Play 100 Resource cards',\n 'cards/forest.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.CardsPlayedPerType) as ArrayStatistic,\n CardType.Resource,\n 100\n )\n )\n );\n this.registerAchievement(\n new Achievement(AchievementId.Played100Actions,\n \"So many souls wasted\",\n 'Play 100 Action cards',\n 'orbs/souls.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.CardsPlayedPerType) as ArrayStatistic,\n CardType.Action,\n 100\n )\n )\n );\n this.registerAchievement(\n new Achievement(AchievementId.Played100Tools,\n \"Isn't it Iron Pick?\",\n 'Play 100 Tool cards',\n 'cards/pickaxe-gold.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.CardsPlayedPerType) as ArrayStatistic,\n CardType.Tool,\n 100\n )\n )\n );\n this.registerAchievement(\n new Achievement(AchievementId.Played100Curses,\n \"Why, just why?\",\n 'Use a curse on yourself',\n 'cards/troll.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.CardsPlayedPerType) as ArrayStatistic,\n CardType.Curse,\n 1\n )\n )\n );\n\n this.registerAchievement(\n new Achievement(AchievementId.Played100Monsters,\n \"Straight to the slaughter\",\n 'Play 100 Monster cards',\n 'cards/chicken.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.CardsPlayedPerType) as ArrayStatistic,\n CardType.Monster,\n 100\n )\n )\n );\n\n this.registerAchievement(\n new Achievement(AchievementId.PlayedGobletOfFire,\n \"Dumbledore asked calmly\",\n 'Play the Goblet of Fire card',\n 'cards/chalice-red.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.CardsPlayed) as ArrayStatistic,\n CardId.ChaliceMedium,\n 1\n )\n )\n );\n this.registerAchievement(\n new Achievement(AchievementId.PlayedFrozen2,\n \"Just let it go\",\n 'Play the Frozen 2 Blast card',\n 'cards/freeze-purple.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.CardsPlayed) as ArrayStatistic,\n CardId.FreezeMonstersMedium,\n 1\n )\n )\n );\n this.registerAchievement(\n new Achievement(AchievementId.EnemyPlayedForestFire,\n \"Boy or Girl?\",\n 'Have your wood resources burned down',\n 'cards/forest-fire.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.CardsPlayedByLevel) as ArrayStatistic,\n CardId.ForestFire,\n 1\n )\n )\n );\n this.registerAchievement(\n new CustomAchievement(AchievementId.AtLeastOneSuperPower,\n \"I wonder what inspired this feature\",\n 'Go on an Adventure with at least one bonus',\n 'cards/hatchet-bronze.svg',\n )\n );\n this.registerAchievement(\n new Achievement(AchievementId.TotalMoney100,\n \"It's something\",\n 'Gain 100 money in total',\n 'coins.svg',\n new NumberStatisticRequirement(features.statistics.getStatistic(StatisticId.TotalMoneyGained) as NumberStatistic, 100),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.TotalMoney1000,\n \"It's a bit more\",\n 'Gain 1000 money in total',\n 'coins.svg',\n new NumberStatisticRequirement(features.statistics.getStatistic(StatisticId.TotalMoneyGained) as NumberStatistic, 1000),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.TotalMoney10000,\n \"This is where the fun begins\",\n 'Gain 10000 money in total',\n 'coins.svg',\n new NumberStatisticRequirement(features.statistics.getStatistic(StatisticId.TotalMoneyGained) as NumberStatistic, 10000),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.FirstLevelCompleted,\n \"Nobody — calls me — chicken.\",\n 'Complete the first level',\n 'cards/chicken.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TutorialLevel, 1),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.FarmLevelCompleted,\n \"Won't somebody think of the animals?\",\n 'Complete the The Farm level',\n 'cards/farmer.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheFarm, 1),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.SpiderLevelCompleted,\n \"Poor Aragog\",\n 'Complete the The Spiders Den',\n 'cards/spider-large.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.SpidersDen, 1),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.TrollLevelCompleted,\n \"And it wasn't even in the dungeon...\",\n 'Complete the The Troll level',\n 'cards/troll.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheTroll, 1),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.WizardLevelCompleted,\n \"No thanks I'm stuffed\",\n 'Complete the The Wizard level',\n 'cards/bread.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheWizard, 1),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.DragonLevelCompleted,\n \"She wasn't a big negotiator\",\n 'Complete the Dragons Den',\n 'cards/dragon.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheDragon, 1),\n ),\n );\n this.registerAchievement(\n new Achievement(AchievementId.NecromancerLevelCompleted,\n \"Ah so it is possible\",\n 'Complete the The Necromancer level',\n 'cards/skeleton-king.svg',\n new ArrayStatisticRequirement(features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheNecromancer, 1),\n ),\n );\n\n\n this.registerAdventureSubscribers(features);\n }\n\n\n registerAdventureSubscribers(features: Features) {\n features.adventure.onStart.subscribe(() => {\n if (features.superPowers.getTotalCosts() > 0) {\n const achievement = this.getAchievement(AchievementId.AtLeastOneSuperPower);\n (achievement as CustomAchievement).forceComplete();\n }\n })\n }\n\n update(delta: number) {\n this.checkCounter += delta;\n if (this.checkCounter >= this.ACHIEVEMENT_CHECK_TIME) {\n this.checkForAchievementsCompleted();\n this.checkCounter = 0;\n }\n }\n\n public checkForAchievementsCompleted() {\n for (const key in this.list) {\n const achievement = this.list[key as AchievementId];\n if (achievement.requirementsCompleted()) {\n const isJustUnlocked = achievement.unlock();\n if (isJustUnlocked) {\n this._onUnlock.dispatch(achievement);\n }\n }\n }\n }\n\n private registerAchievement(achievement: Achievement) {\n this.list[achievement.key] = achievement;\n }\n\n public getAchievement(key: AchievementId): Achievement | null {\n if (!this.hasAchievement(key)) {\n console.warn(`Could not find achievement with key ${key}`)\n\n return null;\n } else {\n return this.list[key];\n }\n }\n\n private hasAchievement(key: AchievementId): boolean {\n return key in this.list\n }\n\n\n load(data: AchievementsSaveData): void {\n for (const key of data.list) {\n const achievement = this.getAchievement(key);\n if (achievement !== null) {\n achievement.unlocked = true\n }\n }\n }\n\n\n save(): AchievementsSaveData {\n const data = new AchievementsSaveData();\n for (const key in this.list) {\n if (this.list[key as AchievementId].unlocked) {\n data.addAchievement(key as AchievementId);\n }\n }\n return data;\n }\n\n}","import {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {AutomationStrategyId} from \"@/card-quest/features/automation/AutomationStrategyId\";\n\nexport abstract class AutomationStrategy {\n id: AutomationStrategyId;\n title: string;\n description: string;\n currentTurn: number\n\n protected constructor(id: AutomationStrategyId, title: string, description: string, currentTurn: number) {\n this.id = id;\n this.title = title\n this.description = description;\n this.currentTurn = currentTurn;\n }\n\n restart() {\n this.currentTurn = 0;\n }\n\n abstract performAction(adventure: Adventure): void;\n\n}","import {AutomationStrategy} from \"@/card-quest/features/automation/AutomationStrategy\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {Random} from \"@/ig-template/tools/probability/Random\";\nimport {CardType} from \"@/card-quest/cards/CardType\";\nimport {AutomationStrategyId} from \"@/card-quest/features/automation/AutomationStrategyId\";\n\nexport class DummyStrategy extends AutomationStrategy {\n\n constructor() {\n super(AutomationStrategyId.Dummy, 'Dummy Strategy', 'A basic algorithm I coded up, it tries its best.\\n' +\n 'It Taps monsters if they exist, and draws when its hand is empty\\n' +\n 'You can view the code Here!', 0);\n }\n\n performAction(adventure: Adventure): void {\n this.currentTurn++;\n\n // Check if there is a card we can play\n let canPlay = false;\n for (let i = 0; i < adventure.playerHand.length; i++) {\n if (adventure.playerHand[i].canPlay(adventure) && adventure.playerHand[i].canAfford(adventure.wallet)) {\n canPlay = true;\n }\n }\n\n // We can tap if the field isn't empty\n const canTap = !!adventure.field[0];\n\n // Draw if few cards, or can't (tap or play)\n if ((!canPlay && !canTap) || (adventure.handSpace > 4 && Random.booleanWithProbability(0.5))) {\n // Wait if the deck is empty\n if (adventure.playerDeck.isEmpty()) {\n adventure.wait();\n return;\n }\n adventure.draw();\n return;\n }\n\n // Tap first monster if it exists\n for (let i = 0; i < adventure.field.length; i++) {\n if (adventure.field[i].cardType === CardType.Monster) {\n adventure.tap(i);\n return;\n }\n }\n\n // Play a card\n for (let i = 0; i < adventure.playerHand.length; i++) {\n if (adventure.playerHand[i].canPlay(adventure) && adventure.playerHand[i].canAfford(adventure.wallet)) {\n adventure.play(i);\n return;\n }\n }\n\n // Otherwise tap first\n adventure.tap(0);\n return;\n\n\n }\n\n}","import {Feature} from \"@/ig-template/features/Feature\";\nimport {SaveData} from \"@/ig-template/tools/saving/SaveData\";\nimport {Adventure} from \"@/card-quest/adventure/Adventure\";\nimport {LevelId} from \"@/card-quest/adventure/LevelId\";\nimport {AutomationStrategy} from \"@/card-quest/features/automation/AutomationStrategy\";\nimport {DummyStrategy} from \"@/card-quest/features/automation/DummyStrategy\";\nimport {AutomationStrategyId} from \"@/card-quest/features/automation/AutomationStrategyId\";\nimport {App} from \"@/App\";\nimport {Requirement} from \"@/ig-template/tools/requirements/Requirement\";\nimport {NoRequirement} from \"@/ig-template/tools/requirements/NoRequirement\";\nimport {Features} from \"@/ig-template/Features\";\nimport {LevelRequirement} from \"@/card-quest/LevelRequirement\";\nimport {StatisticId} from \"@/ig-template/features/statistics/StatisticId\";\nimport {ArrayStatistic} from \"@/ig-template/features/statistics/ArrayStatistic\";\n\nexport class Automation extends Feature {\n\n private readonly AUTOMATION_INTERVAL = 1;\n private _nextTick = this.AUTOMATION_INTERVAL;\n\n private _adventure: Adventure | undefined = undefined;\n public strategies: AutomationStrategy[];\n\n public selectedStrategy: AutomationStrategyId;\n public selectedLevel: LevelId;\n\n public isActive: boolean = false;\n\n public requirement: Requirement;\n\n constructor() {\n super('automation');\n this.strategies = [\n new DummyStrategy(),\n ];\n this.selectedStrategy = AutomationStrategyId.Dummy;\n this.selectedLevel = LevelId.TutorialLevel;\n\n this.requirement = new NoRequirement();\n }\n\n registerAdventure(adventure: Adventure) {\n this._adventure = adventure;\n }\n\n\n initialize(features: Features) {\n this.requirement = new LevelRequirement(features.statistics.getStatistic(StatisticId.LevelsCompleted) as ArrayStatistic, LevelId.TheWizard, 1)\n }\n\n canAccess(): boolean {\n return this.requirement.isCompleted;\n }\n\n update(delta: number) {\n if (!this.isActive) {\n return;\n }\n this._nextTick -= delta;\n if (this._nextTick <= 0) {\n this.performAutomation();\n this._nextTick = this.AUTOMATION_INTERVAL;\n\n if (!this._adventure?.isActive) {\n App.game.goOnAnAdventure(this.selectedLevel);\n }\n }\n }\n\n public performAutomation(): void {\n if (this._adventure == undefined || !this.isActive || !this._adventure.isActive) {\n return;\n }\n this.strategies[this.selectedStrategy].performAction(this._adventure);\n }\n\n load(): void {\n // Empty\n }\n\n save(): SaveData {\n return {};\n }\n\n}","import {CardId} from \"@/card-quest/cards/CardId\";\nimport {Feature} from \"@/ig-template/features/Feature\";\nimport {SaveData} from \"@/ig-template/tools/saving/SaveData\";\nimport {Level} from \"@/card-quest/adventure/Level\";\nimport {LevelId} from \"@/card-quest/adventure/LevelId\";\nimport {CardPackId} from \"@/card-quest/features/card-collection/CardPackId\";\nimport {NoRequirement} from \"@/ig-template/tools/requirements/NoRequirement\";\nimport {CardRepository} from \"@/card-quest/cards/CardRepository\";\nimport {PlayableCard} from \"@/card-quest/cards/abstract/PlayableCard\";\n\nexport class LevelEditor extends Feature {\n name: string;\n description: string;\n\n currentCards: [number, CardId][];\n\n private readonly MAX_SIZE = 10;\n\n constructor() {\n super('level-editor');\n this.currentCards = [];\n this.name = '';\n this.description = '';\n\n this.currentCards = [];\n this.resetToDefault()\n }\n\n resetToDefault() {\n this.currentCards = [];\n for (let i = 0; i < this.MAX_SIZE; i++) {\n this.currentCards.push([0, -1 as CardId]);\n }\n }\n\n toLevelString(): string {\n return this.getCleanLevel().map(entry => {\n return `${entry[0]}:${entry[1]}`;\n }).join(\".\");\n }\n\n fromLevelString(levelString: string) {\n const split = levelString.split(\".\");\n const cards = split.map(entry => {\n const test = entry.split(\":\");\n const turn = parseInt(test[0]) || 0;\n const card = parseInt(test[1]) || -1;\n return [turn, card]\n })\n\n for (let i = 0; i < this.MAX_SIZE; i++) {\n if(cards[i]) {\n this.currentCards.splice(i, 1, [cards[i][0], cards[i][1]]);\n }\n }\n\n }\n\n getCleanLevel() {\n return this.currentCards.filter(entry => {\n return entry[0] > 0 && entry[1] !== -1;\n }).sort(function (a, b) {\n return a[0] - b[0];\n })\n }\n\n getLevel(): Level | null {\n try {\n const cards = this.getCleanLevel().map(entry => {\n return [entry[0], CardRepository.getCard(entry[1])] as [number, PlayableCard];\n })\n return new Level(\n -1 as LevelId,\n this.name,\n this.description,\n CardPackId.BeginnerPack,\n 0,\n cards,\n new NoRequirement(),\n )\n } catch (e) {\n return null\n }\n }\n\n\n load(): void {\n // Empty\n }\n\n save(): SaveData {\n return {};\n\n }\n}","import {Game} from \"./ig-template/Game\";\nimport {Wallet} from \"@/ig-template/features/wallet/Wallet\";\nimport {CurrencyType} from \"@/ig-template/features/wallet/CurrencyType\";\nimport {Settings} from \"@/ig-template/features/settings/Settings\";\nimport {Statistics} from \"@/ig-template/features/statistics/Statistics\";\nimport {CardId} from \"@/card-quest/cards/CardId\";\nimport {CardCollection} from \"@/card-quest/features/card-collection/CardCollection\";\nimport {CardPack} from \"@/card-quest/features/card-collection/CardPack\";\nimport {CardPackId} from \"@/card-quest/features/card-collection/CardPackId\";\nimport {Outcome} from \"@/ig-template/tools/probability/Outcome\";\nimport {EmptyAdventure} from \"@/card-quest/adventure/EmptyAdventure\";\nimport {SuperPowers} from \"@/card-quest/adventure/super-powers/SuperPowers\";\nimport {Achievements} from \"@/ig-template/features/achievements/Achievements\";\nimport {Automation} from \"@/card-quest/features/automation/Automation\";\nimport {Currency} from \"@/ig-template/features/wallet/Currency\";\nimport {LevelEditor} from \"@/card-quest/features/level-editor/LevelEditor\";\n\nexport class App {\n\n static game: Game;\n\n static start(): void {\n\n this.game = this.getDefaultGame();\n this.game.initialize();\n this.game.load();\n this.game.start();\n }\n\n\n public static getDefaultGame(): Game {\n const game = new Game(\n {\n wallet: new Wallet([\n CurrencyType.Money,\n CurrencyType.Souls,\n CurrencyType.Grain,\n CurrencyType.Wood,\n CurrencyType.Bronze,\n CurrencyType.Silver,\n CurrencyType.Gold,\n ]),\n settings: new Settings(),\n statistics: new Statistics(),\n adventure: new EmptyAdventure(),\n automation: new Automation(),\n collection: new CardCollection([\n new CardPack(CardPackId.BeginnerPack,\n new Currency(100, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.BronzeAxe, 1),\n new Outcome(CardId.LogCard, 2),\n new Outcome(CardId.SmallGrain, 2),\n new Outcome(CardId.Bread, 2),\n ]),\n new CardPack(CardPackId.BronzeTierPack,\n new Currency(200, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.BronzeAxe, 1),\n new Outcome(CardId.InstantDamagePlayerSmall, 1),\n new Outcome(CardId.BronzePickaxe, 1),\n new Outcome(CardId.BronzeScythe, 1),\n new Outcome(CardId.LogCard, 3),\n new Outcome(CardId.BronzeOre, 3),\n new Outcome(CardId.SmallGrain, 3),\n new Outcome(CardId.BasicSword, 3),\n new Outcome(CardId.BronzeSword, 3),\n new Outcome(CardId.Bread, 3),\n ]),\n new CardPack(CardPackId.SilverTierPack,\n new Currency(500, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.SilverAxe, 1),\n new Outcome(CardId.SilverPickaxe, 1),\n new Outcome(CardId.InstantDamagePlayerMedium, 1),\n new Outcome(CardId.SilverScythe, 1),\n new Outcome(CardId.TreeCard, 3),\n new Outcome(CardId.FreezeMonstersSmall, 1),\n new Outcome(CardId.SilverOre, 3),\n new Outcome(CardId.MediumGrain, 3),\n new Outcome(CardId.SilverSword, 3),\n new Outcome(CardId.CrackedShield, 1),\n new Outcome(CardId.ChaliceSmall, 1),\n ]),\n new CardPack(CardPackId.GoldTierPack,\n new Currency(800, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.GoldAxe, 1),\n new Outcome(CardId.GoldPickaxe, 1),\n new Outcome(CardId.GoldScythe, 1),\n new Outcome(CardId.InstantDamagePlayerLarge, 1),\n new Outcome(CardId.ForestCard, 3),\n new Outcome(CardId.GoldOre, 3),\n new Outcome(CardId.GoldSword, 1),\n new Outcome(CardId.FreezeMonstersMedium, 1),\n new Outcome(CardId.VikingShield, 1),\n new Outcome(CardId.ChaliceMedium, 1),\n ]),\n new CardPack(CardPackId.ActionCardPack,\n new Currency(300, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.MagicTouch, 1),\n new Outcome(CardId.SacrificeHand, 0.5),\n new Outcome(CardId.Draw3Card, 1),\n new Outcome(CardId.LoseTurnsSmall, 0.6),\n new Outcome(CardId.LoseTurnsMedium, 0.3),\n new Outcome(CardId.LoseTurnsLarge, 0.2),\n new Outcome(CardId.FreezeMonstersSmall, 0.2),\n new Outcome(CardId.InstantDamagePlayerSmall, 0.4),\n new Outcome(CardId.InstantDamagePlayerMedium, 0.4),\n ]),\n new CardPack(CardPackId.FarmPack,\n new Currency(150, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.Pig, 1),\n new Outcome(CardId.Chicken, 1),\n new Outcome(CardId.Cow, 1),\n new Outcome(CardId.Farmer, 1),\n ]),\n new CardPack(CardPackId.MonsterPack,\n new Currency(200, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.Skeleton, 1),\n new Outcome(CardId.LandMine, 0.5),\n new Outcome(CardId.Farmer, 1),\n new Outcome(CardId.Chicken, 1),\n new Outcome(CardId.Dragon, 1),\n ]),\n new CardPack(CardPackId.CursePack,\n new Currency(125, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.InstantDamageSmall, 1),\n new Outcome(CardId.InstantDamageMedium, 1),\n new Outcome(CardId.InstantDamageLarge, 1),\n new Outcome(CardId.DiscardHand, 1),\n new Outcome(CardId.ForestFire, 1),\n new Outcome(CardId.RodOfAsclepius, 1),\n ]),\n new CardPack(CardPackId.Legendary,\n new Currency(1000, CurrencyType.Money),\n true,\n [\n new Outcome(CardId.VikingShield, 1),\n new Outcome(CardId.SacrificeHand, 1),\n new Outcome(CardId.ChaliceMedium, 1),\n new Outcome(CardId.ChaliceLarge, 1),\n new Outcome(CardId.InstantDamagePlayerLarge, 1),\n ]),\n ]),\n editor: new LevelEditor(),\n superPowers: new SuperPowers(),\n achievements: new Achievements(),\n }\n );\n\n game.features.collection.gainCard(CardId.LogCard, 5);\n game.features.collection.gainCard(CardId.BronzeOre, 5);\n game.features.collection.gainCard(CardId.SmallGrain, 4);\n game.features.collection.gainCard(CardId.BasicSword, 1);\n game.features.collection.gainCard(CardId.BronzeSword, 1);\n game.features.collection.gainCard(CardId.Chicken, 1);\n game.features.collection.gainCard(CardId.FreezeMonstersSmall, 1);\n game.features.collection.gainCard(CardId.Draw3Card, 3);\n game.features.collection.gainCard(CardId.MagicTouch, 3);\n game.features.collection.gainCard(CardId.Bread, 2);\n\n game.features.collection.selectAllCards();\n\n return game;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isActive)?_c('div',{staticClass:\"feature-tab\"},[_c('div',{staticClass:\"flex flex-row\"},[_c('cq-level-progress',{staticClass:\"w-64\",attrs:{\"level\":_vm.adventure.level,\"current-turn\":_vm.adventure.currentTurn,\"show-current-turn\":true,\"first-card-large\":true}}),_c('div',{staticClass:\"flex-auto overflow-hidden items-center\"},[(_vm.adventure.level.id === 0)?_c('div',{staticClass:\"bg-red-300 p-4\"},[_vm._v(\" The field, monsters here will attack you. Click on a monster to attack it! Click on a resource to gather it! \")]):_vm._e(),_c('div',{staticClass:\"overflow-x-auto bg-cq-charcoal\"},[_c('div',{staticClass:\"h-80 shadow-lg p-4 flex flex-row items-center\"},[_c('div',{staticClass:\"flex flex-row\"},_vm._l((_vm.field),function(card,index){return _c('div',{key:'field-' + card.id + '-' + index},[(card.id === -1)?_c('cq-card-placeholder'):_c('cq-card',{attrs:{\"card\":card,\"is-in-hand\":false},nativeOn:{\"click\":function($event){return _vm.tap(index)}}})],1)}),0)])]),_c('cq-player-stats',{attrs:{\"stats\":_vm.adventure.playerStats,\"wallet\":_vm.adventure.wallet}}),(_vm.adventure.level.id === 0)?_c('div',{staticClass:\"bg-red-300 p-4\"},[_vm._v(\" Your hand, click on a card to play it. Shift+click to discard. \")]):_vm._e(),_c('div',{staticClass:\"overflow-x-auto bg-cq-charcoal\"},[_c('div',{staticClass:\"h-80 h-full shadow-lg p-4 flex flex-row items-center\"},[_c('div',{staticClass:\"flex flex-row\"},_vm._l((_vm.hand),function(card,index){return _c('cq-card',{key:'hand-' + card.id + '-' + index,class:{'invisible': card.id === -1},attrs:{\"is-in-hand\":true,\"can-afford\":card.canAfford(_vm.adventure.wallet),\"is-disabled\":!card.canPlay(_vm.adventure) || !card.canAfford(_vm.adventure.wallet),\"card\":card},nativeOn:{\"click\":function($event){return _vm.play(index, $event)}}})}),1)])]),_c('div',{staticClass:\"flex flex-row items-center\"},[_c('button',{staticClass:\"btn btn-green\",attrs:{\"disabled\":!_vm.canDraw},on:{\"click\":_vm.draw}},[_c('span',[_vm._v(\"Draw (D) (\"+_vm._s(_vm.deckSize)+\")\")])]),_c('button',{staticClass:\"btn btn-blue\",on:{\"click\":_vm.wait}},[_vm._v(\"Wait (W)\")]),_c('button',{staticClass:\"btn btn-red\",on:{\"click\":_vm.forfeit}},[_vm._v(\"Forfeit (Q)\")]),(_vm.automation.canAccess())?_c('div',{staticClass:\"flex flex-row items-center\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.automation.isActive),expression:\"automation.isActive\"}],staticClass:\"input-primary w-4 h-4\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.automation.isActive)?_vm._i(_vm.automation.isActive,null)>-1:(_vm.automation.isActive)},on:{\"change\":function($event){var $$a=_vm.automation.isActive,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.automation, \"isActive\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.automation, \"isActive\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.automation, \"isActive\", $$c)}}}}),_c('p',{staticClass:\"text-lg font-semibold ml-2\",class:_vm.automation.isActive ? 'text-green-500' : 'text-red-500'},[_vm._v(\" Automation \"+_vm._s(_vm.automation.isActive ? 'Active' : 'Inactive'))])]):_vm._e()])],1)],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-48 h-72 p-2 m-2 border-2 flex flex-col shadow-md\",class:[_vm.colorClass, {'opacity-50': _vm.isDisabled, 'cursor-pointer': _vm.canClick, 'transition duration-300 ease-out transform hover:-translate-y-1 hover:scale-110': _vm.canHover}],attrs:{\"id\":\"playable-card\"}},[_c('div',{staticClass:\"flex-grow\"},[_c('p',{staticClass:\"text-black\"},[_vm._v(_vm._s(_vm.card.title))]),_c('hr'),(!_vm.showFront)?_c('div',[_c('img',{staticClass:\"card-image\",attrs:{\"src\":require((\"@/assets/cards/\" + (_vm.card.image))),\"alt\":_vm.card.image}})]):_c('div',[_c('img',{staticClass:\"card-image\",attrs:{\"src\":require((\"@/assets/cards/\" + (_vm.card.image))),\"alt\":_vm.card.image}}),_c('p',{staticClass:\"text-sm italic whitespace-pre-line text-black \"},[_vm._v(\" \"+_vm._s(_vm.card.description)+\" \")])])]),_c('div',{staticClass:\"flex flex-row justify-between\"},[(_vm.card.weapon)?_c('cq-orb',{attrs:{\"svg\":\"sword.svg\",\"value\":_vm.card.weapon.attack +'/' + _vm.card.weapon.defense}}):_vm._e(),_vm._l((_vm.card.costs),function(cost){return _c('cq-orb',{key:cost.toString(),class:{'text-red-500' : !_vm.canAfford && _vm.isInHand},attrs:{\"svg\":cost.type.toLowerCase() + '.svg',\"value\":-cost.amount}})}),(_vm.card.health)?_c('cq-orb',{attrs:{\"svg\":\"heart.svg\",\"value\":_vm.card.health}}):_vm._e(),(_vm.card.frozenCooldown)?_c('cq-orb',{attrs:{\"svg\":\"ice.svg\",\"value\":_vm.card.frozenCooldown}}):_vm._e(),(!_vm.card.frozenCooldown && _vm.card.nextAttack)?_c('cq-orb',{attrs:{\"svg\":\"clock.svg\",\"value\":_vm.card.nextAttack}}):_vm._e(),(_vm.card.attack || _vm.card.defense)?_c('cq-orb',{attrs:{\"svg\":\"sword.svg\",\"value\":_vm.card.attack +'/' + _vm.card.defense}}):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"relative text-center text-white w-12\"},[_c('img',{attrs:{\"src\":require((\"@/assets/orbs/\" + _vm.svg)),\"alt\":_vm.svg}}),_c('div',{staticClass:\"centered text-2xl font-semibold stroke\"},[_vm._v(\" \"+_vm._s(_vm.formattedValue)+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-orb.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-orb.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-orb.vue?vue&type=template&id=441ba894&scoped=true&\"\nimport script from \"./cq-orb.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-orb.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cq-orb.vue?vue&type=style&index=0&id=441ba894&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"441ba894\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-card.vue?vue&type=template&id=1c4b1c6e&scoped=true&\"\nimport script from \"./cq-card.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-card.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cq-card.vue?vue&type=style&index=0&id=1c4b1c6e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c4b1c6e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex flex-row p-2 items-center\"},[_c('cq-orb',{staticClass:\"m-2\",attrs:{\"title\":\"When this reaches 0, you are defeated\",\"svg\":\"heart.svg\",\"value\":_vm.health}}),_c('p',{staticClass:\"text-white font-semibold\"},[_vm._v(_vm._s(_vm.stats.activeWeapon.name))]),_c('cq-orb',{staticClass:\"m-2\",attrs:{\"title\":'You have ' + _vm.attack +' attack and ' + _vm.defense + ' defense',\"svg\":\"sword.svg\",\"value\":_vm.attack +'/' + _vm.defense}}),_c('img',{staticClass:\"m-2 w-12 h-12\",attrs:{\"title\":_vm.ToolTier[_vm.stats.activeAxe] + ' Axe',\"src\":require((\"@/assets/cards/hatchet-\" + (_vm.ToolTier[_vm.stats.activeAxe].toLowerCase()) + \".svg\"))}}),_c('img',{staticClass:\"m-2 w-12 h-12\",attrs:{\"title\":_vm.ToolTier[_vm.stats.activePickaxe] + ' Pickaxe',\"src\":require((\"@/assets/cards/pickaxe-\" + (_vm.ToolTier[_vm.stats.activePickaxe].toLowerCase()) + \".svg\"))}}),_c('img',{staticClass:\"m-2 w-12 h-12\",attrs:{\"title\":_vm.ToolTier[_vm.stats.activeScythe] + ' Scythe',\"src\":require((\"@/assets/cards/scythe-\" + (_vm.ToolTier[_vm.stats.activeScythe].toLowerCase()) + \".svg\"))}}),_c('cq-orb',{staticClass:\"m-2\",attrs:{\"title\":\"Use wood to craft items!\",\"svg\":\"wood.svg\",\"value\":_vm.wallet.wood}}),_c('cq-orb',{staticClass:\"m-2\",attrs:{\"title\":\"Use food to heal up!\",\"svg\":\"grain.svg\",\"value\":_vm.wallet.grain}}),_c('cq-orb',{staticClass:\"m-2\",attrs:{\"title\":\"Use souls to play action cards!\",\"svg\":\"souls.svg\",\"value\":_vm.wallet.souls}}),_c('cq-orb',{staticClass:\"m-2\",attrs:{\"title\":\"Use bronze to upgrade tools!\",\"svg\":\"bronze.svg\",\"value\":_vm.wallet.bronze}}),_c('cq-orb',{staticClass:\"m-2\",attrs:{\"title\":\"Use silver to upgrade tools!\",\"svg\":\"silver.svg\",\"value\":_vm.wallet.silver}}),_c('cq-orb',{staticClass:\"m-2\",attrs:{\"title\":\"Use silver to upgrade tools\",\"svg\":\"gold.svg\",\"value\":_vm.wallet.gold}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-player-stats.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-player-stats.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-player-stats.vue?vue&type=template&id=0662f97c&scoped=true&\"\nimport script from \"./cq-player-stats.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-player-stats.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0662f97c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"p-4\"},[(_vm.level.id === 0 && _vm.showCurrentTurn)?_c('div',{staticClass:\"bg-red-300 p-4\"},[_vm._v(\" Here you can see the cards that the enemy will play next. Prepare yourself! \")]):_vm._e(),(_vm.showCurrentTurn)?_c('p',{staticClass:\"text-lg text-white\"},[_vm._v(\"Turn \"+_vm._s(_vm.currentTurn))]):_vm._e(),_c('hr'),_c('div',{staticClass:\"flex flex-col mt-2\"},_vm._l((_vm.futureCards),function(futureCard,index){return _c('div',{key:futureCard[0]},[_c('div',{staticClass:\"flex flex-row justify-between items-center has-tooltip\"},[_c('cq-orb',{attrs:{\"value\":futureCard[0] - _vm.currentTurn,\"svg\":\"clock.svg\"}}),_c('div',{staticClass:\"m-2 text-white\"},[_vm._v(_vm._s(futureCard[1].title)+\" \")]),_c('img',{staticClass:\"w-8 h-8 inline\",attrs:{\"title\":futureCard[1].description,\"src\":require((\"@/assets/cards/\" + (futureCard[1].image)))}}),_c('cq-card',{staticClass:\"tooltip ml-48\",attrs:{\"card\":futureCard[1],\"is-in-hand\":false,\"can-hover\":false,\"can-click\":false}})],1),(index === 0 && _vm.firstCardLarge)?_c('cq-card',{class:{'shake': futureCard[0] === _vm.currentTurn + 1},attrs:{\"card\":futureCard[1],\"is-in-hand\":false,\"can-hover\":false,\"can-click\":false}}):_vm._e()],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cg-level-progress.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cg-level-progress.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cg-level-progress.vue?vue&type=template&id=013e8efe&scoped=true&\"\nimport script from \"./cg-level-progress.vue?vue&type=script&lang=js&\"\nexport * from \"./cg-level-progress.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"013e8efe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-48 h-72 p-2 m-2 border-2 flex flex-col\",attrs:{\"id\":\"playable-card\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card-placeholder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card-placeholder.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-card-placeholder.vue?vue&type=template&id=5b1fda4a&\"\nimport script from \"./cq-card-placeholder.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-card-placeholder.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-adventure.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-adventure.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-adventure.vue?vue&type=template&id=3a0fa8d6&scoped=true&\"\nimport script from \"./cq-adventure.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-adventure.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3a0fa8d6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"feature-tab\"},[_c('cq-pack-shop',{attrs:{\"packs\":_vm.collection.cardPacks,\"collection\":_vm.collection}}),(!_vm.hasEnoughCards)?_c('p',{staticClass:\"text-2xl font-semibold text-red-400\"},[_vm._v(\"You need at least \"+_vm._s(_vm.collection.MIN_DECK_SIZE)+\" cards in your deck to start a level\")]):_vm._e(),(!_vm.deckIsValid)?_c('p',{staticClass:\"text-2xl font-semibold text-red-400\"},[_vm._v(\" Your current deck is invalid. Have you imported a deck with cards you do not have? \")]):_vm._e(),_c('div',{staticClass:\"flex flex-row\"},[_c('div',{staticClass:\"flex-auto\"},[_c('div',{staticClass:\"flex flex-row flex-wrap\"},[_c('igt-tabs',{attrs:{\"header-class\":\"bg-cq-charcoal\"}},[_c('igt-tab',{attrs:{\"name\":\"All\",\"selected\":true}},[_c('cq-card-selection-list',{attrs:{\"current-deck\":_vm.currentDeck,\"cards\":_vm.displayableCards}})],1),_c('igt-tab',{attrs:{\"name\":\"Actions\"}},[_c('cq-card-selection-list',{attrs:{\"current-deck\":_vm.currentDeck,\"cards\":_vm.actionCards}})],1),_c('igt-tab',{attrs:{\"name\":\"Resources\"}},[_c('cq-card-selection-list',{attrs:{\"current-deck\":_vm.currentDeck,\"cards\":_vm.resourceCards}})],1),_c('igt-tab',{attrs:{\"name\":\"Tools\"}},[_c('cq-card-selection-list',{attrs:{\"current-deck\":_vm.currentDeck,\"cards\":_vm.toolCards}})],1),_c('igt-tab',{attrs:{\"name\":\"Monsters\"}},[_c('cq-card-selection-list',{attrs:{\"current-deck\":_vm.currentDeck,\"cards\":_vm.monsterCards}})],1),_c('igt-tab',{attrs:{\"name\":\"Curses\"}},[_c('cq-card-selection-list',{attrs:{\"current-deck\":_vm.currentDeck,\"cards\":_vm.curseCards}})],1)],1)],1)]),_c('div',{staticClass:\"flex-initial\"},[_c('cq-deck-presets',{staticClass:\"mt-12\",attrs:{\"collection\":_vm.collection}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"tabs\",class:_vm.headerClass},[_c('ul',{staticClass:\"flex flex-row\"},[_vm._l((_vm.tabs),function(tab,index){return _c('li',{key:'tab'+index,staticClass:\"p-2 border-r-2\",class:[tab.isActive ?'text-green-500': 'text-white']},[(tab.canSelect)?_c('a',{staticClass:\"text-lg cursor-pointer\",attrs:{\"id\":tab.id},on:{\"click\":function($event){return _vm.selectTab(tab)}}},[_vm._v(_vm._s(tab.name))]):_c('span',{staticClass:\"text-lg\"},[_vm._v(\" \"+_vm._s(tab.name))])])}),_vm._t(\"other\")],2)]),_c('hr'),_c('div',{staticClass:\"tabs-details\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-tabs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-tabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./igt-tabs.vue?vue&type=template&id=56edb4ae&scoped=true&\"\nimport script from \"./igt-tabs.vue?vue&type=script&lang=js&\"\nexport * from \"./igt-tabs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"56edb4ae\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isActive),expression:\"isActive\"}]},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-tab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-tab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./igt-tab.vue?vue&type=template&id=432a3832&scoped=true&\"\nimport script from \"./igt-tab.vue?vue&type=script&lang=js&\"\nexport * from \"./igt-tab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"432a3832\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"m-4 p-4\"},[_c('igt-boolean-setting',{attrs:{\"setting\":_vm.showUnobtainedCardsSetting}}),_c('div',{staticClass:\"flex flex-row\"},[_c('div',{staticClass:\"flex flex-row flex-wrap\"},_vm._l((_vm.cards),function(card){return _c('div',{key:card.amount,staticClass:\"flex flex-col\"},[(card[1] > 0 || _vm.showUnobtainedCardsSetting.value)?_c('div',[_c('div',{staticClass:\"flex flex-row justify-between items-center m-2 text-white\"},[_c('button',{staticClass:\"btn btn-red\",attrs:{\"disabled\":_vm.currentDeck.getCountForCard(card[0].id) <= 0},on:{\"click\":function($event){return _vm.removeCard(card[0].id)}}},[_vm._v(\" - \")]),_c('p',{staticClass:\"text-lg text-center\"},[_vm._v(\" \"+_vm._s(_vm.currentDeck.getCountForCard(card[0].id))+\" / \"+_vm._s(card[1])+\" \")]),_c('button',{staticClass:\"btn btn-green\",attrs:{\"disabled\":_vm.currentDeck.getCountForCard(card[0].id) >= card[1]},on:{\"click\":function($event){return _vm.addCard(card[0].id)}}},[_vm._v(\"+ \")])]),_c('div',{attrs:{\"disabled\":_vm.currentDeck.getCountForCard(card[0].id) >= card[1]},on:{\"click\":function($event){_vm.addCard(card[0].id, _vm.currentDeck.getCountForCard(card[0].id) >= card[1])}}},[_c('cq-card',{attrs:{\"show-front\":true,\"is-in-hand\":false,\"is-disabled\":card[1] <= 0,\"card\":card[0]}})],1)]):_vm._e()])}),0)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('button',{staticClass:\"btn btn-blue\",on:{\"click\":_vm.toggle}},[_c('span',{staticClass:\"fa text-lg m-1\",class:_vm.classObject}),_c('span',[_vm._v(\" \"+_vm._s(_vm.setting.displayName)+\" \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-boolean-setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-boolean-setting.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./igt-boolean-setting.vue?vue&type=template&id=64b7a787&scoped=true&\"\nimport script from \"./igt-boolean-setting.vue?vue&type=script&lang=js&\"\nexport * from \"./igt-boolean-setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"64b7a787\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card-selection-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card-selection-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-card-selection-list.vue?vue&type=template&id=1dbcc316&scoped=true&\"\nimport script from \"./cq-card-selection-list.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-card-selection-list.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1dbcc316\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex flex-col w-56 m-2\"},[_c('button',{staticClass:\"btn btn-red\",on:{\"click\":_vm.emptyCurrentDeck}},[_vm._v(\"Empty current Deck\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selection),expression:\"selection\"}],staticClass:\"input-primary\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selection=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.selectionChanged($event)}]}},[_vm._l((_vm.presets),function(preset,index){return _c('option',{key:index,domProps:{\"value\":index}},[_vm._v(\" \"+_vm._s(_vm.collection.deckPresets[index].displayName)+\" (\"+_vm._s(_vm.collection.deckPresets[index].cardCount)+\") \")])}),_c('option',{domProps:{\"value\":_vm.presets.length}},[_vm._v(\"New Deck\")])],2),_c('div',{staticClass:\"flex flex-row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.collection.deckPresets[_vm.selection].displayName),expression:\"collection.deckPresets[selection].displayName\"}],staticClass:\"w-32 input-primary w-full\",domProps:{\"value\":(_vm.collection.deckPresets[_vm.selection].displayName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.collection.deckPresets[_vm.selection], \"displayName\", $event.target.value)}}})]),_c('div',{staticClass:\"flex flex-row\"},[_c('button',{staticClass:\"btn btn-green w-full\",on:{\"click\":function($event){return _vm.saveToPreset()}}},[_vm._v(\" Save \")]),_c('button',{staticClass:\"btn btn-green\",attrs:{\"disabled\":!_vm.collection.deckPresets[_vm.selection].deckString},on:{\"click\":function($event){return _vm.loadFromPreset()}}},[_vm._v(\" Load \")])]),_c('div',{staticClass:\"flex flex-row\"},[_c('button',{staticClass:\"btn btn-blue w-full\",on:{\"click\":function($event){return _vm.importPreset()}}},[_vm._v(\" Import \")])]),_c('div',{staticClass:\"flex flex-row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.collection.deckPresets[_vm.selection].deckString),expression:\"collection.deckPresets[selection].deckString\"}],staticClass:\"w-full input-primary\",attrs:{\"disabled\":\"disabled\"},domProps:{\"value\":(_vm.collection.deckPresets[_vm.selection].deckString)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.collection.deckPresets[_vm.selection], \"deckString\", $event.target.value)}}})]),_c('div',{staticClass:\"flex flex-col m-1\"},_vm._l((_vm.idDeck.cards),function(amount,index){return _c('div',{key:index + '-' + amount,staticClass:\"has-tooltip\"},[(amount !== 0)?_c('div',[_c('div',{staticClass:\"flex flex-row justify-between items-center px-2\"},[_c('div',{staticClass:\"m-2 text-white\"},[_vm._v(_vm._s(_vm.CardRepository.getCard(index).title)+\" (\"+_vm._s(amount)+\")\")]),_c('img',{staticClass:\"w-8 h-8 inline\",attrs:{\"title\":_vm.CardRepository.getCard(index).description,\"src\":require((\"@/assets/cards/\" + (_vm.CardRepository.getCard(index).image)))}})]),_c('cq-card',{staticClass:\"tooltip\",attrs:{\"card\":_vm.CardRepository.getCard(index),\"is-in-hand\":false,\"can-hover\":false}})],1):_vm._e()])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-deck-presets.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-deck-presets.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-deck-presets.vue?vue&type=template&id=13c46f18&scoped=true&\"\nimport script from \"./cq-deck-presets.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-deck-presets.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13c46f18\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"my-4\"},[_c('div',{staticClass:\"flex flex-row flex-wrap\"},_vm._l((_vm.buyablePacks),function(pack){return _c('div',{key:pack.id,staticClass:\"has-tooltip\"},[_c('button',{staticClass:\"btn btn-blue flex flex-col justify-between items-center\",attrs:{\"disabled\":!_vm.canAfford(pack)},on:{\"click\":function($event){return _vm.buyPack(pack.id)}}},[_c('span',[_vm._v(_vm._s(pack.id))]),_c('span',{staticClass:\"flex flex-row mx-2\"},[_vm._v(\" \"+_vm._s(-pack.cost.amount)+\" \"),_c('img',{staticClass:\"mx-1 h-6 w-6\",attrs:{\"src\":require(\"@/assets/coins.svg\"),\"alt\":\"coins.svg\"}})])]),_c('cq-card-pack-preview',{staticClass:\"tooltip mt\",attrs:{\"pack-id\":pack.id}})],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"bg-cq-charcoal p-4 shadow-lg\"},[_c('div',{staticClass:\"text-2xl font-semibold text-white\"},[_vm._v(\"Possible Rewards\")]),_c('hr'),_c('div',{staticClass:\"flex flex-col\"},_vm._l((_vm.rewardCards),function(card,index){return _c('p',{key:card.id + '-' + index,staticClass:\"flex flex-row text-white\"},[_vm._v(\" \"+_vm._s(card.title)+\" \")])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card-pack-preview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-card-pack-preview.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-card-pack-preview.vue?vue&type=template&id=4cdc6b4e&scoped=true&\"\nimport script from \"./cq-card-pack-preview.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-card-pack-preview.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4cdc6b4e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-pack-shop.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-pack-shop.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-pack-shop.vue?vue&type=template&id=6e0f0f7e&scoped=true&\"\nimport script from \"./cq-pack-shop.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-pack-shop.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e0f0f7e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cg-card-collection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cg-card-collection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cg-card-collection.vue?vue&type=template&id=51600258&scoped=true&\"\nimport script from \"./cg-card-collection.vue?vue&type=script&lang=js&\"\nexport * from \"./cg-card-collection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"51600258\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"feature-tab\"},[_c('cq-super-powers',{attrs:{\"powers\":_vm.superPowers}}),(!_vm.hasEnoughCards)?_c('p',{staticClass:\"text-2xl font-semibold text-red-400\"},[_vm._v(\"You need at least \"+_vm._s(_vm.game.features.collection.MIN_DECK_SIZE)+\" cards in your deck to start a level\")]):_vm._e(),(!_vm.deckIsValid)?_c('p',{staticClass:\"text-2xl font-semibold text-red-400\"},[_vm._v(\" Your current deck is invalid. Have you imported a deck with cards you do not have? \")]):_vm._e(),_c('div',{staticClass:\"flex flex-row flex-wrap\"},_vm._l((_vm.availableLevels),function(level){return _c('div',{key:level.id,staticClass:\"flex flex-col m-2 p-4 bg-cq-brown w-72\"},[_c('button',{staticClass:\"btn btn-blue flex flex-row justify-between items-center has-tooltip\",attrs:{\"disabled\":!_vm.canStartAdventure},on:{\"click\":function($event){return _vm.goOnAnAdventure(level.id)}}},[_c('span',[_vm._v(\" \"+_vm._s(level.name)+\" \")]),_c('span',{staticClass:\"flex flex-row\",class:{'text-red-900': !_vm.canAffordPowers}},[_vm._v(\" (\"+_vm._s(-_vm.totalCosts)+\" \"),_c('img',{staticClass:\"h-6 w-6\",attrs:{\"src\":require(\"@/assets/coins.svg\"),\"alt\":\"coins.svg\"}}),_vm._v(\" ) \")])]),_c('div',{staticClass:\"flex flex-row px-4 py-2 items-center\"},[_c('div',{staticClass:\"has-tooltip\"},[_c('img',{staticClass:\"h-8 w-8\",attrs:{\"src\":require(\"@/assets/card-random.svg\"),\"alt\":\"draw.svg\"}}),_c('cq-card-pack-preview',{staticClass:\"tooltip\",attrs:{\"pack-id\":level.rewardPack}})],1),_c('span',{staticClass:\"ml-4\"},[_vm._v(_vm._s(level.moneyReward))]),_c('img',{staticClass:\"h-8 w-8\",attrs:{\"src\":require(\"@/assets/coins.svg\"),\"alt\":\"coins.svg\"}})]),_c('p',{staticClass:\"italic\"},[_vm._v(_vm._s(level.description))]),_c('cq-level-progress',{attrs:{\"show-current-turn\":false,\"current-turn\":0,\"level\":level}})],1)}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{staticClass:\"text-2xl font-semibold text-white\"},[_vm._v(\"Starting stats\")]),_c('p',{staticClass:\"text-md text-white\"},[_vm._v(\"Spend your money on starting bonuses\")]),_c('hr'),_c('div',{staticClass:\"flex flex-row flex-wrap justify-center\"},[_c('cq-super-power',{attrs:{\"power\":_vm.powers.axe}}),_c('cq-super-power',{attrs:{\"power\":_vm.powers.pickaxe}}),_c('cq-super-power',{attrs:{\"power\":_vm.powers.scythe}}),_c('cq-super-power',{attrs:{\"power\":_vm.powers.startingCards}}),_c('cq-super-power',{attrs:{\"power\":_vm.powers.health}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-1\"},[_c('div',{staticClass:\"flex flex-col items-center m-2\"},[_c('p',{staticClass:\"text-2xl text-center mx-2 text-white\"},[_vm._v(\" \"+_vm._s(_vm.power.valueText)+\" \"+_vm._s(_vm.power.description)+\" \")]),_c('p',{staticClass:\"text-sm text-center mx-2\"}),_c('div',{staticClass:\"flex flex-row items-center\",attrs:{\"title\":'Activating this power costs ' + _vm.power.cost + ' coins'}},[_c('p',{staticClass:\"text-2xl p-2 text-white\"},[_vm._v(_vm._s(_vm.power.cost))]),_c('img',{staticClass:\"h-6 w-6\",attrs:{\"src\":require(\"@/assets/coins.svg\"),\"alt\":\"coins.svg\"}})]),_c('div',{staticClass:\"flex flex-row\"},[_c('button',{staticClass:\"btn btn-red\",attrs:{\"disabled\":_vm.power.level <= 0},on:{\"click\":function($event){return _vm.down()}}},[_vm._v(\" - \")]),_c('button',{staticClass:\"btn btn-green\",attrs:{\"disabled\":_vm.power.level >= _vm.power.maxLevel},on:{\"click\":function($event){return _vm.up()}}},[_vm._v(\" + \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-super-power.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-super-power.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-super-power.vue?vue&type=template&id=90bdb58a&scoped=true&\"\nimport script from \"./cq-super-power.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-super-power.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90bdb58a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-super-powers.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-super-powers.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-super-powers.vue?vue&type=template&id=2598b60c&scoped=true&\"\nimport script from \"./cq-super-powers.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-super-powers.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2598b60c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-level-selection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-level-selection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-level-selection.vue?vue&type=template&id=9ee95942&scoped=true&\"\nimport script from \"./cq-level-selection.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-level-selection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9ee95942\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('notificationGroup',{attrs:{\"group\":\"top-right\"}},[_c('div',{staticClass:\"fixed inset-0 flex px-4 py-6 pointer-events-none p-6 items-start justify-end\"},[_c('div',{staticClass:\"max-w-sm w-full\"},[_c('notification',{scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar notifications = ref.notifications;\nreturn _vm._l((notifications),function(notification){return _c('div',{key:notification.id,staticClass:\"flex max-w-sm w-full mx-auto bg-white shadow-md rounded-lg overflow-hidden mt-4\"},[_c('div',{staticClass:\"flex justify-center items-center w-12 bg-green-500\"},[_c('svg',{staticClass:\"h-6 w-6 fill-current text-white\",attrs:{\"viewBox\":\"0 0 40 40\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M20 3.33331C10.8 3.33331 3.33337 10.8 3.33337 20C3.33337 29.2 10.8 36.6666 20 36.6666C29.2 36.6666 36.6667 29.2 36.6667 20C36.6667 10.8 29.2 3.33331 20 3.33331ZM16.6667 28.3333L8.33337 20L10.6834 17.65L16.6667 23.6166L29.3167 10.9666L31.6667 13.3333L16.6667 28.3333Z\"}})])]),_c('div',{staticClass:\"-mx-3 py-2 px-4\"},[_c('div',{staticClass:\"mx-3\"},[_c('span',{staticClass:\"text-green-500 font-semibold\"},[_vm._v(_vm._s(notification.title))]),_c('p',{staticClass:\"text-gray-600 text-sm\"},[_vm._v(_vm._s(notification.text))])])])])})}}])})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-notifications.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-notifications.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./igt-notifications.vue?vue&type=template&id=6c9e3f53&scoped=true&\"\nimport script from \"./igt-notifications.vue?vue&type=script&lang=js&\"\nexport * from \"./igt-notifications.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c9e3f53\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"feature-tab\"},[_c('p',{staticClass:\"text-2xl font-semibold text-white\"},[_vm._v(\"Achievements\")]),_c('hr'),_c('div',{staticClass:\"flex flex-row flex-wrap\"},_vm._l((_vm.achievements),function(achievement){return _c('div',{key:achievement.id,staticClass:\"w-72\"},[_c('div',{staticClass:\"flex flex-col border-2 m-2 p-2 h-72 justify-between shadow-md\",class:{'bg-gray-400': !achievement.unlocked, 'bg-green-500': achievement.unlocked}},[_c('div',[_c('p',{staticClass:\"text-lg font-semibold\"},[_vm._v(\" \"+_vm._s(achievement.unlocked ? achievement.title : '???'))]),_c('hr'),_c('br'),_c('p',{staticClass:\"italic\"},[_vm._v(\" \"+_vm._s(achievement.description))])]),_c('img',{staticClass:\"card-image\",class:{'filter-grayscale': !achievement.unlocked},attrs:{\"src\":require((\"@/assets/\" + (achievement.image))),\"alt\":achievement.image}})])])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-achievements.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-achievements.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./igt-achievements.vue?vue&type=template&id=9a3023fe&scoped=true&\"\nimport script from \"./igt-achievements.vue?vue&type=script&lang=js&\"\nexport * from \"./igt-achievements.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a3023fe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"feature-tab\"},[_c('div',{staticClass:\"flex flex-row\"},[_c('button',{staticClass:\"btn btn-red\",on:{\"click\":_vm.resetSave}},[_vm._v(\"Reset save\")]),_c('button',{staticClass:\"btn btn-blue\",on:{\"click\":_vm.save}},[_vm._v(\"Save\")])]),_c('igt-boolean-setting',{attrs:{\"setting\":_vm.saveSetting}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-settings.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./igt-settings.vue?vue&type=template&id=0ecfcf36&scoped=true&\"\nimport script from \"./igt-settings.vue?vue&type=script&lang=js&\"\nexport * from \"./igt-settings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ecfcf36\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"modal\"}},[_c('div',{staticClass:\"modal-mask\"},[_c('div',{staticClass:\"modal-wrapper\"},[_c('div',{staticClass:\"modal-container w-min mx-auto p-4 bg-cq-slate shadow-xl\"},[_c('div',{staticClass:\"modal-header\"},[_vm._t(\"header\")],2),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"body\",[_c('p',{staticClass:\"text-lg font-semibold text-white\"},[_vm._v(\"The following cards are added to your collection\")]),_c('div',{staticClass:\"flex flex-row w-full p-4\"},_vm._l((_vm.cards),function(card,index){return _c('div',{key:'hand-' + card.id + '-' + index},[_c('div',{staticClass:\"memory-tile\",class:_vm.isOpen[index] ? 'flip-container': 'flip-container flipped'},[_c('div',{staticClass:\"flipper\"},[_c('div',{staticClass:\"front\"},[_c('cq-card',{attrs:{\"is-in-hand\":false,\"is-disabled\":false,\"card\":card,\"can-click\":false}})],1),_c('div',{staticClass:\"back\"},[_c('div',{staticClass:\"w-48 h-72 p-2 m-2 border-4\"})])])])])}),0)])],2),_c('div',{staticClass:\"modal-footer\"},[_vm._t(\"footer\",[_c('button',{staticClass:\"btn btn-green\",on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\" Close \")])])],2)])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-card-reveal-modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./igt-card-reveal-modal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./igt-card-reveal-modal.vue?vue&type=template&id=e424259c&scoped=true&\"\nimport script from \"./igt-card-reveal-modal.vue?vue&type=script&lang=js&\"\nexport * from \"./igt-card-reveal-modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./igt-card-reveal-modal.vue?vue&type=style&index=0&id=e424259c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e424259c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"feature-tab\"},[_c('p',{staticClass:\"text-2xl font-semibold\"},[_vm._v(\"How to play\")]),_c('hr'),_c('br'),_c('div',{staticClass:\"p-4\"},[_c('p',{staticClass:\"text-2xl font-semibold\"},[_vm._v(\"Introduction\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Card Quest is a Card Collection Game!\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Collect Cards, build your Deck, and go on Adventures!\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"In this game you don't play against another player, or an AI. You play against the Level.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"The Level plays cards at certain turns. These cards are known beforehand so you can build your deck around it.\")]),_c('br'),_c('p',{staticClass:\"text-2xl font-semibold\"},[_vm._v(\"Adventure\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Take your Deck and go on an Adventure.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Battle your way through different Levels and defeat your enemies!\")]),_c('br'),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Whenever you perform an Action, the turn increases.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"The Level will Play certain Cards at certain turns\")]),_c('br'),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"You can Play a card, to place it on the Field.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Cards in the Field can be Tapped to interact with them.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Cards can have costs to Play them, or Resources when they leave the Field (or both).\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"You can use these Resources to upgrade your Tools and Weapons, or Play Action cards!\")]),_c('br'),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"When you complete a Level, you gain some Cards to further improve your deck!\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"More difficult Levels award rarer and better Cards.\")]),_c('br'),_c('p',{staticClass:\"text-2xl font-semibold\"},[_vm._v(\"Card Collection\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Here you can view your collected Cards. Build your Decks and save them using the Deck Presets.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"The max amount of a single card is 10. You need at least 15 cards in your deck to start a level.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"You can share your Decks with other players by importing and exporting their codes!\")]),_c('br'),_c('p',{staticClass:\"text-2xl font-semibold\"},[_vm._v(\"Achievements\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"If you've done impressive things, they will show up here.\")]),_c('br'),_c('p',{staticClass:\"text-2xl font-semibold\"},[_vm._v(\"Quick tips\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Check the settings for things you want to toggle.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Preview the Adventure before taking it on to see which cards will be played.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Spend your money on starting stats to skip the early game (if you can afford it).\")]),_c('br'),_c('p',{staticClass:\"text-2xl font-semibold\"},[_vm._v(\"Hotkeys\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Shift + Click Cards to discard them\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"1-9 to Play Cards\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Ctrl + 1-9 to Tap Cards\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Shift + 1-9 to Discard Cards\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"D to Draw\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"W to Wait a turn\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Q to instantly forfeit\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-how-to-play.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-how-to-play.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-how-to-play.vue?vue&type=template&id=395ade17&scoped=true&\"\nimport script from \"./cq-how-to-play.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-how-to-play.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cq-how-to-play.vue?vue&type=style&index=0&id=395ade17&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"395ade17\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"feature-tab\"},[(!_vm.canAccess)?_c('div',[_c('p',{staticClass:\"text-lg text-white\"},[_vm._v(\"Defeat The Wizard Level to unlock automation\")])]):_c('div',[_c('p',{staticClass:\"text-2xl font-semibold text-white\"},[_vm._v(\"Automation - BETA\")]),_c('hr'),_c('br'),_c('p',{staticClass:\"text-lg text-white\"},[_vm._v(\"With automation you can automatically play and retry levels.\")]),_c('p',{staticClass:\"text-lg text-white\"},[_vm._v(\"The 'AI' is not very smart, it can get stuck, and it won't play optimally, so use at your own risk.\")]),_vm._m(0),_c('br'),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.automation.selectedLevel),expression:\"automation.selectedLevel\"}],staticClass:\"input-primary\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.automation, \"selectedLevel\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.levels),function(level){return _c('option',{key:level.id,domProps:{\"value\":level.id}},[_vm._v(\" \"+_vm._s(level.name)+\" \")])}),0),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.automation.selectedStrategy),expression:\"automation.selectedStrategy\"}],staticClass:\"input-primary\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.automation, \"selectedStrategy\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.strategies),function(strategy){return _c('option',{key:strategy.id,domProps:{\"value\":strategy.id}},[_vm._v(\" \"+_vm._s(strategy.title)+\" \")])}),0),_c('p',{staticClass:\"text-lg text-white\"},[_vm._v(\" Before you activate Automation, please make sure your starting bonuses are set correctly! \")]),_c('div',{staticClass:\"flex flex-row p-4 items-center\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.automation.isActive),expression:\"automation.isActive\"}],staticClass:\"input-primary w-4 h-4\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.automation.isActive)?_vm._i(_vm.automation.isActive,null)>-1:(_vm.automation.isActive)},on:{\"change\":function($event){var $$a=_vm.automation.isActive,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.automation, \"isActive\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.automation, \"isActive\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.automation, \"isActive\", $$c)}}}}),_c('p',{staticClass:\"text-lg font-semibold ml-2\",class:_vm.automation.isActive ? 'text-green-500' : 'text-red-500'},[_vm._v(\" Automation \"+_vm._s(_vm.automation.isActive ? 'Active' : 'Inactive'))])]),_c('div',{staticClass:\"flex flex-col\"},_vm._l((_vm.strategies),function(strategy){return _c('div',{key:strategy.id},[_c('p',{staticClass:\"text-white\"},[_vm._v(_vm._s(strategy.title))]),_c('div',{staticClass:\"text-white\",domProps:{\"innerHTML\":_vm._s(strategy.description)}}),_c('hr')])}),0),_c('br')])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"text-lg text-white\"},[_vm._v(\"Feel free to add your own algorithm on \"),_c('a',{staticClass:\"text-blue-500\",attrs:{\"target\":\"_blank\",\"href\":\"https://github.com/123ishaTest/CardQuest/blob/master/src/card-quest/features/automation\"}},[_vm._v(\" GitHub \")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-automation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-automation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-automation.vue?vue&type=template&id=73b79b9a&scoped=true&\"\nimport script from \"./cq-automation.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-automation.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73b79b9a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"feature-tab\"},[_c('p',{staticClass:\"text-2xl text-white font-semibold\"},[_vm._v(\"Level Editor\")]),_c('hr'),_c('p',{staticClass:\"text-2xl text-white\"},[_vm._v(\"Create custom levels to challenge your friends!\")]),_c('div',{staticClass:\"flex flex-col m-4 p-4\"},[_vm._m(0),_vm._l((_vm.currentCards),function(entry,index){return _c('div',{key:'entry-'+index,staticClass:\"flex flex-row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(entry[0]),expression:\"entry[0]\"}],staticClass:\"input-primary\",attrs:{\"type\":\"text\"},domProps:{\"value\":(entry[0])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(entry, 0, $event.target.value)}}}),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(entry[1]),expression:\"entry[1]\"}],staticClass:\"input-primary\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(entry, 1, $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{domProps:{\"value\":-1}},[_vm._v(\" None \")]),_vm._l((_vm.availableCards),function(card){return _c('option',{key:card.id,domProps:{\"value\":card.id}},[_vm._v(\" \"+_vm._s(card.title)+\" \")])})],2)])})],2),_c('button',{staticClass:\"btn btn-green\",on:{\"click\":_vm.goOnCustomAdventure}},[_vm._v(\"Play custom level\")]),_c('button',{staticClass:\"btn btn-blue\",on:{\"click\":_vm.exportLevel}},[_vm._v(\"Export Level\")]),_c('button',{staticClass:\"btn btn-green\",on:{\"click\":_vm.importLevel}},[_vm._v(\"Import Level\")]),_c('button',{staticClass:\"btn btn-red\",on:{\"click\":_vm.resetToDefault}},[_vm._v(\"Reset to default\")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex flex-row flex-initial justify-between\"},[_c('p',{staticClass:\"text-2xl font-semibold text-white\"},[_vm._v(\"Turn\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-level-editor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-level-editor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-level-editor.vue?vue&type=template&id=39c3bd8b&scoped=true&\"\nimport script from \"./cq-level-editor.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-level-editor.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39c3bd8b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"modal\"}},[_c('div',{staticClass:\"modal-mask\"},[_c('div',{staticClass:\"modal-wrapper\"},[_c('div',{staticClass:\"modal-container w-96 mx-auto p-4 bg-cq-slate shadow-xl\"},[_c('div',{staticClass:\"modal-header\"},[_vm._t(\"header\")],2),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"body\",[_c('p',{staticClass:\"text-lg font-semibold text-white\"},[_vm._v(\"You were defeated in battle. Better luck next time\")])])],2),_c('div',{staticClass:\"modal-footer\"},[_vm._t(\"footer\",[_c('button',{staticClass:\"btn btn-green\",on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\" Close \")])])],2)])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-lose-modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-lose-modal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-lose-modal.vue?vue&type=template&id=7b5e0c4a&scoped=true&\"\nimport script from \"./cq-lose-modal.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-lose-modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cq-lose-modal.vue?vue&type=style&index=0&id=7b5e0c4a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b5e0c4a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"feature-tab\"},[_c('p',{staticClass:\"text-2xl font-semibold\"},[_vm._v(\"Credits\")]),_c('hr'),_c('br'),_c('div',{staticClass:\"p-4\"},[_c('p',{staticClass:\"text-lg\"},[_vm._v(\"This game was Developed in 7 days by \"),_c('a',{attrs:{\"href\":\"http://github.com/ishadijcks/\",\"target\":\"_blank\"}},[_vm._v(\"Isha\")]),_vm._v(\" for the \"),_c('a',{attrs:{\"href\":\"https://incremental_games.reddit.com/\",\"target\":\"_blank\"}},[_vm._v(\"r/incremental_games\")]),_vm._v(\" jam of 2021.\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"You can view the Source Code on \"),_c('a',{attrs:{\"href\":\"https://github.com/123ishaTest/CardQuest\",\"target\":\"_blank\"}},[_vm._v(\"GitHub\")]),_vm._v(\".\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"It uses the \"),_c('a',{attrs:{\"href\":\"https://github.com/123ishaTest/incremental-game-template\",\"target\":\"_blank\"}},[_vm._v(\"Incremental Game Template\")]),_vm._v(\".\")]),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"I realize it isn't the most traditional incremental game, but it should still be enjoyable :)\")]),_c('br'),_c('br'),_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Thank you for playing, I hope you liked it.\")])]),_c('div',{staticClass:\"p-4\"},[_c('p',{staticClass:\"text-lg\"},[_vm._v(\"Artwork taken from \"),_c('a',{attrs:{\"href\":\"https://game-icons.net/\",\"target\":\"_blank\"}},[_vm._v(\"game-icons.net\")])])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-credits.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-credits.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cq-credits.vue?vue&type=template&id=47897829&scoped=true&\"\nimport script from \"./cq-credits.vue?vue&type=script&lang=js&\"\nexport * from \"./cq-credits.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cq-credits.vue?vue&type=style&index=0&id=47897829&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"47897829\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=45fd31a8&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\n\nVue.filter('numberFormat', function (value: number) {\n if (value == undefined) {\n return \"\";\n }\n return Math.floor(value);\n // return value.toFixed(2).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n})\n\nVue.filter('humanizeString', function (string: string) {\n if (string == undefined) {\n return \"\";\n }\n string = string.charAt(0).toUpperCase() + string.slice(1);\n string.replace(\"_\", \" \").replace(\"-\", \" \");\n return string;\n})\n","import Vue from 'vue'\nimport VueApp from './App.vue'\nimport {App} from \"./App\";\n\nimport Notifications from \"vt-notifications\";\n\nimport './VueFilters';\n\nimport \"./index.css\";\n\nVue.config.productionTip = false\n\nVue.use(Notifications);\n\ndeclare global {\n interface Window {\n App: App;\n }\n}\n\nVue.config.productionTip = false\n\n\n/**\n * Start the application when all html elements are loaded.\n */\nwindow.onload = function () {\n App.start();\n\n // Expose the App class to the window (and the console)\n // if (process.env.DEBUG && typeof window !== undefined) {\n\n console.log('Exposing App to console');\n window.App = App;\n // }\n\n\n console.log(\"Launched\");\n\n new Vue({\n render: h => h(VueApp),\n }).$mount('#app')\n\n\n};\n\n\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-how-to-play.vue?vue&type=style&index=0&id=395ade17&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/shield-cracked.e069054d.svg\";","module.exports = __webpack_public_path__ + \"img/logo.82b9c7a5.png\";","module.exports = __webpack_public_path__ + \"img/souls.06dc216d.svg\";","module.exports = __webpack_public_path__ + \"img/strike-yellow.cb4844fe.svg\";","module.exports = __webpack_public_path__ + \"img/heart.107d5fc1.svg\";","module.exports = __webpack_public_path__ + \"img/chicken.61a63c33.svg\";","module.exports = __webpack_public_path__ + \"img/hatchet-silver.e566235f.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-lose-modal.vue?vue&type=style&index=0&id=7b5e0c4a&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/sword.534348cf.svg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cq-credits.vue?vue&type=style&index=0&id=47897829&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"img/clock.aa736eff.svg\";","var map = {\n\t\"./pickaxe-bronze.svg\": \"8e27\",\n\t\"./pickaxe-gold.svg\": \"a164\",\n\t\"./pickaxe-silver.svg\": \"59b6\",\n\t\"./pickaxe-stone.svg\": \"59b5\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"eca3\";","module.exports = __webpack_public_path__ + \"img/default.2e9f2e54.svg\";","module.exports = __webpack_public_path__ + \"img/spider-small.3254594a.svg\";","module.exports = __webpack_public_path__ + \"img/coins.91642bb9.svg\";","module.exports = __webpack_public_path__ + \"img/scythe-gold.fecfe7c9.svg\";"],"sourceRoot":""}