From 83d4c39f0cba1b754c973641c2c4aeb9b004adb1 Mon Sep 17 00:00:00 2001 From: Moritz Meyerhof <moritz.meyerhof@rub.de> Date: Wed, 14 Apr 2021 23:20:07 +0200 Subject: [PATCH] Gain Mana when Hero takes Damage --- Assets/Animations/Glowing Orb.controller | 171 ++++++++++++++++ Assets/Animations/Glowing Orb.controller.meta | 8 + Assets/Animations/Pulse Mana Gain.anim | 187 ++++++++++++++++++ Assets/Animations/Pulse Mana Gain.anim.meta | 8 + Assets/Animations/Shine.controller | 72 +++++++ Assets/Animations/Shine.controller.meta | 8 + Assets/Prefabs/Particles/Glowing Orb.prefab | 40 ++++ Assets/Scenes/Forest.unity | 4 + Assets/Scripts/Fighters/Fighter.cs | 6 + Assets/Scripts/StatsManager.cs | 1 + .../Scripts/{Upgrades => UI}/ManaUpdater.cs | 0 .../{Upgrades => UI}/ManaUpdater.cs.meta | 0 12 files changed, 505 insertions(+) create mode 100644 Assets/Animations/Glowing Orb.controller create mode 100644 Assets/Animations/Glowing Orb.controller.meta create mode 100644 Assets/Animations/Pulse Mana Gain.anim create mode 100644 Assets/Animations/Pulse Mana Gain.anim.meta create mode 100644 Assets/Animations/Shine.controller create mode 100644 Assets/Animations/Shine.controller.meta rename Assets/Scripts/{Upgrades => UI}/ManaUpdater.cs (100%) rename Assets/Scripts/{Upgrades => UI}/ManaUpdater.cs.meta (100%) diff --git a/Assets/Animations/Glowing Orb.controller b/Assets/Animations/Glowing Orb.controller new file mode 100644 index 0000000..256d0a9 --- /dev/null +++ b/Assets/Animations/Glowing Orb.controller @@ -0,0 +1,171 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-8637012796324789370 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Idle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 8384082384621866541} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 54fcb48d6dd918d4fa33cf4529fa2399, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1109 &-7233473256202239054 +AnimatorTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -8637012796324789370} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 1 +--- !u!1107 &-3108275253469718723 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -8637012796324789370} + m_Position: {x: 280, y: 110, z: 0} + - serializedVersion: 1 + m_State: {fileID: 8608902993992507607} + m_Position: {x: 500, y: 20, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: + - {fileID: -7233473256202239054} + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 160, y: 10, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -8637012796324789370} +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Glowing Orb + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: ManaEarn + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 0} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -3108275253469718723} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1101 &324276667275477436 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: [] + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: -8637012796324789370} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &8384082384621866541 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 1 + m_ConditionEvent: ManaEarn + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 8608902993992507607} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &8608902993992507607 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Pulse Mana Gain + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 324276667275477436} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 9e26a86856333a541b6a92003e3fa660, type: 2} + m_Tag: + m_SpeedParameter: New Float + m_MirrorParameter: ManaEarn + m_CycleOffsetParameter: New Float + m_TimeParameter: diff --git a/Assets/Animations/Glowing Orb.controller.meta b/Assets/Animations/Glowing Orb.controller.meta new file mode 100644 index 0000000..a229580 --- /dev/null +++ b/Assets/Animations/Glowing Orb.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e398f2876d35db749860dd763c7d5423 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/Pulse Mana Gain.anim b/Assets/Animations/Pulse Mana Gain.anim new file mode 100644 index 0000000..ae932a0 --- /dev/null +++ b/Assets/Animations/Pulse Mana Gain.anim @@ -0,0 +1,187 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Pulse Mana Gain + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1, y: 1, z: 1} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.083333336 + value: {x: 1.5, y: 1.5, z: 1} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 0.16666667 + value: {x: 1, y: 1, z: 1} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: Shine + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 3332619963 + attribute: 3 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0.16666667 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 1.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalScale.x + path: Shine + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.083333336 + value: 1.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 0.16666667 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalScale.y + path: Shine + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalScale.z + path: Shine + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Animations/Pulse Mana Gain.anim.meta b/Assets/Animations/Pulse Mana Gain.anim.meta new file mode 100644 index 0000000..30c5403 --- /dev/null +++ b/Assets/Animations/Pulse Mana Gain.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e26a86856333a541b6a92003e3fa660 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Animations/Shine.controller b/Assets/Animations/Shine.controller new file mode 100644 index 0000000..64f80d2 --- /dev/null +++ b/Assets/Animations/Shine.controller @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-8211545628455695170 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Puls ManaGain + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 24b3a772a9ead2c4fa5aafd8c4eeb6f0, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &-1114070576879423505 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -8211545628455695170} + m_Position: {x: 200, y: 0, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -8211545628455695170} +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Shine + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: -1114070576879423505} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} diff --git a/Assets/Animations/Shine.controller.meta b/Assets/Animations/Shine.controller.meta new file mode 100644 index 0000000..6b8e620 --- /dev/null +++ b/Assets/Animations/Shine.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7215f642ef2d89346bf9b98944931b05 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Particles/Glowing Orb.prefab b/Assets/Prefabs/Particles/Glowing Orb.prefab index 685cf72..71df467 100644 --- a/Assets/Prefabs/Particles/Glowing Orb.prefab +++ b/Assets/Prefabs/Particles/Glowing Orb.prefab @@ -11,6 +11,7 @@ GameObject: - component: {fileID: 1381337821146569101} - component: {fileID: 1295383229990140769} - component: {fileID: 1296998045350311483} + - component: {fileID: 3230938412401016983} m_Layer: 0 m_Name: Shine m_TagString: Untagged @@ -4816,6 +4817,25 @@ ParticleSystemRenderer: m_Mesh2: {fileID: 0} m_Mesh3: {fileID: 0} m_MaskInteraction: 0 +--- !u!95 &3230938412401016983 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1385062244184263071} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 7215f642ef2d89346bf9b98944931b05, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 --- !u!1 &1386842959478205139 GameObject: m_ObjectHideFlags: 0 @@ -4827,6 +4847,7 @@ GameObject: - component: {fileID: 1381373968067528557} - component: {fileID: 1295248223193025435} - component: {fileID: 1294981154545005483} + - component: {fileID: 8082840330651344255} m_Layer: 0 m_Name: Glowing Orb m_TagString: Untagged @@ -9691,3 +9712,22 @@ ParticleSystemRenderer: m_Mesh2: {fileID: 0} m_Mesh3: {fileID: 0} m_MaskInteraction: 0 +--- !u!95 &8082840330651344255 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1386842959478205139} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: e398f2876d35db749860dd763c7d5423, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 diff --git a/Assets/Scenes/Forest.unity b/Assets/Scenes/Forest.unity index 45f710d..ca03187 100644 --- a/Assets/Scenes/Forest.unity +++ b/Assets/Scenes/Forest.unity @@ -373,6 +373,10 @@ PrefabInstance: propertyPath: currentMana value: 2000 objectReference: {fileID: 0} + - target: {fileID: 3799051240971953, guid: afeb708bd829d8a4aa0310ed2cd87a74, type: 3} + propertyPath: manaReceiveMultiplier + value: 100 + objectReference: {fileID: 0} - target: {fileID: 1805415820362754139, guid: afeb708bd829d8a4aa0310ed2cd87a74, type: 3} propertyPath: stopSprite value: diff --git a/Assets/Scripts/Fighters/Fighter.cs b/Assets/Scripts/Fighters/Fighter.cs index 0a48ca9..17e2e5d 100644 --- a/Assets/Scripts/Fighters/Fighter.cs +++ b/Assets/Scripts/Fighters/Fighter.cs @@ -87,6 +87,12 @@ public abstract class Fighter : MonoBehaviour, IRoundCallback } var actualDamage = Mathf.Max(0, Mathf.RoundToInt(dmg - baseArmor * GetStats().armorMultiplier)); currentHealth = Mathf.Max(currentHealth - actualDamage, 0); + + if (fighterType == FighterTypes.ANTI_PLAYER) + { + StatsManager.instance.ModifyMana((int)(actualDamage * StatsManager.instance.manaReceiveMultiplier)); + } + if (currentHealth == 0) { animator.SetTrigger("Death"); diff --git a/Assets/Scripts/StatsManager.cs b/Assets/Scripts/StatsManager.cs index aa5f009..743cae1 100644 --- a/Assets/Scripts/StatsManager.cs +++ b/Assets/Scripts/StatsManager.cs @@ -53,6 +53,7 @@ public class StatsManager : MonoBehaviour public static StatsManager instance { get; private set; } [SerializeField] int currentMana; + public float manaReceiveMultiplier; [SerializeField] List<Upgrade> availableUpgrades; // The currently active statistics for each fighter type diff --git a/Assets/Scripts/Upgrades/ManaUpdater.cs b/Assets/Scripts/UI/ManaUpdater.cs similarity index 100% rename from Assets/Scripts/Upgrades/ManaUpdater.cs rename to Assets/Scripts/UI/ManaUpdater.cs diff --git a/Assets/Scripts/Upgrades/ManaUpdater.cs.meta b/Assets/Scripts/UI/ManaUpdater.cs.meta similarity index 100% rename from Assets/Scripts/Upgrades/ManaUpdater.cs.meta rename to Assets/Scripts/UI/ManaUpdater.cs.meta -- GitLab