Merge branch 'NewStory' of http://185.56.209.148/beyond/beyond into NewStory

This commit is contained in:
2025-06-06 12:26:02 +02:00
42 changed files with 16540 additions and 3582 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,637 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-9004496542854398162
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 21bf7f712d84d26478ebe6a299f21738, type: 3}
m_Name: Activation Track
m_EditorClassIdentifier:
m_Version: 3
m_AnimClip: {fileID: 0}
m_Locked: 0
m_Muted: 0
m_CustomPlayableFullTypename:
m_Curves: {fileID: 0}
m_Parent: {fileID: 11400000}
m_Children: []
m_Clips:
- m_Version: 1
m_Start: 0
m_ClipIn: 0
m_Asset: {fileID: 8291285022045805294}
m_Duration: 10.1
m_TimeScale: 1
m_ParentTrack: {fileID: -9004496542854398162}
m_EaseInDuration: 0
m_EaseOutDuration: 0
m_BlendInDuration: 0
m_BlendOutDuration: 0
m_MixInCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
m_MixOutCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
m_BlendInCurveMode: 0
m_BlendOutCurveMode: 0
m_ExposedParameterNames: []
m_AnimationCurves: {fileID: 0}
m_Recordable: 0
m_PostExtrapolationMode: 0
m_PreExtrapolationMode: 0
m_PostExtrapolationTime: 0
m_PreExtrapolationTime: 0
m_DisplayName: Active
m_Markers:
m_Objects: []
m_PostPlaybackState: 3
--- !u!114 &-8585281870820356316
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 21bf7f712d84d26478ebe6a299f21738, type: 3}
m_Name: Activation Track (1)
m_EditorClassIdentifier:
m_Version: 3
m_AnimClip: {fileID: 0}
m_Locked: 0
m_Muted: 0
m_CustomPlayableFullTypename:
m_Curves: {fileID: 0}
m_Parent: {fileID: 11400000}
m_Children: []
m_Clips: []
m_Markers:
m_Objects: []
m_PostPlaybackState: 3
--- !u!74 &-2028729715915619918
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Recorded
serializedVersion: 7
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: -0.0074944287, y: 0.01578362, z: -0.004803707, w: 0.9998358}
inSlope: {x: 0, y: 0, z: 0, w: 0}
outSlope: {x: 0.0009305147, y: 0.000012072135, z: 0.00091012014, w: 0.00001755947}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334, w: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334, w: 0.33333334}
- serializedVersion: 3
time: 10.183333
value: {x: -0.037476152, y: 0.01592124, z: -0.00433206, w: 0.9991613}
inSlope: {x: 0.0009061418, y: 0.00004353285, z: 0.001014791, w: 0.00003511894}
outSlope: {x: 0, y: 0, z: 0, w: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334, w: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334, w: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path:
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0, y: 0, z: 0}
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: 10.183333
value: {x: -1.0944138, y: 1.452816, z: 21.121784}
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:
m_ScaleCurves: []
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: 0
attribute: 1
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
- serializedVersion: 2
path: 0
attribute: 2
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
isIntCurve: 0
isSerializeReferenceCurve: 0
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 10.183333
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
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:
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: -1.0944138
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_LocalPosition.x
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: 1.452816
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_LocalPosition.y
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: 21.121784
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_LocalPosition.z
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -0.0074944287
inSlope: 0
outSlope: 0.0009305147
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: -0.037476152
inSlope: 0.0009061418
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalRotation.x
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.01578362
inSlope: 0
outSlope: 0.000012072135
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: 0.01592124
inSlope: 0.00004353285
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalRotation.y
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -0.004803707
inSlope: 0
outSlope: 0.00091012014
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: -0.00433206
inSlope: 0.001014791
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalRotation.z
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0.9998358
inSlope: 0
outSlope: 0.00001755947
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: 0.9991613
inSlope: 0.00003511894
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalRotation.w
path:
classID: 4
script: {fileID: 0}
flags: 0
m_EulerEditorCurves:
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -0.85
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: 355.713
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAngles.x
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1.813
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: 1.847
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAngles.y
path:
classID: 4
script: {fileID: 0}
flags: 0
- serializedVersion: 2
curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: -0.564
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 10.183333
value: 359.434
inSlope: 0
outSlope: 0
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: localEulerAngles.z
path:
classID: 4
script: {fileID: 0}
flags: 0
m_HasGenericRootTransform: 1
m_HasMotionFloatCurves: 0
m_Events: []
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bfda56da833e2384a9677cd3c976a436, type: 3}
m_Name: RUINED TOWNTimeline
m_EditorClassIdentifier:
m_Version: 0
m_Tracks:
- {fileID: 7528859772714158910}
- {fileID: -9004496542854398162}
- {fileID: -8585281870820356316}
m_FixedDuration: 0
m_EditorSettings:
m_Framerate: 60
m_ScenePreview: 1
m_DurationMode: 0
m_MarkerTrack: {fileID: 6386618471152514565}
--- !u!114 &6386618471152514565
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2a16748d9461eae46a725db9776d5390, type: 3}
m_Name: Markers
m_EditorClassIdentifier:
m_Version: 3
m_AnimClip: {fileID: 0}
m_Locked: 0
m_Muted: 0
m_CustomPlayableFullTypename:
m_Curves: {fileID: 0}
m_Parent: {fileID: 11400000}
m_Children: []
m_Clips: []
m_Markers:
m_Objects: []
--- !u!114 &7528859772714158910
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d21dcc2386d650c4597f3633c75a1f98, type: 3}
m_Name: Animation Track
m_EditorClassIdentifier:
m_Version: 3
m_AnimClip: {fileID: 0}
m_Locked: 0
m_Muted: 0
m_CustomPlayableFullTypename:
m_Curves: {fileID: 0}
m_Parent: {fileID: 11400000}
m_Children: []
m_Clips: []
m_Markers:
m_Objects: []
m_InfiniteClipPreExtrapolation: 1
m_InfiniteClipPostExtrapolation: 1
m_InfiniteClipOffsetPosition: {x: -73.43836, y: 44.42607, z: 52.09387}
m_InfiniteClipOffsetEulerAngles: {x: 17.360558, y: 359.3233, z: 0.01886283}
m_InfiniteClipTimeOffset: 0
m_InfiniteClipRemoveOffset: 0
m_InfiniteClipApplyFootIK: 1
mInfiniteClipLoop: 0
m_MatchTargetFields: 63
m_Position: {x: 0, y: 0, z: 0}
m_EulerAngles: {x: 0, y: 0, z: 0}
m_AvatarMask: {fileID: 0}
m_ApplyAvatarMask: 1
m_TrackOffset: 0
m_InfiniteClip: {fileID: -2028729715915619918}
m_OpenClipOffsetRotation: {x: 0, y: 0, z: 0, w: 1}
m_Rotation: {x: 0, y: 0, z: 0, w: 1}
m_ApplyOffsets: 0
--- !u!114 &8291285022045805294
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fde0d25a170598d46a0b9dc16b4527a5, type: 3}
m_Name: ActivationPlayableAsset
m_EditorClassIdentifier:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d4372562d0bf9864cb984c399127a88c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 45bb291542aa1d14fa306b1ee70bbb97
guid: a81ccddcd49644749975586e11749cc1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000

View File

