Compare commits

...

2 Commits

Author SHA1 Message Date
00b86fa97c Runtime ability system 2025-06-13 21:56:16 +01:00
226eae666e bugfix default unlocked abilities on lvl up 2025-06-13 18:11:48 +01:00
44 changed files with 22384 additions and 94 deletions

View File

@ -597,97 +597,97 @@ AnimatorController:
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: throw
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: throwingTime
m_Type: 1
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: castingTime
m_Type: 1
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: cast
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: melee
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: spinning
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: dead
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: revived
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: summon
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: fish
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: pickup
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: potion
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: spellcasting
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: HorizontalAxis
m_Type: 1
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: VerticalAxis
m_Type: 1
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@ -971,7 +971,7 @@ BlendTree:
m_Motion: {fileID: -6411013857362534180, guid: e1e4fb5684939bb479c83e16bac91038, type: 3}
m_Threshold: 1
m_Position: {x: 0, y: -1}
m_TimeScale: 1
m_TimeScale: 1.4
m_CycleOffset: 0
m_DirectBlendParameter: movementSpeed
m_Mirror: 0

View File

@ -69,6 +69,33 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-7094606454041514897
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: GetHit
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 7935996317807482022}
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: 44db4b4bd52c40b4bae8350833cc9921, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-6583358953875725460
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -140,12 +167,16 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: 8488278609978172101}
m_Position: {x: 270, y: 110, z: 0}
- serializedVersion: 1
m_State: {fileID: -7094606454041514897}
m_Position: {x: 270, y: 180, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -4261361684640507111}
- {fileID: -6583358953875725460}
- {fileID: -3316037427580542980}
- {fileID: -8898158581012930404}
- {fileID: -4261361684640507111}
- {fileID: -961885149527338363}
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@ -323,13 +354,38 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-961885149527338363
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: hurt
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -7094606454041514897}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.025
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Skeleton
m_Name: Skeleton_Enemy
serializedVersion: 5
m_AnimatorParameters:
- m_Name: movementSpeed
@ -337,37 +393,43 @@ AnimatorController:
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: throw
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: cast
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: melee
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: throwingTime
m_Type: 1
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: dead
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_Controller: {fileID: 9100000}
- m_Name: hurt
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@ -488,6 +550,28 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &7935996317807482022
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: -2563821287706019269}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.2
m_TransitionOffset: 0
m_ExitTime: 0.8
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &8488278609978172101
AnimatorState:
serializedVersion: 6

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 44db4b4bd52c40b4bae8350833cc9921
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1548,7 +1548,7 @@ Canvas:
m_AdditionalShaderChannelsFlag: 25
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_SortingOrder: 5
m_TargetDisplay: 0
--- !u!114 &6787032289279707503
MonoBehaviour:
@ -8386,10 +8386,10 @@ MonoBehaviour:
- characterClass: {fileID: 11400000, guid: 504738889b9f3b14596e37f7bba80fbf, type: 2}
possibleClassAbilities:
- {fileID: 11400000, guid: db19571a96c2e6147a60a49bb343e08d, type: 2}
- {fileID: 11400000, guid: f78ff85297eeec34a941affb095f27f4, type: 2}
- {fileID: 11400000, guid: fe98f38f1a3841844a391b5ff4637669, type: 2}
- {fileID: 11400000, guid: da1fbcda369605140b8241d12c165bc4, type: 2}
- {fileID: 11400000, guid: b696826a7a31a58409292d48c32f862e, type: 2}
- {fileID: 11400000, guid: da1fbcda369605140b8241d12c165bc4, type: 2}
- {fileID: 11400000, guid: f78ff85297eeec34a941affb095f27f4, type: 2}
- {fileID: 11400000, guid: 093abebde2ce57648bc676fdedcdd026, type: 2}
- characterClass: {fileID: 11400000, guid: 8dffc501620b33a45b2aef5527d400bf, type: 2}
possibleClassAbilities:
@ -8418,10 +8418,10 @@ MonoBehaviour:
- characterClass: {fileID: 11400000, guid: 0a3bb425d50c35b409b74a648c994aac, type: 2}
possibleClassAbilities:
- {fileID: 11400000, guid: 41ce9d138621d414787fd48998b3ad0d, type: 2}
- {fileID: 11400000, guid: 65d6401bb544f4a4faa3169cde9d9bd0, type: 2}
- {fileID: 11400000, guid: 80407ff808963814798f148b07dbf576, type: 2}
- {fileID: 11400000, guid: f2c34fbff4781f84aa75dcc83f2fe57b, type: 2}
- {fileID: 11400000, guid: 3cab0af73858e9e48936aa83ba32d041, type: 2}
- {fileID: 11400000, guid: f2c34fbff4781f84aa75dcc83f2fe57b, type: 2}
- {fileID: 11400000, guid: 65d6401bb544f4a4faa3169cde9d9bd0, type: 2}
- {fileID: 11400000, guid: 445df66fd514f9640b3f2f228a7b4aee, type: 2}
- characterClass: {fileID: 11400000, guid: 334f27400a4a01e4caceed2c6b63bee9, type: 2}
possibleClassAbilities:
@ -8438,7 +8438,6 @@ MonoBehaviour:
- characterClass: {fileID: 11400000, guid: 292f720fb1a62f44c9d54c8ab56bc660, type: 2}
possibleClassAbilities:
- {fileID: 11400000, guid: 8476123513cabfe4c92edb83943222dd, type: 2}
- {fileID: 11400000, guid: fb2829af881bafe4aa4561c2c8edb0fa, type: 2}
- {fileID: 11400000, guid: 2b0bbebd842f1d94db336642767e1062, type: 2}
- {fileID: 11400000, guid: 3b796291bbf82db4c80fe16058fa90af, type: 2}
abilityTomeInstances: []
@ -14591,6 +14590,7 @@ Transform:
- {fileID: 7624448236951792051}
- {fileID: 2491171992559046387}
- {fileID: 4313186750705857994}
- {fileID: 3475843492364284939}
- {fileID: 7475116341184709870}
- {fileID: 7475116340900335231}
- {fileID: 7475116342680308986}
@ -14619,7 +14619,6 @@ Transform:
- {fileID: 882613633191811684}
- {fileID: 8612537344861635202}
- {fileID: 2447033682763886562}
- {fileID: 3475843492364284939}
- {fileID: 1380778743}
- {fileID: 315999698282489082}
- {fileID: 2800905167933415666}

