diff --git a/Assets/--2025/Prefabs/BrokerSubs/BrokerSubscribers.prefab b/Assets/--2025/Prefabs/BrokerSubs/BrokerSubscribers.prefab index 602ea664..26ee2ad9 100644 --- a/Assets/--2025/Prefabs/BrokerSubs/BrokerSubscribers.prefab +++ b/Assets/--2025/Prefabs/BrokerSubs/BrokerSubscribers.prefab @@ -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 diff --git a/Assets/Fantasy Skybox FREE/Panoramics/FS002/FS002_Night.mat b/Assets/Fantasy Skybox FREE/Panoramics/FS002/FS002_Night.mat index 180522f4..5ce0b1f2 100644 --- a/Assets/Fantasy Skybox FREE/Panoramics/FS002/FS002_Night.mat +++ b/Assets/Fantasy Skybox FREE/Panoramics/FS002/FS002_Night.mat @@ -78,7 +78,7 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - - _Rotation: 4.523739 + - _Rotation: 6.450734 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 diff --git a/Assets/Scenes/0-Splash.unity b/Assets/Scenes/0-Splash.unity index 4dc81057..b877a173 100644 --- a/Assets/Scenes/0-Splash.unity +++ b/Assets/Scenes/0-Splash.unity @@ -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: [] diff --git a/Assets/Scripts/EntityBroker/AbsorbInterceptor.cs b/Assets/Scripts/EntityBroker/AbsorbInterceptor.cs index 5b1d33b4..dae6ce27 100644 --- a/Assets/Scripts/EntityBroker/AbsorbInterceptor.cs +++ b/Assets/Scripts/EntityBroker/AbsorbInterceptor.cs @@ -2,12 +2,47 @@ using UnityEngine; public class AbsorbInterceptor : BrokerInterceptor { + AbsorbEffectInstance absorbEffect; + float finalValue; protected override void Awake() { base.Awake(); + + absorbEffect = GetComponentInParent(); + + 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); + } } diff --git a/Assets/Scripts/EntityBroker/BasicStatMitigationCalculator.cs b/Assets/Scripts/EntityBroker/BasicStatMitigationCalculator.cs index 76ba77ab..492e82ad 100644 --- a/Assets/Scripts/EntityBroker/BasicStatMitigationCalculator.cs +++ b/Assets/Scripts/EntityBroker/BasicStatMitigationCalculator.cs @@ -40,6 +40,8 @@ public class BasicStatMitigationCalculator : BrokerInterceptor if (finalValue > 0) //avoid damage ultra mitigated turning into healing finalValue = 0; + + args.currentValue = finalValue; } diff --git a/Assets/Scripts/EntityBroker/DebugBroker.cs b/Assets/Scripts/EntityBroker/DebugBroker.cs index 1c284791..af97a2dd 100644 --- a/Assets/Scripts/EntityBroker/DebugBroker.cs +++ b/Assets/Scripts/EntityBroker/DebugBroker.cs @@ -8,16 +8,16 @@ public class DebugBroker : MonoBehaviour { broker = GetComponentInParent(); - 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}"); } } diff --git a/Assets/Scripts/EntityBroker/TemporaryIncomeModifierInterceptor.cs b/Assets/Scripts/EntityBroker/TemporaryIncomeModifierInterceptor.cs new file mode 100644 index 00000000..b589737c --- /dev/null +++ b/Assets/Scripts/EntityBroker/TemporaryIncomeModifierInterceptor.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +public class TemporaryIncomeModifierInterceptor : BrokerInterceptor +{ + DamageIncomeModifierEffectInstance incomeModifier; + + float finalValue; + + protected override void Awake() + { + base.Awake(); + + incomeModifier = GetComponentInParent(); + + 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; + } + } +} diff --git a/Assets/Scripts/EntityBroker/TemporaryIncomeModifierInterceptor.cs.meta b/Assets/Scripts/EntityBroker/TemporaryIncomeModifierInterceptor.cs.meta new file mode 100644 index 00000000..a92c6653 --- /dev/null +++ b/Assets/Scripts/EntityBroker/TemporaryIncomeModifierInterceptor.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ea668dfbd9dd0b94a8ff9d3f2062c14e \ No newline at end of file diff --git a/Assets/Scripts/EntityBroker/TemporaryOutgoingModifierInterceptor.cs b/Assets/Scripts/EntityBroker/TemporaryOutgoingModifierInterceptor.cs new file mode 100644 index 00000000..f68d2c11 --- /dev/null +++ b/Assets/Scripts/EntityBroker/TemporaryOutgoingModifierInterceptor.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +public class TemporaryOutgoingModifierInterceptor : BrokerInterceptor +{ + DamageOutputModifierEffectInstance outgoingModifier; + + float finalValue; + + protected override void Awake() + { + base.Awake(); + + outgoingModifier = GetComponentInParent(); + + 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; + } + } +} diff --git a/Assets/Scripts/EntityBroker/TemporaryOutgoingModifierInterceptor.cs.meta b/Assets/Scripts/EntityBroker/TemporaryOutgoingModifierInterceptor.cs.meta new file mode 100644 index 00000000..b8701fb7 --- /dev/null +++ b/Assets/Scripts/EntityBroker/TemporaryOutgoingModifierInterceptor.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bc32ad4c0ff248e4aa48487bcab21545 \ No newline at end of file diff --git a/Assets/Scripts/EventDrivenHooks/EntityEventBroker.cs b/Assets/Scripts/EventDrivenHooks/EntityEventBroker.cs index 30d82857..961f5679 100644 --- a/Assets/Scripts/EventDrivenHooks/EntityEventBroker.cs +++ b/Assets/Scripts/EventDrivenHooks/EntityEventBroker.cs @@ -25,6 +25,7 @@ public class EntityEventBroker : MonoBehaviour public OrderedEvent OnInvulnerable = new OrderedEvent(); public OrderedEvent OnDodge = new OrderedEvent(); public OrderedEvent OnBlock = new OrderedEvent(); + public OrderedEvent OnAbsorb = new OrderedEvent(); } diff --git a/Assets/Scripts/EventDrivenHooks/EventBrokerArgs.cs b/Assets/Scripts/EventDrivenHooks/EventBrokerArgs.cs index 56d16235..9f9df90a 100644 --- a/Assets/Scripts/EventDrivenHooks/EventBrokerArgs.cs +++ b/Assets/Scripts/EventDrivenHooks/EventBrokerArgs.cs @@ -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; } \ No newline at end of file diff --git a/Assets/Scripts/Game/GameConstants.cs b/Assets/Scripts/Game/GameConstants.cs index 2cd9376f..4da0ba20 100644 --- a/Assets/Scripts/Game/GameConstants.cs +++ b/Assets/Scripts/Game/GameConstants.cs @@ -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; diff --git a/Assets/Scripts/Health.cs b/Assets/Scripts/Health.cs index eae1d9e2..6c939f41 100644 --- a/Assets/Scripts/Health.cs +++ b/Assets/Scripts/Health.cs @@ -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;