@@ -27305,6 +27305,590 @@ MonoBehaviour:
height: 30
canvasScrollPosition: {x: 0, y: 0}
canvasZoom: 0.84689856
- id: 110
fields:
- title: Title
value: CH02/RUINEDTOWN/CH02_vo_lever_wanderer_01
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
overrideSettings:
useOverrides: 0
overrideSubtitleSettings: 0
showNPCSubtitlesDuringLine: 1
showNPCSubtitlesWithResponses: 1
showPCSubtitlesDuringLine: 0
skipPCSubtitleAfterResponseMenu: 0
subtitleCharsPerSecond: 30
minSubtitleSeconds: 2
continueButton: 0
overrideSequenceSettings: 0
defaultSequence:
defaultPlayerSequence:
defaultResponseMenuSequence:
overrideInputSettings: 0
alwaysForceResponseMenu: 1
includeInvalidEntries: 0
responseTimeout: 0
cancelSubtitle:
key: 27
buttonName:
cancelConversation:
key: 27
buttonName:
nodeColor:
dialogueEntries:
- id: 0
fields:
- title: Title
value: START
type: 0
typeString:
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString:
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString:
- title: Dialogue Text
value:
type: 0
typeString:
- title: Parenthetical
value:
type: 0
typeString:
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString:
- title: Sequence
value: None()
type: 0
typeString:
- title: pl
value:
type: 4
typeString: CustomFieldType_Localization
conversationID: 110
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction:
conditionPriority: 2
outgoingLinks:
- originConversationID: 110
originDialogueID: 0
destinationConversationID: 110
destinationDialogueID: 1
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
canvasRect:
serializedVersion: 2
x: 20
y: 30
width: 160
height: 30
- id: 1
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: No riddles this time, huh?
type: 0
typeString: CustomFieldType_Text
- title: Parenthetical
value:
type: 0
typeString: CustomFieldType_Text
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
- title: pl
value:
type: 4
typeString: CustomFieldType_Localization
conversationID: 110
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks: []
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
canvasRect:
serializedVersion: 2
x: 20
y: 80
width: 160
height: 30
canvasScrollPosition: {x: 0, y: 0}
canvasZoom: 1
- id: 111
fields:
- title: Title
value: CH02/RUINEDTOWN/CH02_vo_lever_wanderer_02
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
overrideSettings:
useOverrides: 0
overrideSubtitleSettings: 0
showNPCSubtitlesDuringLine: 1
showNPCSubtitlesWithResponses: 1
showPCSubtitlesDuringLine: 0
skipPCSubtitleAfterResponseMenu: 0
subtitleCharsPerSecond: 30
minSubtitleSeconds: 2
continueButton: 0
overrideSequenceSettings: 0
defaultSequence:
defaultPlayerSequence:
defaultResponseMenuSequence:
overrideInputSettings: 0
alwaysForceResponseMenu: 1
includeInvalidEntries: 0
responseTimeout: 0
cancelSubtitle:
key: 27
buttonName:
cancelConversation:
key: 27
buttonName:
nodeColor:
dialogueEntries:
- id: 0
fields:
- title: Title
value: START
type: 0
typeString:
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString:
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString:
- title: Dialogue Text
value:
type: 0
typeString:
- title: Parenthetical
value:
type: 0
typeString:
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString:
- title: Sequence
value: None()
type: 0
typeString:
- title: pl
value:
type: 4
typeString: CustomFieldType_Localization
conversationID: 111
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction:
conditionPriority: 2
outgoingLinks:
- originConversationID: 111
originDialogueID: 0
destinationConversationID: 111
destinationDialogueID: 1
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
canvasRect:
serializedVersion: 2
x: 20
y: 30
width: 160
height: 30
- id: 1
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: Well, that should do it.
type: 0
typeString: CustomFieldType_Text
- title: Parenthetical
value:
type: 0
typeString: CustomFieldType_Text
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
- title: pl
value:
type: 4
typeString: CustomFieldType_Localization
conversationID: 111
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks: []
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
canvasRect:
serializedVersion: 2
x: 20
y: 80
width: 160
height: 30
canvasScrollPosition: {x: 0, y: 0}
canvasZoom: 1
- id: 112
fields:
- title: Title
value: CH02/RUINEDTOWN/CH02_cs_ancaran_wanderer_00
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
overrideSettings:
useOverrides: 0
overrideSubtitleSettings: 0
showNPCSubtitlesDuringLine: 1
showNPCSubtitlesWithResponses: 1
showPCSubtitlesDuringLine: 0
skipPCSubtitleAfterResponseMenu: 0
subtitleCharsPerSecond: 30
minSubtitleSeconds: 2
continueButton: 0
overrideSequenceSettings: 0
defaultSequence:
defaultPlayerSequence:
defaultResponseMenuSequence:
overrideInputSettings: 0
alwaysForceResponseMenu: 1
includeInvalidEntries: 0
responseTimeout: 0
cancelSubtitle:
key: 27
buttonName:
cancelConversation:
key: 27
buttonName:
nodeColor:
dialogueEntries:
- id: 0
fields:
- title: Title
value: START
type: 0
typeString:
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString:
- title: Actor
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString:
- title: Dialogue Text
value:
type: 0
typeString:
- title: Parenthetical
value:
type: 0
typeString:
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString:
- title: Sequence
value: None()
type: 0
typeString:
- title: pl
value:
type: 4
typeString: CustomFieldType_Localization
conversationID: 112
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks:
- originConversationID: 112
originDialogueID: 0
destinationConversationID: 112
destinationDialogueID: 1
isConnector: 0
priority: 2
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
canvasRect:
serializedVersion: 2
x: 20
y: 30
width: 160
height: 30
- id: 1
fields:
- title: Title
value:
type: 0
typeString: CustomFieldType_Text
- title: Pictures
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Description
value:
type: 0
typeString: CustomFieldType_Text
- title: Actor
value: 2
type: 5
typeString: CustomFieldType_Actor
- title: Conversant
value: 1
type: 5
typeString: CustomFieldType_Actor
- title: Menu Text
value:
type: 0
typeString: CustomFieldType_Text
- title: Dialogue Text
value: 'So this is Anarcan. Deserted ruins. Another dead end.
'
type: 0
typeString: CustomFieldType_Text
- title: Parenthetical
value:
type: 0
typeString: CustomFieldType_Text
- title: Audio Files
value: '[]'
type: 3
typeString: CustomFieldType_Files
- title: Video File
value:
type: 0
typeString: CustomFieldType_Text
- title: Sequence
value:
type: 0
typeString: CustomFieldType_Text
- title: pl
value:
type: 4
typeString: CustomFieldType_Localization
conversationID: 112
isRoot: 0
isGroup: 0
nodeColor:
delaySimStatus: 0
falseConditionAction: Block
conditionPriority: 2
outgoingLinks: []
conditionsString:
userScript:
onExecute:
m_PersistentCalls:
m_Calls: []
canvasRect:
serializedVersion: 2
x: 20
y: 80
width: 160
height: 30
canvasScrollPosition: {x: 0, y: 0}
canvasZoom: 1
syncInfo:
syncActors: 0
syncItems: 0

View File

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

View File

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

View File

