diff --git a/common/combat/damaging.trait.js b/common/combat/damaging.trait.js index 30303ef..a0127cc 100644 --- a/common/combat/damaging.trait.js +++ b/common/combat/damaging.trait.js @@ -35,11 +35,13 @@ export class Damaging extends Trait { } 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); + if (AVOCADO_SERVER) { + 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); + } } } } diff --git a/common/combat/vulnerable.trait.js b/common/combat/vulnerable.trait.js index deb6361..965ae5c 100644 --- a/common/combat/vulnerable.trait.js +++ b/common/combat/vulnerable.trait.js @@ -77,7 +77,7 @@ export class Vulnerable extends Trait { else { damage.from = undefined; } - this.entity.emit('tookDamage', damage, 'client'); + this.acceptDamage(damage); } break; default: @@ -86,6 +86,24 @@ export class Vulnerable extends Trait { } } + acceptDamage(damage) { + const context = createContext(); + context.add('entity', this.entity); + context.add('damage', damage); + const actions = behaviorItemFromJSON( + this._tookDamageActionsJSON + ); + const tuple = { + context, + actions, + }; + this.tookDamageActions.push(tuple); + actions.on('actionsFinished', () => { + const index = this.tookDamageActions.indexOf(tuple); + this.tookDamageActions.splice(tuple); + }); + } + addEmitter() { if (!this._isHydrating) { return; @@ -129,27 +147,6 @@ export class Vulnerable extends Trait { listeners() { return { - tookDamage: (damage, source) => { - if ('server' === source) { - return; - } - const context = createContext(); - context.add('entity', this.entity); - context.add('damage', damage); - const actions = behaviorItemFromJSON( - this._tookDamageActionsJSON - ); - const tuple = { - context, - actions, - }; - this.tookDamageActions.push(tuple); - actions.on('actionsFinished', () => { - const index = this.tookDamageActions.indexOf(tuple); - this.tookDamageActions.splice(tuple); - }); - }, - dying: () => { this._isInvulnerable = true; }, @@ -206,7 +203,7 @@ export class Vulnerable extends Trait { from: entity.instanceUuid, }; this.damageList[entity.instanceUuid].push(damage); - this.entity.emit('tookDamage', damage, 'server'); + this.entity.emit('tookDamage', damage); } }, diff --git a/webpack.client.config.js b/webpack.client.config.js index d5a0d05..3a46a2a 100644 --- a/webpack.client.config.js +++ b/webpack.client.config.js @@ -52,5 +52,9 @@ config.plugins.push(new HtmlWebpackPlugin({ config.plugins.push(new webpack.ProvidePlugin({ THREE: 'three', })); +config.plugins.push(new webpack.DefinePlugin({ + AVOCADO_CLIENT: true, + AVOCADO_SERVER: false, +})); module.exports = config; diff --git a/webpack.server.config.js b/webpack.server.config.js index 47abeae..ef57019 100644 --- a/webpack.server.config.js +++ b/webpack.server.config.js @@ -37,7 +37,10 @@ config.plugins.push(new StartServerPlugin({ nodeArgs: nodeArgs, signal: true, })); - +config.plugins.push(new webpack.DefinePlugin({ + AVOCADO_CLIENT: false, + AVOCADO_SERVER: true, +})); config.target = 'node'; module.exports = config;