View File

@ -78,7 +78,7 @@ Material:
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Rotation: 6.6876717
- _Rotation: 7.162766
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1

View File

@ -154,15 +154,15 @@ PrefabInstance:
- {fileID: 0}
m_RemovedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 753911528859556810, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: 0
addedObject: {fileID: 3493041237720686549}
- targetCorrespondingSourceObject: {fileID: 6879643804943630511, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: -1
addedObject: {fileID: 1412395578695396342}
- targetCorrespondingSourceObject: {fileID: 6879643804943630511, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: -1
addedObject: {fileID: 7704311964326511036}
- targetCorrespondingSourceObject: {fileID: 6879643804943630511, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: -1
addedObject: {fileID: 3493041237720686549}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
--- !u!4 &2208739293571583667 stripped
@ -170,18 +170,13 @@ Transform:
m_CorrespondingSourceObject: {fileID: 6879643804943630511, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
m_PrefabInstance: {fileID: 4746340150876425756}
m_PrefabAsset: {fileID: 0}
--- !u!4 &5451622410603664854 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 753911528859556810, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
m_PrefabInstance: {fileID: 4746340150876425756}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5043479866987318434
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 5451622410603664854}
m_TransformParent: {fileID: 2208739293571583667}
m_Modifications:
- target: {fileID: 1082793402966804016, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_Name
@ -229,15 +224,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

View File

@ -252,7 +252,6 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7192171109981835468}
- {fileID: 7681102452339790675}
- {fileID: 6975521718323349822}
- {fileID: 3238356846573237868}
@ -394,6 +393,7 @@ Transform:
m_Children:
- {fileID: 2650017693601061829}
- {fileID: 7910058261851551780}
- {fileID: 7192171109981835468}
m_Father: {fileID: 7681102451873883168}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7681102452339790700
@ -528,7 +528,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 7681102451873883168}
m_TransformParent: {fileID: 7681102452339790675}
m_Modifications:
- target: {fileID: 548295500233825645, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_Volume
@ -562,6 +562,18 @@ PrefabInstance:
propertyPath: clips.Array.data[4]
value:
objectReference: {fileID: 8300000, guid: edb6eaaf36222f9429a9b2214ec69ad0, type: 3}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalScale.x
value: 1.6666665
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalScale.y
value: 1.6666665
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalScale.z
value: 1.6666665
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalPosition.x
value: 0
@ -580,15 +592,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

View File

@ -660,7 +660,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 5286231604687820133}
m_TransformParent: {fileID: 2041114413699911168}
m_Modifications:
- target: {fileID: 1082793402966804016, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_Name
@ -708,15 +708,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -796,19 +796,23 @@ PrefabInstance:
propertyPath: m_Name
value: WhirlingAxes_AreaOfEffectOverTimePrefab Variant
objectReference: {fileID: 0}
- target: {fileID: 753911528859556823, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
propertyPath: impactHitVFX
value:
objectReference: {fileID: 8525990746615576120, guid: b85d21f3b8fed714bacf0c4fd50fa512, type: 3}
m_RemovedComponents:
- {fileID: 0}
m_RemovedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 753911528859556810, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: 0
addedObject: {fileID: 5263841305740460681}
- targetCorrespondingSourceObject: {fileID: 753911528859556810, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: 1
addedObject: {fileID: 3223532084018813462}
- targetCorrespondingSourceObject: {fileID: 6879643804943630511, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: -1
addedObject: {fileID: 1010363569}
- targetCorrespondingSourceObject: {fileID: 6879643804943630511, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: -1
addedObject: {fileID: 5263841305740460681}
- targetCorrespondingSourceObject: {fileID: 6879643804943630511, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
insertIndex: -1
addedObject: {fileID: 3223532084018813462}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
--- !u!4 &2041114413699911168 stripped
@ -816,18 +820,13 @@ Transform:
m_CorrespondingSourceObject: {fileID: 6879643804943630511, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
m_PrefabInstance: {fileID: 4839708415601315503}
m_PrefabAsset: {fileID: 0}
--- !u!4 &5286231604687820133 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 753911528859556810, guid: bc291c869c1aa9744be1f56806b8c99d, type: 3}
m_PrefabInstance: {fileID: 4839708415601315503}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6429879204983654753
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 5286231604687820133}
m_TransformParent: {fileID: 2041114413699911168}
m_Modifications:
- target: {fileID: 1082793402966804016, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_Name
@ -875,15 +874,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 8468962234435687287, guid: 7bbfd7a02f9b04a4db92a1a374338fb1, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

View File

@ -12,6 +12,7 @@ GameObject:
- component: {fileID: 5690275390890447421}
- component: {fileID: 6283201126310809669}
- component: {fileID: 4146203122506230047}
- component: {fileID: 8578451915293256687}
m_Layer: 31
m_Name: Skeleton
m_TagString: Untagged
@ -90,6 +91,33 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f965d6ce9b8ab3942a0f66c008c8a99c, type: 3}
m_Name:
m_EditorClassIdentifier:
onHurtAnimation:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 8578451915293256687}
m_TargetAssemblyTypeName: HitFlashEffect, Assembly-CSharp
m_MethodName: Flash
m_Mode: 4
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0.2
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &8578451915293256687
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1395015452859667197}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4242ef877b68dd04dafd9ddc4999e5cb, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &2278116590711127943
GameObject:
m_ObjectHideFlags: 0

View File

@ -114,7 +114,7 @@ Transform:
m_Children:
- {fileID: 883701297}
m_Father: {fileID: 4854261591842771834}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: -0.000031646465, y: 0.000034150955, z: 0.000007698198}
--- !u!1 &208040796
GameObject:
m_ObjectHideFlags: 0
@ -404,7 +404,7 @@ Transform:
- {fileID: 1221614091}
- {fileID: 758373147}
m_Father: {fileID: 191844203}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: -15.72, y: -1.3199889e-15, z: -1.6760567e-15}
--- !u!1 &998603998
GameObject:
m_ObjectHideFlags: 0
@ -688,7 +688,7 @@ Transform:
- {fileID: 1067042226}
- {fileID: 1812623856}
m_Father: {fileID: 883701297}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: -28.16005, y: 90.00001, z: 180}
--- !u!1 &1117225124
GameObject:
m_ObjectHideFlags: 0
@ -940,7 +940,7 @@ Transform:
- {fileID: 208040797}
- {fileID: 2107868437}
m_Father: {fileID: 883701297}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 20.865005, y: 65.928215, z: 135.9008}
--- !u!1 &1607996522
GameObject:
m_ObjectHideFlags: 0
@ -971,7 +971,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1430684330}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 61.839962, y: -179.99997, z: 90.00001}
--- !u!1 &1667623043
GameObject:
m_ObjectHideFlags: 0
@ -1143,7 +1143,9 @@ SkinnedMeshRenderer:
m_SkinnedMotionVectors: 1
m_Mesh: {fileID: 3418091426015535786, guid: c17378c69fdabda48a14e675c35d4546, type: 3}
m_Bones: []
m_BlendShapeWeights: []
m_BlendShapeWeights:
- 0
- 0
m_RootBone: {fileID: 0}
m_AABB:
m_Center: {x: 0.0023401976, y: 0.53248715, z: -0.01192829}
@ -1264,7 +1266,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1108935090}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 23.291727, y: 65.57953, z: -30.859875}
--- !u!1 &2037200327
GameObject:
m_ObjectHideFlags: 0
@ -1381,7 +1383,7 @@ Transform:
- {fileID: 1772013479}
- {fileID: 1401882046}
m_Father: {fileID: 883701297}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 15.457293, y: 4.774398e-16, z: 3.5179733e-15}
--- !u!1 &2107868436
GameObject:
m_ObjectHideFlags: 0