@@ -0,0 +1,430 @@
/// <summary>
/// Tool Name: Copy Components.
/// Version 1.0.0
/// Copyrights Denislav Georgiev - Respect Studios LTD
///
/// Info: This tool allows you to Copy Components, from one object to many other at the same time.
/// It support option for choosing, which component shoud be copied
///
/// It supports 3 options for copying
/// 1: All Components - Will copy all components from the Source, to the target objects
/// 2: Only New - Will copy only if the target object does NOT have that component
/// 3: Copy Values - Will copy only the component values
/// </summary>
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Collections.Generic;
// Create the Menu
public class CopyComponentsMenu : Editor
{
[MenuItem("Window/Copy Multi Components", false, 33)]
public static void CopyComponentsGUI()
{
CopyComponentsGUI copyComponentsGUI = (CopyComponentsGUI) EditorWindow.GetWindow(typeof(CopyComponentsGUI));
copyComponentsGUI.minSize = new Vector2(350, 340);
#if UNITY_5_0 || UNITY_5_1 || UNITY_4_6
copyComponentsGUI.title = "Copy Components";
#else
copyComponentsGUI.titleContent = new GUIContent("Copy Components");
#endif
copyComponentsGUI.Show ();
}
}
// Create the GUI
public class CopyComponentsGUI : EditorWindow
{
// Private Variables
private GameObject sourceGO; // The gameObject, that, the components will be copied from
private Component[] sourceComponents = new Component[0]; // The components, that will be copied...
private string[] copyOptionPop = new string[] {"All Components", "Only New", "Only Values"};
private int copyOptionIndex = 1;
private Vector2 fromScrollPos = Vector2.zero; // ScrollView
private Vector2 toScrollPos = Vector2.zero;
private string componentName; // Used to clear the unneeded strings, from the components names
private List<string> componentsName = new List<string>(); // Will hold the component's names, thas are shown in the GUI
private List<GameObject> targetGO = new List<GameObject>(); // List of objects, to paste components to
private string removeName; // Helper to remove part of the string of component namne
private string removeSystem; // Helper to remove part of the string of component namne
private bool copyAllCompT = true;
private bool[] copyCurrentCompT; // If the current component shoud be copied
void OnEnable()
{
sourceComponents = new Component[0]; // Reset sourceComponents at start
}
#region Drawing GUI
void OnGUI() // Building the GUI
{
EditorGUILayout.BeginVertical(GUILayout.Width(position.width), GUILayout.Height(position.height));
{
// Handles.DrawLine(new Vector3(position.width / 2, 20, 0), new Vector3 (position.width / 2, 200, 0));
GUILayout.Space(10);
// Begin the first Horizontal, for the object, that we'll copy components from
EditorGUILayout.BeginHorizontal();
{
GUILayout.Space(10);
#if UNITY_4_6
EditorGUILayout.BeginVertical(GUILayout.Width(position.width/2 - 10), GUILayout.Height(position.height - 70));
EditorGUI.HelpBox(new Rect(5, 45, position.width/2 - 10, position.height - 115), "", MessageType.None);
#else
EditorGUILayout.BeginVertical(EditorStyles.helpBox ,GUILayout.Width(position.width/2 - 10), GUILayout.Height(position.height - 70));
#endif
{
#region "Copy From" side of GUI
GUILayout.Label("Source (Copy From):");
EditorGUI.BeginChangeCheck(); // Start Checking if the ObjField have been changed
{
sourceGO = EditorGUILayout.ObjectField(sourceGO, typeof(GameObject), true) as GameObject ;
}
if (EditorGUI.EndChangeCheck()) // If there is a change, call to ExposeComponents
{
ExposeComponents();
}
GUILayout.Space(20);
if (sourceGO != null)
{
GUILayout.Label ("Components To Copy: ");
#if UNITY_4_6
EditorGUILayout.BeginVertical(GUILayout.Width(position.width / 2 - 20), GUILayout.Height(position.height - 160));
EditorGUI.HelpBox(new Rect(10, 83, position.width / 2 - 20, position.height - 160), "", MessageType.None);
#else
EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Width(position.width / 2 - 20), GUILayout.Height(position.height - 160));
#endif
{
fromScrollPos = EditorGUILayout.BeginScrollView(fromScrollPos); // Adding scroll view for the Components List
// Check if All has Toggled. If so call the Void to change all Toggles
EditorGUI.BeginChangeCheck();
copyAllCompT = GUILayout.Toggle(copyAllCompT, new GUIContent("All", "Toggle All Components"));
if (EditorGUI.EndChangeCheck())
ToggleAllChanged();
// END check
if (sourceComponents.Length > 0)
{
for (int i = 0; i < sourceComponents.Length; i++) // Loop through all components
{
EditorGUILayout.BeginHorizontal();
// Make Toggle for all components names
copyCurrentCompT[i] = GUILayout.Toggle(copyCurrentCompT[i], new GUIContent(componentsName[i].ToString(), "Shoud this component be copied"));
EditorGUILayout.EndHorizontal();
}
}
EditorGUILayout.EndScrollView();
}
EditorGUILayout.EndVertical();
}
}
EditorGUILayout.EndVertical();
#endregion
#region "Paste To" side of GUI
// Start Second Vertical layout for the PasteTo UI Elements
#if UNITY_4_6
EditorGUILayout.BeginVertical(GUILayout.Width(position.width / 2 - 10), GUILayout.Height(position.height - 70));
EditorGUI.HelpBox(new Rect(position.width / 2, 25, position.width / 2 - 10, position.height - 112), "", MessageType.None);
#else
EditorGUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.Width(position.width / 2 - 10), GUILayout.Height(position.height - 70));
#endif
{
GUILayout.Label("Targets (Paste To):"); // Label
if (targetGO.Count > 0)
{
toScrollPos = EditorGUILayout.BeginScrollView(toScrollPos); // Adding scroll view for the ObjectsList
{
for (int i = 0; i < targetGO.Count; i++)
{
EditorGUI.BeginChangeCheck(); // Check if some of the fields is changed afterwards
// Add Field for every selected object and expose them in the GUI
targetGO[i] = EditorGUILayout.ObjectField(targetGO[i], typeof(GameObject), true) as GameObject;
if (EditorGUI.EndChangeCheck()) // If some of the fields is changed manually
{
ManualAddedPasteObj(targetGO[i], i); // Call to tell that some objField is manually changed
}
}
}
EditorGUILayout.EndScrollView();
}
EditorGUILayout.BeginHorizontal();
{
if (GUILayout.Button("+", GUILayout.Width(25), GUILayout.Height(25))) // Button to Add to the List
AddPasteObject();
if (GUILayout.Button("-", GUILayout.Width(25), GUILayout.Height(25))) // Button to Remove from the List
RemovePasteObject();
GUILayout.Space(position.width / 4 - 80); // Some Space before the ClearObjects bttn
if (GUILayout.Button("Clear Objects", GUILayout.Height(25)))
ClearPasteObjList();
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndVertical();
#endregion
}
EditorGUILayout.EndHorizontal();
EditorGUIUtility.labelWidth = 100; // The width of the PopUp Label
EditorGUILayout.BeginHorizontal();
{
copyOptionIndex = EditorGUILayout.Popup("Copy Options:", copyOptionIndex, copyOptionPop, GUILayout.Width(230));
GUILayout.Space(15);
}
EditorGUILayout.EndHorizontal();
if (GUILayout.Button("Copy Components", GUILayout.Height(30)))
{
CopyComponents(); // Call to copy actual components
}
}
EditorGUILayout.EndVertical();
}
#endregion
#region Expose Copy Components
// WIll be called, only when the ObjectField changes, so it doesn't execute every frame
private void ExposeComponents()
{
componentsName.Clear(); // Clears the list
if (sourceGO != null) // If there is attached object in the ObjectField
{
sourceComponents = sourceGO.GetComponents<Component>(); // Get all components of the gameObject
copyCurrentCompT = new bool[sourceComponents.Length]; // Set the CheckBox array size
for (int i = 0; i < sourceComponents.Length; i++) // Loop through all components
{
if (sourceComponents[i] != null)
{
copyCurrentCompT[i] = true; // Set all Checkboxes On
componentName = sourceComponents[i].ToString(); // Get the component names
removeName = sourceGO.name + " ("; // Remove name and " (" from the name
removeSystem = "UnityEngine."; // Remove UnityEngine from the name
componentName = componentName.Remove(componentName.Length - 1); // Remove the last character ")", from name
componentName = componentName.Replace (removeName, ""); // replace the string, to remove the name of the GO
componentName = componentName.Replace (removeSystem, ""); // Removes the UnityEngine from string
componentsName.Add(componentName);
}
else // If the Component Is Missing
{
componentsName.Add("***Missing Component***"); // Add as Missing
copyCurrentCompT[i] = false;
Debug.LogWarning("One of the Components is Null! Probably a Missing or Non-Compilled Script. Will be Skipped");
}
}
}
else // Source GO is empty
sourceComponents = new Component[0];
}
#endregion
#region Paste Object UI Management
// To add PasteObjects
private void AddPasteObject()
{
GameObject[] curSelection = Selection.gameObjects;
if (curSelection.Length > 0)
{
for (int i = 0; i < curSelection.Length; i++)
{
if (!targetGO.Contains(curSelection[i]))
{
if (curSelection[i] != sourceGO)
targetGO.Add (curSelection[i]);
else
Debug.LogWarning("Attempt to add Source GameObject: \"" + curSelection[i].name + "\", to Targets List. Object Removed...");
}
else
Debug.LogWarning("Object \" " + targetGO[i].name + "\", is allready in the List");
}
}
else
Debug.LogWarning("Select At Least One Object");
}
// To remove the last element of the Paste Objects
private void RemovePasteObject()
{
if (targetGO.Count > 0)
targetGO.RemoveAt(targetGO.Count - 1);
else
Debug.LogWarning("Paste Objects List is Emptry!");
}
private void ClearPasteObjList()
{
targetGO.Clear();
}
// When we add manually Target Objects
private void ManualAddedPasteObj(GameObject objChanged, int listNum)
{
if (targetGO.Count > 0) // If there are any target objects
{
for (int i = 0; i < targetGO.Count; i++) // Loop through them...
{
if (targetGO[i] != null) // If current Target Index (Field) is Not Empty
{
if (i != listNum)
{
if (targetGO[i] == objChanged)
{
// Warn user, that there is same object in more than one field
Debug.LogWarning("Object: " + objChanged.name + ", was added in 2 fields");
}
}
if (targetGO[i] == sourceGO) // If the Source is added as target
Debug.LogWarning("Source GameObject: \"" + sourceGO.name + "\" was added in Field: " + (i + 1) + ". \nWill Copy and Paste to the same GameObject");
}
else
Debug.LogWarning("Target Field was left Empty");
}
}
}
#endregion
#region Copy Components
// Copy the actual components
private void CopyComponents()
{
bool componentMatch = false;
bool nullComponentFound = false; // Will be true, to show Warning, if there is a Null (Missing) Component
if (sourceComponents.Length > 0)
{
if (targetGO.Count > 0) // If there are TargetGO
{
for (int i = 0; i < targetGO.Count; i++) // Loop through all targetObjects
{
if (targetGO[i] != null)
{
Component[] targetComponents = targetGO[i].GetComponents<Component>(); // Get the component of the cur object
for (int a = 0; a < sourceComponents.Length; a++) // Loop through all Source Obj's Components
{
if (sourceComponents[a] == null) // If this component is Null
continue; // Skip the loop and continue
if (copyCurrentCompT[a]) // If the current component shoud be copied
{
if (copyOptionIndex == 0) // If All shoud be copied
{
UnityEditorInternal.ComponentUtility.CopyComponent(sourceComponents[a]);
UnityEditorInternal.ComponentUtility.PasteComponentAsNew(targetGO[i]);
}
if (copyOptionIndex == 1 || copyOptionIndex == 2) // If Copy only new or Copy Values
{
componentMatch = false; // Set by default to false
for (int z = 0; z < targetComponents.Length; z++) // Loop through all destination Obj's Components
{
if (targetComponents[z] == null) // If there is a Null Component, skip this loop
{
nullComponentFound = true;
continue;
}
if (sourceComponents[a].GetType() == targetComponents[z].GetType()) // If the components match, The destination Obj have that component
{
componentMatch = true; // Set to true, so we can copy that component
if (copyOptionIndex == 2) // If copyValues is On, then Copy the values of the existing Components
{
UnityEditorInternal.ComponentUtility.CopyComponent(sourceComponents[a]);
UnityEditorInternal.ComponentUtility.PasteComponentValues(targetComponents[z]);
}
}
}
}
if (copyOptionIndex == 1 ) // If Only New (Missing from Target) shoud be copied
{
if (!componentMatch && copyOptionIndex == 1) // If this component[a], doesn't exist in the TargetGO[i], copy it
{
UnityEditorInternal.ComponentUtility.CopyComponent(sourceComponents[a]);
UnityEditorInternal.ComponentUtility.PasteComponentAsNew(targetGO[i]);
}
}
}
}
}
else
Debug.LogWarning("TargetField: " + i + " is Empty");
}
if (nullComponentFound) // If there is a Null Component
Debug.LogWarning("Some of the Target Objects have Missing Component, which might cause problems");
}
else // If NO TargetGO added
Debug.LogWarning("No Target GameObjects Added");
}
else
Debug.LogWarning("No Components To Copy. Add a Source Object");
}
#endregion
// To Toggle All Components CheckBoxes
private void ToggleAllChanged()
{
for (int i = 0; i < copyCurrentCompT.Length; i++)
{
copyCurrentCompT[i] = copyAllCompT;
}
}
// Reset the GUI, when closed
void OnDestroy()
{
sourceGO = null; // Reset the source Obj field
copyOptionIndex = 1; // Reset Copy Popup
sourceComponents = new Component[0]; // Reset the source Components Array
copyCurrentCompT = new bool[0]; // Reset Components Toggle Array
componentsName.Clear (); // Clear ComponentsNames List
targetGO.Clear (); // Clear Target Objects List
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 2f6c301fa9c7945458d27b52f5d3a266
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 50347
packageName: Copy Multi Components
packageVersion: 1.0
assetPath: Assets/Editor/CopyMultiComponents/Window/CopyComponentsGUI.cs
uploadId: 90740

View File

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

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: bb7947a57b32cce4fbcb1c73414600e9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 50347
packageName: Copy Multi Components
packageVersion: 1.0
assetPath: Assets/Editor/CopyMultiComponents/x_Docs/CopyComponents_Docs.pdf
uploadId: 90740

View File

@@ -0,0 +1,171 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &2923916290059301970
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_RootOrder
value: 33
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalScale.x
value: 5.5424166
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalScale.y
value: 5.542416
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalScale.z
value: 5.542417
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalPosition.x
value: -133.74
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalPosition.y
value: 39.48
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalPosition.z
value: 9.68
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalRotation.w
value: 0.93898517
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalRotation.x
value: -0.01770398
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalRotation.y
value: 0.343467
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalRotation.z
value: -0.0048912265
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: -178.287
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: -139.798
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 178.776
objectReference: {fileID: 0}
- target: {fileID: -7511558181221131132, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_CastShadows
value: 0
objectReference: {fileID: 0}
- target: {fileID: -7511558181221131132, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: 6dfb688b4f3215043b8f6dd8ee4fe628, type: 2}
- target: {fileID: 919132149155446097, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_Name
value: koci2 (4)
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 919132149155446097, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
propertyPath: m_StaticEditorFlags
value: 2147483647
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
insertIndex: -1
addedObject: {fileID: 3879712112063137544}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
insertIndex: -1
addedObject: {fileID: 4154830738626687160}
m_SourcePrefab: {fileID: 100100000, guid: ea064709bfa58d34c910c6ef611aace5, type: 3}
--- !u!1 &2617364950766274819 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
m_PrefabInstance: {fileID: 2923916290059301970}
m_PrefabAsset: {fileID: 0}
--- !u!64 &3879712112063137544
MeshCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2617364950766274819}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 5
m_Convex: 1
m_CookingOptions: 30
m_Mesh: {fileID: 6571506424998889177, guid: ea064709bfa58d34c910c6ef611aace5, type: 3}
--- !u!205 &4154830738626687160
LODGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2617364950766274819}
serializedVersion: 2
m_LocalReferencePoint: {x: 0.0015999973, y: -0.0003719628, z: -0.036420494}
m_Size: 0.78083813
m_FadeMode: 0
m_AnimateCrossFading: 0
m_LastLODIsBillboard: 0
m_LODs:
- screenRelativeHeight: 0.13156137
fadeTransitionWidth: 0
renderers:
- renderer: {fileID: 4562784131206146262}
m_Enabled: 1
--- !u!23 &4562784131206146262 stripped
MeshRenderer:
m_CorrespondingSourceObject: {fileID: -7511558181221131132, guid: ea064709bfa58d34c910c6ef611aace5,
type: 3}
m_PrefabInstance: {fileID: 2923916290059301970}
m_PrefabAsset: {fileID: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5a9a0f0dcef455149a4711d065066763
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -81998,6 +81998,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
minDamage:
damageValue: 15
staminaBlockCost: 5
@@ -82013,6 +82014,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
maxDamage:
damageValue: 15
staminaBlockCost: 5
@@ -82028,6 +82030,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
hitBoxes:
- {fileID: 9202663234700498133}
@@ -104885,6 +104888,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
minDamage:
damageValue: 15
staminaBlockCost: 5
@@ -104900,6 +104904,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
maxDamage:
damageValue: 15
staminaBlockCost: 5
@@ -104915,6 +104920,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
hitBoxes:
- {fileID: 3157817243778252271}
@@ -105773,6 +105779,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
hitProperties:
hitDamageTags:
- Enemy
@@ -118356,6 +118363,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
minDamage:
damageValue: 15
staminaBlockCost: 5
@@ -118371,6 +118379,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
maxDamage:
damageValue: 15
staminaBlockCost: 5
@@ -118386,6 +118395,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
hitBoxes:
- {fileID: 3157817242016584094}
@@ -135311,6 +135321,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
minDamage:
damageValue: 15
staminaBlockCost: 5
@@ -135326,6 +135337,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
maxDamage:
damageValue: 15
staminaBlockCost: 5
@@ -135341,6 +135353,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
hitBoxes:
- {fileID: 3157817244105814045}
@@ -135487,6 +135500,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
layerToCollide:
serializedVersion: 2

View File

@@ -854,6 +854,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
minDamage:
damageValue: 15
staminaBlockCost: 5
@@ -869,6 +870,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
maxDamage:
damageValue: 15
staminaBlockCost: 5
@@ -884,6 +886,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
hitBoxes:
- {fileID: 4367795707781829252}
@@ -3615,6 +3618,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
minDamage:
damageValue: 15
staminaBlockCost: 5
@@ -3630,6 +3634,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
maxDamage:
damageValue: 15
staminaBlockCost: 5
@@ -3645,6 +3650,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
hitBoxes:
- {fileID: 4367795705692615431}
@@ -6820,6 +6826,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
minDamage:
damageValue: 15
staminaBlockCost: 5
@@ -6835,6 +6842,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
maxDamage:
damageValue: 15
staminaBlockCost: 5
@@ -6850,6 +6858,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
hitBoxes:
- {fileID: 4367795706479253541}
@@ -8693,6 +8702,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
minDamage:
damageValue: 15
staminaBlockCost: 5
@@ -8708,6 +8718,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
maxDamage:
damageValue: 15
staminaBlockCost: 5
@@ -8723,6 +8734,7 @@ MonoBehaviour:
reaction_id: 0
damageType:
force: {x: 0, y: 0, z: 0}
ignoreAllHitEffects: 0
overrideDamageSender: {fileID: 0}
hitBoxes:
- {fileID: 4367795706020118261}

View File

@@ -203,7 +203,7 @@ Transform:
serializedVersion: 2
m_LocalRotation: {x: 0.3901362, y: -0.39884356, z: 0.31246474, w: 0.7688195}
m_LocalPosition: {x: 13.93, y: 40.21, z: -39.36}
m_LocalScale: {x: 0.110949144, y: 0.0735072, z: 0.110949166}
m_LocalScale: {x: 0.11094914, y: 0.073507205, z: 0.11094917}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8504127528854653553}
@@ -236,7 +236,7 @@ MonoBehaviour:
- {fileID: 8606076445728158576}
m_effect: {fileID: 0}
m_burnoutTime: 3
m_destroyTime: 5
m_destroyTime: 3
m_delay: 1
m_lightToAnimate: {fileID: 0}
--- !u!65 &8635202493545848867
@@ -258,8 +258,8 @@ BoxCollider:
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 17.875721, y: 32.058144, z: 14.945146}
m_Center: {x: 2.132795, y: -0.43375033, z: 0.4792527}
m_Size: {x: 21.09685, y: 30.436941, z: 19.004988}
m_Center: {x: 3.743364, y: -1.2443696, z: 2.5091968}
--- !u!114 &1419620463414589321
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -377,6 +377,18 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
- m_Target: {fileID: 8635202493545848867}
m_TargetAssemblyTypeName: UnityEngine.Collider, UnityEngine
m_MethodName: set_enabled
m_Mode: 6
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
onChangeHealth:
m_PersistentCalls:
m_Calls: []

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4fa3d057c4946554cb3c68331d5c7e06
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -5470,7 +5470,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!4 &7019251980953234364
Transform:
m_ObjectHideFlags: 0

View File

@@ -25134,7 +25134,7 @@ PrefabInstance:
- target: {fileID: 3053764927411709791, guid: 38ca8b4bc26702b40a70a342950990ee,
type: 3}
propertyPath: m_IsActive
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3363011155242089996, guid: 38ca8b4bc26702b40a70a342950990ee,
type: 3}
@@ -26680,7 +26680,7 @@ PrefabInstance:
- target: {fileID: 6801932090984752054, guid: 38ca8b4bc26702b40a70a342950990ee,
type: 3}
propertyPath: m_IsActive
value: 1
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6873079659947345108, guid: 38ca8b4bc26702b40a70a342950990ee,
type: 3}
@@ -26956,7 +26956,7 @@ PrefabInstance:
- target: {fileID: 8701437937550647419, guid: 38ca8b4bc26702b40a70a342950990ee,
type: 3}
propertyPath: m_IsActive
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8913891428701285121, guid: 38ca8b4bc26702b40a70a342950990ee,
type: 3}

