Skip to content

Commit 9a8db48

Browse files
feat(core): Backport improved typedefs from KE branch
1 parent 2bed751 commit 9a8db48

File tree

8 files changed

+261
-49
lines changed

8 files changed

+261
-49
lines changed

packages/kitten-scientists/source/ReligionManager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ export class ReligionManager implements Automation {
295295
let bestAmortization = Infinity;
296296
let bestBuilding: ZiggurathUpgrade | "unicornPasture" | null = null;
297297
const unicornsPerTickBase = mustExist(
298-
this._host.game.bld.getBuildingExt("unicornPasture").meta.effects["unicornsPerTickBase"],
298+
this._host.game.bld.getBuildingExt("unicornPasture").meta.effects?.["unicornsPerTickBase"],
299299
);
300300
const pastureProduction =
301301
unicornsPerTickBase *

packages/kitten-scientists/source/types/buildings.ts

Lines changed: 198 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,206 @@ export const StagedBuildings = [
5151
] as const;
5252
export type StagedBuilding = (typeof StagedBuildings)[number];
5353

54-
// Returned from game.bld.getBuildingExt()
54+
export type BuildingEffects = {
55+
// from game.bld
56+
academyMeteorBonus: number;
57+
aiLevel: number;
58+
alicornPerTickCon: number;
59+
bloodstoneRatio: number;
60+
cathPollutionPerTickCon: number;
61+
cathPollutionPerTickProd: number;
62+
catnipDemandRatio: number;
63+
catnipMax: number;
64+
catnipPerTickBase: number;
65+
catnipPerTickCon: number;
66+
catnipRatio: number;
67+
coalMax: number;
68+
coalPerTickAutoprod: number;
69+
coalPerTickBase: number;
70+
coalPerTickCon: number;
71+
coalRatioGlobal: number;
72+
craftRatio: number;
73+
cultureMax: number;
74+
cultureMaxRatio: number;
75+
culturePerTickBase: number;
76+
energyConsumption: number;
77+
energyProduction: number;
78+
faithMax: number;
79+
faithPerTickBase: number;
80+
festivalArrivalRatio: number;
81+
festivalRatio: number;
82+
fursDemandRatio: number;
83+
fursPerTickProd: number;
84+
gflopsPerTickBase: number;
85+
goldMax: number;
86+
goldPerTickAutoprod: number;
87+
goldPerTickCon: number;
88+
happiness: number;
89+
hunterRatio: number;
90+
ironMax: number;
91+
ironPerTickAutoprod: number;
92+
ironPerTickCon: number;
93+
ivoryDemandRatio: number;
94+
ivoryPerTickCon: number;
95+
ivoryPerTickProd: number;
96+
magnetoBoostRatio: number;
97+
magnetoRatio: number;
98+
manpowerMax: number;
99+
manpowerPerTickCon: number;
100+
manuscriptPerTickProd: number;
101+
maxKittens: number;
102+
mineralsMax: number;
103+
mineralsPerTickCon: number;
104+
mineralsPerTickProd: number;
105+
mineralsRatio: number;
106+
oilMax: number;
107+
oilPerTick: number;
108+
oilPerTickBase: number;
109+
oilPerTickCon: number;
110+
oilPerTickProd: number;
111+
productionRatio: number;
112+
refineRatio: number;
113+
resStasisRatio: number;
114+
scienceMax: number;
115+
scienceRatio: number;
116+
skillXP: number;
117+
spiceDemandRatio: number;
118+
spicePerTickCon: number;
119+
standingRatio: number;
120+
starAutoSuccessChance: number;
121+
starEventChance: number;
122+
steelPerTickProd: number;
123+
tMythrilCraftRatio: number;
124+
tMythrilPerTick: number;
125+
temporalFluxProduction: number;
126+
thoriumPerTick: number;
127+
titaniumMax: number;
128+
titaniumPerTickAutoprod: number;
129+
titaniumPerTickCon: number;
130+
tradeRatio: number;
131+
unhappinessRatio: number;
132+
unicornsPerTickBase: number;
133+
uraniumMax: number;
134+
uraniumPerTick: number;
135+
uraniumPerTickAutoprod: number;
136+
uraniumPerTickBase: number;
137+
woodMax: number;
138+
woodPerTickCon: number;
139+
woodRatio: number;
140+
zebraPreparations: number;
141+
142+
// from game.religion
143+
activeHG: number;
144+
alicornChance: number;
145+
alicornPerTick: number;
146+
blackLibraryBonus: number;
147+
blsCorruptionRatio: number;
148+
blsLimit: number;
149+
compendiaTTBoostRatio: number;
150+
corruptionBoostRatio: number;
151+
corruptionRatio: number;
152+
cultureMaxRatioBonus: number;
153+
deficitRecoveryRatio: number;
154+
energyProductionRatio: number;
155+
faithRatioReligion: number;
156+
globalResourceRatio: number;
157+
goldMaxRatio: number;
158+
ivoryMeteorChance: number;
159+
ivoryMeteorRatio: number;
160+
maxKittensRatio: number;
161+
necrocornPerDay: number;
162+
pactBlackLibraryBoost: number;
163+
pactDeficitRecoveryRatio: number;
164+
pactFaithRatio: number;
165+
pactGlobalProductionRatio: number;
166+
pactGlobalResourceRatio: number;
167+
pactSpaceCompendiumRatio: number;
168+
pactsAvailable: number;
169+
pyramidFaithRatio: number;
170+
pyramidGlobalProductionRatio: number;
171+
pyramidGlobalResourceRatio: number;
172+
pyramidRecoveryRatio: number;
173+
pyramidSpaceCompendiumRatio: number;
174+
relicRefineRatio: number;
175+
riftChance: number;
176+
rrRatio: number;
177+
simScalingRatio: number;
178+
solarRevolutionLimit: number;
179+
solarRevolutionRatio: number;
180+
tcRefineRatio: number;
181+
timeRatio: number;
182+
unicornsRatioReligion: number;
183+
184+
// from game.workshop.upgrades
185+
acceleratorRatio: number;
186+
barnRatio: number;
187+
beaconRelicsPerDay: number;
188+
biofuelRatio: number;
189+
broadcastTowerRatio: number;
190+
cadBlueprintCraftRatio: number;
191+
calcinerRatio: number;
192+
calcinerSteelCraftRatio: number;
193+
calcinerSteelRatio: number;
194+
calcinerSteelReactorBonus: number;
195+
catnipDemandWorkerRatioGlobal: number;
196+
catnipJobRatio: number;
197+
catnipMaxRatio: number;
198+
coalRatioGlobalReduction: number;
199+
coalSuperRatio: number;
200+
crackerRatio: number;
201+
dataCenterAIRatio: number;
202+
eludiumAutomationBonus: number;
203+
factoryRefineRatio: number;
204+
harborCoalRatio: number;
205+
harborRatio: number;
206+
hutPriceRatio: number;
207+
hydroPlantRatio: number;
208+
libraryRatio: number;
209+
lumberMillRatio: number;
210+
lunarOutpostRatio: number;
211+
manpowerJobRatio: number;
212+
oilWellRatio: number;
213+
queueCap: number;
214+
reactorEnergyRatio: number;
215+
reactorThoriumPerTick: number;
216+
routeSpeed: number;
217+
satnavRatio: number;
218+
shipLimit: number;
219+
skillMultiplier: number;
220+
smelterRatio: number;
221+
solarFarmRatio: number;
222+
solarFarmSeasonRatio: number;
223+
spaceScienceRatio: number;
224+
starchartGlobalRatio: number;
225+
t1CraftRatio: number;
226+
t2CraftRatio: number;
227+
t3CraftRatio: number;
228+
t4CraftRatio: number;
229+
t5CraftRatio: number;
230+
temporalFluxProductionChronosphere: number;
231+
temporalParadoxDayBonus: number;
232+
unicornsGlobalRatio: number;
233+
uplinkDCRatio: number;
234+
uplinkLabRatio: number;
235+
uraniumRatio: number;
236+
warehouseRatio: number;
237+
woodJobRatio: number;
238+
239+
// other tabs
240+
goldPriceRatio: number;
241+
happinessKittenProductionRatio: number;
242+
heatMax: number;
243+
heatPerTick: number;
244+
observatoryRatio: number;
245+
starchartPerTickBaseSpace: number;
246+
temporalFluxMax: number;
247+
unobtainiumPerTickSpace: number;
248+
uraniumPerTickCon: number;
249+
};
55250
export type BuildingMeta = {
56251
calculateEffects?: (model: unknown, game: Game) => void;
57252
description?: string;
58-
effects: { unicornsPerTickBase?: number };
253+
effects?: Partial<BuildingEffects>;
59254
flavor?: string;
60255
label?: string;
61256
name: Building;
@@ -68,7 +263,7 @@ export type BuildingMeta = {
68263
calculateEffects?: (model: unknown, game: Game) => void;
69264
calculateEnergyProduction?: (game: Game, season: unknown) => void;
70265
description: string;
71-
effects?: { catnipDemandRatio?: number };
266+
effects?: Partial<BuildingEffects>;
72267
flavor?: string;
73268
label: string;
74269
priceRatio: number;

packages/kitten-scientists/source/types/craft.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Resource, ResourceCraftable } from "./index.js";
1+
import { Price, Resource, ResourceCraftable } from "./index.js";
22

33
export type ResourceInfo = {
44
calculatePerDay?: boolean;
@@ -18,6 +18,10 @@ export type ResourceInfo = {
1818
export type CraftableInfo = {
1919
name: ResourceCraftable;
2020
label: string;
21+
description: string;
22+
prices: Array<Price>;
23+
ignoreBonuses?: boolean;
24+
progressHandicap: number;
2125
tier: number;
22-
unlocked: boolean;
26+
unlocked?: boolean;
2327
};

packages/kitten-scientists/source/types/game.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
AllBuildings,
66
BuildButton,
77
Building,
8+
BuildingEffects,
89
BuildingExt,
910
BuildingMeta,
1011
Challenge,
@@ -360,12 +361,7 @@ export type Game = {
360361
*/
361362
description: string;
362363

363-
effects: {
364-
energyConsumption?: number;
365-
energyProduction?: number;
366-
observatoryRatio?: number;
367-
starchartPerTickBaseSpace?: number;
368-
};
364+
effects: Partial<BuildingEffects>;
369365

370366
/**
371367
* An internationalized label for this space building.
@@ -387,7 +383,15 @@ export type Game = {
387383
val: number;
388384
};
389385
meta: Array<{
390-
meta: Array<{ label: string; name: string; unlocked: boolean; val: number; on: number }>;
386+
meta: Array<{
387+
effects?: Partial<BuildingEffects>;
388+
label: string;
389+
name: string;
390+
on: number;
391+
prices: Array<Price>;
392+
unlocked: boolean;
393+
val: number;
394+
}>;
391395
}>;
392396
planets: Array<{ label: string; buildings: Array<{ name: SpaceBuilding; label: string }> }>;
393397
programs: Array<{ name: Mission; label: string }>;

packages/kitten-scientists/source/types/religion.ts

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import {
22
BuildButton,
3+
BuildingEffects,
34
ButtonModernModel,
45
Game,
56
GameTab,
67
Price,
78
RefineTearsBtnController,
89
TransformBtnController,
10+
Unlocks,
911
} from "./index.js";
1012

1113
export type ReligionTab = GameTab & {
@@ -116,6 +118,8 @@ export type AbstractReligionUpgradeInfo = {
116118
* be refactored later.
117119
*/
118120
rHidden?: boolean;
121+
122+
unlocks?: Partial<Unlocks>;
119123
};
120124

121125
export type ReligionUpgradeInfo = AbstractReligionUpgradeInfo & {
@@ -125,9 +129,7 @@ export type ReligionUpgradeInfo = AbstractReligionUpgradeInfo & {
125129
*/
126130
description: string;
127131

128-
effects: {
129-
faithRatioReligion?: number;
130-
};
132+
effects: Partial<BuildingEffects>;
131133

132134
faith: number;
133135

@@ -146,17 +148,10 @@ export type ZiggurathUpgradeInfo = AbstractReligionUpgradeInfo & {
146148
*/
147149
description: string;
148150

149-
effects: {
150-
riftChance?: number;
151-
unicornsRatioReligion?: number;
152-
};
151+
effects: Partial<BuildingEffects>;
153152

154153
name: ZiggurathUpgrade;
155154
priceRatio: number;
156-
157-
unlocks: {
158-
zigguratUpgrades: Array<"ivoryTower">;
159-
};
160155
};
161156

162157
export type TranscendenceUpgradeInfo = AbstractReligionUpgradeInfo & {
@@ -167,16 +162,11 @@ export type TranscendenceUpgradeInfo = AbstractReligionUpgradeInfo & {
167162
*/
168163
description: string;
169164

170-
effects: {
171-
solarRevolutionLimit?: number;
172-
};
165+
effects: Partial<BuildingEffects>;
173166

174167
flavor: string;
175168

176169
name: TranscendenceUpgrade;
177170
priceRatio?: number;
178171
tier: number;
179-
unlocks: {
180-
zigguratUpgrades: Array<"ivoryTower">;
181-
};
182172
};

0 commit comments

Comments
 (0)