#8 - Weapn/armor management
This commit is contained in:
@@ -261,8 +261,20 @@ export class SoSUtility extends Entity {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// DR management
|
||||
let armor = flipData.target.actor.data.items.find( item => item.type == 'armor' && item.data.worn);
|
||||
flipData.armorDR = armor ? armor.data.dr : 0;
|
||||
flipData.armorGel = armor ?armor.data.gel : 0;
|
||||
flipData.armorReflect = armor ? armor.data.reflect : 0;
|
||||
let dr = flipData.target.actor.data.data.scores.dr.value + flipData.armorDR;
|
||||
if (flipData.weapon.data.category == 'ballistic') {
|
||||
dr += flipData.armorGel;
|
||||
}
|
||||
if (flipData.weapon.data.category == 'laser') {
|
||||
dr += flipData.armorReflect;
|
||||
}
|
||||
|
||||
let dr = flipData.target.actor.data.data.scores.dr.value;
|
||||
let shock = flipData.target.actor.data.data.scores.shock.value || 1;
|
||||
let defenseCritical = flipData.target.actor.data.data.scores.defense.critical;
|
||||
flipData.damageStatus = 'apply_damage';
|
||||
@@ -274,25 +286,35 @@ export class SoSUtility extends Entity {
|
||||
if ( flipData.damageValue < dr) {
|
||||
if (flipData.damageValue < dr / 2) {
|
||||
flipData.damageStatus = "no_damage";
|
||||
// TODO : No damage !
|
||||
flipData.damageReason = "Damage are lesser than DR/2";
|
||||
} else {
|
||||
flipData.damageSeverity = this.decreaseSeverity(flipData.damageSeverity );
|
||||
if ( flipData.damageSeverity == 'N') {
|
||||
flipData.damageStatus = "no_damage";
|
||||
flipData.damageReason = "Severity decreased to nothing";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Shock management
|
||||
flipData.woundsList = [];
|
||||
if ( flipData.damageValue >= shock) {
|
||||
let incSeverity = Math.floor(flipData.damageValue / shock);
|
||||
for (let i=0; i<incSeverity; i++) {
|
||||
if ( flipData.damageSeverity == 'C') {
|
||||
flipData.woundsList.push( flipData.damageSeverity );
|
||||
flipData.damageSeverity = 'L';
|
||||
} else {
|
||||
flipData.damageSeverity = this.increaseSeverity( flipData.damageSeverity );
|
||||
flipData.nbStun = 0;
|
||||
if ( flipData.weapon.stun ) { // Stun weapon case
|
||||
if ( flipData.damageValue >= shock ) {
|
||||
flipData.nbStun = Math.floor(flipData.damageValue / shock);
|
||||
}
|
||||
} else {
|
||||
if ( flipData.damageValue >= shock ) {
|
||||
let incSeverity = Math.floor(flipData.damageValue / shock);
|
||||
for (let i=0; i<incSeverity; i++) {
|
||||
if ( flipData.damageSeverity == 'C') {
|
||||
flipData.woundsList.push( flipData.damageSeverity );
|
||||
flipData.damageSeverity = 'L';
|
||||
} else {
|
||||
flipData.nbStun++;
|
||||
flipData.damageSeverity = this.increaseSeverity( flipData.damageSeverity );
|
||||
flipData.damageReason = "Severity increased";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user