76 lines
2.4 KiB
JavaScript
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);
|
|
}
|