View File

@@ -20,6 +20,65 @@ MonoBehaviour:
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_headingLevel: 1
--- !u!114 &-7851998306034125330
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c47e1bb9cdd9a474c8d3f5d555d7533a, type: 3}
m_Name: HeadingTextQuestContent
m_EditorClassIdentifier:
m_contentID: -1
m_useQuestTitle: 0
m_headingText:
m_text: Explore the ruins
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_headingLevel: 1
--- !u!114 &-4049380265876240392
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5682394e55a192147a020b9edf624e51, type: 3}
m_Name: MessageQuestCondition
m_EditorClassIdentifier:
m_alreadyTrue: 0
m_senderSpecifier: 0
m_senderID:
m_text:
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_targetSpecifier: 0
m_targetID:
m_text:
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_message:
m_text: Explore
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_parameter:
m_text: Ruins
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_value:
m_valueType: 0
m_intValue: 0
m_stringValue:
--- !u!114 &-3765981198424978030
MonoBehaviour:
m_ObjectHideFlags: 1
@@ -55,6 +114,45 @@ MonoBehaviour:
m_contentList:
- {fileID: 176885676704061995}
m_contentListSerializationProxy: []
--- !u!114 &-1154049343836426198
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5682394e55a192147a020b9edf624e51, type: 3}
m_Name: MessageQuestCondition
m_EditorClassIdentifier:
m_alreadyTrue: 0
m_senderSpecifier: 0
m_senderID:
m_text:
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_targetSpecifier: 0
m_targetID:
m_text:
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_message:
m_text: Ruins
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_parameter:
m_text: Explored
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_value:
m_valueType: 0
m_intValue: 0
m_stringValue:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -329,11 +427,12 @@ MonoBehaviour:
- m_contentList: []
- m_contentList: []
m_conditionSet:
m_conditionList: []
m_conditionList:
- {fileID: -4049380265876240392}
m_conditionCountMode: 1
m_minConditionCount: 0
m_numTrueConditions: 0
m_childIndexList:
m_childIndexList: 05000000
m_canvasRect:
serializedVersion: 2
x: 218
@@ -387,6 +486,101 @@ MonoBehaviour:
y: 228
width: 120
height: 48
- m_id:
m_text: ExploreRuinedTown
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_internalName:
m_text: ExploreRuins
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_nodeType: 4
m_isOptional: 0
m_state: 0
m_speaker:
m_text:
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_stateInfoList:
- m_actionList: []
m_categorizedContentList:
- m_contentList: []
- m_contentList: []
- m_contentList: []
- m_actionList:
- {fileID: 2879865022517391138}
m_categorizedContentList:
- m_contentList: []
- m_contentList: []
- m_contentList:
- {fileID: -7851998306034125330}
- m_actionList: []
m_categorizedContentList:
- m_contentList: []
- m_contentList: []
- m_contentList: []
m_conditionSet:
m_conditionList:
- {fileID: -1154049343836426198}
m_conditionCountMode: 1
m_minConditionCount: 0
m_numTrueConditions: 0
m_childIndexList: 06000000
m_canvasRect:
serializedVersion: 2
x: 220
y: 585
width: 120
height: 48
- m_id:
m_text: Success
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_internalName:
m_text:
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_nodeType: 1
m_isOptional: 0
m_state: 0
m_speaker:
m_text:
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_stateInfoList:
- m_actionList: []
m_categorizedContentList:
- m_contentList: []
- m_contentList: []
- m_contentList: []
- m_actionList: []
m_categorizedContentList:
- m_contentList: []
- m_contentList: []
- m_contentList: []
- m_actionList: []
m_categorizedContentList:
- m_contentList: []
- m_contentList: []
- m_contentList: []
m_conditionSet:
m_conditionList: []
m_conditionCountMode: 1
m_minConditionCount: 0
m_numTrueConditions: 0
m_childIndexList:
m_canvasRect:
serializedVersion: 2
x: 220
y: 653
width: 120
height: 35
m_goalEntityTypeName:
m_nextContentID: 0
--- !u!114 &176885676704061995
@@ -444,6 +638,21 @@ MonoBehaviour:
m_contentList:
- {fileID: 1244259193174973182}
m_contentListSerializationProxy: []
--- !u!114 &2879865022517391138
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6b99cc2a156c22e46b4fb74b06a4d1e8, type: 3}
m_Name: AlertQuestAction
m_EditorClassIdentifier:
m_contentList:
- {fileID: 7369075533383603033}
m_contentListSerializationProxy: []
--- !u!114 &4478937982804482560
MonoBehaviour:
m_ObjectHideFlags: 1
@@ -518,6 +727,26 @@ MonoBehaviour:
m_valueType: 0
m_intValue: 0
m_stringValue:
--- !u!114 &7369075533383603033
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c47e1bb9cdd9a474c8d3f5d555d7533a, type: 3}
m_Name: HeadingTextQuestContent
m_EditorClassIdentifier:
m_contentID: -1
m_useQuestTitle: 0
m_headingText:
m_text: Explore the ruins
m_stringAsset: {fileID: 0}
m_textTable: {fileID: 0}
m_textTableFieldID: 0
m_headingLevel: 1
--- !u!114 &8205021404887306477
MonoBehaviour:
m_ObjectHideFlags: 1

