Skip to content

Commit

Permalink
refactored defenders and fixed issue that caused creeps to port back …
Browse files Browse the repository at this point in the history
…on room exit
  • Loading branch information
emin93 committed Aug 3, 2019
1 parent f53a00c commit 5b8fc46
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 54 deletions.
34 changes: 34 additions & 0 deletions src/Creeps/Defenders/Defender.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { defenderMoveOpts, defenderMoveToEnemyOpts, BaseCreepMemory } from '../Base';

export default (creep: Creep, attack: (target: Creep) => CreepActionReturnCode) => {
const memory = <BaseCreepMemory>creep.memory;
const flag = Game.flags['Flag1'];

if (!flag) {
return;
}

const closestEnemy = creep.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
const isCloseToFlag = creep.pos.inRangeTo(flag, 5);

if (memory.job !== 'defending' && closestEnemy && isCloseToFlag) {
memory.job = 'defending';
}

if (memory.job !== 'patrolling' && !closestEnemy) {
memory.job = 'patrolling';
}

if (memory.job === 'patrolling') {
creep.moveTo(flag.pos, defenderMoveOpts);
return;
}

if (!closestEnemy) {
return;
}

if (attack(closestEnemy) === ERR_NOT_IN_RANGE) {
creep.moveTo(closestEnemy.pos, defenderMoveToEnemyOpts);
}
};
29 changes: 2 additions & 27 deletions src/Creeps/Defenders/Melee.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,3 @@
import { defenderMoveOpts, defenderMoveToEnemyOpts, BaseCreepMemory } from '../Base';
import defend from './Defender';

export default (creep: Creep) => {
const memory = <BaseCreepMemory>creep.memory;
const closestEnemy = creep.pos.findClosestByRange(FIND_HOSTILE_CREEPS);

if (memory.job !== 'defending' && closestEnemy) {
memory.job = 'defending';
}

if (memory.job !== 'patrolling' && !closestEnemy) {
memory.job = 'patrolling';
}

if (memory.job === 'patrolling') {
const flag = creep.pos.findClosestByRange(FIND_FLAGS);
if (!flag) {
return;
}

creep.moveTo(flag, defenderMoveOpts);
return;
}

if (closestEnemy && creep.attack(closestEnemy) === ERR_NOT_IN_RANGE) {
creep.moveTo(closestEnemy, defenderMoveToEnemyOpts);
}
};
export default (creep: Creep) => defend(creep, creep.attack);
29 changes: 2 additions & 27 deletions src/Creeps/Defenders/Ranger.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,3 @@
import { defenderMoveOpts, defenderMoveToEnemyOpts, BaseCreepMemory } from '../Base';
import defend from './Defender';

export default (creep: Creep) => {
const memory = <BaseCreepMemory>creep.memory;
const closestEnemy = creep.pos.findClosestByRange(FIND_HOSTILE_CREEPS);

if (memory.job !== 'defending' && closestEnemy) {
memory.job = 'defending';
}

if (memory.job !== 'patrolling' && !closestEnemy) {
memory.job = 'patrolling';
}

if (memory.job === 'patrolling') {
const flag = creep.pos.findClosestByRange(FIND_FLAGS);
if (!flag) {
return;
}

creep.moveTo(flag, defenderMoveOpts);
return;
}

if (closestEnemy && creep.rangedAttack(closestEnemy) === ERR_NOT_IN_RANGE) {
creep.moveTo(closestEnemy, defenderMoveToEnemyOpts);
}
};
export default (creep: Creep) => defend(creep, creep.rangedAttack);

0 comments on commit 5b8fc46

Please sign in to comment.