@kitten-science/kitten-scientists 2.0.0-beta.10-20250317-13d12af → 2.0.0-beta.10-dev-1c648fc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/lib/BonfireManager.d.ts +17 -5
  2. package/lib/BonfireManager.d.ts.map +1 -1
  3. package/lib/BonfireManager.js +14 -13
  4. package/lib/BonfireManager.js.map +1 -1
  5. package/lib/Engine.js +3 -3
  6. package/lib/Engine.js.map +1 -1
  7. package/lib/KittenScientists.d.ts +5 -4
  8. package/lib/KittenScientists.d.ts.map +1 -1
  9. package/lib/KittenScientists.js.map +1 -1
  10. package/lib/ReligionManager.d.ts +5 -4
  11. package/lib/ReligionManager.d.ts.map +1 -1
  12. package/lib/ReligionManager.js +15 -18
  13. package/lib/ReligionManager.js.map +1 -1
  14. package/lib/ScienceManager.d.ts +2 -2
  15. package/lib/ScienceManager.d.ts.map +1 -1
  16. package/lib/ScienceManager.js.map +1 -1
  17. package/lib/SpaceManager.d.ts +3 -2
  18. package/lib/SpaceManager.d.ts.map +1 -1
  19. package/lib/SpaceManager.js +6 -3
  20. package/lib/SpaceManager.js.map +1 -1
  21. package/lib/TabManager.d.ts +3 -2
  22. package/lib/TabManager.d.ts.map +1 -1
  23. package/lib/TabManager.js.map +1 -1
  24. package/lib/TimeControlManager.d.ts +3 -2
  25. package/lib/TimeControlManager.d.ts.map +1 -1
  26. package/lib/TimeControlManager.js +6 -5
  27. package/lib/TimeControlManager.js.map +1 -1
  28. package/lib/TimeManager.d.ts +5 -3
  29. package/lib/TimeManager.d.ts.map +1 -1
  30. package/lib/TimeManager.js +21 -23
  31. package/lib/TimeManager.js.map +1 -1
  32. package/lib/TradeManager.d.ts +8 -7
  33. package/lib/TradeManager.d.ts.map +1 -1
  34. package/lib/TradeManager.js +7 -7
  35. package/lib/TradeManager.js.map +1 -1
  36. package/lib/UpgradeManager.d.ts +7 -2
  37. package/lib/UpgradeManager.d.ts.map +1 -1
  38. package/lib/UpgradeManager.js +24 -16
  39. package/lib/UpgradeManager.js.map +1 -1
  40. package/lib/VillageManager.d.ts +2 -2
  41. package/lib/VillageManager.d.ts.map +1 -1
  42. package/lib/VillageManager.js +1 -1
  43. package/lib/VillageManager.js.map +1 -1
  44. package/lib/WorkshopManager.d.ts +7 -6
  45. package/lib/WorkshopManager.d.ts.map +1 -1
  46. package/lib/WorkshopManager.js +1 -1
  47. package/lib/WorkshopManager.js.map +1 -1
  48. package/lib/helper/BulkPurchaseHelper.d.ts +9 -4
  49. package/lib/helper/BulkPurchaseHelper.d.ts.map +1 -1
  50. package/lib/helper/BulkPurchaseHelper.js +9 -11
  51. package/lib/helper/BulkPurchaseHelper.js.map +1 -1
  52. package/lib/settings/ElectLeaderSettings.d.ts +1 -1
  53. package/lib/settings/MissionSettings.d.ts +3 -2
  54. package/lib/settings/MissionSettings.d.ts.map +1 -1
  55. package/lib/settings/MissionSettings.js.map +1 -1
  56. package/lib/settings/PolicySettings.d.ts +3 -2
  57. package/lib/settings/PolicySettings.d.ts.map +1 -1
  58. package/lib/settings/PolicySettings.js.map +1 -1
  59. package/lib/settings/ReligionSettings.d.ts +1 -8
  60. package/lib/settings/ReligionSettings.d.ts.map +1 -1
  61. package/lib/settings/ReligionSettings.js +0 -18
  62. package/lib/settings/ReligionSettings.js.map +1 -1
  63. package/lib/settings/ResetReligionSettings.d.ts +1 -2
  64. package/lib/settings/ResetReligionSettings.d.ts.map +1 -1
  65. package/lib/settings/ResetReligionSettings.js.map +1 -1
  66. package/lib/settings/ScienceSettings.d.ts +2 -2
  67. package/lib/settings/ScienceSettings.d.ts.map +1 -1
  68. package/lib/settings/ScienceSettings.js.map +1 -1
  69. package/lib/settings/Settings.d.ts +1 -2
  70. package/lib/settings/Settings.d.ts.map +1 -1
  71. package/lib/settings/Settings.js.map +1 -1
  72. package/lib/settings/SpaceSettings.d.ts +3 -2
  73. package/lib/settings/SpaceSettings.d.ts.map +1 -1
  74. package/lib/settings/SpaceSettings.js.map +1 -1
  75. package/lib/settings/TechSettings.d.ts +3 -2
  76. package/lib/settings/TechSettings.d.ts.map +1 -1
  77. package/lib/settings/TechSettings.js.map +1 -1
  78. package/lib/settings/UpgradeSettings.d.ts +3 -2
  79. package/lib/settings/UpgradeSettings.d.ts.map +1 -1
  80. package/lib/settings/UpgradeSettings.js.map +1 -1
  81. package/lib/settings/WorkshopSettings.d.ts +3 -2
  82. package/lib/settings/WorkshopSettings.d.ts.map +1 -1
  83. package/lib/settings/WorkshopSettings.js.map +1 -1
  84. package/lib/tools/SavegameLoader.d.ts +3 -2
  85. package/lib/tools/SavegameLoader.d.ts.map +1 -1
  86. package/lib/tools/SavegameLoader.js.map +1 -1
  87. package/lib/types/{releases.d.ts → _releases.d.ts} +1 -1
  88. package/lib/types/_releases.d.ts.map +1 -0
  89. package/lib/types/_releases.js +2 -0
  90. package/lib/types/_releases.js.map +1 -0
  91. package/lib/types/{save.d.ts → _save.d.ts} +1 -1
  92. package/lib/types/_save.d.ts.map +1 -0
  93. package/lib/types/{save.js → _save.js} +1 -1
  94. package/lib/types/_save.js.map +1 -0
  95. package/lib/types/achievements.d.ts +56 -0
  96. package/lib/types/achievements.d.ts.map +1 -0
  97. package/lib/types/achievements.js +2 -0
  98. package/lib/types/achievements.js.map +1 -0
  99. package/lib/types/buildings.d.ts +168 -202
  100. package/lib/types/buildings.d.ts.map +1 -1
  101. package/lib/types/buildings.js +1 -47
  102. package/lib/types/buildings.js.map +1 -1
  103. package/lib/types/calendar.d.ts +78 -0
  104. package/lib/types/calendar.d.ts.map +1 -0
  105. package/lib/types/calendar.js +2 -0
  106. package/lib/types/calendar.js.map +1 -0
  107. package/lib/types/challenges.d.ts +136 -0
  108. package/lib/types/challenges.d.ts.map +1 -0
  109. package/lib/types/challenges.js +2 -0
  110. package/lib/types/challenges.js.map +1 -0
  111. package/lib/types/core.d.ts +325 -0
  112. package/lib/types/core.d.ts.map +1 -0
  113. package/lib/types/core.js +2 -0
  114. package/lib/types/core.js.map +1 -0
  115. package/lib/types/diplomacy.d.ts +169 -0
  116. package/lib/types/diplomacy.d.ts.map +1 -0
  117. package/lib/types/diplomacy.js +2 -0
  118. package/lib/types/diplomacy.js.map +1 -0
  119. package/lib/types/game.d.ts +440 -444
  120. package/lib/types/game.d.ts.map +1 -1
  121. package/lib/types/index.d.ts +327 -207
  122. package/lib/types/index.d.ts.map +1 -1
  123. package/lib/types/index.js +713 -3
  124. package/lib/types/index.js.map +1 -1
  125. package/lib/types/math.d.ts +10 -0
  126. package/lib/types/math.d.ts.map +1 -0
  127. package/lib/types/math.js +2 -0
  128. package/lib/types/math.js.map +1 -0
  129. package/lib/types/prestige.d.ts +47 -0
  130. package/lib/types/prestige.d.ts.map +1 -0
  131. package/lib/types/prestige.js +2 -0
  132. package/lib/types/prestige.js.map +1 -0
  133. package/lib/types/religion.d.ts +351 -56
  134. package/lib/types/religion.d.ts.map +1 -1
  135. package/lib/types/religion.js +1 -43
  136. package/lib/types/religion.js.map +1 -1
  137. package/lib/types/resources.d.ts +86 -0
  138. package/lib/types/resources.d.ts.map +1 -0
  139. package/lib/types/resources.js +2 -0
  140. package/lib/types/resources.js.map +1 -0
  141. package/lib/types/science.d.ts +81 -32
  142. package/lib/types/science.d.ts.map +1 -1
  143. package/lib/types/science.js +1 -128
  144. package/lib/types/science.js.map +1 -1
  145. package/lib/types/space.d.ts +108 -22
  146. package/lib/types/space.d.ts.map +1 -1
  147. package/lib/types/space.js +1 -53
  148. package/lib/types/space.js.map +1 -1
  149. package/lib/types/stats.d.ts +35 -0
  150. package/lib/types/stats.d.ts.map +1 -0
  151. package/lib/types/stats.js +2 -0
  152. package/lib/types/stats.js.map +1 -0
  153. package/lib/types/time.d.ts +247 -30
  154. package/lib/types/time.d.ts.map +1 -1
  155. package/lib/types/time.js +1 -22
  156. package/lib/types/time.js.map +1 -1
  157. package/lib/types/toolbar.d.ts +37 -0
  158. package/lib/types/toolbar.d.ts.map +1 -0
  159. package/lib/types/toolbar.js +2 -0
  160. package/lib/types/toolbar.js.map +1 -0
  161. package/lib/types/ui.d.ts +115 -0
  162. package/lib/types/ui.d.ts.map +1 -0
  163. package/lib/types/ui.js +2 -0
  164. package/lib/types/ui.js.map +1 -0
  165. package/lib/types/village.d.ts +496 -9
  166. package/lib/types/village.d.ts.map +1 -1
  167. package/lib/types/void.d.ts +19 -0
  168. package/lib/types/void.d.ts.map +1 -0
  169. package/lib/types/void.js +2 -0
  170. package/lib/types/void.js.map +1 -0
  171. package/lib/types/workshop.d.ts +130 -10
  172. package/lib/types/workshop.d.ts.map +1 -1
  173. package/lib/types/workshop.js +1 -139
  174. package/lib/types/workshop.js.map +1 -1
  175. package/lib/ui/ReligionSettingsUi.d.ts.map +1 -1
  176. package/lib/ui/ReligionSettingsUi.js +2 -1
  177. package/lib/ui/ReligionSettingsUi.js.map +1 -1
  178. package/lib/ui/ResetReligionSettingsUi.d.ts.map +1 -1
  179. package/lib/ui/ResetReligionSettingsUi.js +1 -1
  180. package/lib/ui/ResetReligionSettingsUi.js.map +1 -1
  181. package/lib/ui/ResetTimeSettingsUi.d.ts.map +1 -1
  182. package/lib/ui/ResetTimeSettingsUi.js +1 -1
  183. package/lib/ui/ResetTimeSettingsUi.js.map +1 -1
  184. package/lib/ui/StateManagementUi.d.ts +1 -1
  185. package/lib/ui/TimeSettingsUi.d.ts.map +1 -1
  186. package/lib/ui/TimeSettingsUi.js +1 -1
  187. package/lib/ui/TimeSettingsUi.js.map +1 -1
  188. package/output/kitten-scientists.inject.js +258 -242
  189. package/package.json +5 -5
  190. package/lib/types/craft.d.ts +0 -26
  191. package/lib/types/craft.d.ts.map +0 -1
  192. package/lib/types/craft.js +0 -2
  193. package/lib/types/craft.js.map +0 -1
  194. package/lib/types/releases.d.ts.map +0 -1
  195. package/lib/types/releases.js +0 -2
  196. package/lib/types/releases.js.map +0 -1
  197. package/lib/types/save.d.ts.map +0 -1
  198. package/lib/types/save.js.map +0 -1
  199. package/lib/types/trade.d.ts +0 -36
  200. package/lib/types/trade.d.ts.map +0 -1
  201. package/lib/types/trade.js +0 -11
  202. package/lib/types/trade.js.map +0 -1
