File size: 1,739 Bytes
b6a38d7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
-- ========== GENERATED BY CharacterEffectCompositeDef Editor DO NOT EDIT MANUALLY! ==========

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, --[[CharacterEffectCompositeDef Berserker DisplayName]] "Rage"),
	'Description', T(709603782046, --[[CharacterEffectCompositeDef Berserker Description]] "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,
})