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;