@@ -1,24 +1,81 @@
1
1
  import type { AnyFunction } from "@oliversalzburg/js-utils/core.js";
2
- import type { CycleIndices } from "../settings/TimeControlSettings.js";
3
- import type { CraftableInfo, ResourceInfo } from "./craft.js";
4
- import type { AllBuildings, BuildButton, Building, BuildingEffects, BuildingExt, BuildingMeta, Challenge, Cycle, GameTab, KGSaveData, Kitten, Policy, Price, Race, RaceInfo, ReligionUpgrade, ReligionUpgradeInfo, Resource, ResourceCraftable, Season, TabId, TranscendenceUpgrade, TranscendenceUpgradeInfo, UpgradeInfo, WorkshopTab, ZiggurathUpgrade, ZiggurathUpgradeInfo } from "./index.js";
5
- import type { ReligionTab } from "./religion.js";
6
- import type { PolicyInfo, Technology, TechInfo as TechnologyInfo } from "./science.js";
7
- import type { Mission, PlanetMeta, SpaceBuilding, SpaceTab } from "./space.js";
8
- import type { ChronoForgeUpgrade, ChronoForgeUpgradeInfo, TimeTab, VoidSpaceUpgrade, VoidSpaceUpgradeInfo } from "./time.js";
9
- import type { TradeTab } from "./trade.js";
10
- import type { JobInfo, VillageTab } from "./village.js";
11
- type Server = {
2
+ import type { KGSaveData } from "./_save.js";
3
+ import type { AchTab, Achievements } from "./achievements.js";
4
+ import type { BuildingsManager, BuildingsModern } from "./buildings.js";
5
+ import type { Calendar } from "./calendar.js";
6
+ import type { ChallengesManager, ChallengesTab } from "./challenges.js";
7
+ import type { Console, Tab } from "./core.js";
8
+ import type { Diplomacy, DiplomacyManager } from "./diplomacy.js";
9
+ import type { Resource, ResourceCraftable, TabId, Unlocks } from "./index.js";
10
+ import type { Math as KGMath } from "./math.js";
11
+ import type { PrestigeManager } from "./prestige.js";
12
+ import type { ReligionManager, ReligionTab } from "./religion.js";
13
+ import type { ResourceManager } from "./resources.js";
14
+ import type { Library, ScienceManager } from "./science.js";
15
+ import type { SpaceManager, SpaceTab } from "./space.js";
16
+ import type { StatsManager, StatsTab } from "./stats.js";
17
+ import type { QueueTab, TimeManager, TimeTab } from "./time.js";
18
+ import type { DesktopUI } from "./ui.js";
19
+ import type { Village, VillageManager } from "./village.js";
20
+ import type { VoidManager } from "./void.js";
21
+ import type { Workshop, WorkshopManager } from "./workshop.js";
22
+ export type Timer = {
23
+ handlers: Array<unknown>;
24
+ scheduledHandlers: Array<unknown>;
25
+ ticksTotal: number;
26
+ timestampStart: null;
27
+ totalUpdateTime: null;
28
+ addEvent: (handler: unknown, frequency: unknown) => void;
29
+ update: () => void;
30
+ scheduleEvent: (handler: unknown) => void;
31
+ updateScheduledEvents: () => void;
32
+ beforeUpdate: () => void;
33
+ afterUpdate: () => void;
34
+ };
35
+ export type IDataStorageAware = {
36
+ new (): IDataStorageAware;
37
+ };
38
+ export type Telemetry = IDataStorageAware & {
39
+ guid: string;
40
+ game: GamePage;
41
+ buildRevision: null;
42
+ version: null;
43
+ errorCount: number;
44
+ new (game: GamePage): Telemetry;
45
+ generateGuid: () => string;
46
+ save: (data: unknown) => void;
47
+ load: (data: unknown) => void;
48
+ logEvent: (eventType: unknown, payload: unknown) => void;
49
+ logRouteChange: (name: string) => void;
50
+ };
51
+ export type Server = {
12
52
  showMotd: boolean;
13
53
  motdTitle: string | null;
14
54
  motdContent: string | null;
15
- game: Game | null;
55
+ game: GamePage | null;
16
56
  motdContentPrevious: string | null;
17
- motdFreshMessage: string | null;
18
- userProfile: unknown;
57
+ motdFreshMessage: boolean;
58
+ /**
59
+ * KGNet user profile
60
+ * Represents an active session, if not null, all XHR calls will be made
61
+ * using session cookies
62
+ */
63
+ userProfile: null;
19
64
  chiral: null;
65
+ /**
66
+ * When was the last time save was uploaded to the cloud. (Unix timestamp)
67
+ */
20
68
  lastBackup: null;
69
+ /**
70
+ * Current client snapshot of the save data
71
+ * All operations with the cloud saves should return the save snapshot?
72
+ */
21
73
  saveData: null;
74
+ /**
75
+ * If KS settings are detected in the save, this will be set to true.
76
+ */
77
+ isKSDetected: false;
78
+ new (game: GamePage): Server;
22
79
  setUserProfile: (userProfile: unknown) => void;
23
80
  getServerUrl: () => string;
24
81
  refresh: () => void;
@@ -32,163 +89,287 @@ type Server = {
32
89
  sendCommand: (command: unknown) => void;
33
90
  setChiral: (data: unknown) => void;
34
91
  };
35
- export type CycleEffects = {
36
- "cryostation-coalMax": number;
37
- "cryostation-ironMax": number;
38
- "cryostation-mineralsMax": number;
39
- "cryostation-oilMax": number;
40
- "cryostation-titaniumMax": number;
41
- "cryostation-unobtainiumMax": number;
42
- "cryostation-uraniumMax": number;
43
- "cryostation-woodMax": number;
44
- "entangler-gflopsConsumption": number;
45
- "hrHarvester-energyProduction": number;
46
- "hydrofracturer-oilPerTickAutoprodSpace": number;
47
- "hydroponics-catnipRatio": number;
48
- "moonOutpost-unobtainiumPerTickSpace": number;
49
- "planetCracker-uraniumPerTickSpace": number;
50
- "researchVessel-starchartPerTickBaseSpace": number;
51
- "sattelite-observatoryRatio": number;
52
- "sattelite-starchartPerTickBaseSpace": number;
53
- "spaceBeacon-starchartPerTickBaseSpace": number;
54
- "spaceElevator-prodTransferBonus": number;
55
- "spaceStation-scienceRatio": number;
56
- "sunlifter-energyProduction": number;
57
- };
58
- export type FestivalEffects = {
59
- catnip: number;
60
- coal: number;
61
- culture: number;
62
- faith: number;
63
- gold: number;
64
- iron: number;
65
- manpower: number;
66
- minerals: number;
67
- oil: number;
68
- science: number;
69
- starchart: number;
70
- titanium: number;
71
- unicorns: number;
72
- unobtainium: number;
73
- uranium: number;
74
- wood: number;
75
- };
76
- export type CycleMeta = {
77
- name: Cycle;
78
- effects: Partial<CycleEffects>;
79
- festivalEffects: Partial<FestivalEffects>;
80
- glyph: string;
81
- uglyph: string;
82
- title: string;
92
+ export type UndoChange = {
93
+ _static: {
94
+ DEFAULT_TTL: number;
95
+ };
96
+ ttl: number;
97
+ events: null;
98
+ new (): UndoChange;
99
+ addEvent: (managerId: unknown, data: unknown) => void;
83
100
  };
84
- export type Game = {
85
- bld: {
86
- buildingGroups: Array<{
87
- title: string;
88
- buildings: Array<Building>;
89
- }>;
90
- cathPollution: number;
91
- /** @deprecated Use `getBuildingExt()` instead. */
92
- get: (build: Building) => BuildingMeta;
93
- getBuildingExt: (building: Building) => BuildingExt;
94
- getPollutionLevel(): number;
95
- meta: [{
96
- meta: Array<BuildingMeta>;
97
- }];
101
+ export type EffectsManager = {
102
+ game: GamePage;
103
+ new (game: GamePage): EffectsManager;
104
+ effectMeta: (effectName: unknown) => unknown;
105
+ statics: {
106
+ effectMeta: unknown;
98
107
  };
99
- calendar: {
100
- cryptoPrice: number;
101
- cycle: CycleIndices;
102
- cycleEffectsFestival: (options: Partial<FestivalEffects>) => Partial<FestivalEffects>;
103
- cycles: Array<CycleMeta>;
104
- cyclesPerEra: number;
105
- cycleYear: number;
106
- day: number;
107
- daysPerSeason: number;
108
- eventChance: number;
109
- /**
110
- * How many festival days are remaining?
111
- */
112
- festivalDays: number;
113
- futureSeasonTemporalParadox: number;
114
- getCurSeason: () => {
115
- modifiers: {
116
- catnip: number;
117
- };
118
- name: Season;
119
- };
108
+ };
109
+ export type GamePage = {
110
+ id: string;
111
+ tabs: Array<Tab>;
112
+ resPool: ResourceManager;
113
+ calendar: Calendar;
114
+ village: VillageManager;
115
+ console: Console;
116
+ telemetry: Telemetry;
117
+ server: Server;
118
+ math: KGMath;
119
+ /**
120
+ * global cache
121
+ */
122
+ globalEffectsCached: Record<string, unknown>;
123
+ /**
124
+ * how much ticks are performed per second (5 ticks per second, 200 ms per tick)
125
+ */
126
+ ticksPerSecond: number;
127
+ /**
128
+ * I wonder why someone may need this
129
+ */
130
+ isPaused: boolean;
131
+ isCMBREnabled: boolean;
132
+ ticksBeforeSave: number;
133
+ /**
134
+ * in ticks
135
+ */
136
+ autosaveFrequency: number;
137
+ /**
138
+ * current building selected in the Building tab by a mouse cursor, should affect resource table rendering
139
+ * TODO: move me to UI
140
+ */
141
+ selectedBuilding: null;
142
+ setSelectedObject: (object: unknown) => void;
143
+ clearSelectedObject: () => void;
144
+ forceShowLimits: boolean;
145
+ useWorkers: boolean;
146
+ colorScheme: string;
147
+ unlockedSchemes: null;
148
+ timer: Timer;
149
+ /**
150
+ * main timer loop
151
+ */
152
+ _mainTimer: null;
153
+ /**
154
+ * counter for karmic reincarnation
155
+ */
156
+ karmaKittens: number;
157
+ karmaZebras: number;
158
+ deadKittens: number;
159
+ /**
160
+ * true if player has no kittens or housing buildings
161
+ */
162
+ ironWill: boolean;
163
+ saveVersion: number;
164
+ opts: {
165
+ disableCMBR: boolean;
120
166
  /**
121
- * Get the production modifier contribution of the weather for certain resource.
167
+ * Should `confirm()` calls be skipped in the game?
122
168
  */
123
- getWeatherMod: (res: {
124
- name: Resource;
125
- }) => number;
126
- observeBtn: BuildButton | null;
127
- observeHandler: () => void;
128
- season: number;
129
- seasons: Array<{
130
- name: Season;
131
- }>;
132
- seasonsPerYear: number;
133
- ticksPerDay: number;
134
- year: number;
135
- yearsPerCycle: number;
136
- };
137
- challenges: {
138
- currentChallenge?: Challenge;
139
- challenges: Array<{
140
- pending: boolean;
141
- }>;
142
- getChallenge: (challenge: Challenge) => {
143
- active: boolean;
144
- calculateEffects: (model: unknown, game: Game) => void;
145
- researched: number;
146
- };
147
- isActive: (challenge: Challenge) => boolean;
148
- };
149
- compressLZData: (data: string) => string;
150
- console: {
151
- filters: Record<string, {
152
- enabled: boolean;
153
- title: string;
154
- unlocked: boolean;
155
- }>;
156
- maxMessages: number;
169
+ noConfirm: boolean;
170
+ usePerSecondValues: boolean;
171
+ notation: "si";
172
+ forceHighPrecision: boolean;
173
+ usePercentageResourceValues: boolean;
174
+ showNonApplicableButtons: boolean;
175
+ usePercentageConsumptionValues: boolean;
176
+ highlightUnavailable: boolean;
177
+ hideSell: boolean;
178
+ hideDowngrade: boolean;
179
+ hideBGImage: boolean;
180
+ tooltipsInRightColumn: boolean;
181
+ IWSmelter: boolean;
182
+ enableRedshift: boolean;
183
+ enableRedshiftGflops: boolean;
184
+ batchSize: number;
185
+ useLegacyTwoInRowLayout: boolean;
186
+ forceLZ: boolean;
187
+ compressSaveFile: boolean;
188
+ ksEnabled: boolean;
157
189
  };
158
- craft: (name: string, amount: number) => void;
159
- decompressLZData: (lzData: string) => string;
190
+ /**
191
+ * timeout till resetting gather counter, see below
192
+ */
193
+ gatherTimeoutHandler: null;
194
+ /**
195
+ * how many clicks in a row was performed on a gather button
196
+ */
197
+ gatherClicks: number;
198
+ /**
199
+ * flag triggering Super Unethical Climax achievement
200
+ */
201
+ cheatMode: boolean;
202
+ /**
203
+ * flag triggering System Shock achievement
204
+ */
205
+ systemShockMode: boolean;
206
+ /**
207
+ * Flag for achievements
208
+ */
209
+ startedWithoutChronospheres: boolean;
210
+ /**
211
+ * how many ticks passed since the start of the game
212
+ */
213
+ ticks: number;
214
+ /**
215
+ * total time spent on update cycle in milliseconds, useful for debug/fps counter. 1 ticks per second have more calculations
216
+ */
217
+ totalUpdateTime: [number, number, number, number, number];
218
+ totalUpdateTimeTicks: number;
219
+ totalUpdateTimeCurrent: number;
220
+ /**
221
+ * fps breakdows of a render cycle
222
+ */
223
+ fps: null;
224
+ /**
225
+ * time of last pause
226
+ */
227
+ pauseTimestamp: number;
228
+ /**
229
+ * Stores the most recent date message to prevent header spam
230
+ */
231
+ lastDateMessage: null;
232
+ effectsMgr: EffectsManager;
233
+ managers: [
234
+ WorkshopManager,
235
+ DiplomacyManager,
236
+ BuildingsManager,
237
+ ScienceManager,
238
+ Achievements,
239
+ ReligionManager,
240
+ SpaceManager,
241
+ TimeManager,
242
+ PrestigeManager,
243
+ ChallengesManager,
244
+ StatsManager,
245
+ VoidManager,
246
+ {
247
+ load: (saveData: Record<string, unknown>) => void;
248
+ save: (saveData: Record<string, unknown>) => void;
249
+ resetState: () => void;
250
+ }
251
+ ];
252
+ workshop: WorkshopManager;
253
+ diplomacy: DiplomacyManager;
254
+ bld: BuildingsManager;
255
+ science: ScienceManager;
256
+ achievements: Achievements;
257
+ religion: ReligionManager;
258
+ space: SpaceManager;
259
+ time: TimeManager;
260
+ prestige: PrestigeManager;
261
+ challenges: ChallengesManager;
262
+ stats: StatsManager;
263
+ void: VoidManager;
264
+ bldTab: BuildingsModern;
265
+ villageTab: Village;
266
+ libraryTab: Library;
267
+ workshopTab: Workshop;
268
+ diplomacyTab: Diplomacy;
269
+ religionTab: ReligionTab;
270
+ spaceTab: SpaceTab;
271
+ timeTab: TimeTab;
272
+ challengesTab: ChallengesTab;
273
+ achievementTab: AchTab;
274
+ statsTab: StatsTab;
275
+ queueTab: QueueTab;
276
+ undoChange: UndoChange | null;
277
+ /**
278
+ * ui communication layer
279
+ * Is actually potentially `null`, if the game was never fully initialized.
280
+ * We don't include `null` in the type to avoid having to check it over and
281
+ * over again during runtime.
282
+ */
283
+ ui: DesktopUI;
284
+ dropBoxClient: null;
285
+ /**
286
+ * Whether the game is in developer mode or no
287
+ */
288
+ isLocalhost: boolean;
160
289
  devMode: boolean;
161
- diplomacy: {
162
- buyBcoin: () => void;
163
- /**
164
- * @deprecated Use `buyBcoin` instead.
165
- */
166
- buyEcoin: () => void;
167
- calculateStandingFromPolicies: (race: Race, host: Game) => number;
168
- feedElders: () => void;
169
- get: (race: Race) => RaceInfo;
170
- getMarkerCap: () => number;
171
- calculateTradeBonusFromPolicies: (race: Race, host: Game) => number;
172
- getTradeRatio: () => number;
173
- races: Array<RaceInfo>;
174
- sellBcoin: () => void;
175
- /**
176
- * @deprecated Use `sellBcoin` instead.
177
- */
178
- sellEcoin: () => void;
179
- tradeMultiple: (race: RaceInfo, amount: number) => void;
180
- unlockRandomRace: () => {
181
- title: string;
182
- };
183
- };
184
- diplomacyTab: TradeTab;
185
- getCMBRBonus: () => number;
186
- getDisplayValueExt: (value: number, prefix?: boolean, usePerTickHack?: boolean, precision?: number, postifx?: string) => string;
187
- getEffect: (effect: `${AllBuildings}CostReduction` | `${Resource}CostReduction` | `${AllBuildings}PriceRatio` | "catnipDemandWorkerRatioGlobal" | "catnipJobRatio" | "catnipPerTickBase" | "coldHarshness" | "corruptionBoostRatio" | "dataCenterAIRatio" | "heatMax" | "heatPerTick" | "hunterRatio" | "mapPriceReduction" | "oilReductionRatio" | "priceRatio" | "riftChance" | "shatterCostIncreaseChallenge" | "shatterVoidCost" | "solarRevolutionLimit" | "standingRatio" | "temporalFluxProduction" | "temporalParadoxDay" | "tradeCatpowerDiscount" | "tradeGoldDiscount" | "unicornsGlobalRatio" | "unicornsPerTickBase" | "unicornsRatioReligion" | "uplinkDCRatio") => number;
290
+ mobileSaveOnPause: boolean;
291
+ winterCatnipPerTick: number;
292
+ featureFlags: Record<"MAUSOLEUM_PACTS" | "QUEUE" | "QUEUE_REDSHIFT" | "SPACE_EXPL" | "UNICORN_TEARS_CHALLENGE" | "VILLAGE_MAP", UnsafeFeatureSelection>;
293
+ /**
294
+ * Should never be changed, override for KGM
295
+ */
296
+ isMobile: () => false;
297
+ new (containerId: string): GamePage;
298
+ getFeatureFlag: (flagId: unknown) => boolean;
299
+ updateWinterCatnip: () => void;
300
+ setDropboxClient: (dropBoxClient: unknown) => void;
301
+ heartbeat: () => void;
302
+ getEffectMeta: (effectName: unknown) => unknown;
303
+ getEffect: (effectName: unknown) => number;
304
+ updateCaches: () => void;
188
305
  /**
189
306
  * Calculate limited diminishing returns.
190
307
  */
191
308
  getLimitedDR: (effect: number, limit: number) => number;
309
+ /**
310
+ * Display a message in the console. Returns a <span> node of a text container
311
+ */
312
+ msg: (message: string, type?: unknown, tag?: unknown, noBullet?: boolean) => {
313
+ span: HTMLElement;
314
+ };
315
+ clearLog: () => void;
316
+ saveUI: () => void;
317
+ resetState: () => void;
318
+ _publish: (topic: string, arg: unknown) => void;
319
+ reload: () => void;
320
+ /**
321
+ * Saves the game and returns the save game.
322
+ */
323
+ save(): KGSaveData;
324
+ _prepareSaveData: <TSaveData>(saveData: TSaveData) => TSaveData;
325
+ _saveDataToString: (saveData: unknown) => string;
326
+ _wipe: () => void;
327
+ wipe: () => void;
328
+ closeOptions: () => void;
329
+ toggleScheme: (themId: unknown) => void;
330
+ togglePause: () => void;
331
+ updateOptionsUI: () => void;
332
+ /**
333
+ * Returns a save data JSON from a base64 or utf16 compressed lz blob
334
+ * Use this instead of LZString.decompressX
335
+ */
336
+ decompressLZData: (lzData: string) => string;
337
+ compressLZData: (json: string, useUTF16?: boolean) => string;
338
+ _parseLSSaveData: () => unknown;
339
+ load: () => boolean | undefined;
340
+ saveExport: () => void;
341
+ saveImport: () => void;
342
+ saveToFile: (withFullName: boolean) => void;
343
+ saveExportDropbox: () => void;
344
+ getDropboxAuthUrl: () => string;
345
+ exportToDropbox: (lzdata: string, callback: AnyFunction) => void;
346
+ saveImportDropbox: () => void;
347
+ importFromDropbox: (callback: AnyFunction) => void;
348
+ saveImportDropboxFileRead: (callback: AnyFunction) => void;
349
+ saveImportDropboxText: (lzdata: string, callback: AnyFunction) => void;
350
+ _loadSaveJson: (lzdata: string, callback: AnyFunction) => void;
351
+ migrateSave: <TSave>(save: TSave) => TSave;
352
+ setUI: (ui: DesktopUI) => void;
353
+ render: () => void;
354
+ calcResourcePerTick: (redName: Resource, season: unknown) => number;
355
+ addGlobalModToStack: <TArray extends Array<unknown>>(array: TArray, resName: Resource) => TArray;
356
+ getResourcePerTickStack: (resName: Resource, calcAutomatedEffect: unknown, season: unknown) => Array<{
357
+ name: string;
358
+ type: string;
359
+ value: number;
360
+ }> | undefined;
361
+ getResourcePerDayStack: (resName: Resource) => Array<{
362
+ name: string;
363
+ type: string;
364
+ value: number;
365
+ }> | undefined;
366
+ getResourceOnYearStack: (resName: Resource) => Array<{
367
+ name: string;
368
+ type: string;
369
+ value: number;
370
+ }> | undefined;
371
+ getCMBRBonus: () => number;
372
+ getCraftRatio: (tag: unknown) => number;
192
373
  /**
193
374
  * The resource craft ratio indicates how many items you receive
194
375
  * as the result of a single craft. This is subject to a variety
@@ -197,8 +378,20 @@ export type Game = {
197
378
  * @param name The resource to check.
198
379
  */
199
380
  getResCraftRatio: (name: ResourceCraftable) => number;
200
- getResourcePerDay: (resName: Resource) => number;
201
- getResourceOnYearProduction: (resName: Resource) => number;
381
+ /**
382
+ * Update all tab managers, resources and UI controls
383
+ */
384
+ update: () => void;
385
+ /**
386
+ * How many ticks pass per second.
387
+ * Subject to time acceleration.
388
+ */
389
+ getTicksPerSecondUI: () => number;
390
+ timeAccelerationRatio: () => number;
391
+ updateModel: () => void;
392
+ huntAll: (event: Event) => void;
393
+ praise: (event: Event) => void;
394
+ updateResources: () => void;
202
395
  /**
203
396
  * Determine how much of the given resource is produced per tick.
204
397
  *
@@ -206,6 +399,8 @@ export type Game = {
206
399
  * @param withConversion Should resource convertions be taken into account?
207
400
  */
208
401
  getResourcePerTick: (resName: Resource, withConversion: boolean) => number;
402
+ getResourcePerDay: (resName: Resource) => number;
403
+ getResourceOnYearProduction: (resName: Resource) => number;
209
404
  /**
210
405
  * Determine how much of the resource, per tick, is subject to be converted
211
406
  * into another resource. For example, smelters convert wood and minerals.
@@ -213,298 +408,99 @@ export type Game = {
213
408
  * @param resName The resource to check.
214
409
  */
215
410
  getResourcePerTickConvertion: (resName: Resource) => number;
411
+ craft: (name: Resource, amount: number) => void;
412
+ craftAll: (name: Resource) => void;
413
+ getRequiredResources: (bld: unknown) => unknown;
414
+ attachResourceTooltip: (container: HTMLElement, resRef: unknown) => void;
415
+ getDetailedResMap: (res: unknown) => string;
416
+ processResourcePerTickStack: (resStack: unknown, res: unknown, depth: number, hasFixed: boolean) => string;
417
+ getStackElemString: (stackElem: unknown, res: unknown) => string;
216
418
  /**
217
- * How many ticks pass per second.
218
- * Subject to time acceleration.
419
+ * Outputs a formatted representation of time. If the input is negative or NaN, treats it as zero instead.
420
+ * @param secondsRaw Either a number or a string representing a number.
421
+ * @return A string. For the sake of consistency, all whitespace is trimmed from beginning & end.
219
422
  */
220
- getTicksPerSecondUI: () => number;
423
+ toDisplaySeconds: (secondsRaw: number) => string;
221
424
  /**
222
- * Calculate unlimited diminishing returns.
425
+ * The same as toDisplaySeconds, but converts ingame days into xYears xDays
426
+ * Just for aestetical pleasness
223
427
  */
224
- getUnlimitedDR: (value: number, stripe: number) => number;
428
+ toDisplayDays: (daysRaw: number) => string;
429
+ toDisplayPercentage: (percentage: number, precision: number, precisionFixed: boolean) => string;
430
+ postfixes: Array<{
431
+ limit: number;
432
+ divisor: number;
433
+ postfix: [string, string];
434
+ }>;
225
435
  /**
226
- * Are we in iron will mode?
436
+ * Determines the display name & display value (formatting it as per second, or as a percentage, etc.) of a given effect.
437
+ * @param effectName The internal name of the effect.
438
+ * @param effectValue The value of the effect.
439
+ * @param showIfZero Boolean. Determines whether we still show an effect with zero value, or if that effect remains hidden.
440
+ * I added it just in case someone wants to use it in the future.
441
+ * If the effect would be hidden for any other reason, then this flag doesn't do anything.
442
+ * @return null if the effect shouldn't be displayed (because it's hidden or because it's zero).
443
+ * Otherwise, returns a table with the following keys:
444
+ * displayEffectName = the localized title;
445
+ * displayEffectValue = the value of the effect, formatted & localized properly
227
446
  */
228
- ironWill: boolean;
229
- managers: Array<{
230
- load: (saveData: Record<string, unknown>) => void;
231
- save: (saveData: Record<string, unknown>) => void;
232
- }>;
233
- msg: (...args: Array<number | string>) => {
234
- span: HTMLElement;
235
- };
236
- opts: {
237
- disableCMBR: boolean;
238
- /**
239
- * Should `confirm()` calls be skipped in the game?
240
- */
241
- noConfirm: boolean;
242
- usePerSecondValues: boolean;
243
- };
244
- prestige: {
245
- /**
246
- * The production modifier from burned paragon only.
247
- */
248
- getBurnedParagonRatio: () => number;
249
- /**
250
- * The production modifier produced by paragon and burned paragon.
251
- */
252
- getParagonProductionRatio: () => number;
253
- getPerk: (name: "carnivals" | "numeromancy" | "unicornmancy") => {
254
- researched: boolean;
255
- };
256
- meta: Array<{
257
- meta: Array<{
258
- researched: boolean;
259
- }>;
260
- }>;
261
- };
262
- religion: {
263
- faith: number;
264
- faithRatio: number;
265
- /**
266
- * The modifier applied to faith generation.
267
- */
268
- getApocryphaBonus: () => number;
269
- /**
270
- * @deprecated No longer exists. Use `getApocryphaBonus()`
271
- */
272
- getFaithBonus: () => number;
273
- /**
274
- * Get religion upgrades.
275
- */
276
- getRU: (name: ReligionUpgrade) => ReligionUpgradeInfo | undefined;
277
- /**
278
- * The modifier produced from collected faith.
279
- * Subject to challenges.
280
- */
281
- getSolarRevolutionRatio: () => number;
282
- /**
283
- * Get transcendence upgrades.
284
- */
285
- getTU: (name: TranscendenceUpgrade) => TranscendenceUpgradeInfo | undefined;
286
- /**
287
- * Get ziggurath upgrades.
288
- */
289
- getZU: (name: ZiggurathUpgrade) => ZiggurathUpgradeInfo | undefined;
290
- meta: Array<{
291
- meta: Array<ReligionUpgradeInfo | ZiggurathUpgradeInfo | TranscendenceUpgradeInfo>;
292
- provider: {
293
- getEffect: (bld: unknown, effect: unknown) => unknown;
294
- };
295
- }>;
296
- pactsManager: {
297
- necrocornDeficit: number;
298
- };
299
- praise: () => void;
300
- religionUpgrades: Array<ReligionUpgradeInfo>;
301
- tcratio: number;
302
- transcendenceTier: number;
303
- transcendenceUpgrades: Array<TranscendenceUpgradeInfo>;
304
- zigguratUpgrades: Array<ZiggurathUpgradeInfo>;
305
- /**
306
- * Determine the price (worship) to reach the given transcendence tier.
307
- */
308
- _getTranscendTotalPrice: (tier: number) => number;
309
- /**
310
- * Reset faith and increase praise bonus according to transcendence tier.
311
- */
312
- _resetFaithInternal: (bonusRatio: number) => void;
313
- };
314
- religionTab: ReligionTab;
315
- resetAutomatic: () => void;
316
- resPool: {
317
- get: (name: Resource) => ResourceInfo;
318
- energyCons: number;
319
- energyProd: number;
320
- resources: Array<ResourceInfo>;
321
- hasRes: (resources: Array<Price>) => boolean;
322
- };
447
+ getEffectDisplayParams: (effectName: unknown, effectValue: number, showIfZero: boolean) => {
448
+ displayEffectName: string;
449
+ displayEffectValue: string;
450
+ } | null;
323
451
  /**
324
- * Saves the game and returns the save game.
452
+ * Converts raw resource value (e.g. 12345.67890) to a formatted representation (i.e. 12.34K)
453
+ * If 'prefix' flag is true, positive value will be prefixed with '+', e.g. ("+12.34K")
325
454
  */
326
- save(): KGSaveData;
455
+ getDisplayValueExt: (value: number, prefix?: boolean, usePerTickHack?: boolean, precision?: number, postifx?: string) => string;
327
456
  /**
328
- * Import a savegame blob.
457
+ * Formats float value to x.xx or x if value is integer
329
458
  */
330
- saveImportDropboxText(lzdata: string, callback: (error?: Error) => unknown): void;
331
- science: {
332
- get: (name: Technology) => TechnologyInfo;
333
- getPolicy: (name: Policy) => PolicyInfo;
334
- policies: Array<PolicyInfo>;
335
- techs: Array<TechnologyInfo>;
336
- };
337
- server: Server;
338
- space: {
339
- getBuilding: (building: SpaceBuilding) => {
340
- calculateEffects: (self: unknown, game: Game) => void;
341
- /**
342
- * An internationalized description for this space building.
343
- */
344
- description: string;
345
- effects: Partial<BuildingEffects>;
346
- /**
347
- * An internationalized label for this space building.
348
- */
349
- label: string;
350
- name: SpaceBuilding;
351
- priceRatio: number;
352
- prices: Array<Price>;
353
- requiredTech: Array<"sattelites">;
354
- unlocked: boolean;
355
- unlocks: {
356
- policies: Array<"militarizeSpace" | "outerSpaceTreaty">;
357
- };
358
- unlockScheme: {
359
- name: "space";
360
- threshold: number;
361
- };
362
- upgrades: {
363
- buildings: Array<"observatory">;
364
- };
365
- val: number;
366
- };
367
- meta: Array<{
368
- meta: Array<{
369
- effects?: Partial<BuildingEffects>;
370
- label: string;
371
- name: string;
372
- on: number;
373
- prices: Array<Price>;
374
- unlocked: boolean;
375
- val: number;
376
- }>;
377
- }>;
378
- planets: Array<PlanetMeta>;
379
- programs: Array<{
380
- name: Mission;
381
- label: string;
382
- }>;
383
- };
384
- stats: {
385
- statGroups: Array<{
386
- title: string;
387
- group: Array<{
388
- name: "averageKittens" | "buildingsConstructed" | "eventsObserved" | "kittensDead" | "timePlayed" | "totalChallengesCompleted" | "totalClicks" | "totalCrafts" | "totalKittens" | "totalParagon" | "totalResets" | "totalTrades" | "totalYears" | "transcendenceTier" | "unicornsSacrificed";
389
- title: string;
390
- val: number;
391
- unlocked: boolean;
392
- defaultUnlocked: boolean;
393
- }>;
394
- }>;
395
- };
396
- tabs: [
397
- GameTab,
398
- VillageTab,
399
- GameTab,
400
- GameTab,
401
- TradeTab,
402
- ReligionTab,
403
- SpaceTab,
404
- TimeTab,
405
- GameTab,
406
- GameTab,
407
- GameTab
408
- ];
409
- telemetry: {
410
- buildRevision: number;
411
- guid: string;
412
- version: string;
413
- };
414
- ticksPerSecond: number;
415
- time: {
416
- chronoforgeUpgrades: Array<ChronoForgeUpgradeInfo>;
417
- /**
418
- * Get ChronoForge upgrade.
419
- */
420
- getCFU: (name: ChronoForgeUpgrade) => ChronoForgeUpgradeInfo;
421
- /**
422
- * Get Void Space upgrade.
423
- */
424
- getVSU: (name: VoidSpaceUpgrade) => VoidSpaceUpgradeInfo;
425
- heat: number;
426
- isAccelerated: boolean;
427
- meta: Array<{
428
- meta: Array<ChronoForgeUpgradeInfo | VoidSpaceUpgradeInfo>;
429
- provider: {
430
- getEffect: (item: unknown, effect: unknown) => unknown;
431
- };
432
- }>;
433
- voidspaceUpgrades: Array<{
434
- name: Exclude<VoidSpaceUpgrade, "usedCryochambers">;
435
- label: string;
436
- }>;
437
- };
438
- timeAccelerationRatio: () => number;
439
- timer: {
440
- ticksTotal: number;
441
- };
442
- timeTab: TimeTab;
443
- unlock: (value: unknown) => void;
444
- upgrade: (value: unknown) => void;
445
- ui: {
446
- activeTabId: TabId;
447
- confirm: (title: string, message: string, callbackOk: () => void, callbackCancel: () => void) => void;
448
- render: () => void;
449
- };
450
- village: {
451
- assignJob: (job: unknown, count: number) => void;
452
- getEffectLeader: <TDefaultObject>(role: "manager" | "scientist", defaultObject: TDefaultObject) => TDefaultObject;
453
- getFreeKittens: () => number;
454
- getJob: (name: string) => unknown;
455
- getJobLimit: (name: string) => number;
456
- /**
457
- * Get a list of resource consumptions per tick
458
- *
459
- * @see getResProduction
460
- */
461
- getResConsumption: () => {
462
- catnip: number;
463
- };
464
- /**
465
- * Get a list of resource modifiers per tick
466
- * This method returns positive villager production that can be multiplied by building bonuses
467
- */
468
- getResProduction: () => {
469
- catnip: number;
470
- };
471
- happiness: number;
472
- huntAll: () => void;
473
- jobs: Array<JobInfo>;
474
- leader: Kitten | null;
475
- makeLeader: (kitten: Kitten) => void;
476
- removeLeader: () => void;
477
- /**
478
- * @deprecated
479
- */
480
- map: {
481
- expeditionNode: {
482
- x: number;
483
- y: number;
484
- };
485
- explore: (x: number, y: number) => void;
486
- toLevel: (x: number, y: number) => number;
487
- getExplorationPrice: (x: number, y: number) => number;
488
- villageData: Record<string, unknown>;
489
- };
490
- promoteKittens(): void;
491
- sim: {
492
- goldToPromote: (rank: number, value0: number, value1: number) => Array<unknown>;
493
- kittens: Array<Kitten>;
494
- promote: (leader: unknown, rank: number) => number;
495
- };
496
- };
497
- villageTab: VillageTab;
498
- workshop: {
499
- crafts: Array<CraftableInfo>;
500
- get: (technology: "chronoforge" | "cryocomputing" | "goldOre" | "machineLearning" | "uplink") => {
501
- researched: boolean;
502
- };
503
- getCraft: (name: ResourceCraftable) => CraftableInfo | undefined;
504
- getCraftPrice: (craft: CraftableInfo) => Array<Price>;
505
- upgrades: Array<UpgradeInfo>;
459
+ getDisplayValue: (floatVal: number, plusPrefix: boolean, precision: number) => string;
460
+ fixFloatPointNumber: (number: number) => number;
461
+ addTab: (tab: Tab) => void;
462
+ isWebWorkerSupported: () => boolean;
463
+ timestamp: () => number;
464
+ start: () => void;
465
+ frame: () => void;
466
+ tick: () => void;
467
+ restartFPSCounters: () => void;
468
+ reset: () => void;
469
+ resetAutomatic: () => void;
470
+ discardParagon: () => void;
471
+ doDiscardParagon: () => void;
472
+ _getKarmaKittens: (kittens: number) => number;
473
+ _getBonusZebras: () => number;
474
+ getResetPrestige: () => {
475
+ karmaKittens: number;
476
+ paragonPoints: number;
506
477
  };
507
- workshopTab: WorkshopTab;
478
+ _resetInternal: () => void;
479
+ rand: (ratio: number) => number;
480
+ updateKarma: () => void;
481
+ /**
482
+ * Calculate unlimited diminishing returns.
483
+ */
484
+ getUnlimitedDR: (value: number, stripe: number) => number;
485
+ getInverseUnlimitedDR: (value: number, stripe: number) => number;
486
+ getTab: (tabName: TabId) => Tab;
487
+ calculateAllEffects: () => void;
488
+ getUnlockByName: (unlockId: unknown, type: unknown) => unknown;
489
+ unlock: (list: Partial<Unlocks>) => void;
490
+ upgrade: (list: Partial<Unlocks>) => void;
491
+ toggleFilters: () => void;
492
+ registerUndoChange: () => UndoChange;
493
+ undo: () => void;
494
+ checkEldermass: () => void;
495
+ redeemGift: () => void;
496
+ unlockAll: () => void;
497
+ isEldermass: () => boolean;
498
+ createRandomName: (lenConst: number, charPool?: string) => string;
499
+ createRandomVarietyAndColor: (ch1: null | number, ch2: null | number) => [string, number];
500
+ };
501
+ export type UnsafeFeatureSelection = {
502
+ beta: boolean;
503
+ main: boolean;
504
+ mobile: boolean;
508
505
  };
509
- export {};
510
506
  //# sourceMappingURL=game.d.ts.map