UNPKG

@kitten-science/kitten-scientists

Version:

Add-on for the wonderful incremental browser game: https://kittensgame.com/web/

408 lines 16.8 kB
import type { AnyFunction } from "@oliversalzburg/js-utils/core.js"; import type { BuildingStackableBtn, BuildingStackableBtnController, ButtonModern, ButtonModernController, IChildrenAware, IGameAware, Panel, Tab, TabManager, UnsafeBuildingStackableBtnModel, UnsafeBuildingStackableBtnModelDefaults, UnsafeButtonModernModel, UnsafeButtonModernModelDefaults } from "./core.js"; import type { GamePage } from "./game.js"; import type { BuildingEffect, BuyItemResultReason, Link, Pact, Price, ReligionUpgrade, Resource, TranscendenceUpgrade, Unlocks, UnsafeBuyItemResult, UnsafeMeta, ZigguratUpgrade } from "./index.js"; export type ReligionManager = TabManager<UnsafeMeta<UnsafeReligionUpgrade> | UnsafeMeta<UnsafeTranscendenceUpgrade> | UnsafeMeta<UnsafeZigguratUpgrade> | UnsafeMeta<UnsafePact>> & { meta: [ UnsafeMeta<UnsafeReligionUpgrade>, UnsafeMeta<UnsafeTranscendenceUpgrade>, UnsafeMeta<UnsafeZigguratUpgrade>, UnsafeMeta<UnsafePact> ]; game: GamePage; pactsManager: PactsManager; /** * your TT level! */ transcendenceTier: number; /** * an amount of faith temporarily moved to a praised pool (aka worship) */ faith: number; /** * an amount of converted faith obtained through the faith reset (aka eupyphany) */ faithRatio: number; tcratio: number; corruption: number; alicornCounter: number; /** * the amount of currently active HG buildings (typically refils during reset) */ activeHolyGenocide: number; new (game: GamePage): ReligionManager; resetState: () => void; save: (saveData: unknown) => void; load: (saveData: unknown) => void; getCorruptionPerTickProduction: (pretendExistNecrocorn?: boolean | undefined) => number; getCorruptionPerTickConsumption: () => number; getCorruptionDeficitPerTick: () => number; getCorruptionPerTick: (pretendExistNecrocorn?: boolean | undefined) => number; update: () => void; fastforward: (daysOffset: number) => void; corruptNecrocorns: () => number; necrocornsNaiveFastForward: (daysOffset: number, times: number) => void; gesSiphoningAlicornConsumptionPerDay: () => void; necrocornFastForward: (days: number, times: number) => void; triggerOrderOfTheVoid: (numberOfTicks: number) => void; zigguratUpgrades: Array<UnsafeZigguratUpgrade>; religionUpgrades: Array<UnsafeReligionUpgrade>; transcendenceUpgrades: Array<UnsafeTranscendenceUpgrade>; necrocornDeficitPunishment: () => void; effectsBase: { kittensKarmaPerMinneliaRatio: number; pactNecrocornConsumption: number; }; getZU: (name: ZigguratUpgrade) => Required<UnsafeZigguratUpgrade>; getRU: (name: ReligionUpgrade) => Required<UnsafeReligionUpgrade>; getTU: (name: TranscendenceUpgrade) => Required<UnsafeTranscendenceUpgrade>; getPact: (name: Pact) => UnsafePact; getSolarRevolutionRatio: () => number; getApocryphaBonus: () => number; getHGScalingBonus: () => number; turnHGOff: () => void; praise: () => void; getApocryphaResetBonus: (bonusRatio: number) => number; resetFaith: (bonusRatio: number, withConfirmation: boolean) => void; _resetFaithInternal: (bonusRatio: number) => void; transcend: () => void; _getTranscendTotalPrice: (tier: number) => number; _getTranscendNextPrice: () => void; unlockAll: () => void; undo: (data: UnsafeReligionUndo) => void; }; export type ZigguratBtnController = BuildingStackableBtnController<UnsafeZigguratBtnModel<UnsafeZigguratButtonOptions>> & { defaults: () => UnsafeZigguratBtnModelDefaults; getMetadata: (model: UnsafeZigguratBtnModel) => UnsafeZigguratUpgrade; getName: (model: UnsafeZigguratBtnModel) => string; getPrices: (model: UnsafeZigguratBtnModel) => Array<Price>; }; export type ReligionBtnController = BuildingStackableBtnController<UnsafeReligionBtnModel<UnsafeReligionButtonOptions>> & { defaults: () => UnsafeReligionBtnModelDefaults; getMetadata: (model: UnsafeReligionBtnModel) => UnsafeReligionUpgrade; hasSellLink: (model: UnsafeReligionBtnModel) => boolean; getPrices: (model: unknown) => Array<Price>; updateVisible: () => void; }; export type TranscendenceBtnController<TModel extends UnsafeTranscendenceBtnModel | unknown = unknown> = BuildingStackableBtnController<TModel> & { defaults: () => UnsafeTranscendenceBtnModelDefaults; getMetadata: (model: UnsafeTranscendenceBtnModel) => UnsafeTranscendenceUpgrade; }; export type PraiseBtnController = ButtonModernController & { getName: (model: UnsafeButtonModernModel) => string; }; export type ResetFaithBtnController = ButtonModernController & { getName: (model: UnsafeButtonModernModel) => string; updateVisible: (model: UnsafeButtonModernModel) => string; }; export type TranscendBtnController = ButtonModernController & { getName: (model: UnsafeButtonModernModel) => string; updateEnabled: (model: UnsafeButtonModernModel) => string; updateVisible: (model: UnsafeButtonModernModel) => string; }; export type TransformBtnController<TModel extends UnsafeTransformBtnModel | undefined = UnsafeTransformBtnModel, TControllerOpts extends Record<string, unknown> | undefined = Record<string, unknown>> = ButtonModernController<TModel, TControllerOpts> & { new (game: GamePage, controllerOpts?: TControllerOpts): TransformBtnController<TModel, TControllerOpts>; defaults: () => UnsafeTransformBtnModelDefaults; fetchModel: (options: unknown) => UnsafeTransformBtnModel; _newLink: (model: UnsafeTransformBtnModel, divider: number) => Link; buyItem: (model: UnsafeTransformBtnModel, event: Event) => UnsafeBuyItemResult; /** * Calculates the max number of transformations the player can afford to do. * If the resource has a storage cap (such as during a Unicorn Tears Challenge), * it won't give the option to go farther than 1 transformation above that cap. */ _canAfford: (model: UnsafeTransformBtnModel, divider: number) => boolean; transform: (model: UnsafeTransformBtnModel, divider: number, event: unknown, callback: (itemBought: boolean, reason: BuyItemResultReason) => void) => Link; _transform: (model: UnsafeTransformBtnModel, amt: number) => boolean; }; export type AllMultiLinkBtnOptions = UnsafeSacrificeButtonOptions | UnsafeSacrificeAlicornsButtonOptions | UnsafeRefineTCButtonOptions; export type MultiLinkBtn<TOpts extends AllMultiLinkBtnOptions> = ButtonModern<TOpts> & { all?: Link; half?: Link; fifth?: Link; renderLinks: () => void; update: () => void; }; export type RefineTearsBtnController = ButtonModernController & { defaults: () => UnsafeRefineTearsBtnModelDefaults; fetchModel: (options: unknown) => UnsafeRefineTearsBtnModel; _newLink: (model: UnsafeRefineTearsBtnModel, count: number) => Link; _canAfford: (model: UnsafeRefineTearsBtnModel, count: unknown) => boolean; buyItem: (model: UnsafeRefineTearsBtnModel, event: Event, count: number) => UnsafeBuyItemResult; refine: () => void; }; export type CryptotheologyWGT = IChildrenAware<BuildingStackableBtn<UnsafeTranscendenceButtonOptions>> & IGameAware & { new (game: GamePage): CryptotheologyWGT; render: (container?: HTMLElement) => void; update: () => void; }; export type CryptotheologyPanel = Panel<CryptotheologyWGT> & { visible: boolean; }; export type PactsWGT = IChildrenAware<BuildingStackableBtn<UnsafePactsButtonOptions>> & IGameAware & { new (game: GamePage): PactsWGT; render: (container?: HTMLElement) => void; update: () => void; }; export type PactsPanel = Panel<PactsWGT> & { visible: boolean; }; export type PactsBtnController<TModel extends UnsafePactsBtnModel | unknown = unknown> = BuildingStackableBtnController<TModel> & { defaults: () => UnsafePactsBtnModelDefaults; getMetadata: (model: UnsafePactsBtnModel) => UnsafePact; updateEnabled: (model: UnsafePactsBtnModel) => void; shouldBeBough: (model: UnsafePactsBtnModel, game: GamePage) => boolean; buyItem: (model: UnsafePactsBtnModel, event: Event) => UnsafeBuyItemResult | ReturnType<BuildingStackableBtnController<TModel>["buyItem"]>; build: (model: UnsafePactsBtnModel, maxBld: number) => number; }; export type RefineBtn = ButtonModern<UnsafeRefineTearsButtonOptions> & { renderLinks: () => void; update: () => void; }; export type PactsManager = { game: GamePage; necrocornDeficit: number; fractureNecrocornDeficit: number; pacts: Array<UnsafePact>; necrocornDeficitPunishment: () => void; new (game: GamePage): PactsManager; resetState: () => void; getPactsTextSum: () => string; getPactsTextDeficit: () => string; getNecrocornDeficitConsumptionModifier: () => number; getSiphonedCorruption: (days: number) => number; necrocornConsumptionDays: (days: number) => void; pactsMilleniumKarmaKittens: (millenium: number) => number; }; export type ReligionTab = Tab<CryptotheologyPanel | PactsPanel> & { /** * Sacrifice unicorns. */ sacrificeBtn: MultiLinkBtn<UnsafeSacrificeButtonOptions> | null; /** * Sacrifice alicorns. */ sacrificeAlicornsBtn: MultiLinkBtn<UnsafeSacrificeAlicornsButtonOptions> | null; /** * Ziggurat upgrade buttons. */ zgUpgradeButtons: Array<BuildingStackableBtn<UnsafeZigguratButtonOptions>>; /** * Religion upgrade (Order of the sun) buttons. */ rUpgradeButtons: Array<BuildingStackableBtn<UnsafeReligionButtonOptions>>; /** * Religion upgrade (Order of the sun) buttons. */ pactUpgradeButtons: Array<unknown>; ctPanel: CryptotheologyPanel; ptPanel: PactsPanel; render: (container?: HTMLElement) => void; update: () => void; /** * Refine tears. */ refineBtn?: RefineBtn; /** * Refine time crystals. */ refineTCBtn?: MultiLinkBtn<UnsafeRefineTCButtonOptions>; praiseBtn?: ButtonModern<UnsafePraiseButtonOptions>; adoreBtn?: ButtonModern<UnsafeResetFaithButtonOptions>; transcendBtn?: ButtonModern<UnsafeTranscendButtonOptions>; }; export type UnsafeReligionUpgrade = { name: ReligionUpgrade; label: string; /** * An internationalized description for this religion upgrade. */ description: string; prices: Array<Price>; faith: number; effects?: Partial<Record<BuildingEffect, number>>; calculateEffects: (self: UnsafeReligionUpgrade, game: GamePage) => void; noStackable: boolean; priceRatio: number; unlocked?: boolean; researched?: boolean; /** * This flag is set by KS itself to "hide" a given build from being * processed in the BulkManager. This is likely not ideal and will * be refactored later. */ rHidden?: boolean; val?: number; on?: number; }; export type UnsafeZigguratUpgrade = { name: ZigguratUpgrade; label: string; /** * An internationalized description for this religion upgrade. */ description: string; prices: Array<Price>; priceRatio: number; effects?: Partial<Record<BuildingEffect, number>>; calculateEffects: (self: UnsafeZigguratUpgrade, game: GamePage) => void; unlocked: boolean; defaultUnlocked: boolean; unlocks?: Partial<Unlocks>; /** * This flag is set by KS itself to "hide" a given build from being * processed in the BulkManager. This is likely not ideal and will * be refactored later. */ rHidden?: boolean; val?: number; on?: number; }; export type UnsafeTranscendenceUpgrade = { name: TranscendenceUpgrade; label: string; /** * An internationalized description for this religion upgrade. */ description: string; prices: Array<Price>; priceRatio: number; effects?: Partial<Record<BuildingEffect, number>>; calculateEffects?: (self: UnsafeTranscendenceUpgrade, game: GamePage) => void; upgrades?: Partial<Unlocks>; unlocked: boolean; flavor: string; tier: number; /** * This flag is set by KS itself to "hide" a given build from being * processed in the BulkManager. This is likely not ideal and will * be refactored later. */ rHidden?: boolean; val?: number; on?: number; }; export type UnsafePact = { name: Pact; label: string; description: string; prices: Array<Price>; unlocks: Partial<Unlocks>; priceRatio: number; effects?: Partial<Record<BuildingEffect, number>>; unlocked: boolean; calculateEffects: (self: UnsafePact, game: GamePage) => void; val?: number; on?: number; }; export type UnsafeReligionUndo = { action: "refine"; resTo: Resource; resFrom: Resource; valTo: number; valFrom: number; }; export type UnsafePraiseButtonOptions = { name: string; description: string; handler: AnyFunction; controller: PraiseBtnController; }; export type UnsafeResetFaithButtonOptions = { name: string; description: string; handler: AnyFunction; controller: ResetFaithBtnController; }; export type UnsafeTranscendButtonOptions = { name: string; description: string; handler: AnyFunction; controller: TranscendBtnController; }; export type UnsafeTranscendenceButtonOptions = { id: TranscendenceUpgrade; name: string; description: string; controller: TranscendenceBtnController<UnsafeTranscendenceBtnModel>; }; export type UnsafePactsButtonOptions = { id: Pact; name: string; description: string; controller: PactsBtnController<UnsafePactsBtnModel>; }; export type UnsafeZigguratButtonOptions = { id: ZigguratUpgrade; name: string; description: string; prices: Array<Price>; controller: ZigguratBtnController; handler: AnyFunction; }; export type UnsafeReligionButtonOptions = { id: ReligionUpgrade; name: string; description: string; prices: Array<Price>; controller: ReligionBtnController; handler: AnyFunction; }; export type UnsafeRefineTearsButtonOptions = { name: string; description: string; prices: Array<Price>; controller: RefineTearsBtnController; }; export type UnsafeSacrificeButtonOptions = { name: string; description: string; prices: Array<Price>; controller: TransformBtnController; }; export type UnsafeSacrificeAlicornsButtonOptions = { name: string; description: string; prices: Array<Price>; controller: TransformBtnController; }; export type UnsafeRefineTCButtonOptions = { name: string; description: string; prices: Array<Price>; controller: TransformBtnController; }; export type UnsafeZigguratBtnModelDefaults = { tooltipName: boolean; } & UnsafeBuildingStackableBtnModelDefaults; export type UnsafeZigguratBtnModel<TModelOptions extends UnsafeZigguratButtonOptions | unknown = unknown> = UnsafeZigguratBtnModelDefaults & UnsafeBuildingStackableBtnModel<TModelOptions>; export type UnsafeReligionBtnModelDefaults = { tooltipName: boolean; } & UnsafeBuildingStackableBtnModelDefaults; export type UnsafeReligionBtnModel<TModelOptions extends UnsafeReligionButtonOptions | unknown = unknown> = UnsafeReligionBtnModelDefaults & UnsafeBuildingStackableBtnModel<TModelOptions>; export type UnsafeTranscendenceBtnModelDefaults = { tooltipName: boolean; } & UnsafeBuildingStackableBtnModelDefaults; export type UnsafeTranscendenceBtnModel<TModelOptions extends UnsafeTranscendenceButtonOptions | unknown = unknown> = UnsafeTranscendenceBtnModelDefaults & UnsafeBuildingStackableBtnModel<TModelOptions>; export type UnsafeTransformBtnModelDefaults = { hasResourceHover: boolean; simplePrices: boolean; } & UnsafeButtonModernModelDefaults; export type UnsafeTransformBtnModel<TModelOptions extends Record<string, unknown> | undefined = Record<string, unknown>> = { fifthLink: Link; halfLink: Link; allLink: Link; } & UnsafeTransformBtnModelDefaults & UnsafeButtonModernModel<TModelOptions>; export type UnsafeRefineTearsBtnModelDefaults = { hasResourceHover: boolean; } & UnsafeButtonModernModelDefaults; export type UnsafeRefineTearsBtnModel<TModelOptions extends Record<string, unknown> | undefined = Record<string, unknown>> = { fiveLink: Link; twentyFiveLink: Link; hundredLink: Link; } & UnsafeRefineTearsBtnModelDefaults & UnsafeButtonModernModel<TModelOptions>; export type UnsafePactsBtnModelDefaults = { tooltipName: boolean; } & UnsafeBuildingStackableBtnModelDefaults; export type UnsafePactsBtnModel<TModelOptions extends Record<string, unknown> | undefined = Record<string, unknown>> = UnsafePactsBtnModelDefaults & UnsafeBuildingStackableBtnModel<TModelOptions>; //# sourceMappingURL=religion.d.ts.map