View File

@@ -0,0 +1,41 @@
fileFormatVersion: 2
guid: 56338a369913a9249a5640f1f6c6139f
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides:
4:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
preloadAudioData: 0
7:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,41 @@
fileFormatVersion: 2
guid: 7409559a3b21dcb4ba12d3618ce34285
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides:
4:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
preloadAudioData: 0
7:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,41 @@
fileFormatVersion: 2
guid: f6ef55b4f02ac1a4aa9f309aff8c8303
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides:
4:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
preloadAudioData: 0
7:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -864,6 +864,52 @@ namespace Beyond
ThirdPersonController._rigidbody.MovePosition(t.position);
ThirdPersonController._rigidbody.MoveRotation(t.rotation);
}
public void PlaySingleSound(AudioClip clipToPlay, bool destroyAfterPlaying = true)
{
// Opcjonalne opóŸnienie na starcie poziomu, aby unikn¹æ "spamowania" dŸwiêkami
if (Time.timeSinceLevelLoad < 0.5f && clipToPlay != null)
{
// Mo¿esz chcieæ to odkomentowaæ, jeœli dŸwiêki na starcie s¹ problemem
// return;
}
if (this.audioSource == null) // this.audioSource to pole GameObject (prefab) w Player.cs
{
Debug.LogWarning("Player's 'audioSource' (GameObject prefab) is not assigned in Inspector. Cannot play sound: " + (clipToPlay ? clipToPlay.name : "Unknown clip"));
return;
}
if (clipToPlay == null)
{
Debug.LogWarning("Attempted to play a null AudioClip.");
return;
}
// Instancjonowanie prefabu dŸwiêkowego
// Upewnij siê, ¿e prefab 'audioSource' ma komponent AudioSource
GameObject audioObjectInstance = Instantiate(this.audioSource, transform.position, transform.rotation);
AudioSource sourceComponent = audioObjectInstance.GetComponent<AudioSource>();
if (sourceComponent != null)
{
// PlayOneShot jest dobre dla efektów, nie przerywa innych dŸwiêków na tym samym source,
// jeœli s¹ one odtwarzane przez .Play() i nie u¿ywaj¹ tego samego kana³u.
sourceComponent.PlayOneShot(clipToPlay);
if (destroyAfterPlaying)
{
// Niszczymy obiekt GameObject zawieraj¹cy AudioSource po zakoñczeniu odtwarzania klipu.
// Dodajemy ma³y bufor czasowy, aby upewniæ siê, ¿e dŸwiêk zd¹¿y siê odtworzyæ w ca³oœci.
Destroy(audioObjectInstance, clipToPlay.length + 0.1f);
}
}
else
{
Debug.LogWarning("The instantiated 'audioSource' prefab (from Player.cs) does not have an AudioSource component. Destroying instance.");
Destroy(audioObjectInstance); // Posprz¹taj, jeœli coœ posz³o nie tak
}
}
}
[System.Serializable]

View File

