Broker subscribers updates
This commit is contained in:
parent
592a55cecc
commit
098ff5d0d8
@ -112,6 +112,7 @@ Transform:
|
||||
- {fileID: 5990858872549904705}
|
||||
- {fileID: 6088225706018485977}
|
||||
- {fileID: 5849716072256962441}
|
||||
- {fileID: 1984011823945327289}
|
||||
- {fileID: 8352337540601452143}
|
||||
m_Father: {fileID: 1695802727639733595}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
@ -366,8 +367,53 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 670601208020570842}
|
||||
- {fileID: 3145042774550608289}
|
||||
- {fileID: 2860111524623448099}
|
||||
m_Father: {fileID: 1695802727639733595}
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -466,6 +512,7 @@ GameObject:
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8352337540601452143}
|
||||
- component: {fileID: 2749120375536215551}
|
||||
m_Layer: 0
|
||||
m_Name: AbsorbInterceptor
|
||||
m_TagString: Untagged
|
||||
@ -488,3 +535,59 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1232807570145535296}
|
||||
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
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _Rotation: 4.523739
|
||||
- _Rotation: 6.450734
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
|
||||
@ -396,6 +396,11 @@ RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 2863526721979749937, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||
m_PrefabInstance: {fileID: 3666263940844339160}
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2017,12 +2022,16 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
|
||||
value: 1
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
|
||||
value: 5
|
||||
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}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
|
||||
value:
|
||||
@ -2030,19 +2039,31 @@ PrefabInstance:
|
||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target
|
||||
value:
|
||||
objectReference: {fileID: 1992835500}
|
||||
objectReference: {fileID: 977202633}
|
||||
- target: {fileID: 4504414350240688175, guid: 99cd14f3361426a43b42af870871d83d, type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
|
||||
value: 2
|
||||
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}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
|
||||
value: Play
|
||||
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}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
|
||||
value: UnityEngine.Animator, UnityEngine
|
||||
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}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_StringArgument
|
||||
value: SwirlToCorner
|
||||
@ -2051,6 +2072,10 @@ PrefabInstance:
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
|
||||
value: UnityEngine.Object, UnityEngine
|
||||
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_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
|
||||
@ -2,12 +2,47 @@ using UnityEngine;
|
||||
|
||||
public class AbsorbInterceptor : BrokerInterceptor
|
||||
{
|
||||
AbsorbEffectInstance absorbEffect;
|
||||
|
||||
float finalValue;
|
||||
|
||||
protected override void 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
|
||||
finalValue = 0;
|
||||
|
||||
args.currentValue = finalValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -8,16 +8,16 @@ public class DebugBroker : MonoBehaviour
|
||||
{
|
||||
broker = GetComponentInParent<EntityEventBroker>();
|
||||
|
||||
broker.OnIncomingDamage.Subscribe((x) => DebugDamageArgs("dealing damage to", x));
|
||||
broker.OnIncomingDamageProcessed.Subscribe((x) => DebugDamageArgs("dealing damage to", x));
|
||||
broker.OnIncomingDamage.Subscribe((x) => DebugDamageArgs("OnIncomingDamage", x));
|
||||
broker.OnIncomingDamageProcessed.Subscribe((x) => DebugDamageArgs("OnIncomingDamageProcessed", x));
|
||||
|
||||
broker.OnOutgoingDamage.Subscribe((x) => DebugDamageArgs("dealing damage to", x));
|
||||
broker.OnOutgoingDamageProcessed.Subscribe((x) => DebugDamageArgs("dealing damage to", x));
|
||||
broker.OnOutgoingDamage.Subscribe((x) => DebugDamageArgs("OnOutgoingDamage", x));
|
||||
broker.OnOutgoingDamageProcessed.Subscribe((x) => DebugDamageArgs("OnOutgoingDamageProcessed", x));
|
||||
}
|
||||
|
||||
|
||||
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<DodgeArgs> OnDodge = new OrderedEvent<DodgeArgs>();
|
||||
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 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 const int BasicStatAmplification = 0;
|
||||
public const int PassiveEffects = 5;
|
||||
public const int PassiveAmplificationEffects = 5;
|
||||
public const int TemporaryAmplificationMods = 10;
|
||||
|
||||
|
||||
@ -93,6 +93,7 @@ public static class GameConstants
|
||||
public const int Dodge = 2;
|
||||
public const int Block = 3;
|
||||
public const int BasicStatMitigation = 5;
|
||||
public const int PassiveMitigationEffects = 7;
|
||||
public const int TemporaryMitigationMods = 10;
|
||||
public const int Absorb = 15;
|
||||
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)
|
||||
{
|
||||
if (isDead) return;
|
||||
@ -161,7 +144,6 @@ public class Health : Resource
|
||||
|
||||
HandleDamageIncomeModifierEffects();
|
||||
|
||||
HandleAbsorbEffects();
|
||||
|
||||
currentValue += incomingValue;
|
||||
|
||||
@ -230,7 +212,6 @@ public class Health : Resource
|
||||
HandleDamageIncomeModifierEffects();
|
||||
|
||||
|
||||
HandleAbsorbEffects();
|
||||
|
||||
currentValue += incomingValue;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user