76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
var customCreep = function() {
|
|
StructureSpawn.prototype.spawnCustomCreep = function(role, name, energy, behaviourLevel) {
|
|
var body_parts = [];
|
|
|
|
var body_pre = [];
|
|
var body_component = [];
|
|
var body_post = []
|
|
var body_pre_cost = 0;
|
|
var body_component_cost = 0;
|
|
var body_post_cost = 0;
|
|
|
|
switch(role) {
|
|
case 'upgrader':
|
|
body_component = [WORK, CARRY, CARRY, MOVE];
|
|
body_component_cost = 250;
|
|
break;
|
|
case 'harvester':
|
|
body_pre = [CARRY, CARRY, MOVE];
|
|
body_pre_cost = 150;
|
|
body_component = [WORK];
|
|
body_component_cost = 100;
|
|
break;
|
|
case 'refiller':
|
|
body_pre = [WORK, MOVE];
|
|
body_pre_cost = 150;
|
|
body_component = [CARRY, CARRY, MOVE];
|
|
body_component_cost = 150;
|
|
break;
|
|
case 'wallRepairer':
|
|
body_component = [WORK, CARRY, CARRY, MOVE, MOVE, MOVE];
|
|
body_component_cost = 350;
|
|
break;
|
|
case 'pickup':
|
|
body_pre = [WORK, MOVE];
|
|
body_pre_cost = 150;
|
|
body_component = [CARRY, CARRY, MOVE];
|
|
body_component_cost = 150;
|
|
break;
|
|
case 'repairer':
|
|
body_component = [WORK, CARRY, CARRY, MOVE, MOVE];
|
|
body_component_cost = 300;
|
|
break;
|
|
case 'builder':
|
|
body_component = [WORK, CARRY, CARRY, MOVE];
|
|
body_component_cost = 250;
|
|
break;
|
|
default:
|
|
body_component = [WORK, CARRY, MOVE];
|
|
body_component_cost = 200;
|
|
break;
|
|
}
|
|
|
|
var num_body_part_patches = Math.floor((energy - (body_pre_cost + body_post_cost)) / body_component_cost);
|
|
|
|
// Make pre-body
|
|
for(var part of body_pre) {
|
|
body_parts.push(part);
|
|
}
|
|
|
|
// Make component body
|
|
for(var i = 0; i < num_body_part_patches; i++) {
|
|
for(var part of body_component) {
|
|
body_parts.push(part);
|
|
}
|
|
}
|
|
|
|
// Make post-body
|
|
for(var part of body_post) {
|
|
body_parts.push(part);
|
|
}
|
|
|
|
return this.spawnCreep(body_parts, name, {memory: {role: role}});
|
|
}
|
|
}
|
|
|
|
module.exports = customCreep; |