@@ -9,6 +9,7 @@ import { HANDOVER_TTL_THRESHOLD } from "consts";
9
9
import { getDesiredCountForRole } from "./spawnManager" ;
10
10
import { runHarvester } from "roles/role.harvester" ;
11
11
import { runUpgrader } from "roles/role.upgrader" ;
12
+ import { runBuilder } from "roles/role.builder" ;
12
13
13
14
/**
14
15
* Type Safe Ensure Global Tasks
@@ -50,7 +51,7 @@ const taskToRoleMap: Record<TaskType, Role> =
50
51
export const roleRunners : Record < Role , ( creep : Creep ) => void > = {
51
52
harvester : runHarvester ,
52
53
upgrader : runUpgrader ,
53
- builder : ( ) => { } ,
54
+ builder : runBuilder ,
54
55
energyMiner : ( ) => { } ,
55
56
lorry : ( ) => { } ,
56
57
repairer : ( ) => { } ,
@@ -66,38 +67,7 @@ export const roleRunners: Record<Role, (creep: Creep) => void> = {
66
67
*/
67
68
function runCreep ( creep : Creep , role : Role ) :void {
68
69
if ( ! creep ) return ;
69
- const mem = getCreepMemory ( creep ) ;
70
-
71
- // Reassignment logic (e.g., upgrade harvester to upgrader if storage is full) and cooldown has passed
72
- const cooldownTicks = 25 ;
73
- const canSwitch = ! mem . lastRoleChange || Game . time - mem . lastRoleChange > cooldownTicks ;
74
-
75
- if ( ( role === 'harvester' || role === 'upgrader' ) && canSwitch )
76
- {
77
- const room = creep . room ;
78
- const roomMemory = getRoomMemory ( room ) ;
79
- if ( ! roomMemory ) return ;
80
- const roomCreepCount = roomMemory . creepCounts || { } ;
81
-
82
- const maxUpgraders = room . controller ? room . controller . level : 1 ;
83
-
84
- if ( role === 'harvester' satisfies Role &&
85
- room . energyAvailable === room . energyCapacityAvailable &&
86
- ( roomCreepCount [ 'upgrader' ] || 0 ) < maxUpgraders )
87
- {
88
- // Don't let harvesters stand around doing nothing, start to upgrade instead.
89
- retaskHarvesterToUpgrader ( creep ) ;
90
- }
91
-
92
- if ( role === 'upgrader' satisfies Role &&
93
- creep . room . energyAvailable < creep . room . energyCapacityAvailable * 0.5 &&
94
- ( roomCreepCount [ "harvester" ] || 0 ) < 3 )
95
- {
96
- // Energy getting low in room? Convert back to harvester
97
- retaskUpgraderToHarvester ( creep ) ;
98
- }
99
- }
100
-
70
+
101
71
const runner = roleRunners [ role ] ;
102
72
103
73
if ( ! runner )
@@ -109,30 +79,6 @@ function runCreep(creep: Creep, role: Role):void {
109
79
roleRunners [ role ] ?.( creep ) ;
110
80
}
111
81
112
- /**
113
- * Swap role of harvester to upgrader
114
- * @param creep
115
- */
116
- function retaskHarvesterToUpgrader ( creep : Creep ) : void
117
- {
118
- const memory = getCreepMemory ( creep ) ;
119
-
120
- memory . role = 'upgrader' satisfies Role ;
121
- memory . lastRoleChange = Game . time ;
122
- }
123
-
124
- /**
125
- * Swap role of upgrader to harvester
126
- * @param creep
127
- */
128
- function retaskUpgraderToHarvester ( creep : Creep ) : void
129
- {
130
- const memory = getCreepMemory ( creep ) ;
131
-
132
- memory . role = 'harvester' satisfies Role ;
133
- memory . lastRoleChange = Game . time ;
134
- }
135
-
136
82
/**
137
83
* Swap role of harvester to builder
138
84
* @param creep
@@ -141,7 +87,7 @@ function retaskCreepToBuilder(creep: Creep): void
141
87
{
142
88
const memory = getCreepMemory ( creep ) ;
143
89
144
- memory . role = 'builder' satisfies Role ;
90
+ // memory.role = 'builder' satisfies Role;
145
91
memory . lastRoleChange = Game . time ;
146
92
}
147
93
@@ -330,7 +276,7 @@ function createTasks(room: Room, tasks: AnyTask[]): AnyTask[] | undefined
330
276
newTasks . push ( createTask (
331
277
"harvest" ,
332
278
{
333
- id : `harvest-${ source } - ${ Game . time } ` ,
279
+ id : `harvest-${ source } ` ,
334
280
maxCreeps : roomMemory . maxHarvesters / Object . keys ( roomMemory . sources ) . length ,
335
281
targetId : source as Id < Source > ,
336
282
method : ResourceAcquisitionMethod . Harvest ,
@@ -357,7 +303,7 @@ function createTasks(room: Room, tasks: AnyTask[]): AnyTask[] | undefined
357
303
newTasks . push ( createTask (
358
304
"harvest" ,
359
305
{
360
- id : `harvest-${ source } - ${ Game . time } ` ,
306
+ id : `harvest-${ source } ` ,
361
307
maxCreeps : roomMemory . maxHarvesters / Object . keys ( roomMemory . sources ) . length ,
362
308
targetId : source as Id < Source > ,
363
309
method : ResourceAcquisitionMethod . Harvest ,
@@ -371,7 +317,7 @@ function createTasks(room: Room, tasks: AnyTask[]): AnyTask[] | undefined
371
317
newTasks . push ( createTask (
372
318
"upgrade" ,
373
319
{
374
- id : `upgrade-${ Game . time } ` ,
320
+ id : `upgrade-${ room . controller . id } ` ,
375
321
maxCreeps : getDesiredCountForRole ( roomMemory . phase , 'upgrader' ) ,
376
322
targetId : room . controller . id ,
377
323
status : "untasked" ,
@@ -391,12 +337,12 @@ function createTasks(room: Room, tasks: AnyTask[]): AnyTask[] | undefined
391
337
continue ;
392
338
}
393
339
if ( isRoomStorageFull ( room ) ) continue ;
394
- if ( taskExists ( "harvest" , source as Id < Source > ) )
340
+ if ( ! taskExists ( "harvest" , source as Id < Source > ) )
395
341
{
396
342
newTasks . push ( createTask (
397
343
"harvest" ,
398
344
{
399
- id : `energyMiner -${ source } - ${ Game . time } ` ,
345
+ id : `harvest -${ source } ` ,
400
346
maxCreeps : 1 ,
401
347
targetId : source as Id < Source > ,
402
348
method : ResourceAcquisitionMethod . Harvest ,
@@ -409,7 +355,7 @@ function createTasks(room: Room, tasks: AnyTask[]): AnyTask[] | undefined
409
355
newTasks . push ( createTask (
410
356
"upgrade" ,
411
357
{
412
- id : `upgrade-${ Game . time } ` ,
358
+ id : `upgrade-${ room . controller . id } ` ,
413
359
maxCreeps : getDesiredCountForRole ( roomMemory . phase , 'upgrader' ) ,
414
360
targetId : room . controller . id ,
415
361
status : "untasked" ,
@@ -701,7 +647,7 @@ export const taskManager =
701
647
if ( mem . controllerProgress ?. level === undefined ) continue ;
702
648
if ( mem . controllerProgress ?. level !== room . controller ?. level ) mem . controllerProgress . level = room . controller ?. level ?? 0 ;
703
649
704
- mem . phase = getRoomPhase ( room ) ;
650
+ if ( Game . time % 500 === 0 ) mem . phase = getRoomPhase ( room ) ;
705
651
706
652
createTasks ( room , tasks ) ;
707
653
0 commit comments