|
|
|
|
|
PlaceObj('CharacterEffectCompositeDef', { |
|
'Group', "Health", |
|
'Id', "Berserker", |
|
'SortKey', 4, |
|
'Parameters', { |
|
PlaceObj('PresetParamPercent', { |
|
'Name', "damageBonus", |
|
'Value', 10, |
|
'Tag', "<damageBonus>%", |
|
}), |
|
PlaceObj('PresetParamNumber', { |
|
'Name', "stackCap", |
|
'Value', 5, |
|
'Tag', "<stackCap>", |
|
}), |
|
}, |
|
'object_class', "Perk", |
|
'unit_reactions', { |
|
PlaceObj('UnitReaction', { |
|
Event = "OnCalcBaseDamage", |
|
Handler = function (self, target, weapon, attack_target, data) |
|
local wounded = target:GetStatusEffect("Wounded") |
|
if wounded and wounded.stacks > 0 then |
|
local stackCap = self:ResolveValue("stackCap") |
|
local damagePerStack = self:ResolveValue("damageBonus") |
|
local stacks = Min(wounded.stacks, stackCap) |
|
local berserkerMod = damagePerStack*stacks |
|
|
|
data.modifier = data.modifier + berserkerMod |
|
data.breakdown[#data.breakdown + 1] = { name = self.DisplayName, value = berserkerMod } |
|
|
|
if target.team.player_enemy and g_Combat and not table.find(g_Combat.berserkVRsPerRole, target.role) then |
|
PlayVoiceResponse(target, "AIBerserkerPerk") |
|
table.insert(g_Combat.berserkVRsPerRole, target.role) |
|
end |
|
end |
|
end, |
|
}), |
|
}, |
|
'DisplayName', T(489115886772, "Rage"), |
|
'Description', T(709603782046, "Deal <em><percent(damageBonus)> Damage</em> per <GameTerm('Wound')>.\n\nCapped at <em><Multiply(damageBonus, stackCap)>%</em>."), |
|
'Icon', "UI/Icons/Perks/PainManagement", |
|
'Tier', "Silver", |
|
'Stat', "Health", |
|
'StatValue', 80, |
|
}) |
|
|
|
|