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); } } } }