libram 0.5.9 → 0.6.0
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.
- package/dist/challengePaths/2015/CommunityService.d.ts +84 -0
- package/dist/challengePaths/2015/CommunityService.js +193 -0
- package/dist/challengePaths/index.d.ts +2 -0
- package/dist/challengePaths/index.js +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/propertyTypes.d.ts +1 -1
- package/dist/resources/2017/Pantogram.d.ts +82 -0
- package/dist/resources/2017/Pantogram.js +141 -0
- package/dist/session.d.ts +93 -0
- package/dist/session.js +184 -0
- package/package.json +1 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Requirement } from "../../maximize";
|
|
2
|
+
/**
|
|
3
|
+
* A log of the predicted turns, actual turns, and duration of each CS test performed.
|
|
4
|
+
*/
|
|
5
|
+
export declare const log: {
|
|
6
|
+
[index: string]: {
|
|
7
|
+
predictedTurns: number;
|
|
8
|
+
turnCost: number;
|
|
9
|
+
seconds: number;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
declare class Test {
|
|
13
|
+
private choice;
|
|
14
|
+
private property;
|
|
15
|
+
private predictor;
|
|
16
|
+
private maximizeRequirements;
|
|
17
|
+
/**
|
|
18
|
+
* Class to store properties of various CS tests.
|
|
19
|
+
* @param id The id the game HTML uses to identify the test; this is used primarily in runChoice.
|
|
20
|
+
* @param property The name of the test as a string, often used as part of the string property "csServicesPerformed".
|
|
21
|
+
* @param predictor A function that returns an estimate for the number of turns that the test will take given your character's current state.
|
|
22
|
+
* @param maximizeRequirements A Requirement object, if applicable, that aligns with the things needed to maximize for this particular test.
|
|
23
|
+
*/
|
|
24
|
+
constructor(id: number, property: string, predictor: () => number, maximizeRequirements?: Requirement | null);
|
|
25
|
+
/**
|
|
26
|
+
* @returns The id number of the test, used primarily in runChoice.
|
|
27
|
+
*/
|
|
28
|
+
get id(): number;
|
|
29
|
+
/**
|
|
30
|
+
* @returns The name of the test, used primarily as part of the string property "csServicesPerformed"
|
|
31
|
+
*/
|
|
32
|
+
get name(): string;
|
|
33
|
+
/**
|
|
34
|
+
* @returns The predicted number of turns this test will take given your character's current state.
|
|
35
|
+
*/
|
|
36
|
+
get prediction(): number;
|
|
37
|
+
/**
|
|
38
|
+
* @returns A Requirement object, if applicable, that aligns with the things needed to maximize for this particular test.
|
|
39
|
+
*/
|
|
40
|
+
get requirement(): Requirement | null;
|
|
41
|
+
/**
|
|
42
|
+
* Checks the "csServicesPerformed" property to see whether mafia currently believes this test is complete.
|
|
43
|
+
* @returns Whether mafia currently believes this test is complete.
|
|
44
|
+
*/
|
|
45
|
+
isDone(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Maximizes based on the Requirement associated with this particular test.
|
|
48
|
+
*/
|
|
49
|
+
maximize(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Attempts to turn in the test to the Council of Loathing.
|
|
52
|
+
* @returns Whether mafia believes the test is complete at the end of this function.
|
|
53
|
+
*/
|
|
54
|
+
do(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Wrapper function that prepares for a test and then completes it, adding time and turn details to the log.
|
|
57
|
+
* @param prepare A function that does all necessary preparations for this CS test, including choosing your outfit.
|
|
58
|
+
* @param beCertain Whether we should check council.php instead of mafia to determine whether the test is complete.
|
|
59
|
+
* @returns The output of the prepare function given, or null if the test is already complete.
|
|
60
|
+
*/
|
|
61
|
+
run<T>(prepare: () => T, beCertain?: boolean): T | null;
|
|
62
|
+
/**
|
|
63
|
+
* Checks council.php to verify that a test is complete; more reliable than isDone, but requires an additional pagehit.
|
|
64
|
+
* @returns Whether council.php suggests that the test is complete.
|
|
65
|
+
*/
|
|
66
|
+
verifyIsDone(): boolean;
|
|
67
|
+
}
|
|
68
|
+
export declare const HP: Test;
|
|
69
|
+
export declare const Muscle: Test;
|
|
70
|
+
export declare const Mysticality: Test;
|
|
71
|
+
export declare const Moxie: Test;
|
|
72
|
+
export declare const FamiliarWeight: Test;
|
|
73
|
+
export declare const WeaponDamage: Test;
|
|
74
|
+
export declare const SpellDamage: Test;
|
|
75
|
+
export declare const Noncombat: Test;
|
|
76
|
+
export declare const BoozeDrop: Test;
|
|
77
|
+
export declare const HotRes: Test;
|
|
78
|
+
export declare const CoilWire: Test;
|
|
79
|
+
/**
|
|
80
|
+
* Prints turncount and time details of the test in question.
|
|
81
|
+
* @param colour The colour (or color) you'd like the log to be printed in.
|
|
82
|
+
*/
|
|
83
|
+
export declare function printLog(colour?: string): void;
|
|
84
|
+
export {};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { equippedItem, familiarWeight, getPower, haveEquipped, myBasestat, myBuffedstat, myClass, myFamiliar, myLevel, myMaxhp, myThrall, myTurncount, numericModifier, print, runChoice, toSlot, visitUrl, weightAdjustment, } from "kolmafia";
|
|
2
|
+
import { get } from "../../property";
|
|
3
|
+
import { Requirement } from "../../maximize";
|
|
4
|
+
import { $class, $effect, $familiar, $item, $items, $slot, $stat, $thrall, } from "../../template-string";
|
|
5
|
+
import { get as getModifier } from "../../modifier";
|
|
6
|
+
import { have } from "../../lib";
|
|
7
|
+
import { SongBoom } from "../../resources";
|
|
8
|
+
import { sum } from "../../utils";
|
|
9
|
+
/**
|
|
10
|
+
* A log of the predicted turns, actual turns, and duration of each CS test performed.
|
|
11
|
+
*/
|
|
12
|
+
export const log = {};
|
|
13
|
+
class Test {
|
|
14
|
+
choice;
|
|
15
|
+
property;
|
|
16
|
+
predictor;
|
|
17
|
+
maximizeRequirements;
|
|
18
|
+
/**
|
|
19
|
+
* Class to store properties of various CS tests.
|
|
20
|
+
* @param id The id the game HTML uses to identify the test; this is used primarily in runChoice.
|
|
21
|
+
* @param property The name of the test as a string, often used as part of the string property "csServicesPerformed".
|
|
22
|
+
* @param predictor A function that returns an estimate for the number of turns that the test will take given your character's current state.
|
|
23
|
+
* @param maximizeRequirements A Requirement object, if applicable, that aligns with the things needed to maximize for this particular test.
|
|
24
|
+
*/
|
|
25
|
+
constructor(id, property, predictor, maximizeRequirements = null) {
|
|
26
|
+
this.choice = id;
|
|
27
|
+
this.property = property;
|
|
28
|
+
this.predictor = predictor;
|
|
29
|
+
this.maximizeRequirements = maximizeRequirements;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @returns The id number of the test, used primarily in runChoice.
|
|
33
|
+
*/
|
|
34
|
+
get id() {
|
|
35
|
+
return this.choice;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @returns The name of the test, used primarily as part of the string property "csServicesPerformed"
|
|
39
|
+
*/
|
|
40
|
+
get name() {
|
|
41
|
+
return this.property;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* @returns The predicted number of turns this test will take given your character's current state.
|
|
45
|
+
*/
|
|
46
|
+
get prediction() {
|
|
47
|
+
return this.predictor();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @returns A Requirement object, if applicable, that aligns with the things needed to maximize for this particular test.
|
|
51
|
+
*/
|
|
52
|
+
get requirement() {
|
|
53
|
+
return this.maximizeRequirements;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Checks the "csServicesPerformed" property to see whether mafia currently believes this test is complete.
|
|
57
|
+
* @returns Whether mafia currently believes this test is complete.
|
|
58
|
+
*/
|
|
59
|
+
isDone() {
|
|
60
|
+
return get("csServicesPerformed").includes(this.property);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Maximizes based on the Requirement associated with this particular test.
|
|
64
|
+
*/
|
|
65
|
+
maximize() {
|
|
66
|
+
if (this.maximizeRequirements)
|
|
67
|
+
this.maximizeRequirements.maximize();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Attempts to turn in the test to the Council of Loathing.
|
|
71
|
+
* @returns Whether mafia believes the test is complete at the end of this function.
|
|
72
|
+
*/
|
|
73
|
+
do() {
|
|
74
|
+
visitUrl("council.php");
|
|
75
|
+
runChoice(this.choice);
|
|
76
|
+
return this.isDone();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Wrapper function that prepares for a test and then completes it, adding time and turn details to the log.
|
|
80
|
+
* @param prepare A function that does all necessary preparations for this CS test, including choosing your outfit.
|
|
81
|
+
* @param beCertain Whether we should check council.php instead of mafia to determine whether the test is complete.
|
|
82
|
+
* @returns The output of the prepare function given, or null if the test is already complete.
|
|
83
|
+
*/
|
|
84
|
+
run(prepare, beCertain = false) {
|
|
85
|
+
const finishedFunction = beCertain ? this.verifyIsDone : this.isDone;
|
|
86
|
+
if (finishedFunction())
|
|
87
|
+
return null;
|
|
88
|
+
const startTime = Date.now();
|
|
89
|
+
const startTurns = myTurncount();
|
|
90
|
+
try {
|
|
91
|
+
return prepare();
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
const prediction = this.predictor();
|
|
95
|
+
this.do();
|
|
96
|
+
const loggedTest = {
|
|
97
|
+
predictedTurns: prediction,
|
|
98
|
+
turnCost: myTurncount() - startTurns,
|
|
99
|
+
seconds: (Date.now() - startTime) / 1000,
|
|
100
|
+
};
|
|
101
|
+
if (finishedFunction()) {
|
|
102
|
+
log[this.property] = loggedTest;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Checks council.php to verify that a test is complete; more reliable than isDone, but requires an additional pagehit.
|
|
108
|
+
* @returns Whether council.php suggests that the test is complete.
|
|
109
|
+
*/
|
|
110
|
+
verifyIsDone() {
|
|
111
|
+
return !visitUrl("council.php").includes(`<input type=hidden name=option value=${this.choice}>`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const thralls = new Map([
|
|
115
|
+
[$stat `muscle`, $thrall `Undead Elbow Macaroni`],
|
|
116
|
+
[$stat `moxie`, $thrall `Bind Penne Dreadful`],
|
|
117
|
+
]);
|
|
118
|
+
const statTestPredictor = (stat) => {
|
|
119
|
+
let baseStat = stat;
|
|
120
|
+
if (myClass() === $class `Pastamancer`) {
|
|
121
|
+
const thrall = thralls.get(stat);
|
|
122
|
+
if (thrall && myThrall() === thrall)
|
|
123
|
+
baseStat = $stat `mysticality`;
|
|
124
|
+
}
|
|
125
|
+
return () => 60 - Math.floor((1 / 30) * (myBuffedstat(stat) - myBasestat(baseStat)));
|
|
126
|
+
};
|
|
127
|
+
export const HP = new Test(1, "Donate Blood", () => 60 - Math.floor((myMaxhp() - myBuffedstat($stat `muscle`) - 3) / 30), new Requirement(["HP"], {}));
|
|
128
|
+
export const Muscle = new Test(2, "Feed The Children", statTestPredictor($stat `Muscle`), new Requirement(["Muscle"], {}));
|
|
129
|
+
export const Mysticality = new Test(3, "Build Playground Mazes", statTestPredictor($stat `Mysticality`), new Requirement(["Mysticality"], {}));
|
|
130
|
+
export const Moxie = new Test(4, "Feed Conspirators", statTestPredictor($stat `Moxie`), new Requirement(["Moxie"], {}));
|
|
131
|
+
export const FamiliarWeight = new Test(5, "Breed More Collies", () => 60 - Math.floor((familiarWeight(myFamiliar()) + weightAdjustment()) / 5), new Requirement(["Familiar Weight"], {}));
|
|
132
|
+
export const WeaponDamage = new Test(6, "Reduce Gazelle Population", () => {
|
|
133
|
+
const weaponPower = getPower(equippedItem($slot `weapon`));
|
|
134
|
+
const offhandPower = toSlot(equippedItem($slot `off-hand`)) === $slot `weapon`
|
|
135
|
+
? getPower(equippedItem($slot `off-hand`))
|
|
136
|
+
: 0;
|
|
137
|
+
const familiarPower = toSlot(equippedItem($slot `familiar`)) === $slot `weapon`
|
|
138
|
+
? getPower(equippedItem($slot `familiar`))
|
|
139
|
+
: 0;
|
|
140
|
+
const songDamage = SongBoom.song() === "These Fists Were Made for Punchin'" ? myLevel() : 0;
|
|
141
|
+
// mafia does not currently count swagger
|
|
142
|
+
const multiplier = have($effect `Bow-Legged Swagger`) ? 2 : 1;
|
|
143
|
+
return (60 -
|
|
144
|
+
Math.floor((multiplier *
|
|
145
|
+
(getModifier("Weapon Damage") -
|
|
146
|
+
0.15 * (weaponPower + offhandPower + familiarPower) -
|
|
147
|
+
songDamage)) /
|
|
148
|
+
50 +
|
|
149
|
+
0.001) -
|
|
150
|
+
Math.floor((multiplier * getModifier("Weapon Damage Percent")) / 50 + 0.001));
|
|
151
|
+
}, new Requirement(["Weapon Damage", "Weapon Damage Percent"], {}));
|
|
152
|
+
export const SpellDamage = new Test(7, "Make Sausage", () => {
|
|
153
|
+
const dragonfishDamage = myFamiliar() === $familiar `Magic Dragonfish`
|
|
154
|
+
? numericModifier($familiar `Magic Dragonfish`, "Spell Damage Percent", familiarWeight($familiar `Magic Dragonfish`) + weightAdjustment(), $item `none`)
|
|
155
|
+
: 0;
|
|
156
|
+
return (60 -
|
|
157
|
+
Math.floor(getModifier("Spell Damage") / 50 + 0.001) -
|
|
158
|
+
Math.floor((getModifier("Spell Damage Percent") - dragonfishDamage) / 50 + 0.001));
|
|
159
|
+
}, new Requirement(["Spell Damage", "Spell Damage Percent"], {}));
|
|
160
|
+
export const Noncombat = new Test(8, "Be a Living Statue", () => {
|
|
161
|
+
const noncombatRate = -1 * getModifier("Combat Rate");
|
|
162
|
+
const unsoftcappedRate = noncombatRate > 25 ? 25 + (noncombatRate - 25) * 5 : noncombatRate;
|
|
163
|
+
return 60 - 3 * Math.floor(unsoftcappedRate / 5);
|
|
164
|
+
}, new Requirement(["-combat"], {}));
|
|
165
|
+
export const BoozeDrop = new Test(9, "Make Margaritas", () => {
|
|
166
|
+
const familiarItemDrop = numericModifier(myFamiliar(), "Item Drop", familiarWeight(myFamiliar()) + weightAdjustment(), equippedItem($slot `familiar`));
|
|
167
|
+
//Champagne doubling does NOT count for CS, so we undouble
|
|
168
|
+
const multiplier = haveEquipped($item `broken champagne bottle`) &&
|
|
169
|
+
get("garbageChampagneCharge") > 0
|
|
170
|
+
? 0.5
|
|
171
|
+
: 1;
|
|
172
|
+
return (60 -
|
|
173
|
+
multiplier *
|
|
174
|
+
Math.floor((getModifier("Item Drop") - familiarItemDrop) / 30 + 0.001) -
|
|
175
|
+
Math.floor(getModifier("Booze Drop") / 15 + 0.001));
|
|
176
|
+
}, new Requirement(["Item Drop", "2 Booze Drop"], {
|
|
177
|
+
preventEquip: $items `broken champagne bottle`,
|
|
178
|
+
}));
|
|
179
|
+
export const HotRes = new Test(10, "Clean Steam Tunnels", () => 60 - getModifier("Hot Resistance"), new Requirement(["Hot Resistance"], {}));
|
|
180
|
+
export const CoilWire = new Test(11, "Coil Wire", () => 60, null);
|
|
181
|
+
/**
|
|
182
|
+
* Prints turncount and time details of the test in question.
|
|
183
|
+
* @param colour The colour (or color) you'd like the log to be printed in.
|
|
184
|
+
*/
|
|
185
|
+
export function printLog(colour = "blue") {
|
|
186
|
+
const logEntries = Object.entries(log);
|
|
187
|
+
for (const [testName, testEntry] of logEntries) {
|
|
188
|
+
const { predictedTurns, turnCost, seconds } = testEntry;
|
|
189
|
+
print(`We predicted the ${testName} test would take ${predictedTurns} turns, ${predictedTurns === turnCost ? "and" : "but"} it took ${turnCost} turns`, colour);
|
|
190
|
+
print(`${testName} took ${seconds} seconds`, colour);
|
|
191
|
+
}
|
|
192
|
+
print(`All together, you have spent ${sum(logEntries, ([, testEntry]) => testEntry.seconds)} seconds during this Community Service run`, colour);
|
|
193
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from "./actions";
|
|
2
2
|
export * from "./ascend";
|
|
3
3
|
export * from "./Clan";
|
|
4
|
+
export * from "./challengePaths";
|
|
4
5
|
export * from "./combat";
|
|
5
6
|
export * as Counter from "./counter";
|
|
6
7
|
export * from "./diet";
|
|
@@ -19,6 +20,7 @@ export * from "./utils";
|
|
|
19
20
|
export { get, PropertiesManager, set, setProperties, withProperties, withProperty, withChoices, withChoice, } from "./property";
|
|
20
21
|
export { get as getModifier } from "./modifier";
|
|
21
22
|
export { Modifiers } from "./modifier";
|
|
23
|
+
export { Session } from "./session";
|
|
22
24
|
export * as Dreadsylvania from "./dungeons/Dreadsylvania";
|
|
23
25
|
export * as Hobopolis from "./dungeons/Hobopolis";
|
|
24
26
|
export * as SlimeTube from "./dungeons/SlimeTube";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from "./actions";
|
|
2
2
|
export * from "./ascend";
|
|
3
3
|
export * from "./Clan";
|
|
4
|
+
export * from "./challengePaths";
|
|
4
5
|
export * from "./combat";
|
|
5
6
|
export * as Counter from "./counter";
|
|
6
7
|
export * from "./diet";
|
|
@@ -18,6 +19,7 @@ export * as property from "./property";
|
|
|
18
19
|
export * from "./utils";
|
|
19
20
|
export { get, PropertiesManager, set, setProperties, withProperties, withProperty, withChoices, withChoice, } from "./property";
|
|
20
21
|
export { get as getModifier } from "./modifier";
|
|
22
|
+
export { Session } from "./session";
|
|
21
23
|
export * as Dreadsylvania from "./dungeons/Dreadsylvania";
|
|
22
24
|
export * as Hobopolis from "./dungeons/Hobopolis";
|
|
23
25
|
export * as SlimeTube from "./dungeons/SlimeTube";
|
package/dist/propertyTypes.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare type BooleanProperty = "addChatCommandLine" | "addCreationQueue"
|
|
|
3
3
|
export declare type NumericProperty = "charsheetDropdown" | "chatStyle" | "coinMasterIndex" | "dailyDeedsVersion" | "defaultDropdown1" | "defaultDropdown2" | "defaultDropdownSplit" | "defaultLimit" | "fixedThreadPoolSize" | "itemManagerIndex" | "lastBuffRequestType" | "lastGlobalCounterDay" | "lastImageCacheClear" | "lastRssUpdate" | "previousUpdateRevision" | "relaySkillButtonCount" | "scriptButtonPosition" | "statusDropdown" | "svnThreadPoolSize" | "toolbarPosition" | "_g9Effect" | "addingScrolls" | "affirmationCookiesEaten" | "aminoAcidsUsed" | "antagonisticSnowmanKitCost" | "autoAbortThreshold" | "autoAntidote" | "autoBuyPriceLimit" | "availableCandyCredits" | "availableDimes" | "availableFunPoints" | "availableQuarters" | "availableStoreCredits" | "availableSwagger" | "averageSwagger" | "awolMedicine" | "awolPointsBeanslinger" | "awolPointsCowpuncher" | "awolPointsSnakeoiler" | "awolDeferredPointsBeanslinger" | "awolDeferredPointsCowpuncher" | "awolDeferredPointsSnakeoiler" | "awolVenom" | "bagOTricksCharges" | "ballpitBonus" | "bankedKarma" | "barrelGoal" | "bartenderTurnsUsed" | "basementMallPrices" | "basementSafetyMargin" | "batmanFundsAvailable" | "batmanBonusInitialFunds" | "batmanTimeLeft" | "bearSwagger" | "beeCounter" | "beGregariousCharges" | "beGregariousFightsLeft" | "birdformCold" | "birdformHot" | "birdformRoc" | "birdformSleaze" | "birdformSpooky" | "birdformStench" | "blackBartsBootyCost" | "blackPuddingsDefeated" | "blackForestProgress" | "blankOutUsed" | "bloodweiserDrunk" | "bondPoints" | "bondVillainsDefeated" | "boneAbacusVictories" | "booPeakProgress" | "borisPoints" | "breakableHandling" | "breakableHandling1964" | "breakableHandling9691" | "breakableHandling9692" | "breakableHandling9699" | "breathitinCharges" | "brodenBacteria" | "brodenSprinkles" | "buffBotMessageDisposal" | "buffBotPhilanthropyType" | "buffJimmyIngredients" | "burnoutsDefeated" | "burrowgrubSummonsRemaining" | "camelSpit" | "camerasUsed" | "campAwayDecoration" | "carboLoading" | "catBurglarBankHeists" | "cellarLayout" | "charitableDonations" | "chasmBridgeProgress" | "chefTurnsUsed" | "chessboardsCleared" | "chilledToTheBone" | "cinderellaMinutesToMidnight" | "cinderellaScore" | "cocktailSummons" | "commerceGhostCombats" | "controlPanelOmega" | "cornucopiasOpened" | "cozyCounter6332" | "cozyCounter6333" | "cozyCounter6334" | "crimbo16BeardChakraCleanliness" | "crimbo16BootsChakraCleanliness" | "crimbo16BungChakraCleanliness" | "crimbo16CrimboHatChakraCleanliness" | "crimbo16GutsChakraCleanliness" | "crimbo16HatChakraCleanliness" | "crimbo16JellyChakraCleanliness" | "crimbo16LiverChakraCleanliness" | "crimbo16NippleChakraCleanliness" | "crimbo16NoseChakraCleanliness" | "crimbo16ReindeerChakraCleanliness" | "crimbo16SackChakraCleanliness" | "crimboTreeDays" | "cubelingProgress" | "currentExtremity" | "currentHedgeMazeRoom" | "currentMojoFilters" | "currentNunneryMeat" | "cursedMagnifyingGlassCount" | "cyrptAlcoveEvilness" | "cyrptCrannyEvilness" | "cyrptNicheEvilness" | "cyrptNookEvilness" | "cyrptTotalEvilness" | "darkGyfftePoints" | "daycareEquipment" | "daycareInstructors" | "daycareLastScavenge" | "daycareToddlers" | "dbNemesisSkill1" | "dbNemesisSkill2" | "dbNemesisSkill3" | "desertExploration" | "desktopHeight" | "desktopWidth" | "dinseyFilthLevel" | "dinseyFunProgress" | "dinseyNastyBearsDefeated" | "dinseySocialJusticeIProgress" | "dinseySocialJusticeIIProgress" | "dinseyTouristsFed" | "dinseyToxicMultiplier" | "doctorBagQuestLights" | "doctorBagUpgrades" | "dreadScroll1" | "dreadScroll2" | "dreadScroll3" | "dreadScroll4" | "dreadScroll5" | "dreadScroll6" | "dreadScroll7" | "dreadScroll8" | "dripAdventuresSinceAscension" | "drippingHallAdventuresSinceAscension" | "drippingTreesAdventuresSinceAscension" | "drippyBatsUnlocked" | "drippyJuice" | "drippyOrbsClaimed" | "drunkenSwagger" | "edDefeatAbort" | "edPoints" | "eldritchTentaclesFought" | "electricKoolAidEaten" | "encountersUntilDMTChoice" | "encountersUntilNEPChoice" | "ensorceleeLevel" | "entauntaunedColdRes" | "essenceOfAnnoyanceCost" | "essenceOfBearCost" | "extraRolloverAdventures" | "falloutShelterLevel" | "lastBeardBuff" | "fingernailsClipped" | "fistSkillsKnown" | "flyeredML" | "fossilB" | "fossilD" | "fossilN" | "fossilP" | "fossilS" | "fossilW" | "fratboysDefeated" | "frenchGuardTurtlesFreed" | "garbageChampagneCharge" | "garbageFireProgress" | "garbageShirtCharge" | "garbageTreeCharge" | "garlandUpgrades" | "gingerDigCount" | "gingerLawChoice" | "gingerMuscleChoice" | "gingerTrainScheduleStudies" | "gladiatorBallMovesKnown" | "gladiatorBladeMovesKnown" | "gladiatorNetMovesKnown" | "glitchItemCost" | "glitchItemImplementationCount" | "glitchItemImplementationLevel" | "glitchSwagger" | "gloverPoints" | "gnasirProgress" | "goldenMrAccessories" | "gongPath" | "goreCollected" | "gourdItemCount" | "grimoire1Summons" | "grimoire2Summons" | "grimoire3Summons" | "grimstoneCharge" | "guardTurtlesFreed" | "guideToSafariCost" | "guyMadeOfBeesCount" | "guzzlrBronzeDeliveries" | "guzzlrDeliveryProgress" | "guzzlrGoldDeliveries" | "guzzlrPlatinumDeliveries" | "haciendaLayout" | "heavyRainsStartingThunder" | "heavyRainsStartingRain" | "heavyRainsStartingLightning" | "heroDonationBoris" | "heroDonationJarlsberg" | "heroDonationSneakyPete" | "hiddenApartmentProgress" | "hiddenBowlingAlleyProgress" | "hiddenHospitalProgress" | "hiddenOfficeProgress" | "hiddenTavernUnlock" | "highTopPumped" | "hippiesDefeated" | "holidayHalsBookCost" | "holidaySwagger" | "homebodylCharges" | "hpAutoRecovery" | "hpAutoRecoveryTarget" | "iceSwagger" | "item9084" | "jarlsbergPoints" | "jungCharge" | "junglePuns" | "knownAscensions" | "kolhsTotalSchoolSpirited" | "lastAnticheeseDay" | "lastArcadeAscension" | "lastBadMoonReset" | "lastBangPotionReset" | "lastBarrelSmashed" | "lastBattlefieldReset" | "lastBreakfast" | "lastCastleGroundUnlock" | "lastCastleTopUnlock" | "lastCellarReset" | "lastChanceThreshold" | "lastChasmReset" | "lastColosseumRoundWon" | "lastCouncilVisit" | "lastCounterDay" | "lastDesertUnlock" | "lastDispensaryOpen" | "lastDMTDuplication" | "lastDwarfFactoryReset" | "lastEVHelmetValue" | "lastEVHelmetReset" | "lastEasterEggBalloon" | "lastEmptiedStorage" | "lastFilthClearance" | "lastGoofballBuy" | "lastGuildStoreOpen" | "lastGuyMadeOfBeesReset" | "lastFratboyCall" | "lastFriarCeremonyAscension" | "lastHippyCall" | "lastIslandUnlock" | "lastKeyotronUse" | "lastKingLiberation" | "lastLightsOutTurn" | "lastMushroomPlot" | "lastMiningReset" | "lastNemesisReset" | "lastPaperStripReset" | "lastPirateEphemeraReset" | "lastPirateInsultReset" | "lastPlusSignUnlock" | "lastQuartetAscension" | "lastQuartetRequest" | "lastSecondFloorUnlock" | "lastSkateParkReset" | "lastStillBeatingSpleen" | "lastTavernAscension" | "lastTavernSquare" | "lastTelescopeReset" | "lastTempleAdventures" | "lastTempleButtonsUnlock" | "lastTempleUnlock" | "lastTr4pz0rQuest" | "lastVioletFogMap" | "lastVoteMonsterTurn" | "lastWartDinseyDefeated" | "lastWuTangDefeated" | "lastYearbookCameraAscension" | "lastZapperWand" | "lastZapperWandExplosionDay" | "lawOfAveragesCost" | "libramSummons" | "lightsOutAutomation" | "louvreDesiredGoal" | "louvreGoal" | "lttQuestDifficulty" | "lttQuestStageCount" | "manaBurnSummonThreshold" | "manaBurningThreshold" | "manaBurningTrigger" | "manorDrawerCount" | "manualOfNumberologyCost" | "mapToKokomoCost" | "masksUnlocked" | "maximizerMRUSize" | "maximizerCombinationLimit" | "maximizerEquipmentLevel" | "maximizerEquipmentScope" | "maximizerMaxPrice" | "maximizerPriceLevel" | "maxManaBurn" | "mayflyExperience" | "mayoLevel" | "meansuckerPrice" | "merkinVocabularyMastery" | "miniAdvClass" | "miniMartinisDrunk" | "moleTunnelLevel" | "mothershipProgress" | "mpAutoRecovery" | "mpAutoRecoveryTarget" | "munchiesPillsUsed" | "mushroomGardenCropLevel" | "nextParanormalActivity" | "nextQuantumFamiliarTurn" | "noobPoints" | "noobDeferredPoints" | "noodleSummons" | "nsContestants1" | "nsContestants2" | "nsContestants3" | "numericSwagger" | "nunsVisits" | "oilPeakProgress" | "optimalSwagger" | "optimisticCandleProgress" | "palindomeDudesDefeated" | "parasolUsed" | "pendingMapReflections" | "pirateSwagger" | "plantingDay" | "plumberBadgeCost" | "plumberCostumeCost" | "plumberPoints" | "poolSharkCount" | "poolSkill" | "primaryLabGooIntensity" | "prismaticSummons" | "procrastinatorLanguageFluency" | "promptAboutCrafting" | "puzzleChampBonus" | "pyramidPosition" | "rockinRobinProgress" | "ROMOfOptimalityCost" | "quantumPoints" | "reagentSummons" | "reanimatorArms" | "reanimatorLegs" | "reanimatorSkulls" | "reanimatorWeirdParts" | "reanimatorWings" | "recentLocations" | "redSnapperProgress" | "relocatePygmyJanitor" | "relocatePygmyLawyer" | "rumpelstiltskinTurnsUsed" | "rumpelstiltskinKidsRescued" | "safariSwagger" | "sausageGrinderUnits" | "schoolOfHardKnocksDiplomaCost" | "schoolSwagger" | "scrapbookCharges" | "scriptMRULength" | "seaodesFound" | "SeasoningSwagger" | "sexChanges" | "shenInitiationDay" | "shockingLickCharges" | "singleFamiliarRun" | "skillBurn3" | "skillBurn90" | "skillBurn153" | "skillBurn154" | "skillBurn155" | "skillBurn1019" | "skillBurn5017" | "skillBurn6014" | "skillBurn6015" | "skillBurn6016" | "skillBurn6020" | "skillBurn6021" | "skillBurn6022" | "skillBurn6023" | "skillBurn6024" | "skillBurn6026" | "skillBurn6028" | "skillBurn7323" | "skillBurn14008" | "skillBurn14028" | "skillBurn14038" | "skillBurn15011" | "skillBurn15028" | "skillBurn17005" | "skillBurn22034" | "skillBurn22035" | "skillBurn23301" | "skillBurn23302" | "skillBurn23303" | "skillBurn23304" | "skillBurn23305" | "skillBurn23306" | "skillLevel46" | "skillLevel47" | "skillLevel48" | "skillLevel117" | "skillLevel118" | "skillLevel121" | "skillLevel128" | "skillLevel134" | "skillLevel144" | "skillLevel180" | "skillLevel188" | "skillLevel7254" | "slimelingFullness" | "slimelingStacksDropped" | "slimelingStacksDue" | "smoresEaten" | "smutOrcNoncombatProgress" | "sneakyPetePoints" | "snojoMoxieWins" | "snojoMuscleWins" | "snojoMysticalityWins" | "sourceAgentsDefeated" | "sourceEnlightenment" | "sourceInterval" | "sourcePoints" | "sourceTerminalGram" | "sourceTerminalPram" | "sourceTerminalSpam" | "spaceBabyLanguageFluency" | "spacePirateLanguageFluency" | "spelunkyNextNoncombat" | "spelunkySacrifices" | "spelunkyWinCount" | "spookyPuttyCopiesMade" | "statbotUses" | "sugarCounter4178" | "sugarCounter4179" | "sugarCounter4180" | "sugarCounter4181" | "sugarCounter4182" | "sugarCounter4183" | "sugarCounter4191" | "summonAnnoyanceCost" | "tacoDanCocktailSauce" | "tacoDanFishMeat" | "tavernLayout" | "telescopeUpgrades" | "tempuraSummons" | "timeSpinnerMedals" | "timesRested" | "tomeSummons" | "totalCharitableDonations" | "turtleBlessingTurns" | "twinPeakProgress" | "unicornHornInflation" | "universalSeasoningCost" | "usable1HWeapons" | "usable1xAccs" | "usable2HWeapons" | "usable3HWeapons" | "usableAccessories" | "usableHats" | "usableOffhands" | "usableOther" | "usablePants" | "usableShirts" | "valueOfAdventure" | "valueOfInventory" | "valueOfStill" | "valueOfTome" | "vintnerWineLevel" | "violetFogGoal" | "walfordBucketProgress" | "warehouseProgress" | "welcomeBackAdv" | "writingDesksDefeated" | "xoSkeleltonXProgress" | "xoSkeleltonOProgress" | "yearbookCameraAscensions" | "yearbookCameraUpgrades" | "youRobotBody" | "youRobotBottom" | "youRobotLeft" | "youRobotPoints" | "youRobotRight" | "youRobotTop" | "zeppelinProtestors" | "zombiePoints" | "_absintheDrops" | "_abstractionDropsCrown" | "_aguaDrops" | "_xenomorphCharge" | "_ancestralRecallCasts" | "_antihangoverBonus" | "_astralDrops" | "_backUpUses" | "_badlyRomanticArrows" | "_badgerCharge" | "_balefulHowlUses" | "_banderRunaways" | "_bastilleGames" | "_beanCannonUses" | "_bearHugs" | "_beerLensDrops" | "_benettonsCasts" | "_birdsSoughtToday" | "_boomBoxFights" | "_boomBoxSongsLeft" | "_bootStomps" | "_boxingGloveArrows" | "_brickoEyeSummons" | "_brickoFights" | "_campAwayCloudBuffs" | "_campAwaySmileBuffs" | "_candySummons" | "_captainHagnkUsed" | "_carnieCandyDrops" | "_carrotNoseDrops" | "_catBurglarCharge" | "_catBurglarHeistsComplete" | "_cheerleaderSteam" | "_chestXRayUsed" | "_chipBags" | "_chocolateCigarsUsed" | "_chocolateSculpturesUsed" | "_chocolatesUsed" | "_chronolithActivations" | "_clanFortuneConsultUses" | "_clipartSummons" | "_coldMedicineConsults" | "_companionshipCasts" | "_crimbo21ColdResistance" | "_dailySpecialPrice" | "_daycareGymScavenges" | "_daycareRecruits" | "_deckCardsDrawn" | "_deluxeKlawSummons" | "_demandSandwich" | "_detectiveCasesCompleted" | "_disavowed" | "_dnaPotionsMade" | "_donhosCasts" | "_dreamJarDrops" | "_drunkPygmyBanishes" | "_edDefeats" | "_edLashCount" | "_elronsCasts" | "_enamorangs" | "_energyCollected" | "_expertCornerCutterUsed" | "_favorRareSummons" | "_feastUsed" | "_feelinTheRhythm" | "_feelPrideUsed" | "_feelExcitementUsed" | "_feelHatredUsed" | "_feelLonelyUsed" | "_feelNervousUsed" | "_feelEnvyUsed" | "_feelDisappointedUsed" | "_feelSuperiorUsed" | "_feelLostUsed" | "_feelNostalgicUsed" | "_feelPeacefulUsed" | "_fingertrapArrows" | "_fireExtinguisherCharge" | "_fragrantHerbsUsed" | "_freeBeachWalksUsed" | "_frButtonsPressed" | "_fudgeWaspFights" | "_gapBuffs" | "_garbageFireDropsCrown" | "_genieFightsUsed" | "_genieWishesUsed" | "_gibbererAdv" | "_gibbererCharge" | "_gingerbreadCityTurns" | "_glarkCableUses" | "_glitchMonsterFights" | "_gnomeAdv" | "_godLobsterFights" | "_goldenMoneyCharge" | "_gongDrops" | "_gothKidCharge" | "_gothKidFights" | "_grimBrotherCharge" | "_grimFairyTaleDrops" | "_grimFairyTaleDropsCrown" | "_grimoireConfiscatorSummons" | "_grimoireGeekySummons" | "_grimstoneMaskDrops" | "_grimstoneMaskDropsCrown" | "_grooseCharge" | "_grooseDrops" | "_guzzlrDeliveries" | "_guzzlrGoldDeliveries" | "_guzzlrPlatinumDeliveries" | "_hareAdv" | "_hareCharge" | "_highTopPumps" | "_hipsterAdv" | "_hoardedCandyDropsCrown" | "_hoboUnderlingSummons" | "_holoWristDrops" | "_holoWristProgress" | "_hotAshesDrops" | "_hotJellyUses" | "_hotTubSoaks" | "_humanMuskUses" | "_iceballUses" | "_inigosCasts" | "_jerksHealthMagazinesUsed" | "_jiggleCheese" | "_jiggleCream" | "_jiggleLife" | "_jiggleSteak" | "_jitbCharge" | "_jungDrops" | "_kgbClicksUsed" | "_kgbDispenserUses" | "_kgbTranquilizerDartUses" | "_klawSummons" | "_kloopCharge" | "_kloopDrops" | "_kolhsAdventures" | "_kolhsSavedByTheBell" | "_lastDailyDungeonRoom" | "_lastSausageMonsterTurn" | "_lastZomboEye" | "_latteRefillsUsed" | "_leafblowerML" | "_legionJackhammerCrafting" | "_llamaCharge" | "_longConUsed" | "_loveChocolatesUsed" | "_lynyrdSnareUses" | "_machineTunnelsAdv" | "_macrometeoriteUses" | "_mafiaThumbRingAdvs" | "_monstersMapped" | "_mayflowerDrops" | "_mayflySummons" | "_mediumSiphons" | "_meteoriteAdesUsed" | "_meteorShowerUses" | "_micrometeoriteUses" | "_miniMartiniDrops" | "_mushroomGardenFights" | "_nanorhinoCharge" | "_navelRunaways" | "_neverendingPartyFreeTurns" | "_newYouQuestSharpensDone" | "_newYouQuestSharpensToDo" | "_nextColdMedicineConsult" | "_nextQuantumAlignment" | "_nightmareFuelCharges" | "_noobSkillCount" | "_nuclearStockpileUsed" | "_oilExtracted" | "_olfactionsUsed" | "_optimisticCandleDropsCrown" | "_oreDropsCrown" | "_otoscopeUsed" | "_pantsgivingBanish" | "_pantsgivingCount" | "_pantsgivingCrumbs" | "_pantsgivingFullness" | "_pasteDrops" | "_peteJukeboxFixed" | "_peteJumpedShark" | "_petePeeledOut" | "_pieDrops" | "_piePartsCount" | "_pixieCharge" | "_pocketProfessorLectures" | "_poisonArrows" | "_pokeGrowFertilizerDrops" | "_poolGames" | "_powderedGoldDrops" | "_powderedMadnessUses" | "_powerfulGloveBatteryPowerUsed" | "_powerPillDrops" | "_powerPillUses" | "_precisionCasts" | "_radlibSummons" | "_raindohCopiesMade" | "_rapidPrototypingUsed" | "_raveStealCount" | "_reflexHammerUsed" | "_resolutionAdv" | "_resolutionRareSummons" | "_riftletAdv" | "_rogueProgramCharge" | "_romanticFightsLeft" | "_saberForceMonsterCount" | "_saberForceUses" | "_saberMod" | "_saltGrainsConsumed" | "_sandwormCharge" | "_saplingsPlanted" | "_sausageFights" | "_sausagesEaten" | "_sausagesMade" | "_sealFigurineUses" | "_sealScreeches" | "_sealsSummoned" | "_shatteringPunchUsed" | "_shortOrderCookCharge" | "_shrubCharge" | "_sloppyDinerBeachBucks" | "_smilesOfMrA" | "_smithsnessSummons" | "_snojoFreeFights" | "_snojoParts" | "_snokebombUsed" | "_snowconeSummons" | "_snowglobeDrops" | "_snowSuitCount" | "_sourceTerminalDigitizeMonsterCount" | "_sourceTerminalDigitizeUses" | "_sourceTerminalDuplicateUses" | "_sourceTerminalEnhanceUses" | "_sourceTerminalExtrudes" | "_sourceTerminalPortscanUses" | "_spaceFurDropsCrown" | "_spacegatePlanetIndex" | "_spacegateTurnsLeft" | "_spaceJellyfishDrops" | "_speakeasyDrinksDrunk" | "_spelunkerCharges" | "_spelunkingTalesDrops" | "_spookyJellyUses" | "_stackLumpsUses" | "_steamCardDrops" | "_stickerSummons" | "_stinkyCheeseCount" | "_stressBallSqueezes" | "_sugarSummons" | "_taffyRareSummons" | "_taffyYellowSummons" | "_thanksgettingFoodsEaten" | "_thingfinderCasts" | "_thinknerdPackageDrops" | "_thorsPliersCrafting" | "_timeHelmetAdv" | "_timeSpinnerMinutesUsed" | "_tokenDrops" | "_transponderDrops" | "_turkeyBlastersUsed" | "_turkeyBooze" | "_turkeyMuscle" | "_turkeyMyst" | "_turkeyMoxie" | "_unaccompaniedMinerUsed" | "_unconsciousCollectiveCharge" | "_universalSeasoningsUsed" | "_universeCalculated" | "_universeImploded" | "_usedReplicaBatoomerang" | "_vampyreCloakeFormUses" | "_villainLairProgress" | "_vitachocCapsulesUsed" | "_vmaskAdv" | "_voidFreeFights" | "_volcanoItem1" | "_volcanoItem2" | "_volcanoItem3" | "_volcanoItemCount1" | "_volcanoItemCount2" | "_volcanoItemCount3" | "_voteFreeFights" | "_VYKEACompanionLevel" | "_warbearAutoAnvilCrafting" | "_whiteRiceDrops" | "_witchessFights" | "_xoHugsUsed" | "_yellowPixelDropsCrown" | "_zapCount";
|
|
4
4
|
export declare type MonsterProperty = "beGregariousMonster" | "cameraMonster" | "chateauMonster" | "crappyCameraMonster" | "crudeMonster" | "enamorangMonster" | "envyfishMonster" | "lastCopyableMonster" | "iceSculptureMonster" | "longConMonster" | "makeFriendsMonster" | "merkinLockkeyMonster" | "nosyNoseMonster" | "olfactedMonster" | "photocopyMonster" | "rainDohMonster" | "romanticTarget" | "screencappedMonster" | "spookyPuttyMonster" | "stenchCursedMonster" | "superficiallyInterestedMonster" | "waxMonster" | "yearbookCameraTarget" | "_gallapagosMonster" | "_jiggleCreamedMonster" | "_latteMonster" | "_nanorhinoBanishedMonster" | "_newYouQuestMonster" | "_relativityMonster" | "_saberForceMonster" | "_sourceTerminalDigitizeMonster" | "_voteMonster";
|
|
5
5
|
export declare type LocationProperty = "currentJunkyardLocation" | "doctorBagQuestLocation" | "ghostLocation" | "guzzlrQuestLocation" | "nextSpookyravenElizabethRoom" | "nextSpookyravenStephenRoom" | "sourceOracleTarget";
|
|
6
|
-
export declare type StringProperty = "autoLogin" | "browserBookmarks" | "chatFontSize" | "combatHotkey0" | "combatHotkey1" | "combatHotkey2" | "combatHotkey3" | "combatHotkey4" | "combatHotkey5" | "combatHotkey6" | "combatHotkey7" | "combatHotkey8" | "combatHotkey9" | "commandLineNamespace" | "cookies.inventory" | "dailyDeedsOptions" | "defaultBorderColor" | "displayName" | "externalEditor" | "getBreakfast" | "headerStates" | "highlightList" | "http.proxyHost" | "http.proxyPassword" | "http.proxyPort" | "http.proxyUser" | "https.proxyHost" | "https.proxyPassword" | "https.proxyPort" | "https.proxyUser" | "initialDesktop" | "initialFrames" | "innerChatColor" | "innerTabColor" | "lastRelayUpdate" | "lastRssVersion" | "lastUserAgent" | "lastUsername" | "logPreferenceChangeFilter" | "loginScript" | "loginServerName" | "loginWindowLogo" | "logoutScript" | "outerChatColor" | "outerTabColor" | "previousNotifyList" | "previousUpdateVersion" | "saveState" | "saveStateActive" | "scriptList" | "swingLookAndFeel" | "useDecoratedTabs" | "userAgent" | "afterAdventureScript" | "autoOlfact" | "autoPutty" | "backupCameraMode" | "banishedMonsters" | "banishingShoutMonsters" | "barrelLayout" | "batmanStats" | "batmanZone" | "batmanUpgrades" | "battleAction" | "beachHeadsUnlocked" | "beforePVPScript" | "betweenBattleScript" | "boomBoxSong" | "breakfastAlways" | "breakfastHardcore" | "breakfastSoftcore" | "buffBotCasting" | "buyScript" | "cargoPocketsEmptied" | "cargoPocketScraps" | "chatbotScript" | "chatPlayerScript" | "choiceAdventureScript" | "chosenTrip" | "clanFortuneReply1" | "clanFortuneReply2" | "clanFortuneReply3" | "clanFortuneWord1" | "clanFortuneWord2" | "clanFortuneWord3" | "commerceGhostItem" | "counterScript" | "copperheadClubHazard" | "crimbotChassis" | "crimbotArm" | "crimbotPropulsion" | "crystalBallPredictions" | "csServicesPerformed" | "currentEasyBountyItem" | "currentHardBountyItem" | "currentHippyStore" | "currentJunkyardTool" | "currentMood" | "currentPVPSeason" | "currentPvpVictories" | "currentSpecialBountyItem" | "customCombatScript" | "cyrusAdjectives" | "defaultFlowerLossMessage" | "defaultFlowerWinMessage" | "demonName1" | "demonName2" | "demonName3" | "demonName4" | "demonName5" | "demonName6" | "demonName7" | "demonName8" | "demonName9" | "demonName10" | "demonName11" | "demonName12" | "demonName13" | "dinseyGatorStenchDamage" | "dinseyRollercoasterStats" | "doctorBagQuestItem" | "dolphinItem" | "edPiece" | "enamorangMonsterTurn" | "ensorcelee" | "EVEDirections" | "extraCosmeticModifiers" | "familiarScript" | "forbiddenStores" | "gameProBossSpecialPower" | "grimoireSkillsHardcore" | "grimoireSkillsSoftcore" | "grimstoneMaskPath" | "guzzlrQuestClient" | "guzzlrQuestBooze" | "guzzlrQuestTier" | "harvestGardenHardcore" | "harvestGardenSoftcore" | "hpAutoRecoveryItems" | "invalidBuffMessage" | "jickSwordModifier" | "kingLiberatedScript" | "lassoTraining" | "lastAdventure" | "lastBangPotion819" | "lastBangPotion820" | "lastBangPotion821" | "lastBangPotion822" | "lastBangPotion823" | "lastBangPotion824" | "lastBangPotion825" | "lastBangPotion826" | "lastBangPotion827" | "lastChanceBurn" | "lastChessboard" | "lastDwarfDiceRolls" | "lastDwarfDigitRunes" | "lastDwarfEquipmentRunes" | "lastDwarfFactoryItem118" | "lastDwarfFactoryItem119" | "lastDwarfFactoryItem120" | "lastDwarfFactoryItem360" | "lastDwarfFactoryItem361" | "lastDwarfFactoryItem362" | "lastDwarfFactoryItem363" | "lastDwarfFactoryItem364" | "lastDwarfFactoryItem365" | "lastDwarfFactoryItem910" | "lastDwarfFactoryItem3199" | "lastDwarfOfficeItem3208" | "lastDwarfOfficeItem3209" | "lastDwarfOfficeItem3210" | "lastDwarfOfficeItem3211" | "lastDwarfOfficeItem3212" | "lastDwarfOfficeItem3213" | "lastDwarfOfficeItem3214" | "lastDwarfOreRunes" | "lastDwarfHopper1" | "lastDwarfHopper2" | "lastDwarfHopper3" | "lastDwarfHopper4" | "lastEncounter" | "lastMacroError" | "lastMessageId" | "lastPaperStrip3144" | "lastPaperStrip4138" | "lastPaperStrip4139" | "lastPaperStrip4140" | "lastPaperStrip4141" | "lastPaperStrip4142" | "lastPaperStrip4143" | "lastPaperStrip4144" | "lastPirateEphemera" | "lastPorkoBoard" | "lastPorkoPayouts" | "lastPorkoExpected" | "lastSlimeVial3885" | "lastSlimeVial3886" | "lastSlimeVial3887" | "lastSlimeVial3888" | "lastSlimeVial3889" | "lastSlimeVial3890" | "lastSlimeVial3891" | "lastSlimeVial3892" | "lastSlimeVial3893" | "lastSlimeVial3894" | "lastSlimeVial3895" | "lastSlimeVial3896" | "latteModifier" | "latteUnlocks" | "libramSkillsHardcore" | "libramSkillsSoftcore" | "louvreOverride" | "lovePotion" | "lttQuestName" | "maximizerList" | "maximizerMRUList" | "mayoInMouth" | "mayoMinderSetting" | "merkinQuestPath" | "mineLayout1" | "mineLayout2" | "mineLayout3" | "mineLayout4" | "mineLayout5" | "mineLayout6" | "mpAutoRecoveryItems" | "muffinOnOrder" | "nextAdventure" | "nsChallenge2" | "nsChallenge3" | "nsChallenge4" | "nsChallenge5" | "nsTowerDoorKeysUsed" | "oceanAction" | "oceanDestination" | "pastaThrall1" | "pastaThrall2" | "pastaThrall3" | "pastaThrall4" | "pastaThrall5" | "pastaThrall6" | "pastaThrall7" | "pastaThrall8" | "peteMotorbikeTires" | "peteMotorbikeGasTank" | "peteMotorbikeHeadlight" | "peteMotorbikeCowling" | "peteMotorbikeMuffler" | "peteMotorbikeSeat" | "pieStuffing" | "plantingDate" | "plantingLength" | "plantingScript" | "plumberCostumeWorn" | "pokefamBoosts" | "postAscensionScript" | "preAscensionScript" | "retroCapeSuperhero" | "retroCapeWashingInstructions" | "questDoctorBag" | "questECoBucket" | "questESlAudit" | "questESlBacteria" | "questESlCheeseburger" | "questESlCocktail" | "questESlDebt" | "questESlFish" | "questESlMushStash" | "questESlSalt" | "questESlSprinkles" | "questESpEVE" | "questESpJunglePun" | "questESpGore" | "questESpClipper" | "questESpFakeMedium" | "questESpSerum" | "questESpSmokes" | "questESpOutOfOrder" | "questEStFishTrash" | "questEStGiveMeFuel" | "questEStNastyBears" | "questEStSocialJusticeI" | "questEStSocialJusticeII" | "questEStSuperLuber" | "questEStWorkWithFood" | "questEStZippityDooDah" | "questEUNewYou" | "questF01Primordial" | "questF02Hyboria" | "questF03Future" | "questF04Elves" | "questF05Clancy" | "questG01Meatcar" | "questG02Whitecastle" | "questG03Ego" | "questG04Nemesis" | "questG05Dark" | "questG06Delivery" | "questG07Myst" | "questG08Moxie" | "questG09Muscle" | "questGuzzlr" | "questI01Scapegoat" | "questI02Beat" | "questL02Larva" | "questL03Rat" | "questL04Bat" | "questL05Goblin" | "questL06Friar" | "questL07Cyrptic" | "questL08Trapper" | "questL09Topping" | "questL10Garbage" | "questL11MacGuffin" | "questL11Black" | "questL11Business" | "questL11Curses" | "questL11Desert" | "questL11Doctor" | "questL11Manor" | "questL11Palindome" | "questL11Pyramid" | "questL11Ron" | "questL11Shen" | "questL11Spare" | "questL11Worship" | "questL12War" | "questL12HippyFrat" | "questL13Final" | "questL13Warehouse" | "questLTTQuestByWire" | "questM01Untinker" | "questM02Artist" | "questM03Bugbear" | "questM05Toot" | "questM06Gourd" | "questM07Hammer" | "questM08Baker" | "questM09Rocks" | "questM10Azazel" | "questM11Postal" | "questM12Pirate" | "questM13Escape" | "questM14Bounty" | "questM15Lol" | "questM16Temple" | "questM17Babies" | "questM18Swamp" | "questM19Hippy" | "questM20Necklace" | "questM21Dance" | "questM22Shirt" | "questM23Meatsmith" | "questM24Doc" | "questM25Armorer" | "questM26Oracle" | "questPAGhost" | "questS01OldGuy" | "questS02Monkees" | "raveCombo1" | "raveCombo2" | "raveCombo3" | "raveCombo4" | "raveCombo5" | "raveCombo6" | "recoveryScript" | "relayCounters" | "royalty" | "scriptMRUList" | "seahorseName" | "shenQuestItem" | "shrubGarland" | "shrubGifts" | "shrubLights" | "shrubTopper" | "sideDefeated" | "sidequestArenaCompleted" | "sidequestFarmCompleted" | "sidequestJunkyardCompleted" | "sidequestLighthouseCompleted" | "sidequestNunsCompleted" | "sidequestOrchardCompleted" | "skateParkStatus" | "snowsuit" | "sourceTerminalChips" | "sourceTerminalEducate1" | "sourceTerminalEducate2" | "sourceTerminalEnquiry" | "sourceTerminalEducateKnown" | "sourceTerminalEnhanceKnown" | "sourceTerminalEnquiryKnown" | "sourceTerminalExtrudeKnown" | "spadingData" | "spadingScript" | "spelunkyStatus" | "spelunkyUpgrades" | "spookyravenRecipeUsed" | "stationaryButton1" | "stationaryButton2" | "stationaryButton3" | "stationaryButton4" | "stationaryButton5" | "streamCrossDefaultTarget" | "sweetSynthesisBlacklist" | "telescope1" | "telescope2" | "telescope3" | "telescope4" | "telescope5" | "testudinalTeachings" | "textColors" | "thanksMessage" | "tomeSkillsHardcore" | "tomeSkillsSoftcore" | "trackVoteMonster" | "trapperOre" | "umdLastObtained" | "vintnerWineType" | "violetFogLayout" | "volcanoMaze1" | "volcanoMaze2" | "volcanoMaze3" | "volcanoMaze4" | "volcanoMaze5" | "walfordBucketItem" | "warProgress" | "workteaClue" | "yourFavoriteBird" | "yourFavoriteBirdMods" | "youRobotCPUUpgrades" | "_beachHeadsUsed" | "_beachLayout" | "_beachMinutes" | "_birdOfTheDay" | "_birdOfTheDayMods" | "_bittycar" | "_campAwaySmileBuffSign" | "_cloudTalkMessage" | "_cloudTalkSmoker" | "_dailySpecial" | "_deckCardsSeen" | "_feastedFamiliars" | "_floristPlantsUsed" | "_frAreasUnlocked" | "_frHoursLeft" | "_frMonstersKilled" | "_horsery" | "_horseryCrazyMox" | "_horseryCrazyMus" | "_horseryCrazyMys" | "_horseryCrazyName" | "_horseryCurrentName" | "_horseryDarkName" | "_horseryNormalName" | "_horseryPaleName" | "_jickJarAvailable" | "_jiggleCheesedMonsters" | "_lastCombatStarted" | "_LastPirateRealmIsland" | "_mummeryMods" | "_mummeryUses" | "_newYouQuestSkill" | "_noHatModifier" | "_pantogramModifier" | "_questESp" | "_questPartyFair" | "_questPartyFairProgress" | "_questPartyFairQuest" | "_roboDrinks" | "_spacegateAnimalLife" | "_spacegateCoordinates" | "_spacegateHazards" | "_spacegateIntelligentLife" | "_spacegatePlanetName" | "_spacegatePlantLife" | "_stolenAccordions" | "_tempRelayCounters" | "_timeSpinnerFoodAvailable" | "_unknownEasyBountyItem" | "_unknownHardBountyItem" | "_unknownSpecialBountyItem" | "_untakenEasyBountyItem" | "_untakenHardBountyItem" | "_untakenSpecialBountyItem" | "_userMods" | "_villainLairColor" | "_villainLairKey" | "_voteLocal1" | "_voteLocal2" | "_voteLocal3" | "_voteLocal4" | "_voteMonster1" | "_voteMonster2" | "_voteModifier" | "_VYKEACompanionType" | "_VYKEACompanionRune" | "_VYKEACompanionName";
|
|
6
|
+
export declare type StringProperty = "autoLogin" | "browserBookmarks" | "chatFontSize" | "combatHotkey0" | "combatHotkey1" | "combatHotkey2" | "combatHotkey3" | "combatHotkey4" | "combatHotkey5" | "combatHotkey6" | "combatHotkey7" | "combatHotkey8" | "combatHotkey9" | "commandLineNamespace" | "cookies.inventory" | "dailyDeedsOptions" | "defaultBorderColor" | "displayName" | "externalEditor" | "getBreakfast" | "headerStates" | "highlightList" | "http.proxyHost" | "http.proxyPassword" | "http.proxyPort" | "http.proxyUser" | "https.proxyHost" | "https.proxyPassword" | "https.proxyPort" | "https.proxyUser" | "initialDesktop" | "initialFrames" | "innerChatColor" | "innerTabColor" | "lastRelayUpdate" | "lastRssVersion" | "lastUserAgent" | "lastUsername" | "logPreferenceChangeFilter" | "loginScript" | "loginServerName" | "loginWindowLogo" | "logoutScript" | "outerChatColor" | "outerTabColor" | "previousNotifyList" | "previousUpdateVersion" | "saveState" | "saveStateActive" | "scriptList" | "swingLookAndFeel" | "useDecoratedTabs" | "userAgent" | "afterAdventureScript" | "autoOlfact" | "autoPutty" | "backupCameraMode" | "banishedMonsters" | "banishingShoutMonsters" | "barrelLayout" | "batmanStats" | "batmanZone" | "batmanUpgrades" | "battleAction" | "beachHeadsUnlocked" | "beforePVPScript" | "betweenBattleScript" | "boomBoxSong" | "breakfastAlways" | "breakfastHardcore" | "breakfastSoftcore" | "buffBotCasting" | "buyScript" | "cargoPocketsEmptied" | "cargoPocketScraps" | "chatbotScript" | "chatPlayerScript" | "choiceAdventureScript" | "chosenTrip" | "clanFortuneReply1" | "clanFortuneReply2" | "clanFortuneReply3" | "clanFortuneWord1" | "clanFortuneWord2" | "clanFortuneWord3" | "commerceGhostItem" | "counterScript" | "copperheadClubHazard" | "crimbotChassis" | "crimbotArm" | "crimbotPropulsion" | "crystalBallPredictions" | "csServicesPerformed" | "currentEasyBountyItem" | "currentHardBountyItem" | "currentHippyStore" | "currentJunkyardTool" | "currentMood" | "currentPVPSeason" | "currentPvpVictories" | "currentSpecialBountyItem" | "customCombatScript" | "cyrusAdjectives" | "defaultFlowerLossMessage" | "defaultFlowerWinMessage" | "demonName1" | "demonName2" | "demonName3" | "demonName4" | "demonName5" | "demonName6" | "demonName7" | "demonName8" | "demonName9" | "demonName10" | "demonName11" | "demonName12" | "demonName13" | "dinseyGatorStenchDamage" | "dinseyRollercoasterStats" | "doctorBagQuestItem" | "dolphinItem" | "edPiece" | "enamorangMonsterTurn" | "ensorcelee" | "EVEDirections" | "extraCosmeticModifiers" | "familiarScript" | "forbiddenStores" | "gameProBossSpecialPower" | "grimoireSkillsHardcore" | "grimoireSkillsSoftcore" | "grimstoneMaskPath" | "guzzlrQuestClient" | "guzzlrQuestBooze" | "guzzlrQuestTier" | "harvestGardenHardcore" | "harvestGardenSoftcore" | "hpAutoRecoveryItems" | "invalidBuffMessage" | "jickSwordModifier" | "kingLiberatedScript" | "lassoTraining" | "lastAdventure" | "lastBangPotion819" | "lastBangPotion820" | "lastBangPotion821" | "lastBangPotion822" | "lastBangPotion823" | "lastBangPotion824" | "lastBangPotion825" | "lastBangPotion826" | "lastBangPotion827" | "lastChanceBurn" | "lastChessboard" | "lastDwarfDiceRolls" | "lastDwarfDigitRunes" | "lastDwarfEquipmentRunes" | "lastDwarfFactoryItem118" | "lastDwarfFactoryItem119" | "lastDwarfFactoryItem120" | "lastDwarfFactoryItem360" | "lastDwarfFactoryItem361" | "lastDwarfFactoryItem362" | "lastDwarfFactoryItem363" | "lastDwarfFactoryItem364" | "lastDwarfFactoryItem365" | "lastDwarfFactoryItem910" | "lastDwarfFactoryItem3199" | "lastDwarfOfficeItem3208" | "lastDwarfOfficeItem3209" | "lastDwarfOfficeItem3210" | "lastDwarfOfficeItem3211" | "lastDwarfOfficeItem3212" | "lastDwarfOfficeItem3213" | "lastDwarfOfficeItem3214" | "lastDwarfOreRunes" | "lastDwarfHopper1" | "lastDwarfHopper2" | "lastDwarfHopper3" | "lastDwarfHopper4" | "lastEncounter" | "lastMacroError" | "lastMessageId" | "lastPaperStrip3144" | "lastPaperStrip4138" | "lastPaperStrip4139" | "lastPaperStrip4140" | "lastPaperStrip4141" | "lastPaperStrip4142" | "lastPaperStrip4143" | "lastPaperStrip4144" | "lastPirateEphemera" | "lastPorkoBoard" | "lastPorkoPayouts" | "lastPorkoExpected" | "lastSlimeVial3885" | "lastSlimeVial3886" | "lastSlimeVial3887" | "lastSlimeVial3888" | "lastSlimeVial3889" | "lastSlimeVial3890" | "lastSlimeVial3891" | "lastSlimeVial3892" | "lastSlimeVial3893" | "lastSlimeVial3894" | "lastSlimeVial3895" | "lastSlimeVial3896" | "latteModifier" | "latteUnlocks" | "libramSkillsHardcore" | "libramSkillsSoftcore" | "louvreOverride" | "lovePotion" | "lttQuestName" | "maximizerList" | "maximizerMRUList" | "mayoInMouth" | "mayoMinderSetting" | "merkinQuestPath" | "mineLayout1" | "mineLayout2" | "mineLayout3" | "mineLayout4" | "mineLayout5" | "mineLayout6" | "mpAutoRecoveryItems" | "muffinOnOrder" | "nextAdventure" | "nsChallenge2" | "nsChallenge3" | "nsChallenge4" | "nsChallenge5" | "nsTowerDoorKeysUsed" | "oceanAction" | "oceanDestination" | "pastaThrall1" | "pastaThrall2" | "pastaThrall3" | "pastaThrall4" | "pastaThrall5" | "pastaThrall6" | "pastaThrall7" | "pastaThrall8" | "peteMotorbikeTires" | "peteMotorbikeGasTank" | "peteMotorbikeHeadlight" | "peteMotorbikeCowling" | "peteMotorbikeMuffler" | "peteMotorbikeSeat" | "pieStuffing" | "plantingDate" | "plantingLength" | "plantingScript" | "plumberCostumeWorn" | "pokefamBoosts" | "postAscensionScript" | "preAscensionScript" | "retroCapeSuperhero" | "retroCapeWashingInstructions" | "questDoctorBag" | "questECoBucket" | "questESlAudit" | "questESlBacteria" | "questESlCheeseburger" | "questESlCocktail" | "questESlDebt" | "questESlFish" | "questESlMushStash" | "questESlSalt" | "questESlSprinkles" | "questESpEVE" | "questESpJunglePun" | "questESpGore" | "questESpClipper" | "questESpFakeMedium" | "questESpSerum" | "questESpSmokes" | "questESpOutOfOrder" | "questEStFishTrash" | "questEStGiveMeFuel" | "questEStNastyBears" | "questEStSocialJusticeI" | "questEStSocialJusticeII" | "questEStSuperLuber" | "questEStWorkWithFood" | "questEStZippityDooDah" | "questEUNewYou" | "questF01Primordial" | "questF02Hyboria" | "questF03Future" | "questF04Elves" | "questF05Clancy" | "questG01Meatcar" | "questG02Whitecastle" | "questG03Ego" | "questG04Nemesis" | "questG05Dark" | "questG06Delivery" | "questG07Myst" | "questG08Moxie" | "questG09Muscle" | "questGuzzlr" | "questI01Scapegoat" | "questI02Beat" | "questL02Larva" | "questL03Rat" | "questL04Bat" | "questL05Goblin" | "questL06Friar" | "questL07Cyrptic" | "questL08Trapper" | "questL09Topping" | "questL10Garbage" | "questL11MacGuffin" | "questL11Black" | "questL11Business" | "questL11Curses" | "questL11Desert" | "questL11Doctor" | "questL11Manor" | "questL11Palindome" | "questL11Pyramid" | "questL11Ron" | "questL11Shen" | "questL11Spare" | "questL11Worship" | "questL12War" | "questL12HippyFrat" | "questL13Final" | "questL13Warehouse" | "questLTTQuestByWire" | "questM01Untinker" | "questM02Artist" | "questM03Bugbear" | "questM05Toot" | "questM06Gourd" | "questM07Hammer" | "questM08Baker" | "questM09Rocks" | "questM10Azazel" | "questM11Postal" | "questM12Pirate" | "questM13Escape" | "questM14Bounty" | "questM15Lol" | "questM16Temple" | "questM17Babies" | "questM18Swamp" | "questM19Hippy" | "questM20Necklace" | "questM21Dance" | "questM22Shirt" | "questM23Meatsmith" | "questM24Doc" | "questM25Armorer" | "questM26Oracle" | "questPAGhost" | "questS01OldGuy" | "questS02Monkees" | "raveCombo1" | "raveCombo2" | "raveCombo3" | "raveCombo4" | "raveCombo5" | "raveCombo6" | "recoveryScript" | "relayCounters" | "royalty" | "scriptMRUList" | "seahorseName" | "shenQuestItem" | "shrubGarland" | "shrubGifts" | "shrubLights" | "shrubTopper" | "sideDefeated" | "sidequestArenaCompleted" | "sidequestFarmCompleted" | "sidequestJunkyardCompleted" | "sidequestLighthouseCompleted" | "sidequestNunsCompleted" | "sidequestOrchardCompleted" | "skateParkStatus" | "snowsuit" | "sourceTerminalChips" | "sourceTerminalEducate1" | "sourceTerminalEducate2" | "sourceTerminalEnquiry" | "sourceTerminalEducateKnown" | "sourceTerminalEnhanceKnown" | "sourceTerminalEnquiryKnown" | "sourceTerminalExtrudeKnown" | "spadingData" | "spadingScript" | "spelunkyStatus" | "spelunkyUpgrades" | "spookyravenRecipeUsed" | "stationaryButton1" | "stationaryButton2" | "stationaryButton3" | "stationaryButton4" | "stationaryButton5" | "streamCrossDefaultTarget" | "sweetSynthesisBlacklist" | "telescope1" | "telescope2" | "telescope3" | "telescope4" | "telescope5" | "testudinalTeachings" | "textColors" | "thanksMessage" | "tomeSkillsHardcore" | "tomeSkillsSoftcore" | "trackVoteMonster" | "trapperOre" | "umdLastObtained" | "vintnerWineEffect" | "vintnerWineName" | "vintnerWineType" | "violetFogLayout" | "volcanoMaze1" | "volcanoMaze2" | "volcanoMaze3" | "volcanoMaze4" | "volcanoMaze5" | "walfordBucketItem" | "warProgress" | "workteaClue" | "yourFavoriteBird" | "yourFavoriteBirdMods" | "youRobotCPUUpgrades" | "_beachHeadsUsed" | "_beachLayout" | "_beachMinutes" | "_birdOfTheDay" | "_birdOfTheDayMods" | "_bittycar" | "_campAwaySmileBuffSign" | "_cloudTalkMessage" | "_cloudTalkSmoker" | "_dailySpecial" | "_deckCardsSeen" | "_feastedFamiliars" | "_floristPlantsUsed" | "_frAreasUnlocked" | "_frHoursLeft" | "_frMonstersKilled" | "_horsery" | "_horseryCrazyMox" | "_horseryCrazyMus" | "_horseryCrazyMys" | "_horseryCrazyName" | "_horseryCurrentName" | "_horseryDarkName" | "_horseryNormalName" | "_horseryPaleName" | "_jickJarAvailable" | "_jiggleCheesedMonsters" | "_lastCombatStarted" | "_LastPirateRealmIsland" | "_mummeryMods" | "_mummeryUses" | "_newYouQuestSkill" | "_noHatModifier" | "_pantogramModifier" | "_questESp" | "_questPartyFair" | "_questPartyFairProgress" | "_questPartyFairQuest" | "_roboDrinks" | "_spacegateAnimalLife" | "_spacegateCoordinates" | "_spacegateHazards" | "_spacegateIntelligentLife" | "_spacegatePlanetName" | "_spacegatePlantLife" | "_stolenAccordions" | "_tempRelayCounters" | "_timeSpinnerFoodAvailable" | "_unknownEasyBountyItem" | "_unknownHardBountyItem" | "_unknownSpecialBountyItem" | "_untakenEasyBountyItem" | "_untakenHardBountyItem" | "_untakenSpecialBountyItem" | "_userMods" | "_villainLairColor" | "_villainLairKey" | "_voteLocal1" | "_voteLocal2" | "_voteLocal3" | "_voteLocal4" | "_voteMonster1" | "_voteMonster2" | "_voteModifier" | "_VYKEACompanionType" | "_VYKEACompanionRune" | "_VYKEACompanionName";
|
|
7
7
|
export declare type NumericOrStringProperty = "statusEngineering" | "statusGalley" | "statusMedbay" | "statusMorgue" | "statusNavigation" | "statusScienceLab" | "statusSonar" | "statusSpecialOps" | "statusWasteProcessing" | "choiceAdventure2" | "choiceAdventure3" | "choiceAdventure4" | "choiceAdventure5" | "choiceAdventure6" | "choiceAdventure7" | "choiceAdventure8" | "choiceAdventure9" | "choiceAdventure10" | "choiceAdventure11" | "choiceAdventure12" | "choiceAdventure14" | "choiceAdventure15" | "choiceAdventure16" | "choiceAdventure17" | "choiceAdventure18" | "choiceAdventure19" | "choiceAdventure20" | "choiceAdventure21" | "choiceAdventure22" | "choiceAdventure23" | "choiceAdventure24" | "choiceAdventure25" | "choiceAdventure26" | "choiceAdventure27" | "choiceAdventure28" | "choiceAdventure29" | "choiceAdventure40" | "choiceAdventure41" | "choiceAdventure42" | "choiceAdventure45" | "choiceAdventure46" | "choiceAdventure47" | "choiceAdventure71" | "choiceAdventure72" | "choiceAdventure73" | "choiceAdventure74" | "choiceAdventure75" | "choiceAdventure76" | "choiceAdventure77" | "choiceAdventure86" | "choiceAdventure87" | "choiceAdventure88" | "choiceAdventure89" | "choiceAdventure90" | "choiceAdventure91" | "choiceAdventure105" | "choiceAdventure106" | "choiceAdventure107" | "choiceAdventure108" | "choiceAdventure109" | "choiceAdventure110" | "choiceAdventure111" | "choiceAdventure112" | "choiceAdventure113" | "choiceAdventure114" | "choiceAdventure115" | "choiceAdventure116" | "choiceAdventure117" | "choiceAdventure118" | "choiceAdventure120" | "choiceAdventure123" | "choiceAdventure125" | "choiceAdventure126" | "choiceAdventure127" | "choiceAdventure129" | "choiceAdventure131" | "choiceAdventure132" | "choiceAdventure135" | "choiceAdventure136" | "choiceAdventure137" | "choiceAdventure138" | "choiceAdventure139" | "choiceAdventure140" | "choiceAdventure141" | "choiceAdventure142" | "choiceAdventure143" | "choiceAdventure144" | "choiceAdventure145" | "choiceAdventure146" | "choiceAdventure147" | "choiceAdventure148" | "choiceAdventure149" | "choiceAdventure151" | "choiceAdventure152" | "choiceAdventure153" | "choiceAdventure154" | "choiceAdventure155" | "choiceAdventure156" | "choiceAdventure157" | "choiceAdventure158" | "choiceAdventure159" | "choiceAdventure160" | "choiceAdventure161" | "choiceAdventure162" | "choiceAdventure163" | "choiceAdventure164" | "choiceAdventure165" | "choiceAdventure166" | "choiceAdventure167" | "choiceAdventure168" | "choiceAdventure169" | "choiceAdventure170" | "choiceAdventure171" | "choiceAdventure172" | "choiceAdventure177" | "choiceAdventure178" | "choiceAdventure180" | "choiceAdventure181" | "choiceAdventure182" | "choiceAdventure184" | "choiceAdventure185" | "choiceAdventure186" | "choiceAdventure187" | "choiceAdventure188" | "choiceAdventure189" | "choiceAdventure191" | "choiceAdventure197" | "choiceAdventure198" | "choiceAdventure199" | "choiceAdventure200" | "choiceAdventure201" | "choiceAdventure202" | "choiceAdventure203" | "choiceAdventure204" | "choiceAdventure205" | "choiceAdventure206" | "choiceAdventure207" | "choiceAdventure208" | "choiceAdventure211" | "choiceAdventure212" | "choiceAdventure213" | "choiceAdventure214" | "choiceAdventure215" | "choiceAdventure216" | "choiceAdventure217" | "choiceAdventure218" | "choiceAdventure219" | "choiceAdventure220" | "choiceAdventure221" | "choiceAdventure222" | "choiceAdventure223" | "choiceAdventure224" | "choiceAdventure225" | "choiceAdventure230" | "choiceAdventure272" | "choiceAdventure273" | "choiceAdventure276" | "choiceAdventure277" | "choiceAdventure278" | "choiceAdventure279" | "choiceAdventure280" | "choiceAdventure281" | "choiceAdventure282" | "choiceAdventure283" | "choiceAdventure284" | "choiceAdventure285" | "choiceAdventure286" | "choiceAdventure287" | "choiceAdventure288" | "choiceAdventure289" | "choiceAdventure290" | "choiceAdventure291" | "choiceAdventure292" | "choiceAdventure293" | "choiceAdventure294" | "choiceAdventure295" | "choiceAdventure296" | "choiceAdventure297" | "choiceAdventure298" | "choiceAdventure299" | "choiceAdventure302" | "choiceAdventure303" | "choiceAdventure304" | "choiceAdventure305" | "choiceAdventure306" | "choiceAdventure307" | "choiceAdventure308" | "choiceAdventure309" | "choiceAdventure310" | "choiceAdventure311" | "choiceAdventure317" | "choiceAdventure318" | "choiceAdventure319" | "choiceAdventure320" | "choiceAdventure321" | "choiceAdventure322" | "choiceAdventure326" | "choiceAdventure327" | "choiceAdventure328" | "choiceAdventure329" | "choiceAdventure330" | "choiceAdventure331" | "choiceAdventure332" | "choiceAdventure333" | "choiceAdventure334" | "choiceAdventure335" | "choiceAdventure336" | "choiceAdventure337" | "choiceAdventure338" | "choiceAdventure339" | "choiceAdventure340" | "choiceAdventure341" | "choiceAdventure342" | "choiceAdventure343" | "choiceAdventure344" | "choiceAdventure345" | "choiceAdventure346" | "choiceAdventure347" | "choiceAdventure348" | "choiceAdventure349" | "choiceAdventure350" | "choiceAdventure351" | "choiceAdventure352" | "choiceAdventure353" | "choiceAdventure354" | "choiceAdventure355" | "choiceAdventure356" | "choiceAdventure357" | "choiceAdventure358" | "choiceAdventure360" | "choiceAdventure361" | "choiceAdventure362" | "choiceAdventure363" | "choiceAdventure364" | "choiceAdventure365" | "choiceAdventure366" | "choiceAdventure367" | "choiceAdventure372" | "choiceAdventure376" | "choiceAdventure387" | "choiceAdventure388" | "choiceAdventure389" | "choiceAdventure390" | "choiceAdventure391" | "choiceAdventure392" | "choiceAdventure393" | "choiceAdventure395" | "choiceAdventure396" | "choiceAdventure397" | "choiceAdventure398" | "choiceAdventure399" | "choiceAdventure400" | "choiceAdventure401" | "choiceAdventure402" | "choiceAdventure403" | "choiceAdventure423" | "choiceAdventure424" | "choiceAdventure425" | "choiceAdventure426" | "choiceAdventure427" | "choiceAdventure428" | "choiceAdventure429" | "choiceAdventure430" | "choiceAdventure431" | "choiceAdventure432" | "choiceAdventure433" | "choiceAdventure435" | "choiceAdventure438" | "choiceAdventure439" | "choiceAdventure442" | "choiceAdventure444" | "choiceAdventure445" | "choiceAdventure446" | "choiceAdventure447" | "choiceAdventure448" | "choiceAdventure449" | "choiceAdventure451" | "choiceAdventure452" | "choiceAdventure453" | "choiceAdventure454" | "choiceAdventure455" | "choiceAdventure456" | "choiceAdventure457" | "choiceAdventure458" | "choiceAdventure460" | "choiceAdventure461" | "choiceAdventure462" | "choiceAdventure463" | "choiceAdventure464" | "choiceAdventure465" | "choiceAdventure467" | "choiceAdventure468" | "choiceAdventure469" | "choiceAdventure470" | "choiceAdventure471" | "choiceAdventure472" | "choiceAdventure473" | "choiceAdventure474" | "choiceAdventure475" | "choiceAdventure477" | "choiceAdventure478" | "choiceAdventure480" | "choiceAdventure483" | "choiceAdventure484" | "choiceAdventure485" | "choiceAdventure486" | "choiceAdventure488" | "choiceAdventure489" | "choiceAdventure490" | "choiceAdventure491" | "choiceAdventure496" | "choiceAdventure497" | "choiceAdventure502" | "choiceAdventure503" | "choiceAdventure504" | "choiceAdventure505" | "choiceAdventure506" | "choiceAdventure507" | "choiceAdventure509" | "choiceAdventure510" | "choiceAdventure511" | "choiceAdventure512" | "choiceAdventure513" | "choiceAdventure514" | "choiceAdventure515" | "choiceAdventure517" | "choiceAdventure518" | "choiceAdventure519" | "choiceAdventure521" | "choiceAdventure522" | "choiceAdventure523" | "choiceAdventure527" | "choiceAdventure528" | "choiceAdventure529" | "choiceAdventure530" | "choiceAdventure531" | "choiceAdventure532" | "choiceAdventure533" | "choiceAdventure534" | "choiceAdventure535" | "choiceAdventure536" | "choiceAdventure538" | "choiceAdventure539" | "choiceAdventure542" | "choiceAdventure543" | "choiceAdventure544" | "choiceAdventure546" | "choiceAdventure548" | "choiceAdventure549" | "choiceAdventure550" | "choiceAdventure551" | "choiceAdventure552" | "choiceAdventure553" | "choiceAdventure554" | "choiceAdventure556" | "choiceAdventure557" | "choiceAdventure558" | "choiceAdventure559" | "choiceAdventure560" | "choiceAdventure561" | "choiceAdventure562" | "choiceAdventure563" | "choiceAdventure564" | "choiceAdventure565" | "choiceAdventure566" | "choiceAdventure567" | "choiceAdventure568" | "choiceAdventure569" | "choiceAdventure571" | "choiceAdventure572" | "choiceAdventure573" | "choiceAdventure574" | "choiceAdventure575" | "choiceAdventure576" | "choiceAdventure577" | "choiceAdventure578" | "choiceAdventure579" | "choiceAdventure581" | "choiceAdventure582" | "choiceAdventure583" | "choiceAdventure584" | "choiceAdventure594" | "choiceAdventure595" | "choiceAdventure596" | "choiceAdventure597" | "choiceAdventure598" | "choiceAdventure599" | "choiceAdventure600" | "choiceAdventure603" | "choiceAdventure604" | "choiceAdventure616" | "choiceAdventure634" | "choiceAdventure640" | "choiceAdventure654" | "choiceAdventure655" | "choiceAdventure656" | "choiceAdventure657" | "choiceAdventure658" | "choiceAdventure664" | "choiceAdventure669" | "choiceAdventure670" | "choiceAdventure671" | "choiceAdventure672" | "choiceAdventure673" | "choiceAdventure674" | "choiceAdventure675" | "choiceAdventure676" | "choiceAdventure677" | "choiceAdventure678" | "choiceAdventure679" | "choiceAdventure681" | "choiceAdventure683" | "choiceAdventure684" | "choiceAdventure685" | "choiceAdventure686" | "choiceAdventure687" | "choiceAdventure688" | "choiceAdventure689" | "choiceAdventure690" | "choiceAdventure691" | "choiceAdventure692" | "choiceAdventure693" | "choiceAdventure694" | "choiceAdventure695" | "choiceAdventure696" | "choiceAdventure697" | "choiceAdventure698" | "choiceAdventure700" | "choiceAdventure701" | "choiceAdventure705" | "choiceAdventure706" | "choiceAdventure707" | "choiceAdventure708" | "choiceAdventure709" | "choiceAdventure710" | "choiceAdventure711" | "choiceAdventure712" | "choiceAdventure713" | "choiceAdventure714" | "choiceAdventure715" | "choiceAdventure716" | "choiceAdventure717" | "choiceAdventure721" | "choiceAdventure725" | "choiceAdventure729" | "choiceAdventure733" | "choiceAdventure737" | "choiceAdventure741" | "choiceAdventure745" | "choiceAdventure749" | "choiceAdventure753" | "choiceAdventure771" | "choiceAdventure778" | "choiceAdventure780" | "choiceAdventure781" | "choiceAdventure783" | "choiceAdventure784" | "choiceAdventure785" | "choiceAdventure786" | "choiceAdventure787" | "choiceAdventure788" | "choiceAdventure789" | "choiceAdventure791" | "choiceAdventure793" | "choiceAdventure794" | "choiceAdventure795" | "choiceAdventure796" | "choiceAdventure797" | "choiceAdventure805" | "choiceAdventure808" | "choiceAdventure809" | "choiceAdventure813" | "choiceAdventure815" | "choiceAdventure830" | "choiceAdventure832" | "choiceAdventure833" | "choiceAdventure834" | "choiceAdventure835" | "choiceAdventure837" | "choiceAdventure838" | "choiceAdventure839" | "choiceAdventure840" | "choiceAdventure841" | "choiceAdventure842" | "choiceAdventure851" | "choiceAdventure852" | "choiceAdventure853" | "choiceAdventure854" | "choiceAdventure855" | "choiceAdventure856" | "choiceAdventure857" | "choiceAdventure858" | "choiceAdventure866" | "choiceAdventure873" | "choiceAdventure875" | "choiceAdventure876" | "choiceAdventure877" | "choiceAdventure878" | "choiceAdventure879" | "choiceAdventure880" | "choiceAdventure881" | "choiceAdventure882" | "choiceAdventure888" | "choiceAdventure889" | "choiceAdventure918" | "choiceAdventure919" | "choiceAdventure920" | "choiceAdventure921" | "choiceAdventure923" | "choiceAdventure924" | "choiceAdventure925" | "choiceAdventure926" | "choiceAdventure927" | "choiceAdventure928" | "choiceAdventure929" | "choiceAdventure930" | "choiceAdventure931" | "choiceAdventure932" | "choiceAdventure940" | "choiceAdventure941" | "choiceAdventure942" | "choiceAdventure943" | "choiceAdventure944" | "choiceAdventure945" | "choiceAdventure946" | "choiceAdventure950" | "choiceAdventure955" | "choiceAdventure957" | "choiceAdventure958" | "choiceAdventure959" | "choiceAdventure960" | "choiceAdventure961" | "choiceAdventure962" | "choiceAdventure963" | "choiceAdventure964" | "choiceAdventure965" | "choiceAdventure966" | "choiceAdventure970" | "choiceAdventure973" | "choiceAdventure974" | "choiceAdventure975" | "choiceAdventure976" | "choiceAdventure977" | "choiceAdventure979" | "choiceAdventure980" | "choiceAdventure981" | "choiceAdventure982" | "choiceAdventure983" | "choiceAdventure988" | "choiceAdventure989" | "choiceAdventure993" | "choiceAdventure998" | "choiceAdventure1000" | "choiceAdventure1003" | "choiceAdventure1005" | "choiceAdventure1006" | "choiceAdventure1007" | "choiceAdventure1008" | "choiceAdventure1009" | "choiceAdventure1010" | "choiceAdventure1011" | "choiceAdventure1012" | "choiceAdventure1013" | "choiceAdventure1015" | "choiceAdventure1016" | "choiceAdventure1017" | "choiceAdventure1018" | "choiceAdventure1019" | "choiceAdventure1020" | "choiceAdventure1021" | "choiceAdventure1022" | "choiceAdventure1023" | "choiceAdventure1026" | "choiceAdventure1027" | "choiceAdventure1028" | "choiceAdventure1029" | "choiceAdventure1030" | "choiceAdventure1031" | "choiceAdventure1032" | "choiceAdventure1033" | "choiceAdventure1034" | "choiceAdventure1035" | "choiceAdventure1036" | "choiceAdventure1037" | "choiceAdventure1038" | "choiceAdventure1039" | "choiceAdventure1040" | "choiceAdventure1041" | "choiceAdventure1042" | "choiceAdventure1044" | "choiceAdventure1045" | "choiceAdventure1046" | "choiceAdventure1048" | "choiceAdventure1051" | "choiceAdventure1052" | "choiceAdventure1053" | "choiceAdventure1054" | "choiceAdventure1055" | "choiceAdventure1056" | "choiceAdventure1057" | "choiceAdventure1059" | "choiceAdventure1060" | "choiceAdventure1061" | "choiceAdventure1062" | "choiceAdventure1065" | "choiceAdventure1067" | "choiceAdventure1068" | "choiceAdventure1069" | "choiceAdventure1070" | "choiceAdventure1071" | "choiceAdventure1073" | "choiceAdventure1077" | "choiceAdventure1080" | "choiceAdventure1081" | "choiceAdventure1082" | "choiceAdventure1083" | "choiceAdventure1084" | "choiceAdventure1085" | "choiceAdventure1091" | "choiceAdventure1094" | "choiceAdventure1095" | "choiceAdventure1096" | "choiceAdventure1097" | "choiceAdventure1102" | "choiceAdventure1106" | "choiceAdventure1107" | "choiceAdventure1108" | "choiceAdventure1110" | "choiceAdventure1114" | "choiceAdventure1115" | "choiceAdventure1116" | "choiceAdventure1118" | "choiceAdventure1119" | "choiceAdventure1120" | "choiceAdventure1121" | "choiceAdventure1122" | "choiceAdventure1123" | "choiceAdventure1171" | "choiceAdventure1172" | "choiceAdventure1173" | "choiceAdventure1174" | "choiceAdventure1175" | "choiceAdventure1193" | "choiceAdventure1195" | "choiceAdventure1196" | "choiceAdventure1197" | "choiceAdventure1198" | "choiceAdventure1199" | "choiceAdventure1202" | "choiceAdventure1203" | "choiceAdventure1204" | "choiceAdventure1205" | "choiceAdventure1206" | "choiceAdventure1207" | "choiceAdventure1208" | "choiceAdventure1209" | "choiceAdventure1210" | "choiceAdventure1211" | "choiceAdventure1212" | "choiceAdventure1213" | "choiceAdventure1214" | "choiceAdventure1215" | "choiceAdventure1219" | "choiceAdventure1222" | "choiceAdventure1223" | "choiceAdventure1224" | "choiceAdventure1225" | "choiceAdventure1226" | "choiceAdventure1227" | "choiceAdventure1228" | "choiceAdventure1229" | "choiceAdventure1236" | "choiceAdventure1237" | "choiceAdventure1238" | "choiceAdventure1239" | "choiceAdventure1240" | "choiceAdventure1241" | "choiceAdventure1242" | "choiceAdventure1243" | "choiceAdventure1244" | "choiceAdventure1245" | "choiceAdventure1246" | "choiceAdventure1247" | "choiceAdventure1248" | "choiceAdventure1249" | "choiceAdventure1250" | "choiceAdventure1251" | "choiceAdventure1252" | "choiceAdventure1253" | "choiceAdventure1254" | "choiceAdventure1255" | "choiceAdventure1256" | "choiceAdventure1266" | "choiceAdventure1280" | "choiceAdventure1281" | "choiceAdventure1282" | "choiceAdventure1283" | "choiceAdventure1284" | "choiceAdventure1285" | "choiceAdventure1286" | "choiceAdventure1287" | "choiceAdventure1288" | "choiceAdventure1289" | "choiceAdventure1290" | "choiceAdventure1291" | "choiceAdventure1292" | "choiceAdventure1293" | "choiceAdventure1294" | "choiceAdventure1295" | "choiceAdventure1296" | "choiceAdventure1297" | "choiceAdventure1298" | "choiceAdventure1299" | "choiceAdventure1300" | "choiceAdventure1301" | "choiceAdventure1302" | "choiceAdventure1303" | "choiceAdventure1304" | "choiceAdventure1305" | "choiceAdventure1307" | "choiceAdventure1310" | "choiceAdventure1312" | "choiceAdventure1313" | "choiceAdventure1314" | "choiceAdventure1315" | "choiceAdventure1316" | "choiceAdventure1317" | "choiceAdventure1318" | "choiceAdventure1319" | "choiceAdventure1321" | "choiceAdventure1322" | "choiceAdventure1323" | "choiceAdventure1324" | "choiceAdventure1325" | "choiceAdventure1326" | "choiceAdventure1327" | "choiceAdventure1328" | "choiceAdventure1332" | "choiceAdventure1333" | "choiceAdventure1335" | "choiceAdventure1340" | "choiceAdventure1341" | "choiceAdventure1345" | "choiceAdventure1389" | "choiceAdventure1392" | "choiceAdventure1399" | "choiceAdventure1405" | "choiceAdventure1411" | "choiceAdventure1415" | "choiceAdventure1460" | "choiceAdventure1461";
|
|
8
8
|
export declare type FamiliarProperty = "commaFamiliar" | "nextQuantumFamiliar" | "preBlackbirdFamiliar";
|
|
9
9
|
export declare type StatProperty = "nsChallenge1" | "snojoSetting";
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export declare function have(): boolean;
|
|
2
|
+
export declare function havePants(): boolean;
|
|
3
|
+
declare type PantogramAlignment = "Muscle" | "Moxie" | "Mysticality";
|
|
4
|
+
declare const Element: {
|
|
5
|
+
"Hot Resistance: 2": number;
|
|
6
|
+
"Cold Resistance: 2": number;
|
|
7
|
+
"Spooky Resistance: 2": number;
|
|
8
|
+
"Sleaze Resistance: 2": number;
|
|
9
|
+
"Stench Resistance: 2": number;
|
|
10
|
+
};
|
|
11
|
+
declare type PantogramElement = keyof typeof Element;
|
|
12
|
+
declare const LeftSacrifice: {
|
|
13
|
+
"Maximum HP: 40": number[];
|
|
14
|
+
"Maximum MP: 20": number[];
|
|
15
|
+
"HP Regen Max: 10": (number | Item)[];
|
|
16
|
+
"HP Regen Max: 15": (number | Item)[];
|
|
17
|
+
"HP Regen Max: 20": (number | Item)[];
|
|
18
|
+
"MP Regen Max: 10": (number | Item)[];
|
|
19
|
+
"MP Regen Max: 15": (number | Item)[];
|
|
20
|
+
"MP Regen Max: 20": (number | Item)[];
|
|
21
|
+
"Mana Cost: -3": (number | Item)[];
|
|
22
|
+
};
|
|
23
|
+
declare type PantogramSacrificeL = keyof typeof LeftSacrifice;
|
|
24
|
+
declare const MiddleSacrifice: {
|
|
25
|
+
"Combat Rate: -5": number[];
|
|
26
|
+
"Combat Rate: 5": number[];
|
|
27
|
+
"Critical Hit Percent: 10": (number | Item)[];
|
|
28
|
+
"Initiative: 50": (number | Item)[];
|
|
29
|
+
"Familiar Weight: 10": (number | Item)[];
|
|
30
|
+
"Candy Drop: 100": (number | Item)[];
|
|
31
|
+
"Item Drop Penalty: -10": (number | Item)[];
|
|
32
|
+
"Fishing Skill: 5": (number | Item)[];
|
|
33
|
+
"Pool Skill: 5": (number | Item)[];
|
|
34
|
+
"Avatar: Purple": (number | Item)[];
|
|
35
|
+
"Drops Items: true": (number | Item)[];
|
|
36
|
+
};
|
|
37
|
+
declare type PantogramSacrificeM = keyof typeof MiddleSacrifice;
|
|
38
|
+
declare const RightSacrifice: {
|
|
39
|
+
"Weapon Damage: 20": number[];
|
|
40
|
+
"Spell Damage Percent: 20": number[];
|
|
41
|
+
"Meat Drop: 30": (number | Item)[];
|
|
42
|
+
"Meat Drop: 60": (number | Item)[];
|
|
43
|
+
"Item Drop: 15": (number | Item)[];
|
|
44
|
+
"Item Drop: 30": (number | Item)[];
|
|
45
|
+
"Muscle Experience: 3": (number | Item)[];
|
|
46
|
+
"Mysticality Experience: 3": (number | Item)[];
|
|
47
|
+
"Moxie Experience: 3": (number | Item)[];
|
|
48
|
+
"Muscle Experience Percent: 25": (number | Item)[];
|
|
49
|
+
"Mysticality Experience Percent: 25": (number | Item)[];
|
|
50
|
+
"Moxie Experience Percent: 25": (number | Item)[];
|
|
51
|
+
};
|
|
52
|
+
declare type PantogramSacrificeR = keyof typeof RightSacrifice;
|
|
53
|
+
declare type Pants = {
|
|
54
|
+
alignment: PantogramAlignment;
|
|
55
|
+
element: PantogramElement;
|
|
56
|
+
leftSac: PantogramSacrificeL;
|
|
57
|
+
rightSac: PantogramSacrificeR;
|
|
58
|
+
middleSac: PantogramSacrificeM;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Finds the item requirements for a particular pair of pants.
|
|
62
|
+
* @param modifiers An object consisting of the modifiers you want on your pants. For modifiers repeated across a particular sacrifice, use a tuple of that modifier and its value.
|
|
63
|
+
* @returns A map of the items you need to make these pants and the quantities needed.
|
|
64
|
+
*/
|
|
65
|
+
export declare function findRequirements(modifiers: Partial<Pants>): Map<Item, number>;
|
|
66
|
+
/**
|
|
67
|
+
* Makes a pair of pants with the given modifiers
|
|
68
|
+
* @param alignment The stat you'd like your pants to improve. Moxie, Mysticality, or Muscle
|
|
69
|
+
* @param element The element you'd like your pants to provide resistance for
|
|
70
|
+
* @param leftSac The modifier you'd like to get from your leftmost sacrifice in Pantagramming.
|
|
71
|
+
* @param middleSac The modifier you'd like to get from your middle sacrifice in Pantagramming.
|
|
72
|
+
* @param rightSac The modifier you'd like to get from your rightmost sacrifice in Pantagramming.
|
|
73
|
+
* @returns Whether or not you successfully created a pair of pants. False if you don't own the pantogram or if you already have pantogram pants.
|
|
74
|
+
*/
|
|
75
|
+
export declare function makePants(alignment: PantogramAlignment, element: PantogramElement, leftSac: PantogramSacrificeL, middleSac: PantogramSacrificeM, rightSac: PantogramSacrificeR): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Creates a pair of pants from a Pants object.
|
|
78
|
+
* @param pants An object consisting of the modifiers you'd like the pants to give you.
|
|
79
|
+
* @returns Whether or not you successfully created a pair of pants. False if you don't own the pantogram or if you already have pantogram pants.
|
|
80
|
+
*/
|
|
81
|
+
export declare function makePantsFromObject(pants: Pants): boolean;
|
|
82
|
+
export {};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { toInt, visitUrl } from "kolmafia";
|
|
2
|
+
import { have as haveItem } from "../../lib";
|
|
3
|
+
import { $item } from "../../template-string";
|
|
4
|
+
const pantogram = $item `portable pantogram`;
|
|
5
|
+
const pants = $item `pantogram pants`;
|
|
6
|
+
export function have() {
|
|
7
|
+
return haveItem(pantogram);
|
|
8
|
+
}
|
|
9
|
+
export function havePants() {
|
|
10
|
+
return haveItem(pants);
|
|
11
|
+
}
|
|
12
|
+
const Alignment = {
|
|
13
|
+
["Muscle"]: 1,
|
|
14
|
+
["Mysticality"]: 2,
|
|
15
|
+
["Moxie"]: 3,
|
|
16
|
+
};
|
|
17
|
+
const Element = {
|
|
18
|
+
["Hot Resistance: 2"]: 1,
|
|
19
|
+
["Cold Resistance: 2"]: 2,
|
|
20
|
+
["Spooky Resistance: 2"]: 3,
|
|
21
|
+
["Sleaze Resistance: 2"]: 4,
|
|
22
|
+
["Stench Resistance: 2"]: 5,
|
|
23
|
+
};
|
|
24
|
+
const LeftSacrifice = {
|
|
25
|
+
["Maximum HP: 40"]: [-1, 0],
|
|
26
|
+
["Maximum MP: 20"]: [-2, 0],
|
|
27
|
+
["HP Regen Max: 10"]: [$item `red pixel potion`, 1],
|
|
28
|
+
["HP Regen Max: 15"]: [$item `royal jelly`, 1],
|
|
29
|
+
["HP Regen Max: 20"]: [$item `scented massage oil`, 1],
|
|
30
|
+
["MP Regen Max: 10"]: [$item `Cherry Cloaca Cola`, 1],
|
|
31
|
+
["MP Regen Max: 15"]: [$item `bubblin' crude`, 1],
|
|
32
|
+
["MP Regen Max: 20"]: [$item `glowing New Age crystal`, 1],
|
|
33
|
+
["Mana Cost: -3"]: [$item `baconstone`, 1],
|
|
34
|
+
};
|
|
35
|
+
function getLeftSacPair(mod) {
|
|
36
|
+
return LeftSacrifice[mod];
|
|
37
|
+
}
|
|
38
|
+
const MiddleSacrifice = {
|
|
39
|
+
["Combat Rate: -5"]: [-1, 0],
|
|
40
|
+
["Combat Rate: 5"]: [-2, 0],
|
|
41
|
+
["Critical Hit Percent: 10"]: [$item `hamethyst`, 1],
|
|
42
|
+
["Initiative: 50"]: [$item `bar skin`, 1],
|
|
43
|
+
["Familiar Weight: 10"]: [$item `lead necklace`, 11],
|
|
44
|
+
["Candy Drop: 100"]: [$item `huge bowl of candy`, 1],
|
|
45
|
+
["Item Drop Penalty: -10"]: [$item `sea salt crystal`, 11],
|
|
46
|
+
["Fishing Skill: 5"]: [$item `wriggling worm`, 1],
|
|
47
|
+
["Pool Skill: 5"]: [$item `8-ball`, 15],
|
|
48
|
+
["Avatar: Purple"]: [$item `moxie weed`, 99],
|
|
49
|
+
["Drops Items: true"]: [$item `ten-leaf clover`, 1],
|
|
50
|
+
};
|
|
51
|
+
function getMiddleSacPair(mod) {
|
|
52
|
+
return MiddleSacrifice[mod];
|
|
53
|
+
}
|
|
54
|
+
const RightSacrifice = {
|
|
55
|
+
["Weapon Damage: 20"]: [-1, 0],
|
|
56
|
+
["Spell Damage Percent: 20"]: [-2, 0],
|
|
57
|
+
["Meat Drop: 30"]: [$item `taco shell`, 1],
|
|
58
|
+
["Meat Drop: 60"]: [$item `porquoise`, 1],
|
|
59
|
+
["Item Drop: 15"]: [$item `fairy gravy boat`, 1],
|
|
60
|
+
["Item Drop: 30"]: [$item `tiny dancer`, 1],
|
|
61
|
+
["Muscle Experience: 3"]: [$item `Knob Goblin firecracker`, 3],
|
|
62
|
+
["Mysticality Experience: 3"]: [$item `razor-sharp can lid`, 3],
|
|
63
|
+
["Moxie Experience: 3"]: [$item `spider web`, 3],
|
|
64
|
+
["Muscle Experience Percent: 25"]: [$item `synthetic marrow`, 5],
|
|
65
|
+
["Mysticality Experience Percent: 25"]: [$item `haunted battery`, 5],
|
|
66
|
+
["Moxie Experience Percent: 25"]: [$item `the funk`, 5],
|
|
67
|
+
};
|
|
68
|
+
function getRightSacPair(mod) {
|
|
69
|
+
return RightSacrifice[mod];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Finds the item requirements for a particular pair of pants.
|
|
73
|
+
* @param modifiers An object consisting of the modifiers you want on your pants. For modifiers repeated across a particular sacrifice, use a tuple of that modifier and its value.
|
|
74
|
+
* @returns A map of the items you need to make these pants and the quantities needed.
|
|
75
|
+
*/
|
|
76
|
+
export function findRequirements(modifiers) {
|
|
77
|
+
const { leftSac, rightSac, middleSac } = modifiers;
|
|
78
|
+
const returnValue = new Map();
|
|
79
|
+
if (leftSac) {
|
|
80
|
+
const [sacrifice, quantity] = getLeftSacPair(leftSac);
|
|
81
|
+
if (sacrifice instanceof Item) {
|
|
82
|
+
returnValue.set(sacrifice, quantity);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (rightSac) {
|
|
86
|
+
const [sacrifice, quantity] = getRightSacPair(rightSac);
|
|
87
|
+
if (sacrifice instanceof Item) {
|
|
88
|
+
returnValue.set(sacrifice, quantity);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (middleSac) {
|
|
92
|
+
const [sacrifice, quantity] = getMiddleSacPair(middleSac);
|
|
93
|
+
if (sacrifice instanceof Item) {
|
|
94
|
+
returnValue.set(sacrifice, quantity);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return returnValue;
|
|
98
|
+
}
|
|
99
|
+
function sacrificePairToURL(pair) {
|
|
100
|
+
const [rawSacrifice, quantity] = pair;
|
|
101
|
+
const sacrifice = rawSacrifice instanceof Item ? toInt(rawSacrifice) : rawSacrifice;
|
|
102
|
+
return `${sacrifice},${quantity}`;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Makes a pair of pants with the given modifiers
|
|
106
|
+
* @param alignment The stat you'd like your pants to improve. Moxie, Mysticality, or Muscle
|
|
107
|
+
* @param element The element you'd like your pants to provide resistance for
|
|
108
|
+
* @param leftSac The modifier you'd like to get from your leftmost sacrifice in Pantagramming.
|
|
109
|
+
* @param middleSac The modifier you'd like to get from your middle sacrifice in Pantagramming.
|
|
110
|
+
* @param rightSac The modifier you'd like to get from your rightmost sacrifice in Pantagramming.
|
|
111
|
+
* @returns Whether or not you successfully created a pair of pants. False if you don't own the pantogram or if you already have pantogram pants.
|
|
112
|
+
*/
|
|
113
|
+
export function makePants(alignment, element, leftSac, middleSac, rightSac) {
|
|
114
|
+
if (haveItem(pants) || !haveItem(pantogram))
|
|
115
|
+
return false;
|
|
116
|
+
const requirements = findRequirements({
|
|
117
|
+
alignment: alignment,
|
|
118
|
+
element: element,
|
|
119
|
+
leftSac: leftSac,
|
|
120
|
+
rightSac: rightSac,
|
|
121
|
+
middleSac: middleSac,
|
|
122
|
+
});
|
|
123
|
+
if (Array.from(requirements.entries()).some(([item, quantity]) => !haveItem(item, quantity))) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
const s1 = sacrificePairToURL(getLeftSacPair(leftSac));
|
|
127
|
+
const s2 = sacrificePairToURL(getRightSacPair(rightSac));
|
|
128
|
+
const s3 = sacrificePairToURL(getMiddleSacPair(middleSac));
|
|
129
|
+
const url = `choice.php?whichchoice=1270&pwd&option=1&m=${Alignment[alignment]}&e=${Element[element]}&s1=${s1}&s2=${s2}&s3=${s3}`;
|
|
130
|
+
visitUrl("inv_use.php?pwd&whichitem=9573");
|
|
131
|
+
visitUrl(url);
|
|
132
|
+
return haveItem(pants);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Creates a pair of pants from a Pants object.
|
|
136
|
+
* @param pants An object consisting of the modifiers you'd like the pants to give you.
|
|
137
|
+
* @returns Whether or not you successfully created a pair of pants. False if you don't own the pantogram or if you already have pantogram pants.
|
|
138
|
+
*/
|
|
139
|
+
export function makePantsFromObject(pants) {
|
|
140
|
+
return makePants(pants.alignment, pants.element, pants.leftSac, pants.middleSac, pants.rightSac);
|
|
141
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An entry showing the value of each Item in a session
|
|
3
|
+
* @member item the item associated with this detail
|
|
4
|
+
* @member value the numeric value of the full quantity of items (to get value of each item, do value / quantity) (can be negative)
|
|
5
|
+
* @member quantity the number of items for this detail
|
|
6
|
+
*/
|
|
7
|
+
interface ItemDetail {
|
|
8
|
+
item: Item;
|
|
9
|
+
value: number;
|
|
10
|
+
quantity: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The full value (in meat) results of a session
|
|
14
|
+
* @member meat the value of this session in pure meat
|
|
15
|
+
* @member items the value of the items in this session in meat
|
|
16
|
+
* @member total sum of meat and items
|
|
17
|
+
* @member itemDetails a list of the detailed accounting for each item in this session
|
|
18
|
+
*/
|
|
19
|
+
interface ItemResult {
|
|
20
|
+
meat: number;
|
|
21
|
+
items: number;
|
|
22
|
+
total: number;
|
|
23
|
+
itemDetails: ItemDetail[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A wrapper around tracking items and meat gained from this session
|
|
27
|
+
* Smartly handles foldables being added/removed based on their state
|
|
28
|
+
* Provides operations to add sessions and subtract Sessions so you can isolate the value of each Session using a baseline
|
|
29
|
+
* @member meat the raw meat associated with this Session
|
|
30
|
+
* @member items a map representing the items gained/lost during this Session
|
|
31
|
+
*/
|
|
32
|
+
export declare class Session {
|
|
33
|
+
meat: number;
|
|
34
|
+
items: Map<Item, number>;
|
|
35
|
+
/**
|
|
36
|
+
* Construct a new session
|
|
37
|
+
* @param meat the amount of meat associated with this session
|
|
38
|
+
* @param items the items associated with this session
|
|
39
|
+
*/
|
|
40
|
+
private constructor();
|
|
41
|
+
/**
|
|
42
|
+
* Register session results that do not get tracked natively
|
|
43
|
+
* @param target either the Item or a string saying "meat" of what quantity to modify
|
|
44
|
+
* @param quantity How much to modify the tracked amount by
|
|
45
|
+
*/
|
|
46
|
+
register(target: Item | "meat", quantity: number): void;
|
|
47
|
+
/**
|
|
48
|
+
* Value this session
|
|
49
|
+
* @param itemValue a function that, when given an item, will give a meat value of the item
|
|
50
|
+
* @returns ItemResult with the full value of this session given the input function
|
|
51
|
+
*/
|
|
52
|
+
value(itemValue: (item: Item) => number): ItemResult;
|
|
53
|
+
/**
|
|
54
|
+
* Subtract the contents of another session from this one, removing any items that have a resulting quantity of 0
|
|
55
|
+
* (this will ignore elements in b but not in a)
|
|
56
|
+
* @param other the session from which to pull values to remove from this session
|
|
57
|
+
* @returns a new session representing the difference between this session and the other session
|
|
58
|
+
*/
|
|
59
|
+
diff(other: Session): Session;
|
|
60
|
+
/**
|
|
61
|
+
* Subtract the contents of snasphot b from session a, removing any items that have a resulting quantity of 0
|
|
62
|
+
* (this will ignore elements in b but not in a)
|
|
63
|
+
* @param a the session from which to subtract elements
|
|
64
|
+
* @param b the session from which to add elements
|
|
65
|
+
* @returns a new session representing the difference between a and b
|
|
66
|
+
*/
|
|
67
|
+
static diff(a: Session, b: Session): Session;
|
|
68
|
+
/**
|
|
69
|
+
* Generate a new session combining multiple sessions together
|
|
70
|
+
* @param other the session from which to add elements to this set
|
|
71
|
+
* @returns a new session representing the addition of other to this
|
|
72
|
+
*/
|
|
73
|
+
add(other: Session): Session;
|
|
74
|
+
/**
|
|
75
|
+
* Combine the contents of sessions
|
|
76
|
+
* @param sessions the set of sessions to combine together
|
|
77
|
+
* @returns a new session representing the difference between a and b
|
|
78
|
+
*/
|
|
79
|
+
static add(...sessions: Session[]): Session;
|
|
80
|
+
/**
|
|
81
|
+
* Export this session to a file in the data/ directory. Conventionally this file should end in ".json"
|
|
82
|
+
* @param filename The file into which to export
|
|
83
|
+
*/
|
|
84
|
+
toFile(filename: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* Import a session from a file in the data/ directory. Conventionally the file should end in ".json"
|
|
87
|
+
* @param filename The file from which to import
|
|
88
|
+
* @returns the session represented by the file
|
|
89
|
+
*/
|
|
90
|
+
static fromFile(filename: string): Session;
|
|
91
|
+
static current(): Session;
|
|
92
|
+
}
|
|
93
|
+
export {};
|
package/dist/session.js
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { bufferToFile, fileToBuffer, mySessionItems, mySessionMeat, toItem, } from "kolmafia";
|
|
2
|
+
import { getFoldGroup } from "./lib";
|
|
3
|
+
import { $item, $items } from "./template-string";
|
|
4
|
+
import { sumNumbers } from "./utils";
|
|
5
|
+
/**
|
|
6
|
+
* Return a mapping of the session items, mapping foldable items to a single of their forms
|
|
7
|
+
* @returns the item session results, with foldables mapped to a single of their folding forms
|
|
8
|
+
*/
|
|
9
|
+
function mySessionItemsWrapper() {
|
|
10
|
+
const manyToOne = (primary, mapped) => mapped.map((target) => [target, primary]);
|
|
11
|
+
const foldable = (item) => manyToOne(item, getFoldGroup(item));
|
|
12
|
+
const itemMappings = new Map([
|
|
13
|
+
...foldable($item `liar's pants`),
|
|
14
|
+
...foldable($item `ice pick`),
|
|
15
|
+
...manyToOne($item `Spooky Putty sheet`, [
|
|
16
|
+
$item `Spooky Putty monster`,
|
|
17
|
+
...getFoldGroup($item `Spooky Putty sheet`),
|
|
18
|
+
]),
|
|
19
|
+
...foldable($item `stinky cheese sword`),
|
|
20
|
+
...foldable($item `naughty paper shuriken`),
|
|
21
|
+
...foldable($item `Loathing Legion knife`),
|
|
22
|
+
...foldable($item `deceased crimbo tree`),
|
|
23
|
+
...foldable($item `makeshift turban`),
|
|
24
|
+
...foldable($item `turtle wax shield`),
|
|
25
|
+
...foldable($item `metallic foil bow`),
|
|
26
|
+
...foldable($item `ironic moustache`),
|
|
27
|
+
...foldable($item `bugged balaclava`),
|
|
28
|
+
...foldable($item `toggle switch (Bartend)`),
|
|
29
|
+
...foldable($item `mushroom cap`),
|
|
30
|
+
...manyToOne($item `can of Rain-Doh`, $items `empty Rain-Doh can`),
|
|
31
|
+
...manyToOne($item `meteorite fragment`, $items `meteorite earring, meteorite necklace, meteorite ring`),
|
|
32
|
+
...manyToOne($item `Sneaky Pete's leather jacket`, $items `Sneaky Pete's leather jacket (collar popped)`),
|
|
33
|
+
...manyToOne($item `Boris's Helm`, $items `Boris's Helm (askew)`),
|
|
34
|
+
...manyToOne($item `Jarlsberg's pan`, $items `Jarlsberg's pan (Cosmic portal mode)`),
|
|
35
|
+
...manyToOne($item `tiny plastic sword`, $items `grogtini, bodyslam, dirty martini, vesper, cherry bomb, sangria del diablo`),
|
|
36
|
+
...manyToOne($item `earthenware muffin tin`, $items `blueberry muffin, bran muffin, chocolate chip muffin`),
|
|
37
|
+
]);
|
|
38
|
+
const inventory = new Map();
|
|
39
|
+
for (const [itemStr, quantity] of Object.entries(mySessionItems())) {
|
|
40
|
+
const item = toItem(itemStr);
|
|
41
|
+
const mappedItem = itemMappings.get(item) ?? item;
|
|
42
|
+
inventory.set(mappedItem, quantity + (inventory.get(mappedItem) ?? 0));
|
|
43
|
+
}
|
|
44
|
+
return inventory;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Performa a binary element-wise operation on two inventories
|
|
48
|
+
* @param a The LHS inventory to perform the operation on
|
|
49
|
+
* @param b The RHS inventory to perform the operation on
|
|
50
|
+
* @param op an operator to compute between the sets
|
|
51
|
+
* @param commutative if true use the value of b for any items not in a. if false, ignore values not in a
|
|
52
|
+
* @returns a new map representing the combined inventories
|
|
53
|
+
*/
|
|
54
|
+
function inventoryOperation(a, b, op, commutative) {
|
|
55
|
+
// return every entry that is in a and not in b
|
|
56
|
+
const difference = new Map();
|
|
57
|
+
for (const [item, quantity] of a.entries()) {
|
|
58
|
+
const combinedQuantity = op(quantity, b.get(item) ?? 0);
|
|
59
|
+
difference.set(item, combinedQuantity);
|
|
60
|
+
}
|
|
61
|
+
if (commutative) {
|
|
62
|
+
for (const [item, quantity] of b.entries()) {
|
|
63
|
+
if (!a.has(item)) {
|
|
64
|
+
difference.set(item, quantity);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const diffEntries = [...difference.entries()];
|
|
69
|
+
return new Map(diffEntries.filter((value) => value[1] !== 0));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A wrapper around tracking items and meat gained from this session
|
|
73
|
+
* Smartly handles foldables being added/removed based on their state
|
|
74
|
+
* Provides operations to add sessions and subtract Sessions so you can isolate the value of each Session using a baseline
|
|
75
|
+
* @member meat the raw meat associated with this Session
|
|
76
|
+
* @member items a map representing the items gained/lost during this Session
|
|
77
|
+
*/
|
|
78
|
+
export class Session {
|
|
79
|
+
meat;
|
|
80
|
+
items;
|
|
81
|
+
/**
|
|
82
|
+
* Construct a new session
|
|
83
|
+
* @param meat the amount of meat associated with this session
|
|
84
|
+
* @param items the items associated with this session
|
|
85
|
+
*/
|
|
86
|
+
constructor(meat, items) {
|
|
87
|
+
this.meat = meat;
|
|
88
|
+
this.items = items;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Register session results that do not get tracked natively
|
|
92
|
+
* @param target either the Item or a string saying "meat" of what quantity to modify
|
|
93
|
+
* @param quantity How much to modify the tracked amount by
|
|
94
|
+
*/
|
|
95
|
+
register(target, quantity) {
|
|
96
|
+
if (target === "meat") {
|
|
97
|
+
this.meat += quantity;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.items.set(target, (this.items.get(target) ?? 0) + quantity);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Value this session
|
|
105
|
+
* @param itemValue a function that, when given an item, will give a meat value of the item
|
|
106
|
+
* @returns ItemResult with the full value of this session given the input function
|
|
107
|
+
*/
|
|
108
|
+
value(itemValue) {
|
|
109
|
+
// TODO: add garbo specific pricing (sugar equipment for synth, etc.)
|
|
110
|
+
const meat = Math.floor(this.meat);
|
|
111
|
+
const itemDetails = [...this.items.entries()].map(([item, quantity]) => {
|
|
112
|
+
return { item, quantity, value: itemValue(item) * quantity };
|
|
113
|
+
});
|
|
114
|
+
const items = Math.floor(sumNumbers(itemDetails.map((detail) => detail.value)));
|
|
115
|
+
return { meat, items, total: meat + items, itemDetails };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Subtract the contents of another session from this one, removing any items that have a resulting quantity of 0
|
|
119
|
+
* (this will ignore elements in b but not in a)
|
|
120
|
+
* @param other the session from which to pull values to remove from this session
|
|
121
|
+
* @returns a new session representing the difference between this session and the other session
|
|
122
|
+
*/
|
|
123
|
+
diff(other) {
|
|
124
|
+
return new Session(this.meat - other.meat, inventoryOperation(this.items, other.items, (a, b) => a - b, false));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Subtract the contents of snasphot b from session a, removing any items that have a resulting quantity of 0
|
|
128
|
+
* (this will ignore elements in b but not in a)
|
|
129
|
+
* @param a the session from which to subtract elements
|
|
130
|
+
* @param b the session from which to add elements
|
|
131
|
+
* @returns a new session representing the difference between a and b
|
|
132
|
+
*/
|
|
133
|
+
static diff(a, b) {
|
|
134
|
+
return a.diff(b);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Generate a new session combining multiple sessions together
|
|
138
|
+
* @param other the session from which to add elements to this set
|
|
139
|
+
* @returns a new session representing the addition of other to this
|
|
140
|
+
*/
|
|
141
|
+
add(other) {
|
|
142
|
+
return new Session(this.meat + other.meat, inventoryOperation(this.items, other.items, (a, b) => a + b, true));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Combine the contents of sessions
|
|
146
|
+
* @param sessions the set of sessions to combine together
|
|
147
|
+
* @returns a new session representing the difference between a and b
|
|
148
|
+
*/
|
|
149
|
+
static add(...sessions) {
|
|
150
|
+
return sessions.reduce((previousSession, currentSession) => previousSession.add(currentSession));
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Export this session to a file in the data/ directory. Conventionally this file should end in ".json"
|
|
154
|
+
* @param filename The file into which to export
|
|
155
|
+
*/
|
|
156
|
+
toFile(filename) {
|
|
157
|
+
const val = {
|
|
158
|
+
meat: this.meat,
|
|
159
|
+
items: Object.fromEntries(this.items),
|
|
160
|
+
};
|
|
161
|
+
bufferToFile(JSON.stringify(val), filename);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Import a session from a file in the data/ directory. Conventionally the file should end in ".json"
|
|
165
|
+
* @param filename The file from which to import
|
|
166
|
+
* @returns the session represented by the file
|
|
167
|
+
*/
|
|
168
|
+
static fromFile(filename) {
|
|
169
|
+
const fileValue = fileToBuffer(filename);
|
|
170
|
+
// fileToBuffer returns empty string for files that don't exist
|
|
171
|
+
if (fileValue.length > 0) {
|
|
172
|
+
const val = JSON.parse(fileValue);
|
|
173
|
+
const parsedItems = Object.entries(val.items).map(([itemStr, quantity]) => [toItem(itemStr), quantity]);
|
|
174
|
+
return new Session(val.meat, new Map(parsedItems));
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// if the file does not exist, return an empty session
|
|
178
|
+
return new Session(0, new Map());
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
static current() {
|
|
182
|
+
return new Session(mySessionMeat(), mySessionItemsWrapper());
|
|
183
|
+
}
|
|
184
|
+
}
|