Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/simulation/components/Health.js
Show First 20 Lines • Show All 175 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
this.Reduce(this.hitpoints); | this.Reduce(this.hitpoints); | ||||
}; | }; | ||||
/** | /** | ||||
* Take damage according to the entity's resistance. | * Take damage according to the entity's resistance. | ||||
* @param {Object} strengths - { "hack": number, "pierce": number, "crush": number } or something like that. | * @param {Object} strengths - { "hack": number, "pierce": number, "crush": number } or something like that. | ||||
* @param {number} bonusMultiplier - the damage multiplier. | * @param {number} bonusMultiplier - the damage multiplier. | ||||
* Returns object of the form { "killed": false, "change": -12 }. | * Returns object of the form { "killed": false, "change": -12 }. | ||||
bb: @returns {Object} - Object of the form { "healthChange": number }. | |||||
*/ | */ | ||||
Health.prototype.TakeDamage = function(effectData, attacker, attackerOwner, bonusMultiplier) | Health.prototype.TakeDamage = function(effectData, attacker, attackerOwner, bonusMultiplier) | ||||
{ | { | ||||
let cmpResistance = Engine.QueryInterface(this.entity, IID_Resistance); | let cmpResistance = Engine.QueryInterface(this.entity, IID_Resistance); | ||||
if (cmpResistance && cmpResistance.IsInvulnerable()) | if (cmpResistance && cmpResistance.IsInvulnerable()) | ||||
return { "killed": false }; | return { "killed": false }; | ||||
let total = Attacking.GetTotalAttackEffects(effectData, "Damage", cmpResistance) * bonusMultiplier; | let total = Attacking.GetTotalAttackEffects(effectData, "Damage", this.entity) * bonusMultiplier; | ||||
// Reduce health | // Reduce health | ||||
let change = this.Reduce(total); | let change = this.Reduce(total); | ||||
let cmpLoot = Engine.QueryInterface(this.entity, IID_Loot); | let cmpLoot = Engine.QueryInterface(this.entity, IID_Loot); | ||||
if (cmpLoot && cmpLoot.GetXp() > 0 && change.HPchange < 0) | if (cmpLoot && cmpLoot.GetXp() > 0 && change.HPchange < 0) | ||||
change.xp = cmpLoot.GetXp() * -change.HPchange / this.GetMaxHitpoints(); | change.xp = cmpLoot.GetXp() * -change.HPchange / this.GetMaxHitpoints(); | ||||
▲ Show 20 Lines • Show All 242 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
@returns {Object} - Object of the form { "healthChange": number }.