humus-old/common/combat/damaging.trait.js
2019-04-19 15:52:54 -05:00

43 lines
870 B
JavaScript

import * as I from 'immutable';
import {Trait} from '@avocado/entity';
export class Damaging extends Trait {
static defaultParams() {
return {
damageSpecs: [],
};
}
initialize() {
this._collidingWith = [];
const damageSpecsJSON = this.params.get('damageSpecs').toJS();
this._damageSpecs = damageSpecsJSON.map((damageSpec) => {
return {
affinity: 'physical',
lock: 0.1,
power: 0,
variance: 0.2,
...damageSpec,
};
});
}
get damageSpecs() {
return this._damageSpecs;
}
tick(elapsed) {
const isCollidingWith = this.entity.isCollidingWith;
for (let i = 0; i < isCollidingWith.length; ++i) {
const entity = isCollidingWith[i];
if (entity.is('vulnerable') && !entity.isInvulnerable) {
entity.takeDamageFrom(this.entity);
}
}
}
}