View File

@ -12,6 +12,7 @@ GameObject:
- component: {fileID: 6853293170635492090}
- component: {fileID: 5106598912658884738}
- component: {fileID: 719420356144337027}
- component: {fileID: 214227269696773679}
m_Layer: 31
m_Name: Skeleton
m_TagString: Untagged
@ -90,6 +91,33 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f965d6ce9b8ab3942a0f66c008c8a99c, type: 3}
m_Name:
m_EditorClassIdentifier:
onHurtAnimation:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 214227269696773679}
m_TargetAssemblyTypeName: HitFlashEffect, Assembly-CSharp
m_MethodName: Flash
m_Mode: 4
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0.2
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &214227269696773679
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 193713797072636474}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4242ef877b68dd04dafd9ddc4999e5cb, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &953848037517992138
GameObject:
m_ObjectHideFlags: 0

View File

@ -515,7 +515,7 @@ PrefabInstance:
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: selectedBuildSlots.Array.data[2].ability
value:
objectReference: {fileID: 11400000, guid: 5095271b44cdf9c44a2d72c98a05ec52, type: 2}
objectReference: {fileID: 11400000, guid: 3eb0543909f25a94eb803cdc9bb51da0, type: 2}
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: selectedBuildSlots.Array.data[3].ability
value:

View File

@ -103,7 +103,7 @@ PrefabInstance:
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: defaultBuildSlots.Array.data[2].ability
value:
objectReference: {fileID: 11400000, guid: da1fbcda369605140b8241d12c165bc4, type: 2}
objectReference: {fileID: 11400000, guid: b696826a7a31a58409292d48c32f862e, type: 2}
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: defaultBuildSlots.Array.data[3].ability
value:

View File

