energy-relay

game mechanics for proximity-based energy relay realtime strategy games

energy-relay

game mechanics for proximity-based energy relay realtime strategy games

example

var relay = require('energy-relay');
 
var monster = relay({ attack : 100, defend : 3 });
var tree = relay({ attack : 0, defend : 10 });
 
var attack = monster.attack(tree);
attack.on('delta', function (delta) {
    console.log([
        'tree ' + delta.defend + ', monster ' + delta.attack,
        '  tree:    ' + JSON.stringify(tree.energy),
        '  monster: ' + JSON.stringify(monster.energy),
    ].join('\n'));
});
 
attack.on('failure', function () {
    console.log('tree withstood attack, out of attack energy');
});
 
attack.on('success', function () {
    console.log('tree was defeated');
});

$ node example/relay.js
tree 0, monster -9
  tree:    {"attack":0,"defend":10,"throughput":0,"radius":0,"storage":0,"generate":0}
  monster: {"attack":91,"defend":3,"throughput":0,"radius":0,"storage":0,"generate":0}
tree 0, monster -7
  tree:    {"attack":0,"defend":10,"throughput":0,"radius":0,"storage":0,"generate":0}
  monster: {"attack":84,"defend":3,"throughput":0,"radius":0,"storage":0,"generate":0}
tree -9, monster 0
  tree:    {"attack":0,"defend":1,"throughput":0,"radius":0,"storage":0,"generate":0}
  monster: {"attack":84,"defend":3,"throughput":0,"radius":0,"storage":0,"generate":0}
tree 0, monster -9
  tree:    {"attack":0,"defend":1,"throughput":0,"radius":0,"storage":0,"generate":0}
  monster: {"attack":75,"defend":3,"throughput":0,"radius":0,"storage":0,"generate":0}
tree -9, monster 0
  tree:    {"attack":0,"defend":0,"throughput":0,"radius":0,"storage":0,"generate":0}
  monster: {"attack":75,"defend":3,"throughput":0,"radius":0,"storage":0,"generate":0}
tree was defeated

methods

var relay = require('energy-relay')

Create a game unit with an energy levels object. The energy keys are:

  • defend
  • attack
  • storage

Specify opts.delay to set the amount of time between attack event.

Attack the defender relay with unit, returning an attack object.

Cancel an active attack.

events

For the attack in progress, emit a 'delta' with 'attack' and 'defend' keys every time the energy levels for the attacker or defender change.

When an attack was successful, the 'success' event fires.

When an attack was unsuccessful because the attacker ran out of attack energy, the 'failure' event is emitted.

When an attack is over for whatever reason, the 'end' event fires.

When a unit gets attacked, a 'damage' event is emitted with the amount of damage as an integer and the attacker unit responsible for the damage.

When a unit spends energy on attacks or transfers, the 'cost' event gets emitted with the 'cost.type' of transfer ('attack' or 'transfer') and the cost.value amount of energy.

install

With npm do:

npm install energy-relay

license

MIT