-- ========== GENERATED BY CharacterEffectCompositeDef Editor DO NOT EDIT MANUALLY! ========== PlaceObj('CharacterEffectCompositeDef', { 'Id', "Bleeding", 'Parameters', { PlaceObj('PresetParamNumber', { 'Name', "DamagePerTurn", 'Value', 5, 'Tag', "", }), PlaceObj('PresetParamNumber', { 'Name', "APLoss", 'Value', -1, 'Tag', "", }), PlaceObj('PresetParamPercent', { 'Name', "cth_penalty", 'Value', -10, 'Tag', "%", }), }, 'Comment', "reduced ap at start of turn, take damage at end turn; cth penalty", 'object_class', "StatusEffect", 'unit_reactions', { PlaceObj('UnitReaction', { Event = "OnEndTurn", Handler = function (self, target) if not IsInCombat() then return end if target:HasStatusEffect("BeingBandaged") then target:RemoveStatusEffect("Bleeding") return end local value = self:ResolveValue("DamagePerTurn") local floating_text = T{193053798048, " (bleeding)", num = value} local pov_team = GetPoVTeam() local has_visibility = HasVisibilityTo(pov_team, target) local log_msg = T{729241506274, " bleeds for damage", name = target:GetLogName(), num = value} target:TakeDirectDamage(value, has_visibility and floating_text or false, "short", log_msg) end, }), PlaceObj('UnitReaction', { Event = "OnCalcChanceToHit", Handler = function (self, target, attacker, action, attack_target, weapon1, weapon2, data) if target == attacker then ApplyCthModifier_Add(self, data, self:ResolveValue("cth_penalty")) end end, }), PlaceObj('UnitReaction', { Event = "OnCalcCritChance", Handler = function (self, target, attacker, attack_target, action, weapon, data) if target == attack_target and IsKindOf(data.weapon, "GutHookKnife") then data.guaranteed_crit = true end end, }), PlaceObj('UnitReaction', { Event = "OnUnitBandaged", Handler = function (self, target, healer, patient, hp_restored) if target == patient then target:RemoveStatusEffect(self.class) end end, }), }, 'DisplayName', T(779855732255, --[[CharacterEffectCompositeDef Bleeding DisplayName]] "Bleeding"), 'Description', T(303094247377, --[[CharacterEffectCompositeDef Bleeding Description]] "This character will take damage each turn until they are bandaged. Maximum AP decreased by ."), 'AddEffectText', T(902710213609, --[[CharacterEffectCompositeDef Bleeding AddEffectText]] " is bleeding"), 'OnAdded', function (self, obj) if g_Teams[g_CurrentTeam] == obj.team and not obj:HasStatusEffect("BeingBandaged") then obj:ConsumeAP(-self:ResolveValue("APLoss") * const.Scale.AP) end end, 'OnRemoved', function (self, obj) if g_Combat and not obj:HasStatusEffect("BeingBandaged") then obj:ConsumeAP(self:ResolveValue("APLoss") * const.Scale.AP) end end, 'type', "Debuff", 'Icon', "UI/Hud/Status effects/bleeding", 'RemoveOnEndCombat', true, 'Shown', true, 'HasFloatingText', true, })