@ -295,11 +295,11 @@ PrefabInstance:
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: defaultBuildSlots.Array.data[1].ability
value:
objectReference: {fileID: 11400000, guid: 679598ad64000fa4aa4a8b5c1cb568e3, type: 2}
objectReference: {fileID: 11400000, guid: c602778d057001d4b929c6685f50bb59, type: 2}
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: defaultBuildSlots.Array.data[2].ability
value:
objectReference: {fileID: 11400000, guid: 48a85da984c9762418f0badd5730672a, type: 2}
objectReference: {fileID: 11400000, guid: e8ac285f957ac924babbb299999e6dbb, type: 2}
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: defaultBuildSlots.Array.data[3].ability
value:
@ -526,7 +526,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 2176522877944764073}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 96b7af24550accb4595e004a4977e512, type: 3}
m_Name:

View File

@ -257,7 +257,7 @@ PrefabInstance:
objectReference: {fileID: 11400000, guid: 2f597af241e09124aa5a0d69c6904f47, type: 2}
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: defaultBuildSlots.Array.size
value: 4
value: 3
objectReference: {fileID: 0}
- target: {fileID: 7454623061449465165, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: defaultBuildSlots.Array.data[0].ability

View File

@ -1188,8 +1188,6 @@ MonoBehaviour:
binderSlot: 1
- ability: {fileID: 0}
binderSlot: 2
- ability: {fileID: 0}
binderSlot: 3
abilityKeyBinders:
- {fileID: 4847227750113470832}
- {fileID: 6259208590911633741}
@ -1203,8 +1201,6 @@ MonoBehaviour:
binderSlot: 1
- ability: {fileID: 0}
binderSlot: 2
- ability: {fileID: 0}
binderSlot: 3
--- !u!1 &1802766295531197535
GameObject:
m_ObjectHideFlags: 0

View File

@ -2301,6 +2301,110 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 952476992021474036, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 952476992021474036, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 952476992021474036, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 952476992021474036, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 952476992021474036, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1868539959409642287, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1868539959409642287, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1868539959409642287, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1868539959409642287, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1868539959409642287, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1868539959409642287, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484889860, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484889860, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484889860, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484889860, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484889860, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484906414, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484906414, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484906414, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484906414, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484906414, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484922440, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484922440, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484922440, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484922440, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296484922440, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296485017366, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 1
@ -2313,6 +2417,10 @@ PrefabInstance:
propertyPath: m_SizeDelta.x
value: 450
objectReference: {fileID: 0}
- target: {fileID: 2959850296485017366, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2959850296485017366, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 168.74998
@ -2321,6 +2429,26 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -600
objectReference: {fileID: 0}
- target: {fileID: 3044532144327822992, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3044532144327822992, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3044532144327822992, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3044532144327822992, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3044532144327822992, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3269677882279797627, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -2345,6 +2473,66 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3641119934303568818, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3641119934303568818, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3641119934303568818, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3641119934303568818, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3641119934303568818, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4379688128455002370, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4379688128455002370, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4379688128455002370, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4379688128455002370, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4379688128455002370, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6069245676466788546, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6069245676466788546, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6069245676466788546, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6069245676466788546, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6069245676466788546, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116340865457954, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@ -2445,6 +2633,66 @@ PrefabInstance:
propertyPath: m_Name
value: Persistent Objects
objectReference: {fileID: 0}
- target: {fileID: 7475116342296211536, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296211536, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296211536, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296211536, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296211536, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296228278, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296228278, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296228278, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296228278, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296228278, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296244508, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296244508, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296244508, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296244508, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296244508, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296380174, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 1
@ -2457,6 +2705,10 @@ PrefabInstance:
propertyPath: m_SizeDelta.x
value: 450
objectReference: {fileID: 0}
- target: {fileID: 7475116342296380174, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7475116342296380174, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 506.24997
@ -2465,9 +2717,25 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: -600
objectReference: {fileID: 0}
- target: {fileID: 7864011832780438464, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SortingOrder
value: 5
- target: {fileID: 8244038924219432218, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8244038924219432218, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8244038924219432218, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8244038924219432218, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8244038924219432218, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []

View File

@ -12,8 +12,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a5d5cf82dd5c07f438f5809f773372e2, type: 3}
m_Name: 1-Werewolf_DeepClaw_SlashAbility
m_EditorClassIdentifier:
displayName: Claw
Icon: {fileID: 21300000, guid: 0389074d1deba1c448d45812db40c0df, type: 3}
displayName: Deep Claw
Icon: {fileID: 21300000, guid: c2be99b0e66fff4479ffbb35df20092e, type: 3}
targettingTags:
- {fileID: 11400000, guid: 3ac5bfbf7e1fbdd4baec1c17bd3d874c, type: 2}
tags:
@ -31,6 +31,7 @@ MonoBehaviour:
manaCost: 1
healthCost: 0
classResourceCost: 0
spiritPowerReserveCost: 0
percentMaxManaCost: 0.5
percentMaxHealthCost: 0
cooldown: 5

View File

@ -0,0 +1,52 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// ============================================================================
// 5. EASY MIGRATION HELPER - Update Your Existing Components
// ============================================================================
/// <summary>
/// Helper to easily convert your existing ability references
/// Just change "BaseAbility" to "RuntimeAbilityInstance" in your existing scripts
/// </summary>
public static class AbilityMigrationHelper
{
/// <summary>
/// Convert a BaseAbility to RuntimeAbilityInstance
/// </summary>
public static RuntimeAbilityInstance ToRuntime(this BaseAbility ability)
{
return new RuntimeAbilityInstance(ability);
}
/// <summary>
/// Create a modified version of an ability
/// </summary>
public static RuntimeAbilityInstance CreateModifiedVersion(BaseAbility baseAbility, params AbilityModifier[] modifiers)
{
var runtime = new RuntimeAbilityInstance(baseAbility);
foreach (var modifier in modifiers)
{
runtime.AddModifier(modifier);
}
return runtime;
}
/// <summary>
/// Create legendary version with special behaviors
/// </summary>
public static RuntimeAbilityInstance CreateLegendaryVersion(BaseAbility baseAbility, params RuntimeBehavior[] behaviors)
{
var runtime = new RuntimeAbilityInstance(baseAbility);
foreach (var behavior in behaviors)
{
runtime.AddBehavior(behavior);
}
return runtime;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fddd81fa3189fcf43a2207ea59bdae95
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,60 @@
// ============================================================================
// 2. ABILITY MODIFIER SYSTEM
// ============================================================================
using UnityEngine;
[System.Serializable]
public class AbilityModifier
{
[Header("Resource Cost Modifiers")]
public float manaCostMultiplier = 1f;
public float manaCostFlat = 0f;
public float healthCostMultiplier = 1f;
public float healthCostFlat = 0f;
public float classResourceCostMultiplier = 1f;
public float classResourceCostFlat = 0f;
[Header("Timing Modifiers")]
public float castTimeMultiplier = 1f;
public float cooldownMultiplier = 1f;
[Header("Effect Modifiers")]
public float damageMultiplier = 1f;
public float healingMultiplier = 1f;
public float durationMultiplier = 1f;
public float rangeMultiplier = 1f;
[Header("Meta Info")]
public string modifierName = "Unnamed Modifier";
public string description = "";
public float duration = -1f; // -1 = permanent
// Factory methods for common modifiers
public static AbilityModifier CreateDamageBoost(float multiplier, string name = "Damage Boost")
{
return new AbilityModifier
{
damageMultiplier = multiplier,
modifierName = name
};
}
public static AbilityModifier CreateCooldownReduction(float reductionPercent, string name = "Cooldown Reduction")
{
return new AbilityModifier
{
cooldownMultiplier = 1f - (reductionPercent / 100f),
modifierName = name
};
}
public static AbilityModifier CreateManaCostReduction(float reductionPercent, string name = "Mana Cost Reduction")
{
return new AbilityModifier
{
manaCostMultiplier = 1f - (reductionPercent / 100f),
modifierName = name
};
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 759877a48198a3549b2a51623fe20a7c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,59 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// ============================================================================
// 6. USAGE EXAMPLES - How to Use in Your Existing Code
// ============================================================================
public class AbilityUsageExamples : MonoBehaviour
{
[Header("Your Existing Abilities")]
public BaseAbility fireballAbility;
public BaseAbility healingAbility;
// These can now be RuntimeAbilityInstances!
private RuntimeAbilityInstance runtimeFireball;
private RuntimeAbilityInstance runtimeHealing;
private void Start()
{
// Convert your existing abilities
runtimeFireball = fireballAbility.ToRuntime();
runtimeHealing = healingAbility.ToRuntime();
// Example: Add legendary item effect
AddLegendaryFireballEffect();
}
private void AddLegendaryFireballEffect()
{
// This is how you'd handle your legendary item!
var explosionBehavior = new ExplodeOnHitBehavior
{
explosionRadius = 5f,
explosionDamage = 50f
};
runtimeFireball.AddBehavior(explosionBehavior);
// Also add a damage boost
var damageBoost = AbilityModifier.CreateDamageBoost(1.5f, "Legendary Damage");
runtimeFireball.AddModifier(damageBoost);
}
// Your existing ability usage code works exactly the same!
public void CastFireball()
{
var user = GetComponent<Taggable>();
// This works exactly like your old BaseAbility.Execute()
runtimeFireball.Execute(user);
}
public void CastFireballAtTarget(Transform target)
{
var user = GetComponent<Taggable>();
runtimeFireball.Execute(user, target);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d1d5a488d66722a468d8af337e46e1e1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 30b6d22e7928d8047a51992b3fda64b6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,74 @@
using System.Collections.Generic;
using UnityEngine;
public class ChainLightningBehavior : RuntimeBehavior
{
public int maxChains = 3;
public float chainRange = 8f;
public float damageMultiplier = 0.5f; // Each chain does 50% of original damage
public ChainLightningBehavior()
{
Trigger = BehaviorTrigger.OnHit;
BehaviorName = "Chain Lightning";
}
public override void Execute(RuntimeAbilityInstance ability, Taggable user, Transform target, Vector3 point)
{
if (target == null) return;
var currentTarget = target.GetComponent<Taggable>();
var chainedTargets = new List<Taggable> { currentTarget };
for (int i = 0; i < maxChains; i++)
{
var nextTarget = FindNextChainTarget(currentTarget.transform.position, chainedTargets);
if (nextTarget == null) break;
chainedTargets.Add(nextTarget);
// Apply reduced damage
var health = nextTarget.GetComponent<Health>();
if (health != null)
{
float chainDamage = CalculateChainDamage(ability, i + 1);
health.ChangeValue(-chainDamage);
}
currentTarget = nextTarget;
}
}
private Taggable FindNextChainTarget(Vector3 position, List<Taggable> excludeTargets)
{
var colliders = Physics.OverlapSphere(position, chainRange);
foreach (var collider in colliders)
{
var target = collider.GetComponent<Taggable>();
if (target != null && !excludeTargets.Contains(target))
{
return target;
}
}
return null;
}
private float CalculateChainDamage(RuntimeAbilityInstance ability, int chainNumber)
{
// This would need to be adapted to your damage system
// For now, just return a reduced amount
return 50f * Mathf.Pow(damageMultiplier, chainNumber);
}
public override RuntimeBehavior Clone()
{
return new ChainLightningBehavior
{
maxChains = this.maxChains,
chainRange = this.chainRange,
damageMultiplier = this.damageMultiplier
};
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3d7ec80971f1d2d4b93d7395e6dcf78c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,58 @@
// ============================================================================
// 4. COMMON RUNTIME BEHAVIORS - Your Legendary Item Effects!
// ============================================================================
using UnityEngine;
public class ExplodeOnHitBehavior : RuntimeBehavior
{
public GameObject explosionPrefab;
public float explosionRadius = 5f;
public float explosionDamage = 30f;
public LayerMask targetLayers = -1;
public ExplodeOnHitBehavior()
{
Trigger = BehaviorTrigger.OnHit;
BehaviorName = "Explode on Hit";
}
public override void Execute(RuntimeAbilityInstance ability, Taggable user, Transform target, Vector3 point)
{
Vector3 explosionPoint = target != null ? target.position : point;
// Spawn explosion visual if prefab exists
if (explosionPrefab != null)
{
Object.Instantiate(explosionPrefab, explosionPoint, Quaternion.identity);
}
// Find targets in explosion radius
var colliders = Physics.OverlapSphere(explosionPoint, explosionRadius, targetLayers);
foreach (var collider in colliders)
{
var explosionTarget = collider.GetComponent<Taggable>();
if (explosionTarget != null && explosionTarget != user)
{
// Apply explosion damage
var health = explosionTarget.GetComponent<Health>();
if (health != null)
{
health.ChangeValue(-explosionDamage);
}
}
}
}
public override RuntimeBehavior Clone()
{
return new ExplodeOnHitBehavior
{
explosionPrefab = this.explosionPrefab,
explosionRadius = this.explosionRadius,
explosionDamage = this.explosionDamage,
targetLayers = this.targetLayers
};
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7b92d75ddf02f444fa969dcb95660e60
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,34 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LifeStealBehavior : RuntimeBehavior
{
public float lifeStealPercent = 0.15f; // 15% life steal
public LifeStealBehavior()
{
Trigger = BehaviorTrigger.OnHit;
BehaviorName = "Life Steal";
}
public override void Execute(RuntimeAbilityInstance ability, Taggable user, Transform target, Vector3 point)
{
// This would need to track the damage dealt to calculate life steal
// For now, just heal a fixed amount
var userHealth = user.GetComponent<Health>();
if (userHealth != null)
{
float healAmount = 20f * lifeStealPercent; // Placeholder calculation
userHealth.ChangeValue(healAmount);
}
}
public override RuntimeBehavior Clone()
{
return new LifeStealBehavior
{
lifeStealPercent = this.lifeStealPercent
};
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 091400d6a45eaac4782ee5636a0f0d1f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,308 @@
// ============================================================================
// RUNTIME ABILITY WRAPPER - DROP-IN REPLACEMENT FOR BaseAbility
// ============================================================================
using System;
using System.Collections.Generic;
using UnityEngine;
// ============================================================================
// 1. RUNTIME ABILITY INSTANCE - Wraps Your Existing BaseAbility
// ============================================================================
/// <summary>
/// Runtime wrapper for BaseAbility that adds modifiers and behaviors
/// Can be used anywhere you currently use BaseAbility references
/// </summary>
public class RuntimeAbilityInstance
{
// ========================================================================
// CORE DATA - Wraps your existing ScriptableObject
// ========================================================================
[SerializeField] private BaseAbility sourceAbility;
private List<AbilityModifier> activeModifiers = new List<AbilityModifier>();
private List<RuntimeBehavior> runtimeBehaviors = new List<RuntimeBehavior>();
// Runtime state
private float lastUsedTime;
private int currentCharges;
// ========================================================================
// CONSTRUCTOR
// ========================================================================
public RuntimeAbilityInstance(BaseAbility source)
{
sourceAbility = source;
currentCharges = GetMaxCharges(); // In case you add charges later
RecalculateModifiedValues();
}
// ========================================================================
// PROPERTIES - Direct access to original + modified values
// ========================================================================
// Original values (unchanged)
public BaseAbility SourceAbility => sourceAbility;
public string displayName => sourceAbility.displayName;
public Sprite Icon => sourceAbility.Icon;
public List<TargetTag> targettingTags => sourceAbility.targettingTags;
public List<GameTag> tags => sourceAbility.tags;
public List<BaseEffect> abilityEffects => sourceAbility.abilityEffects;
public bool castableWhileMoving => sourceAbility.castableWhileMoving;
public AbilityAnimationType animationType => sourceAbility.animationType;
// Modified values (affected by modifiers)
public float manaCost { get; private set; }
public float healthCost { get; private set; }
public float classResourceCost { get; private set; }
public float spiritPowerReserveCost { get; private set; }
public float percentMaxManaCost { get; private set; }
public float percentMaxHealthCost { get; private set; }
public float castTime { get; private set; }
public float cooldown { get; private set; }
// Runtime state properties
public float LastUsedTime => lastUsedTime;
public bool IsOnCooldown => Time.time < lastUsedTime + cooldown;
public float CooldownRemaining => Mathf.Max(0f, (lastUsedTime + cooldown) - Time.time);
public List<AbilityModifier> ActiveModifiers => new List<AbilityModifier>(activeModifiers);
public List<RuntimeBehavior> RuntimeBehaviors => new List<RuntimeBehavior>(runtimeBehaviors);
// ========================================================================
// EXECUTION METHODS - Same signature as your BaseAbility
// ========================================================================
public virtual void Execute(Taggable user)
{
if (!CanExecute(user)) return;
// Execute pre-cast behaviors
ExecuteBehaviors(BehaviorTrigger.PreCast, user, null, Vector3.zero);
// Execute original ability
sourceAbility.Execute(user);
// Execute post-cast behaviors
ExecuteBehaviors(BehaviorTrigger.PostCast, user, null, Vector3.zero);
// Update runtime state
lastUsedTime = Time.time;
}
public virtual void Execute(Taggable user, Vector3 point)
{
if (!CanExecute(user)) return;
ExecuteBehaviors(BehaviorTrigger.PreCast, user, null, point);
sourceAbility.Execute(user, point);
ExecuteBehaviors(BehaviorTrigger.PostCast, user, null, point);
lastUsedTime = Time.time;
}
public virtual void Execute(Taggable user, Transform target)
{
if (!CanExecute(user)) return;
ExecuteBehaviors(BehaviorTrigger.PreCast, user, target, target.position);
sourceAbility.Execute(user, target);
ExecuteBehaviors(BehaviorTrigger.PostCast, user, target, target.position);
lastUsedTime = Time.time;
}
// ========================================================================
// ABILITY STATE CHECKS
// ========================================================================
public bool CanExecute(Taggable user)
{
// Check cooldown
if (IsOnCooldown) return false;
// Check resources using modified costs
return CanAffordResources(user);
}
private bool CanAffordResources(Taggable user)
{
// Use the modified costs, not original
var userMana = user.GetComponent<Mana>();
if (userMana != null)
{
float finalManaCost = manaCost + userMana.GetMaxValue() * percentMaxManaCost;
if (!userMana.EnoughMana(finalManaCost)) return false;
}
var userHealth = user.GetComponent<Health>();
if (userHealth != null)
{
float finalHealthCost = healthCost + userHealth.GetMaxValue() * percentMaxHealthCost;
if (userHealth.GetCurrentValue() <= finalHealthCost) return false;
}
var userClassResource = user.GetComponent<ClassResource>();
if (userClassResource != null && classResourceCost > 0)
{
if (userClassResource.GetCurrentValue() < classResourceCost) return false;
}
return true;
}
public float GetFinalManaCost(Mana userMana)
{
return manaCost + userMana.GetMaxValue() * percentMaxManaCost;
}
public float GetFinalHealthCost(Health userHealth)
{
return healthCost + userHealth.GetMaxValue() * percentMaxHealthCost;
}
// ========================================================================
// MODIFIER SYSTEM
// ========================================================================
public void AddModifier(AbilityModifier modifier)
{
activeModifiers.Add(modifier);
RecalculateModifiedValues();
}
public void RemoveModifier(AbilityModifier modifier)
{
activeModifiers.Remove(modifier);
RecalculateModifiedValues();
}
public void RemoveAllModifiers()
{
activeModifiers.Clear();
RecalculateModifiedValues();
}
private void RecalculateModifiedValues()
{
// Start with original values
manaCost = sourceAbility.manaCost;
healthCost = sourceAbility.healthCost;
classResourceCost = sourceAbility.classResourceCost;
spiritPowerReserveCost = sourceAbility.spiritPowerReserveCost;
percentMaxManaCost = sourceAbility.percentMaxManaCost;
percentMaxHealthCost = sourceAbility.percentMaxHealthCost;
castTime = sourceAbility.castTime;
cooldown = sourceAbility.cooldown;
// Apply all modifiers
foreach (var modifier in activeModifiers)
{
ApplyModifier(modifier);
}
}
private void ApplyModifier(AbilityModifier modifier)
{
// Resource cost modifiers
manaCost = manaCost * modifier.manaCostMultiplier + modifier.manaCostFlat;
healthCost = healthCost * modifier.healthCostMultiplier + modifier.healthCostFlat;
classResourceCost = classResourceCost * modifier.classResourceCostMultiplier + modifier.classResourceCostFlat;
// Timing modifiers
castTime *= modifier.castTimeMultiplier;
cooldown *= modifier.cooldownMultiplier;
// Ensure values don't go negative
manaCost = Mathf.Max(0f, manaCost);
healthCost = Mathf.Max(0f, healthCost);
classResourceCost = Mathf.Max(0f, classResourceCost);
castTime = Mathf.Max(0f, castTime);
cooldown = Mathf.Max(0f, cooldown);
}
// ========================================================================
// RUNTIME BEHAVIOR SYSTEM
// ========================================================================
public void AddBehavior(RuntimeBehavior behavior)
{
runtimeBehaviors.Add(behavior);
}
public void RemoveBehavior(RuntimeBehavior behavior)
{
runtimeBehaviors.Remove(behavior);
}
public T GetBehavior<T>() where T : RuntimeBehavior
{
return runtimeBehaviors.Find(b => b is T) as T;
}
public void RemoveBehavior<T>() where T : RuntimeBehavior
{
for (int i = runtimeBehaviors.Count - 1; i >= 0; i--)
{
if (runtimeBehaviors[i] is T)
{
runtimeBehaviors.RemoveAt(i);
}
}
}
private void ExecuteBehaviors(BehaviorTrigger trigger, Taggable user, Transform target, Vector3 point)
{
foreach (var behavior in runtimeBehaviors)
{
if (behavior.Trigger == trigger)
{
behavior.Execute(this, user, target, point);
}
}
}
// ========================================================================
// UTILITY METHODS
// ========================================================================
public RuntimeAbilityInstance Clone()
{
var clone = new RuntimeAbilityInstance(sourceAbility);
// Copy modifiers
foreach (var modifier in activeModifiers)
{
clone.AddModifier(modifier);
}
// Copy behaviors
foreach (var behavior in runtimeBehaviors)
{
clone.AddBehavior(behavior.Clone());
}
return clone;
}
private int GetMaxCharges()
{
// Future: add charge system
return 1;
}
// ========================================================================
// IMPLICIT CONVERSION - Makes it work seamlessly
// ========================================================================
public static implicit operator BaseAbility(RuntimeAbilityInstance instance)
{
return instance.sourceAbility;
}
public static implicit operator RuntimeAbilityInstance(BaseAbility ability)
{
return new RuntimeAbilityInstance(ability);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 63ca0a6b1e4e799418c4e8dd0cf4ace5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,19 @@
using UnityEngine;
public enum BehaviorTrigger
{
PreCast, // Before ability executes
PostCast, // After ability executes
OnHit, // When ability hits target
OnKill, // When ability kills target
OnCrit // When ability crits
}
public abstract class RuntimeBehavior
{
public BehaviorTrigger Trigger { get; set; }
public string BehaviorName { get; set; }
public abstract void Execute(RuntimeAbilityInstance ability, Taggable user, Transform target, Vector3 point);
public abstract RuntimeBehavior Clone();
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0a8f3389f97c1f343ba02dc9b50a1848
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -93,7 +93,7 @@ public class BuildManagerUIController : MonoBehaviour
abilitySlotsDropdowns[i].RefreshShownValue();
abilitySlotsDropdowns[i].value = possibleAbilities.IndexOf(buildManager.SelectedBuildSlots[i].ability);
abilitySlotsDropdowns[i].SetValueWithoutNotify(possibleAbilities.IndexOf(buildManager.SelectedBuildSlots[i].ability));
}
CheckForSlotUnlockables();

View File

@ -0,0 +1,38 @@
using System.Collections;
using UnityEngine;
public class HitFlashEffect : MonoBehaviour
{
private MaterialPropertyBlock propertyBlock;
private Renderer[] renderers;
void Awake()
{
propertyBlock = new MaterialPropertyBlock();
renderers = GetComponentsInChildren<Renderer>();
}
public void Flash(float duration)
{
StartCoroutine(FlashCoroutine(duration));
}
IEnumerator FlashCoroutine(float duration)
{
// Set flash
propertyBlock.SetColor("_EmissionColor", Color.white * 2f);
foreach (var r in renderers)
{
r.GetPropertyBlock(propertyBlock);
propertyBlock.SetColor("_EmissionColor", Color.white * 2f);
r.SetPropertyBlock(propertyBlock);
}
yield return new WaitForSeconds(duration);
// Clear flash
propertyBlock.SetColor("_EmissionColor", Color.black);
foreach (var r in renderers)
r.SetPropertyBlock(propertyBlock);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4242ef877b68dd04dafd9ddc4999e5cb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -109,7 +109,7 @@ public class BasicEnemyNPCController : NPCControllerBase
if (ability == null)
{
failedTryAttackCounter++;
if(failedTryAttackCounter >= failedTryAttackLimitToChangeTarget)
if(failedTryAttackCounter >= failedTryAttackLimitToChangeTarget && possibleTargets.Count > 1)
{
failedTryAttackCounter = 0;
UpdateCurrentTarget(GetClosestTarget());

View File

@ -2,6 +2,7 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Events;
public class NPCAnimatorControllerBase : MonoBehaviour
{
@ -11,6 +12,8 @@ public class NPCAnimatorControllerBase : MonoBehaviour
protected bool isLockedInAnimation = false;
public UnityEvent onHurtAnimation = new UnityEvent();
protected virtual void Awake()
{
anim = GetComponent<Animator>();
@ -41,6 +44,11 @@ public class NPCAnimatorControllerBase : MonoBehaviour
npcController.OnDeathAnimationEventTriggered();
}
protected virtual void OnHurtAnimationEvent()
{
onHurtAnimation.Invoke();
}
public void SetDead()
{
anim.SetTrigger("dead");

View File

@ -52,6 +52,9 @@ public class NetworkManager : MonoBehaviour
CancelChangeLevelVote();
});
onJobSelected.Response.AddListener((x) => votedZone = x.zoneName);
logoType = Random.Range(0, 100);
logoType %= (int)(LoadingLogoType.Count);
}
// Start is called before the first frame update

View File

@ -135,6 +135,16 @@ public class NetworkedProjectile : MonoBehaviour
effect.ApplyEffect(ownerTag, new List<Taggable> { target });
}
try
{
target.GetComponentInChildren<Animator>()?.SetTrigger("hurt");
}
catch (System.Exception)
{
Debug.Log("No Hurt trigger");
}
if (!canPierce)
{
if (enableRicochet && ricochetCount < maxRicochets)