Files
Magic-Garden-Bot/verify_patch.js
2025-12-09 23:21:09 +00:00

76 lines
2.4 KiB
JavaScript

const fs = require('fs');
// Mock window/MagicBot
const callbacks = {};
global.window = {
MagicBot: {
state: {
garden: {},
inventory: {},
shops: {}
},
events: {
emit: (event, data) => {
console.log(`[Event] ${event} emitted`);
if (event === 'state_updated') {
// Check if shop restock time was updated
if (global.window.MagicBot.state.shops && global.window.MagicBot.state.shops.tool) {
console.log("Current Tool Restock Time:", global.window.MagicBot.state.shops.tool.secondsUntilRestock);
}
}
},
dispatchEvent: () => { },
addEventListener: () => { }
},
on: (event, callback) => {
callbacks[event] = callback;
},
emit: (name, detail) => {
// Mock the emit function we patched
console.log(`[MB.emit] ${name}`);
if (global.window.MagicBot.events.emit) {
global.window.MagicBot.events.emit(name, detail);
}
}
}
};
// Load modules
const stateJsContent = fs.readFileSync('/home/matiss/Documents/Code/magicbot/extension/modules/state.js', 'utf8');
eval(stateJsContent);
// Load Full State
const fullState = JSON.parse(fs.readFileSync('/home/matiss/Documents/Code/magicbot/fullstate.json', 'utf8'));
// 1. Simulate Welcome
console.log("\n--- Simulating Welcome ---");
callbacks['packet_received'](fullState);
// Check initial value
const initialRestock = global.window.MagicBot.state.shops.tool.secondsUntilRestock;
console.log("Initial Tool Restock Time:", initialRestock);
// 2. Simulate PartialState Patch
// User provided example: /child/data/shops/tool/secondsUntilRestock -> 380
const patchMsg = {
"type": "PartialState",
"patches": [
{ "op": "replace", "path": "/child/data/shops/tool/secondsUntilRestock", "value": 380 }
]
};
console.log("\n--- Simulating PartialState ---");
callbacks['packet_received'](patchMsg);
// Check final value
const finalRestock = global.window.MagicBot.state.shops.tool.secondsUntilRestock;
console.log("Final Tool Restock Time:", finalRestock);
if (finalRestock === 380) {
console.log("SUCCESS: Patch applied.");
} else {
console.error("FAILURE: Patch NOT applied. Expected 380, got " + finalRestock);
process.exit(1);
}