feat: affinity vulnerabilities
This commit is contained in:
parent
558fc568c9
commit
f38afb942d
|
@ -31,6 +31,7 @@ export class Vulnerable extends Trait {
|
||||||
playDamagingSound,
|
playDamagingSound,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
vulnerabilities: undefined,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,16 +179,23 @@ export class Vulnerable extends Trait {
|
||||||
const damageSpecs = entity.damageSpecs;
|
const damageSpecs = entity.damageSpecs;
|
||||||
for (let i = 0; i < damageSpecs.length; ++i) {
|
for (let i = 0; i < damageSpecs.length; ++i) {
|
||||||
const damageSpec = damageSpecs[i];
|
const damageSpec = damageSpecs[i];
|
||||||
|
let power = damageSpec.power;
|
||||||
|
// Check if vulnerable to this affinity.
|
||||||
|
if (this.params.vulnerabilities) {
|
||||||
|
if (damageSpec.affinity in this.params.vulnerabilities) {
|
||||||
|
power *= this.params.vulnerabilities[damageSpec.affinity];
|
||||||
|
}
|
||||||
|
}
|
||||||
if (this.locks.has(damageSpec)) {
|
if (this.locks.has(damageSpec)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
this.locks.set(damageSpec, damageSpec.lock);
|
this.locks.set(damageSpec, damageSpec.lock);
|
||||||
const variance = Math.random() * damageSpec.variance * 2 - damageSpec.variance;
|
const variance = Math.random() * damageSpec.variance * 2 - damageSpec.variance;
|
||||||
const difference = damageSpec.power * variance;
|
const difference = power * variance;
|
||||||
// Account for variance past 0, so track if it's damage or not.
|
// Account for variance past 0, so track if it's damage or not.
|
||||||
let amount = Math.round(damageSpec.power + difference);
|
let amount = Math.round(power + difference);
|
||||||
let isDamage;
|
let isDamage;
|
||||||
if (damageSpec.power < 0) {
|
if (power < 0) {
|
||||||
isDamage = false;
|
isDamage = false;
|
||||||
if (amount > 0) {
|
if (amount > 0) {
|
||||||
amount = 0;
|
amount = 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user