@@ -0,0 +1,193 @@
using UnityEngine;
using UnityEngine.Rendering; // Potrzebne dla Volume
using Beyond; // Dla dostêpu do Twojej klasy Player
using Invector; // Dla vDamage
public class PoisonZone : MonoBehaviour
{
[Header("Damage Settings")]
[Tooltip("Amount of damage dealt at each interval.")]
public int damageAmount = 5;
[Tooltip("Time in seconds between each damage tick.")]
public float damageInterval = 1.0f;
[Header("Volume Animation Settings")]
[Tooltip("Reference to the Volume component to animate.")]
public Volume poisonVolume;
[Tooltip("Animation curve for ONE CYCLE of the looping Volume weight. X-axis (Time) from 0 to 1. Y-axis (Value) is the weight intensity (e.g., 0 to 1, where 1 is full effect defined by the curve values).")]
public AnimationCurve loopingVolumeWeightCurve = new AnimationCurve(
new Keyframe(0, 0),
new Keyframe(0.5f, 0.8f),
new Keyframe(1, 0)
);
[Tooltip("Duration of one full cycle of the looping animation, in seconds. Must be greater than 0.")]
public float loopCycleDuration = 2.0f;
[Tooltip("Duration of the fade-in/fade-out effect for the looping animation, in seconds. Set to 0 for instant on/off of the loop.")]
public float volumeFadeDuration = 1.0f;
[Header("Sound Settings")]
[Tooltip("Coughing sound effect to play.")]
public AudioClip coughSound;
[Tooltip("Interval in seconds for repeating the cough sound while player is in the zone. Set to 0 for no repeat (only on enter).")]
public float coughInterval = 4.0f;
private Player currentPlayerInZone;
private float timeSinceLastDamage = 0f;
private float timeSinceLastCough = 0f;
private bool playerCurrentlyInZone = false;
private float currentLoopProgress = 0f;
private float currentFadeProgress = 0f;
void Start()
{
Collider col = GetComponent<Collider>();
if (col == null || !col.isTrigger)
{
Debug.LogWarning($"PoisonZone: Collider not found or not set to 'Is Trigger' on GameObject: {gameObject.name}", this);
}
if (poisonVolume == null)
{
Debug.LogWarning($"PoisonZone: No Volume assigned in Inspector. Post-processing effects will not be animated for {gameObject.name}", this);
}
else
{
poisonVolume.weight = 0f;
poisonVolume.enabled = false;
}
if (loopCycleDuration <= 0.001f)
{
Debug.LogWarning("PoisonZone: Loop Cycle Duration should be greater than 0 for looping animation. Setting to 1s.", this);
loopCycleDuration = 1f;
}
}
void Update()
{
if (poisonVolume != null)
{
float targetFadeProgress = playerCurrentlyInZone ? 1.0f : 0.0f;
if (volumeFadeDuration > 0.001f)
{
float fadeStep = (1.0f / volumeFadeDuration) * Time.deltaTime;
currentFadeProgress = Mathf.MoveTowards(currentFadeProgress, targetFadeProgress, fadeStep);
}
else
{
currentFadeProgress = targetFadeProgress;
}
if (playerCurrentlyInZone || currentFadeProgress > 0.001f)
{
currentLoopProgress += Time.deltaTime / loopCycleDuration;
currentLoopProgress = currentLoopProgress % 1.0f;
}
float loopedWeightValue = loopingVolumeWeightCurve.Evaluate(currentLoopProgress);
poisonVolume.weight = loopedWeightValue * currentFadeProgress;
bool shouldBeEnabled;
if (currentFadeProgress > 0.001f)
{
shouldBeEnabled = true;
}
else
{
shouldBeEnabled = false;
}
if (poisonVolume.enabled != shouldBeEnabled)
{
poisonVolume.enabled = shouldBeEnabled;
}
}
if (playerCurrentlyInZone && currentPlayerInZone != null)
{
timeSinceLastDamage += Time.deltaTime;
if (timeSinceLastDamage >= damageInterval)
{
ApplyPoisonDamage();
timeSinceLastDamage = 0f;
}
if (coughSound != null && coughInterval > 0)
{
timeSinceLastCough += Time.deltaTime;
if (timeSinceLastCough >= coughInterval)
{
PlayCoughSound();
timeSinceLastCough = 0f;
}
}
}
}
void OnTriggerEnter(Collider other)
{
Player enteredPlayer = other.GetComponent<Player>();
if (enteredPlayer != null)
{
if (currentPlayerInZone != enteredPlayer || !playerCurrentlyInZone)
{
if (currentPlayerInZone != enteredPlayer)
{
currentPlayerInZone = enteredPlayer;
}
playerCurrentlyInZone = true;
timeSinceLastDamage = 0f;
timeSinceLastCough = 0f;
currentLoopProgress = 0f;
if (coughSound != null)
{
PlayCoughSound();
}
}
}
}
void OnTriggerExit(Collider other)
{
Player exitedPlayer = other.GetComponent<Player>();
if (exitedPlayer != null && exitedPlayer == currentPlayerInZone && playerCurrentlyInZone)
{
playerCurrentlyInZone = false;
}
}
private void ApplyPoisonDamage()
{
if (currentPlayerInZone != null && currentPlayerInZone.ThirdPersonController != null)
{
var healthController = currentPlayerInZone.ThirdPersonController;
if (healthController != null && !healthController.isDead)
{
// >>> TUTAJ ZMIANA <<<
// U¿ywamy konstruktora vDamage(int damageAmount, bool ignoreReactionAndAllEffects)
// Przekazujemy 'true', aby zasygnalizowaæ, ¿e chcemy pomin¹æ wszystkie efekty trafienia.
vDamage damageInstance = new vDamage(damageAmount, true);
// Opcjonalnie: ustaw typ obra¿eñ dla dodatkowej logiki lub debugowania
damageInstance.damageType = "Poison";
healthController.TakeDamage(damageInstance);
}
}
}
private void PlayCoughSound()
{
if (currentPlayerInZone != null && coughSound != null)
{
currentPlayerInZone.PlaySingleSound(coughSound, true);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 42b6d889d50a4a84f9b8f341d61afdc6

View File

@@ -0,0 +1,71 @@
using System.Collections;
using UnityEngine;
using UnityEngine.Rendering;
namespace UnityEngine.Rendering
{
[CurrentPipelineHelpURL("Volumes")]
[ExecuteAlways]
[AddComponentMenu("Miscellaneous/Volume Weight Animator")]
public class VolumeWeightAnimator : MonoBehaviour
{
[SerializeField]
private Volume m_Volume;
[SerializeField]
private float m_AnimationDuration = 5.0f;
[SerializeField]
private AnimationCurve m_WeightCurve = AnimationCurve.Linear(0, 0, 1, 1);
[SerializeField]
private float m_Speed = 1.0f;
private bool wasEnabled = false;
private void Start()
{
if (m_Volume != null)
{
m_Volume.weight = 0;
wasEnabled = m_Volume.enabled;
}
else
{
Debug.LogWarning("Volume is not assigned.");
}
}
private void Update()
{
if (m_Volume != null)
{
if (m_Volume.enabled && !wasEnabled)
{
// Volume zosta³ w³¹czony, uruchamiamy animacjê
StartCoroutine(AnimateWeight());
}
wasEnabled = m_Volume.enabled;
}
}
private IEnumerator AnimateWeight()
{
float elapsedTime = 0f;
m_Volume.weight = 1; // Ustawienie wagi na 1 przy w³¹czaniu Volume
while (elapsedTime < m_AnimationDuration)
{
float t = elapsedTime / m_AnimationDuration;
float curveValue = m_WeightCurve.Evaluate(t);
m_Volume.weight = curveValue; // U¿ywamy bezpoœrednio wartoœci z krzywej
elapsedTime += Time.deltaTime * m_Speed;
yield return null;
}
// Po zakoñczeniu animacji wy³¹czamy Volume
m_Volume.enabled = false;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a475c053fa2b9dd47b002feb7bbf32a9

View File

@@ -9,7 +9,14 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Poison_foot
m_Shader: {fileID: 4800000, guid: 4775e5a8f344d6348adf934e722da85d, type: 3}
m_ValidKeywords: []
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- BlendAlpha
- Clip_OFF
- FrameBlend_OFF
- FresnelFade_OFF
- VertLight_OFF
m_InvalidKeywords:
- SoftParticles_OFF
m_LightmapFlags: 1
@@ -18,6 +25,7 @@ Material:
m_CustomRenderQueue: 2450
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
@@ -86,3 +94,4 @@ Material:
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _TintColor: {r: 0.135141, g: 1.7207954, b: 0, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -9,6 +9,8 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Poison_splash
m_Shader: {fileID: 4800000, guid: 4775e5a8f344d6348adf934e722da85d, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- BlendAlpha
- Clip_OFF
@@ -25,6 +27,7 @@ Material:
disabledShaderPasses:
- DepthOnly
- SHADOWCASTER
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
@@ -127,3 +130,4 @@ Material:
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
- _TintColor: {r: 0.16041078, g: 1.319508, b: 0, a: 0.5}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -1,75 +1,69 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq.Expressions;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Events; // Nadal potrzebne dla UnityEvent ogólnego użytku
namespace Invector
{
// Prawdopodobnie te typy są zdefiniowane gdzieś globalnie w namespace Invector
// lub w plikach interfejsów. Jeśli nie, trzeba by je tu zdefiniować,
// ale zakładam, że kompilator je znajdzie, skoro vDamageReceiver ich używa.
// [System.Serializable] public class OnReceiveDamage : UnityEvent<vDamage> { } // Jeśli potrzebna definicja
// [System.Serializable] public class OnDead : UnityEvent<GameObject> { } // Jeśli potrzebna definicja
[vClassHeader("HealthController", iconName = "HealthControllerIcon")]
public class vHealthController : vMonoBehaviour, vIHealthController
public class vHealthController : vMonoBehaviour, vIHealthController // Upewnij się, że to jest poprawny interfejs
{
#region Variables
[vEditorToolbar("Health", order = 0)]
[SerializeField] [vReadOnly] protected bool _isDead;
[vBarDisplay("maxHealth")] [SerializeField] protected float _currentHealth;
[SerializeField][vReadOnly] protected bool _isDead;
[vBarDisplay("maxHealth")][SerializeField] protected float _currentHealth;
public bool isImmortal = false;
[vHelpBox("If you want to start with different value, uncheck this and make sure that the current health has a value greater zero")]
public bool fillHealthOnStart = true;
public int maxHealth = 100;
public int MaxHealth
{
get
{
return maxHealth;
}
protected set
{
maxHealth = value;
}
get { return maxHealth; }
protected set { maxHealth = value; }
}
public float currentHealth
{
get
{
return _currentHealth;
}
get { return _currentHealth; }
protected set
{
if (_currentHealth != value)
{
_currentHealth = value;
onChangeHealth.Invoke(_currentHealth);
}
if (!_isDead && _currentHealth <= 0)
{
//_isDead = true;
isDead = true;
onDead.Invoke(gameObject);
}
else if (isDead && _currentHealth > 0)
{
isDead = false;
if (onChangeHealth != null) onChangeHealth.Invoke(_currentHealth);
}
if (!_isDead && _currentHealth <= 0) { isDead = true; }
else if (isDead && _currentHealth > 0) { isDead = false; }
}
}
public virtual bool isDead
{
get
{
if (!_isDead && currentHealth <= 0)
if (!_isDead && _currentHealth <= 0)
{
_isDead = true;
onDead.Invoke(gameObject);
if (_onDead != null) _onDead.Invoke(gameObject);
}
return _isDead;
}
set
{
_isDead = value;
if (_isDead != value)
{
_isDead = value;
if (_isDead)
{
if (_onDead != null) _onDead.Invoke(gameObject);
}
}
}
}
public float healthRecovery = 0f;
@@ -78,38 +72,46 @@ namespace Invector
public float currentHealthRecoveryDelay;
[vEditorToolbar("Events", order = 100)]
public List<CheckHealthEvent> checkHealthEvents = new List<CheckHealthEvent>();
// Używamy typów zdarzeń zdefiniowanych przez Invector (OnReceiveDamage, OnDead)
[SerializeField] protected OnReceiveDamage _onStartReceiveDamage = new OnReceiveDamage();
[SerializeField] protected OnReceiveDamage _onReceiveDamage = new OnReceiveDamage();
[SerializeField] protected OnDead _onDead = new OnDead();
public ValueChangedEvent onChangeHealth;
[SerializeField] protected OnDead _onDead = new OnDead(); // Zakładając, że typ OnDead istnieje
[System.Serializable]
public class ValueChangedEvent : UnityEvent<float> { }
public ValueChangedEvent onChangeHealth = new ValueChangedEvent();
public UnityEvent onResetHealth = new UnityEvent(); // Standardowy UnityEvent
public OnReceiveDamage onStartReceiveDamage { get { return _onStartReceiveDamage; } protected set { _onStartReceiveDamage = value; } }
public OnReceiveDamage onReceiveDamage { get { return _onReceiveDamage; } protected set { _onReceiveDamage = value; } }
public OnDead onDead { get { return _onDead; } protected set { _onDead = value; } }
public UnityEvent onResetHealth;
internal bool inHealthRecovery;
// Właściwości implementujące interfejs, używając typów Invectora
public OnReceiveDamage onStartReceiveDamage { get { return _onStartReceiveDamage; } } // Usunięto 'protected set' aby pasowało do get-only interfejsu
public OnReceiveDamage onReceiveDamage { get { return _onReceiveDamage; } } // Usunięto 'protected set'
public OnDead onDead { get { return _onDead; } } // Usunięto 'protected set'
#endregion
protected virtual void Start()
{
if (fillHealthOnStart)
currentHealth = maxHealth;
if (fillHealthOnStart) currentHealth = maxHealth;
currentHealthRecoveryDelay = healthRecoveryDelay;
}
protected virtual bool canRecoverHealth
{
get
{
return (currentHealth >= 0 && healthRecovery > 0 && currentHealth < maxHealth);
}
get { return (_currentHealth >= 0 && healthRecovery > 0 && _currentHealth < maxHealth && !_isDead); }
}
protected virtual IEnumerator RecoverHealth()
{
inHealthRecovery = true;
while (canRecoverHealth && !isDead)
while (currentHealthRecoveryDelay > 0 && !_isDead)
{
currentHealthRecoveryDelay -= Time.deltaTime;
yield return null;
}
while (canRecoverHealth)
{
HealthRecovery();
yield return null;
@@ -119,149 +121,122 @@ namespace Invector
protected virtual void HealthRecovery()
{
if (!canRecoverHealth||isDead) return;
if (currentHealthRecoveryDelay > 0)
currentHealthRecoveryDelay -= Time.deltaTime;
else
if (!canRecoverHealth) return;
if (_currentHealth < maxHealth)
{
if (currentHealth > maxHealth)
currentHealth = maxHealth;
if (currentHealth < maxHealth)
currentHealth += healthRecovery * Time.deltaTime;
_currentHealth += healthRecovery * Time.deltaTime;
_currentHealth = Mathf.Min(_currentHealth, maxHealth);
if (onChangeHealth != null) onChangeHealth.Invoke(_currentHealth);
}
}
/// <summary>
/// Increase or decrease currentHealth (Positive or Negative Values)
/// </summary>
/// <param name="value">Value to change</param>
public virtual void AddHealth(int value)
{
currentHealth += value;
currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
if (!isDead && currentHealth <= 0)
{
isDead = true;
onDead.Invoke(gameObject);
}
HandleCheckHealthEvents();
}
/// <summary>
/// Change the currentHealth of Character
/// </summary>
/// <param name="value"></param>
public virtual void ChangeHealth(int value)
{
currentHealth = value;
currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
if (!isDead && currentHealth <= 0)
{
isDead = true;
onDead.Invoke(gameObject);
}
HandleCheckHealthEvents();
}
/// <summary>
/// Reset's current health to specific health value
/// </summary>
/// <param name="health">target health</param>
public virtual void AddHealth(int value) { currentHealth += value; }
public virtual void ChangeHealth(int value) { currentHealth = value; }
public virtual void ResetHealth(float health)
{
currentHealth = health;
onResetHealth.Invoke();
if (isDead) isDead = false;
currentHealth = Mathf.Clamp(health, 0, maxHealth);
if (onResetHealth != null) onResetHealth.Invoke();
if (_isDead && _currentHealth > 0) isDead = false;
}
/// <summary>
/// Reset's current health to max health
/// </summary>
public virtual void ResetHealth()
{
currentHealth = maxHealth;
onResetHealth.Invoke();
if (isDead) isDead = false;
if (onResetHealth != null) onResetHealth.Invoke();
if (_isDead) isDead = false;
}
/// <summary>
/// Change the MaxHealth of Character
/// </summary>
/// <param name="value"></param>
public virtual void ChangeMaxHealth(int value)
{
maxHealth += value;
if (maxHealth < 0)
maxHealth = 0;
if (maxHealth < 0) maxHealth = 0;
if (_currentHealth > maxHealth) currentHealth = maxHealth;
}
/// <summary>
/// Set a value to HealthRecovery to start recovering health
/// </summary>
/// <param name="value"></param>
public virtual void SetHealthRecovery(float value)
{
healthRecovery = value;
StartCoroutine(RecoverHealth());
if (!inHealthRecovery && canRecoverHealth && gameObject.activeInHierarchy)
{
StartCoroutine(RecoverHealth());
}
}
/// <summary>
/// Apply Damage to Current Health
/// </summary>
/// <param name="damage">damage</param>
public virtual void TakeDamage(vDamage damage)
{
if (damage != null)
{
onStartReceiveDamage.Invoke(damage);
currentHealthRecoveryDelay = currentHealth <= 0 ? 0 : healthRecoveryDelay;
if (damage != null && !_isDead)
{
if (inHealthRecovery)
{
StopCoroutine(RecoverHealth());
inHealthRecovery = false;
}
currentHealthRecoveryDelay = healthRecoveryDelay;
if (currentHealth > 0 && !isImmortal)
{
currentHealth -= damage.damageValue;
// Użyj flagi ignoreAllHitEffects zdefiniowanej w Twoim zmodyfikowanym vDamage.cs
if (_onStartReceiveDamage != null && !damage.ignoreAllHitEffects)
{
_onStartReceiveDamage.Invoke(damage);
}
if (_currentHealth > 0 && !isImmortal)
{
_currentHealth -= damage.damageValue;
if (onChangeHealth != null) onChangeHealth.Invoke(_currentHealth);
}
// Użyj flagi ignoreAllHitEffects zdefiniowanej w Twoim zmodyfikowanym vDamage.cs
if (damage.damageValue > 0 && _onReceiveDamage != null && !damage.ignoreAllHitEffects)
{
_onReceiveDamage.Invoke(damage);
}
if (_currentHealth <= 0 && !_isDead)
{
isDead = true;
}
if (damage.damageValue > 0)
onReceiveDamage.Invoke(damage);
HandleCheckHealthEvents();
if (!_isDead && healthRecovery > 0 && !inHealthRecovery && gameObject.activeInHierarchy)
{
StartCoroutine(RecoverHealth());
}
}
}
protected virtual void HandleCheckHealthEvents()
{
var events = checkHealthEvents.FindAll(e => (e.healthCompare == CheckHealthEvent.HealthCompare.Equals && currentHealth.Equals(e.healthToCheck)) ||
(e.healthCompare == CheckHealthEvent.HealthCompare.HigherThan && currentHealth > (e.healthToCheck)) ||
(e.healthCompare == CheckHealthEvent.HealthCompare.LessThan && currentHealth < (e.healthToCheck)));
for (int i = 0; i < events.Count; i++)
if (checkHealthEvents == null) return;
for (int i = 0; i < checkHealthEvents.Count; i++)
{
events[i].OnCheckHealth.Invoke();
var e = checkHealthEvents[i];
if (e == null || e.OnCheckHealth == null) continue;
bool conditionMet = false;
switch (e.healthCompare)
{
case CheckHealthEvent.HealthCompare.Equals:
conditionMet = Mathf.Approximately(_currentHealth, e.healthToCheck);
break;
case CheckHealthEvent.HealthCompare.HigherThan:
conditionMet = _currentHealth > e.healthToCheck;
break;
case CheckHealthEvent.HealthCompare.LessThan:
conditionMet = _currentHealth < e.healthToCheck;
break;
}
if (conditionMet)
{
e.OnCheckHealth.Invoke();
}
}
if (currentHealth < maxHealth && this.gameObject.activeInHierarchy && !inHealthRecovery)
StartCoroutine(RecoverHealth());
}
[System.Serializable]
public class CheckHealthEvent
{
public int healthToCheck;
public float healthToCheck;
public bool disableEventOnCheck;
public enum HealthCompare
{
Equals,
HigherThan,
LessThan
}
public enum HealthCompare { Equals, HigherThan, LessThan }
public HealthCompare healthCompare = HealthCompare.Equals;
public UnityEngine.Events.UnityEvent OnCheckHealth;
}
[System.Serializable]
public class ValueChangedEvent : UnityEvent<float>
{
public UnityEvent OnCheckHealth = new UnityEvent();
}
}
}
}

View File

@@ -1,4 +1,5 @@
using UnityEngine;
namespace Invector
{
[System.Serializable]
@@ -14,7 +15,7 @@ namespace Invector
public bool ignoreDefense;
[Tooltip("Activated Ragdoll when hit the Character")]
public bool activeRagdoll;
[vHideInInspector("activeRagdoll"),Tooltip("Time to keep Ragdoll active")]
[vHideInInspector("activeRagdoll"), Tooltip("Time to keep Ragdoll active")]
public float senselessTime;
[HideInInspector]
public Transform sender;
@@ -22,7 +23,7 @@ namespace Invector
public Transform receiver;
[HideInInspector]
public Vector3 hitPosition;
public bool hitReaction = true;
public bool hitReaction = true; // To pole Invectora pozostaje
[HideInInspector]
public int recoil_id = 0;
[HideInInspector]
@@ -30,32 +31,65 @@ namespace Invector
public string damageType;
[HideInInspector] public Vector3 force;
// >>> NASZE NOWE POLE <<<
[Tooltip("If true, will attempt to bypass standard hit reaction animations, sounds, and events like OnReceiveDamage.")]
public bool ignoreAllHitEffects = false;
public vDamage()
{
this.damageValue = 15;
this.staminaBlockCost = 5;
this.staminaRecoveryDelay = 1;
this.hitReaction = true;
this.ignoreAllHitEffects = false; // Domyślnie efekty są włączone
}
public vDamage(int value)
{
this.damageValue = value;
this.hitReaction = true;
this.ignoreAllHitEffects = false; // Domyślnie efekty są włączone
}
public vDamage(int value, bool ignoreReaction)
// Ten konstruktor już istniał, zmodyfikujemy go lekko
// lub dodamy nowy, jeśli chcemy zachować stary w niezmienionej formie.
// Dla uproszczenia, zmodyfikujmy ten, aby przyjmował naszą nową flagę.
// Jeśli `ignoreReactionOrEffects` jest true, ustawiamy obie flagi.
public vDamage(int value, bool ignoreReactionAndAllEffects)
{
this.damageValue = value;
this.hitReaction = !ignoreReaction;
if (ignoreReaction)
this.ignoreAllHitEffects = ignoreReactionAndAllEffects; // Ustawiamy naszą nową flagę
if (ignoreReactionAndAllEffects)
{
this.hitReaction = false; // Jeśli ignorujemy wszystkie efekty, to reakcję też
this.recoil_id = -1;
this.reaction_id = -1;
}
else
{
this.hitReaction = true; // W przeciwnym razie standardowa reakcja
}
}
// Możesz też dodać bardziej specyficzny konstruktor tylko dla naszej flagi,
// jeśli chcesz mieć większą kontrolę:
/*
public vDamage(int value, bool setHitReaction, bool setIgnoreAllHitEffects)
{
this.damageValue = value;
this.hitReaction = setHitReaction;
this.ignoreAllHitEffects = setIgnoreAllHitEffects;
if (!setHitReaction) // Jeśli hitReaction jest false
{
this.recoil_id = -1;
this.reaction_id = -1;
}
}
}
*/
public vDamage(vDamage damage)
public vDamage(vDamage damage) // Konstruktor kopiujący
{
this.damageValue = damage.damageValue;
this.staminaBlockCost = damage.staminaBlockCost;
@@ -70,6 +104,9 @@ namespace Invector
this.hitPosition = damage.hitPosition;
this.senselessTime = damage.senselessTime;
this.force = damage.force;
this.hitReaction = damage.hitReaction; // Skopiuj oryginalne pole hitReaction
// >>> SKOPIUJ NASZE NOWE POLE <<<
this.ignoreAllHitEffects = damage.ignoreAllHitEffects;
}
/// <summary>

View File

@@ -0,0 +1,41 @@
fileFormatVersion: 2
guid: 08f8ddcc9fadca44b88de3155aa75c5e
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides:
4:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 0
quality: 1
conversionMode: 0
preloadAudioData: 0
7:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -845,7 +845,7 @@ PlayerSettings:
webWasm2023: 0
scriptingDefineSymbols:
: UNITY_POST_PROCESSING_STACK_V2
Android: UNITY_POST_PROCESSING_STACK_V2;CROSS_PLATFORM_INPUT;USE_TIMELINE;USE_NEW_INPUT;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER;TMP_PRESENT
Android: UNITY_POST_PROCESSING_STACK_V2;CROSS_PLATFORM_INPUT;USE_TIMELINE;USE_NEW_INPUT;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER;TMP_PRESENT;ENEMIES_DISABLED
CloudRendering: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
EmbeddedLinux: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
GameCoreScarlett: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
@@ -857,12 +857,12 @@ PlayerSettings:
QNX: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
ReservedCFE: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
Stadia: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
Standalone: UNITY_POST_PROCESSING_STACK_V2;CROSS_PLATFORM_INPUT;INVECTOR_BASIC;INVECTOR_MELEE;TOUCH_REACT;GAIA_2_PRESENT;INVECTOR_AI_TEMPLATE;UPPipeline;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER;URP_OUTLINE;ODIN_INSPECTOR;ODIN_INSPECTOR_3;TMP_PRESENT;USE_TIMELINE;ODIN_INSPECTOR_3_1;ODIN_INSPECTOR_3_2;ODIN_INSPECTOR_3_3
Standalone: UNITY_POST_PROCESSING_STACK_V2;CROSS_PLATFORM_INPUT;INVECTOR_BASIC;INVECTOR_MELEE;TOUCH_REACT;GAIA_2_PRESENT;INVECTOR_AI_TEMPLATE;UPPipeline;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER;URP_OUTLINE;ODIN_INSPECTOR;ODIN_INSPECTOR_3;TMP_PRESENT;USE_TIMELINE;ODIN_INSPECTOR_3_1;ODIN_INSPECTOR_3_2;ODIN_INSPECTOR_3_3;ENEMIES_DISABLED
VisionOS: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
WebGL: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
Windows Store Apps: UNITY_POST_PROCESSING_STACK_V2;CROSS_PLATFORM_INPUT;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
XboxOne: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
iPhone: CROSS_PLATFORM_INPUT;INVECTOR_BASIC;INVECTOR_MELEE;GAIA_2_PRESENT;GAIA_PRO_PRESENT;UPPipeline;UNITY_POST_PROCESSING_STACK_V2;TOUCH_REACT;INVECTOR_AI_TEMPLATE;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER;URP_OUTLINE;ODIN_INSPECTOR;ODIN_INSPECTOR_3;TMP_PRESENT;USE_INVECTOR_INVENTORY;USE_TIMELINE;ODIN_INSPECTOR_3_1;ODIN_INSPECTOR_3_2;ODIN_INSPECTOR_3_3
iPhone: CROSS_PLATFORM_INPUT;INVECTOR_BASIC;INVECTOR_MELEE;GAIA_2_PRESENT;GAIA_PRO_PRESENT;UPPipeline;UNITY_POST_PROCESSING_STACK_V2;TOUCH_REACT;INVECTOR_AI_TEMPLATE;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER;URP_OUTLINE;ODIN_INSPECTOR;ODIN_INSPECTOR_3;TMP_PRESENT;USE_INVECTOR_INVENTORY;USE_TIMELINE;ODIN_INSPECTOR_3_1;ODIN_INSPECTOR_3_2;ODIN_INSPECTOR_3_3;ENEMIES_DISABLED
tvOS: UNITY_POST_PROCESSING_STACK_V2;PLAYMAKER;PLAYMAKER_1_9;PLAYMAKER_1_9_0;PLAYMAKER_1_8_OR_NEWER;PLAYMAKER_1_8_5_OR_NEWER;PLAYMAKER_1_9_OR_NEWER
additionalCompilerArguments: {}
platformArchitecture: {}