Broker subscribers updates
This commit is contained in:
parent
592a55cecc
commit
098ff5d0d8
@ -112,6 +112,7 @@ Transform:
|
|||||||
- {fileID: 5990858872549904705}
|
- {fileID: 5990858872549904705}
|
||||||
- {fileID: 6088225706018485977}
|
- {fileID: 6088225706018485977}
|
||||||
- {fileID: 5849716072256962441}
|
- {fileID: 5849716072256962441}
|
||||||
|
- {fileID: 1984011823945327289}
|
||||||
- {fileID: 8352337540601452143}
|
- {fileID: 8352337540601452143}
|
||||||
m_Father: {fileID: 1695802727639733595}
|
m_Father: {fileID: 1695802727639733595}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -366,8 +367,53 @@ Transform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 670601208020570842}
|
- {fileID: 670601208020570842}
|
||||||
- {fileID: 3145042774550608289}
|
- {fileID: 3145042774550608289}
|
||||||
|
- {fileID: 2860111524623448099}
|
||||||
m_Father: {fileID: 1695802727639733595}
|
m_Father: {fileID: 1695802727639733595}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &7059394560846269332
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1984011823945327289}
|
||||||
|
- component: {fileID: 3923038257450023262}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Temp Incoming Mod Interceptor
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1984011823945327289
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7059394560846269332}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1232807570145535296}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &3923038257450023262
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7059394560846269332}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: ea668dfbd9dd0b94a8ff9d3f2062c14e, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::TemporaryIncomeModifierInterceptor
|
||||||
--- !u!1 &8090521145083935055
|
--- !u!1 &8090521145083935055
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -466,6 +512,7 @@ GameObject:
|
|||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 8352337540601452143}
|
- component: {fileID: 8352337540601452143}
|
||||||
|
- component: {fileID: 2749120375536215551}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: AbsorbInterceptor
|
m_Name: AbsorbInterceptor
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -488,3 +535,59 @@ Transform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1232807570145535296}
|
m_Father: {fileID: 1232807570145535296}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &2749120375536215551
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8299296301867067610}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 6de99a6f4bb244b4f98a4f762ad5c485, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::AbsorbInterceptor
|
||||||
|
--- !u!1 &8365795067992873118
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2860111524623448099}
|
||||||
|
- component: {fileID: 7846247177940105072}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Temp Outgoing Mod Interceptor
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &2860111524623448099
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8365795067992873118}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 2853615639420944899}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &7846247177940105072
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8365795067992873118}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: bc32ad4c0ff248e4aa48487bcab21545, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp::TemporaryOutgoingModifierInterceptor
|
||||||
|
|||||||
@ -78,7 +78,7 @@ Material:
|
|||||||
- _Mode: 0
|
- _Mode: 0
|
||||||
- _OcclusionStrength: 1
|
- _OcclusionStrength: 1
|
||||||
- _Parallax: 0.02
|
- _Parallax: 0.02
|
||||||
- _Rotation: 4.523739
|
- _Rotation: 6.450734
|
||||||
- _SmoothnessTextureChannel: 0
|
- _SmoothnessTextureChannel: 0
|
||||||
- _SpecularHighlights: 1
|
- _SpecularHighlights: 1
|
||||||
- _SrcBlend: 1
|
- _SrcBlend: 1
|
||||||
|
|||||||
@ -396,6 +396,11 @@ RectTransform:
|
|||||||
m_CorrespondingSourceObject: {fileID: 2863526721979749937, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
m_CorrespondingSourceObject: {fileID: 2863526721979749937, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
m_PrefabInstance: {fileID: 3666263940844339160}
|
m_PrefabInstance: {fileID: 3666263940844339160}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1 &977202633 stripped
|
||||||
|
GameObject:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 3603665853181784676, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 3666263940844339160}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!1 &997678533
|
--- !u!1 &997678533
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -2017,12 +2022,16 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
|
||||||
value: 1
|
value: 2
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
|
||||||
value: 5
|
value: 5
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
|
||||||
value:
|
value:
|
||||||
@ -2030,19 +2039,31 @@ PrefabInstance:
|
|||||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 1992835500}
|
objectReference: {fileID: 977202633}
|
||||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
|
||||||
value: 2
|
value: 2
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
|
||||||
value: Play
|
value: Play
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName
|
||||||
|
value: SetActive
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
|
||||||
value: UnityEngine.Animator, UnityEngine
|
value: UnityEngine.Animator, UnityEngine
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName
|
||||||
|
value: UnityEngine.GameObject, UnityEngine
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument
|
||||||
value: SwirlToCorner
|
value: SwirlToCorner
|
||||||
@ -2051,6 +2072,10 @@ PrefabInstance:
|
|||||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
|
||||||
value: UnityEngine.Object, UnityEngine
|
value: UnityEngine.Object, UnityEngine
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||||
|
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName
|
||||||
|
value: UnityEngine.Object, UnityEngine
|
||||||
|
objectReference: {fileID: 0}
|
||||||
m_RemovedComponents: []
|
m_RemovedComponents: []
|
||||||
m_RemovedGameObjects: []
|
m_RemovedGameObjects: []
|
||||||
m_AddedGameObjects: []
|
m_AddedGameObjects: []
|
||||||
|
|||||||
@ -2,12 +2,47 @@ using UnityEngine;
|
|||||||
|
|
||||||
public class AbsorbInterceptor : BrokerInterceptor
|
public class AbsorbInterceptor : BrokerInterceptor
|
||||||
{
|
{
|
||||||
|
AbsorbEffectInstance absorbEffect;
|
||||||
|
|
||||||
|
float finalValue;
|
||||||
|
|
||||||
protected override void Awake()
|
protected override void Awake()
|
||||||
{
|
{
|
||||||
base.Awake();
|
base.Awake();
|
||||||
|
|
||||||
|
absorbEffect = GetComponentInParent<AbsorbEffectInstance>();
|
||||||
|
|
||||||
|
broker.OnIncomingDamage.Subscribe(HandleAbsorbEffects, GameConstants.BrokerEventPriority.BasicStatMitigation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void HandleAbsorbEffects(DamageArgs args)
|
||||||
|
{
|
||||||
|
finalValue = args.currentValue;
|
||||||
|
|
||||||
|
if (finalValue >= 0) return;
|
||||||
|
|
||||||
|
AbsorbArgs absorbArgs = new AbsorbArgs()
|
||||||
|
{
|
||||||
|
user = user,
|
||||||
|
absorbedDamage = false,
|
||||||
|
absorbDepleted = false
|
||||||
|
};
|
||||||
|
|
||||||
|
if (absorbEffect.IsActive)
|
||||||
|
{
|
||||||
|
|
||||||
|
finalValue = absorbEffect.AbsorbDamage(finalValue);
|
||||||
|
|
||||||
|
if (finalValue > 0) //avoid complete absorbs turning into healing
|
||||||
|
finalValue = 0;
|
||||||
|
|
||||||
|
absorbArgs.absorbedDamage = true;
|
||||||
|
|
||||||
|
absorbArgs.absorbDepleted = absorbEffect.currentAmount <= 0;
|
||||||
|
|
||||||
|
args.currentValue = finalValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
broker.OnAbsorb.Invoke(absorbArgs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,6 +40,8 @@ public class BasicStatMitigationCalculator : BrokerInterceptor
|
|||||||
|
|
||||||
if (finalValue > 0) //avoid damage ultra mitigated turning into healing
|
if (finalValue > 0) //avoid damage ultra mitigated turning into healing
|
||||||
finalValue = 0;
|
finalValue = 0;
|
||||||
|
|
||||||
|
args.currentValue = finalValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,16 +8,16 @@ public class DebugBroker : MonoBehaviour
|
|||||||
{
|
{
|
||||||
broker = GetComponentInParent<EntityEventBroker>();
|
broker = GetComponentInParent<EntityEventBroker>();
|
||||||
|
|
||||||
broker.OnIncomingDamage.Subscribe((x) => DebugDamageArgs("dealing damage to", x));
|
broker.OnIncomingDamage.Subscribe((x) => DebugDamageArgs("OnIncomingDamage", x));
|
||||||
broker.OnIncomingDamageProcessed.Subscribe((x) => DebugDamageArgs("dealing damage to", x));
|
broker.OnIncomingDamageProcessed.Subscribe((x) => DebugDamageArgs("OnIncomingDamageProcessed", x));
|
||||||
|
|
||||||
broker.OnOutgoingDamage.Subscribe((x) => DebugDamageArgs("dealing damage to", x));
|
broker.OnOutgoingDamage.Subscribe((x) => DebugDamageArgs("OnOutgoingDamage", x));
|
||||||
broker.OnOutgoingDamageProcessed.Subscribe((x) => DebugDamageArgs("dealing damage to", x));
|
broker.OnOutgoingDamageProcessed.Subscribe((x) => DebugDamageArgs("OnOutgoingDamageProcessed", x));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void DebugDamageArgs(string prefix, DamageArgs args)
|
private void DebugDamageArgs(string prefix, DamageArgs args)
|
||||||
{
|
{
|
||||||
Debug.Log($"Broker Debugger: {args.user}'s {args.effect.name} {prefix}: {args.target} => {args.currentValue}, isCrit? {args.isCrit}, dmgType={args.damageType}, targets hit total ={args.totalTargetsHit}");
|
Debug.Log($"Broker Debugger || {prefix} ||: {args.user}'s {args.effect.name} dealing damage to: {args.target} => {args.currentValue}, isCrit? {args.isCrit}, dmgType={args.damageType}, targets hit total ={args.totalTargetsHit}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,36 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class TemporaryIncomeModifierInterceptor : BrokerInterceptor
|
||||||
|
{
|
||||||
|
DamageIncomeModifierEffectInstance incomeModifier;
|
||||||
|
|
||||||
|
float finalValue;
|
||||||
|
|
||||||
|
protected override void Awake()
|
||||||
|
{
|
||||||
|
base.Awake();
|
||||||
|
|
||||||
|
incomeModifier = GetComponentInParent<DamageIncomeModifierEffectInstance>();
|
||||||
|
|
||||||
|
broker.OnIncomingDamage.Subscribe(HandleDamageIncomeModifierEffects, GameConstants.BrokerEventPriority.TemporaryMitigationMods);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleDamageIncomeModifierEffects(DamageArgs args)
|
||||||
|
{
|
||||||
|
finalValue = args.currentValue;
|
||||||
|
|
||||||
|
if (finalValue >= 0) return;
|
||||||
|
|
||||||
|
if (incomeModifier.IsActive)
|
||||||
|
{
|
||||||
|
//Debug.Log("Incoming damage b4 mitigation: " + incomingValue);
|
||||||
|
|
||||||
|
finalValue = incomeModifier.ModifyDamageIncome(finalValue);
|
||||||
|
|
||||||
|
if (finalValue > 0) //avoid damage ultra mitigated turning into healing
|
||||||
|
finalValue = 0;
|
||||||
|
|
||||||
|
args.currentValue = finalValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ea668dfbd9dd0b94a8ff9d3f2062c14e
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class TemporaryOutgoingModifierInterceptor : BrokerInterceptor
|
||||||
|
{
|
||||||
|
DamageOutputModifierEffectInstance outgoingModifier;
|
||||||
|
|
||||||
|
float finalValue;
|
||||||
|
|
||||||
|
protected override void Awake()
|
||||||
|
{
|
||||||
|
base.Awake();
|
||||||
|
|
||||||
|
outgoingModifier = GetComponentInParent<DamageOutputModifierEffectInstance>();
|
||||||
|
|
||||||
|
broker.OnOutgoingDamage.Subscribe(HandleDamageOutgoingModifierEffects, GameConstants.BrokerEventPriority.TemporaryAmplificationMods);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleDamageOutgoingModifierEffects(DamageArgs args)
|
||||||
|
{
|
||||||
|
finalValue = args.currentValue;
|
||||||
|
|
||||||
|
if (outgoingModifier.IsActive)
|
||||||
|
{
|
||||||
|
//Debug.Log("Incoming damage b4 mitigation: " + incomingValue);
|
||||||
|
|
||||||
|
finalValue = outgoingModifier.ModifyDamageOutput(finalValue);
|
||||||
|
|
||||||
|
args.currentValue = finalValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bc32ad4c0ff248e4aa48487bcab21545
|
||||||
@ -25,6 +25,7 @@ public class EntityEventBroker : MonoBehaviour
|
|||||||
public OrderedEvent<InvulnerabilityArgs> OnInvulnerable = new OrderedEvent<InvulnerabilityArgs>();
|
public OrderedEvent<InvulnerabilityArgs> OnInvulnerable = new OrderedEvent<InvulnerabilityArgs>();
|
||||||
public OrderedEvent<DodgeArgs> OnDodge = new OrderedEvent<DodgeArgs>();
|
public OrderedEvent<DodgeArgs> OnDodge = new OrderedEvent<DodgeArgs>();
|
||||||
public OrderedEvent<BlockArgs> OnBlock = new OrderedEvent<BlockArgs>();
|
public OrderedEvent<BlockArgs> OnBlock = new OrderedEvent<BlockArgs>();
|
||||||
|
public OrderedEvent<AbsorbArgs> OnAbsorb = new OrderedEvent<AbsorbArgs>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -45,4 +45,11 @@ public class BlockArgs
|
|||||||
{
|
{
|
||||||
public Taggable user;
|
public Taggable user;
|
||||||
public bool blockedSuccessfully;
|
public bool blockedSuccessfully;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AbsorbArgs
|
||||||
|
{
|
||||||
|
public Taggable user;
|
||||||
|
public bool absorbedDamage;
|
||||||
|
public bool absorbDepleted;
|
||||||
}
|
}
|
||||||
@ -85,7 +85,7 @@ public static class GameConstants
|
|||||||
public static class BrokerEventPriority
|
public static class BrokerEventPriority
|
||||||
{
|
{
|
||||||
public const int BasicStatAmplification = 0;
|
public const int BasicStatAmplification = 0;
|
||||||
public const int PassiveEffects = 5;
|
public const int PassiveAmplificationEffects = 5;
|
||||||
public const int TemporaryAmplificationMods = 10;
|
public const int TemporaryAmplificationMods = 10;
|
||||||
|
|
||||||
|
|
||||||
@ -93,6 +93,7 @@ public static class GameConstants
|
|||||||
public const int Dodge = 2;
|
public const int Dodge = 2;
|
||||||
public const int Block = 3;
|
public const int Block = 3;
|
||||||
public const int BasicStatMitigation = 5;
|
public const int BasicStatMitigation = 5;
|
||||||
|
public const int PassiveMitigationEffects = 7;
|
||||||
public const int TemporaryMitigationMods = 10;
|
public const int TemporaryMitigationMods = 10;
|
||||||
public const int Absorb = 15;
|
public const int Absorb = 15;
|
||||||
public const int Procs = 30;
|
public const int Procs = 30;
|
||||||
|
|||||||
@ -89,23 +89,6 @@ public class Health : Resource
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void HandleAbsorbEffects()
|
|
||||||
{
|
|
||||||
if (incomingValue < 0)
|
|
||||||
{
|
|
||||||
if (absorbEffectInstance.IsActive)
|
|
||||||
{
|
|
||||||
//Debug.Log("Incoming damage b4 absorbs: " + incomingValue);
|
|
||||||
|
|
||||||
incomingValue = absorbEffectInstance.AbsorbDamage(incomingValue);
|
|
||||||
|
|
||||||
if (incomingValue > 0) //avoid complete absorbs turning into healing
|
|
||||||
incomingValue = 0;
|
|
||||||
}
|
|
||||||
//Debug.Log("Incoming damage after absorbs: " + incomingValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ApplyDamage(DamageArgs args)
|
public void ApplyDamage(DamageArgs args)
|
||||||
{
|
{
|
||||||
if (isDead) return;
|
if (isDead) return;
|
||||||
@ -161,7 +144,6 @@ public class Health : Resource
|
|||||||
|
|
||||||
HandleDamageIncomeModifierEffects();
|
HandleDamageIncomeModifierEffects();
|
||||||
|
|
||||||
HandleAbsorbEffects();
|
|
||||||
|
|
||||||
currentValue += incomingValue;
|
currentValue += incomingValue;
|
||||||
|
|
||||||
@ -230,7 +212,6 @@ public class Health : Resource
|
|||||||
HandleDamageIncomeModifierEffects();
|
HandleDamageIncomeModifierEffects();
|
||||||
|
|
||||||
|
|
||||||
HandleAbsorbEffects();
|
|
||||||
|
|
||||||
currentValue += incomingValue;
|
currentValue += incomingValue;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user