From 30d9f06c5dd3ec785c6bfb4f24bc049cb4641af7 Mon Sep 17 00:00:00 2001 From: Henning Waberg Date: Mon, 23 Mar 2020 18:35:19 +0100 Subject: [PATCH 1/3] Implements Issue #825 --- .../Src/XComGame/Classes/XComUnitPawn.uc | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc b/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc index c835d08e2..e870fab57 100644 --- a/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc +++ b/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc @@ -377,6 +377,66 @@ simulated function DamageTypeHitEffectContainer GetDamageTypeHitEffectContainer( return DamageEffectContainer; } +/// HL-Docs: feature:OverrideHitEffects; issue:825; tags:tactical +/// Allows listeners to override the default behavior of XComUnitPawn.PlayHitEffects +/// This is especially useful for preventing the hardcoded templar fx for +/// eHit_Parry, eHit_Reflect and eHit_Deflect which play for any abilities that utilizing these hit results. +/// +/// ```unrealscript +/// EventID: OverrideHitEffects +/// EventData: XComLWTuple { +/// Data: [ +/// out bool OverrideHitEffect, +/// inout float Damage +/// inout Actor InstigatedBy +/// inout vector HitLocation +/// inout name DamageTypeName +/// inout vector Momentum +/// inout bool bIsUnitRuptured +/// inout EAbilityHitResult HitResult +/// ] +/// } +/// EventSource: self (XComUnitPawn) +/// NewGameState: no +/// ``` +simulated function bool TriggerOnOverrideHitEffects( + float Damage, + Actor InstigatedBy, + vector HitLocation, + name DamageTypeName, + vector Momentum, + bool bIsUnitRuptured, + EAbilityHitResult HitResult +) +{ + local XComLWTuple Tuple; + + Tuple = new class'XComLWTuple'; + Tuple.Id = 'OverrideHitEffects'; + Tuple.Data.Add(8); + Tuple.Data[0].kind = XComLWTVBool; + Tuple.Data[0].b = false; // Override default hit effects + Tuple.Data[1].kind = XComLWTVFloat; + Tuple.Data[1].f = Damage; + Tuple.Data[2].kind = XComLWTVObject; + Tuple.Data[2].o = InstigatedBy; + Tuple.Data[3].kind = XComLWTVVector; + Tuple.Data[3].v = HitLocation; + Tuple.Data[4].kind = XComLWTVName; + Tuple.Data[4].n = DamageTypeName; + Tuple.Data[5].kind = XComLWTVVector; + Tuple.Data[5].v = Momentum; + Tuple.Data[6].kind = XComLWTVBool; + Tuple.Data[6].b = bIsUnitRuptured; + Tuple.Data[7].kind = XComLWTVInt; + Tuple.Data[7].i = HitResult; + + `XEVENTMGR.TriggerEvent('OverrideHitEffects', Tuple, self); + + return Tuple.Data[0].b; +} + + simulated function PlayHitEffects(float Damage, Actor InstigatedBy, vector HitLocation, name DamageTypeName, vector Momentum, bool bIsUnitRuptured, EAbilityHitResult HitResult= eHit_Success, optional TraceHitInfo ThisHitInfo ) { local XComPawnHitEffect HitEffect; @@ -386,6 +446,13 @@ simulated function PlayHitEffects(float Damage, Actor InstigatedBy, vector HitLo local DamageTypeHitEffectContainer DamageContainer; local XGUnit SourceUnit; + // Start Issue #825 + if (TriggerOnOverrideHitEffects(Damage, InstigatedBy, HitLocation, DamageTypeName, Momentum, bIsUnitRuptured, HitResult)) + { + return; + } + // End Issue #825 + // The HitNormal used to have noise applied, via "* 0.5 * VRand();", but S.Jameson requested // that it be removed, since he can add noise with finer control via the editor. mdomowicz 2015_07_06 HitNormal = Normal(Momentum); From 632e6f0233c4eff79a41d35a6ad28c29b5e959f4 Mon Sep 17 00:00:00 2001 From: Musashi1584 <30629257+Musashi1584@users.noreply.github.com> Date: Mon, 20 Apr 2020 13:01:46 +0200 Subject: [PATCH 2/3] Update X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc Co-Authored-By: Xymanek --- X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc b/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc index e870fab57..14202024f 100644 --- a/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc +++ b/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc @@ -399,7 +399,7 @@ simulated function DamageTypeHitEffectContainer GetDamageTypeHitEffectContainer( /// EventSource: self (XComUnitPawn) /// NewGameState: no /// ``` -simulated function bool TriggerOnOverrideHitEffects( +simulated private function bool TriggerOnOverrideHitEffects( float Damage, Actor InstigatedBy, vector HitLocation, From 52d030ab62da645d2d12f00a68141dd50f8a057c Mon Sep 17 00:00:00 2001 From: Henning Waberg Date: Fri, 1 May 2020 18:14:09 +0200 Subject: [PATCH 3/3] Update documentation --- .../Src/XComGame/Classes/XComUnitPawn.uc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc b/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc index 14202024f..8643cac73 100644 --- a/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc +++ b/X2WOTCCommunityHighlander/Src/XComGame/Classes/XComUnitPawn.uc @@ -381,19 +381,20 @@ simulated function DamageTypeHitEffectContainer GetDamageTypeHitEffectContainer( /// Allows listeners to override the default behavior of XComUnitPawn.PlayHitEffects /// This is especially useful for preventing the hardcoded templar fx for /// eHit_Parry, eHit_Reflect and eHit_Deflect which play for any abilities that utilizing these hit results. +/// If OverrideHitEffect is set to true the PlayHitEffects function will return early and the default behavior is ommited. /// /// ```unrealscript /// EventID: OverrideHitEffects /// EventData: XComLWTuple { /// Data: [ /// out bool OverrideHitEffect, -/// inout float Damage -/// inout Actor InstigatedBy -/// inout vector HitLocation -/// inout name DamageTypeName -/// inout vector Momentum -/// inout bool bIsUnitRuptured -/// inout EAbilityHitResult HitResult +/// inout float Damage, +/// inout Actor InstigatedBy, +/// inout vector HitLocation, +/// inout name DamageTypeName, +/// inout vector Momentum, +/// inout bool bIsUnitRuptured, +/// inout EAbilityHitResult HitResult, /// ] /// } /// EventSource: self (XComUnitPawn)