diff --git a/.gitmodules b/.gitmodules index 19cb479..401cd0d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "deps/Traveler"] path = deps/Traveler - url = https://github.com/UndefinedCpp/Traveler.git + url = https://github.com/screepers/Traveler.git [submodule "deps/screeps-packrat"] path = deps/screeps-packrat url = https://github.com/NekoKetsu/screeps-packrat.git diff --git a/deps/Traveler b/deps/Traveler index c65bb42..2fd1c0c 160000 --- a/deps/Traveler +++ b/deps/Traveler @@ -1 +1 @@ -Subproject commit c65bb420704cf027161405d7edfbc06f7298494e +Subproject commit 2fd1c0ce32ec214b93871ad4d780fd3952c8bbff diff --git a/package.json b/package.json index 096bb0a..f782b5f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "MIT", "scripts": { "build": "npx rspack build", - "lint": "npx eslint src/", + "lint": "npx tsc --noEmit && npx eslint src/", "test": "jest --passWithNoTests", "push": "yarn build && node ./upload.js" }, @@ -23,6 +23,7 @@ "@swc/core": "^1.15.5", "@swc/jest": "^0.2.39", "@types/jest": "^30.0.0", + "@types/lodash": "3.10.2", "@types/node": "^25.0.3", "@types/screeps-profiler": "^1.2.6", "@typescript-eslint/eslint-plugin": "^8.50.0", diff --git a/src/RoomPlanner/index.ts b/src/RoomPlanner/index.ts index 9a50ff0..c03cc67 100644 --- a/src/RoomPlanner/index.ts +++ b/src/RoomPlanner/index.ts @@ -222,7 +222,7 @@ export default profiler.registerFN(function (room: Room) { for (let i = 0; i < path.length; i++) { const pos = path[i]; structures[getCoord(pos.x, pos.y)] - = (i === path.length - 1 && "energy" in target) + = (i === path.length - 1 && "ticksToRegeneration" in target) ? STRUCTURE_CONTAINER : STRUCTURE_ROAD; } diff --git a/src/Tasks/Repair.ts b/src/Tasks/Repair.ts index 3e7ef5f..fe49581 100644 --- a/src/Tasks/Repair.ts +++ b/src/Tasks/Repair.ts @@ -26,6 +26,10 @@ export const runRepair = profiler.registerFN( return TaskStatus.DONE; } + if (target != null && target.hits >= target.hitsMax) { + return TaskStatus.DONE; + } + if (target == null || creep.repair(target) === ERR_NOT_IN_RANGE) { creep.travelTo(task.targetPos); diff --git a/src/Workers/Clerk.ts b/src/Workers/Clerk.ts index b89dc09..5dd10ca 100644 --- a/src/Workers/Clerk.ts +++ b/src/Workers/Clerk.ts @@ -23,8 +23,10 @@ const assignTask = (creep: Creep) => { } if (creep.room.controller != null) { if (creep.room.controller.ticksToDowngrade > 1000) { - const urgentRepair = creep.pos.findClosestByRange(FIND_MY_STRUCTURES, { - filter: s => s.hits < s.hitsMax * 0.3, + const urgentRepair = creep.pos.findClosestByRange(FIND_STRUCTURES, { + filter: s => s.hits < s.hitsMax * 0.3 && ("my" in s + ? s.my + : s.structureType === STRUCTURE_CONTAINER), }); if (urgentRepair != null) { return Tasks.Repair(urgentRepair); diff --git a/src/Workers/Constructor.ts b/src/Workers/Constructor.ts index 3b7a78f..dd272ec 100644 --- a/src/Workers/Constructor.ts +++ b/src/Workers/Constructor.ts @@ -21,10 +21,10 @@ const assignTask = (creep: Creep) => { } else { const urgentRepair = creep.pos.findClosestByRange(FIND_STRUCTURES, { - filter: s => "my" in s + filter: s => ("my" in s ? s.my - : s.structureType === STRUCTURE_CONTAINER - && s.hits < s.hitsMax * 0.3, + : s.structureType === STRUCTURE_CONTAINER) + && s.hits < s.hitsMax * 0.3, }); if (urgentRepair != null) { return Tasks.Repair(urgentRepair); diff --git a/src/index.ts b/src/index.ts index c5016e2..6882ffd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,13 @@ +import "../deps/Traveler/Traveler.js"; +import "../deps/Traveler/index.d.ts"; +import "./Proto"; +import profiler from "screeps-profiler"; + import { Clerk } from "./Workers/Clerk"; import { Constructor } from "./Workers/Constructor"; import { Miner } from "./Workers/Miner"; import { Upgrader } from "./Workers/Upgrader"; import { runWorkers, spawnWorkers } from "./Workers/worker"; -import "../deps/Traveler/Traveler"; -import profiler from "screeps-profiler"; -import "./Proto"; import RoomPlanner from "./RoomPlanner"; const runTowers = profiler.registerFN((spawn: StructureSpawn) => { diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 0000000..61e8c79 --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1,3 @@ +import lodash from "lodash"; + +declare const _ = typeof lodash; diff --git a/tsconfig.json b/tsconfig.json index 069aec3..c0f37f3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,10 +23,12 @@ }, "include": [ "next-env.d.ts", - "**/*.ts", - "**/*.tsx" + "src/**/*.ts", + "src/**/*.tsx", ], "exclude": [ - "node_modules" + "node_modules", + "deps", + "dist", ] - } \ No newline at end of file + } diff --git a/yarn.lock b/yarn.lock index 427da50..9584404 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1447,6 +1447,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== +"@types/lodash@3.10.2": + version "3.10.2" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-3.10.2.tgz#c1fbda1562ef5603c8192fe1fe65b017849d5873" + integrity sha512-TmlYodTNhMzVzv3CK/9sXGzh31jWsRKHE3faczhVgYFCdXIRQRCOPD+0NDlR+SvJlCj914yP3q3aAupt53p2Ug== + "@types/mime@^1": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690"