energy-relay
v0.0.0
Published
game mechanics for proximity-based energy relay realtime strategy games
Readme
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 defeatedmethods
var relay = require('energy-relay')var unit = relay(energy, opts={})
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.
var attack = unit.attack(defender)
Attack the defender relay with unit, returning an attack object.
attack.cancel()
Cancel an active attack.
events
attack.on('delta', function (deltas) {})
For the attack in progress, emit a 'delta' with 'attack' and 'defend'
keys every time the energy levels for the attacker or defender change.
attack.on('success', function () {})
When an attack was successful, the 'success' event fires.
attack.on('failure', function () {})
When an attack was unsuccessful because the attacker ran out of attack energy,
the 'failure' event is emitted.
attack.on('end', function () {})
When an attack is over for whatever reason, the 'end' event fires.
unit.on('damage', function (damage, attacker) {})
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.
unit.on('cost', function (cost) {})
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-relaylicense
MIT

