@kitten-science/kitten-scientists
Version:
Add-on for the wonderful incremental browser game: https://kittensgame.com/web/
408 lines • 16.8 kB
TypeScript
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