commit 88f9481f19bb2bc09fc7dda50e2fa29e984ea9aa Author: DuOtto Date: Sat Aug 15 13:52:59 2026 +0200 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8995299 --- /dev/null +++ b/.gitignore @@ -0,0 +1,54 @@ +# Unreal Engine generated/build folders +Binaries/ +Intermediate/ +DerivedDataCache/ +Saved/ +Build/ +.vs/ +*.VC.db +*.VC.VC.opendb + +# Generated project/solution files (regenerated by "Generate Visual Studio project files") +*.sln +*.slnx +*.suo +*.opensdf +*.sdf +*.VC.db +*.opendb + +# Plugin build artifacts (if you add plugins with their own Binaries/Intermediate) +Plugins/*/Binaries/ +Plugins/*/Intermediate/ + +# OS/editor junk +.DS_Store +Thumbs.db + + +# Visual Studio / Rider / IDE files +.vs/ +.vscode/ +*.sln +*.VC.db +*.VC.opendb + +# Unreal local files +*.log +*.tlog +*.cache +*.pdb + + +# Packed assets (optional) +*.pak +*.zip + +# Crash reports +CrashReports/ + +# Shader cache +Saved/ShaderDebugInfo/ +Saved/Config/CrashReportClient/ + +ThirdParty/opencv/ \ No newline at end of file diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 0000000..93c1dfa --- /dev/null +++ b/.vsconfig @@ -0,0 +1,17 @@ +{ + "version": "1.0", + "components": [ + "Component.Unreal.Debugger", + "Component.Unreal.Ide", + "Microsoft.Net.Component.4.6.2.TargetingPack", + "Microsoft.VisualStudio.Component.VC.14.44.17.14.ATL", + "Microsoft.VisualStudio.Component.VC.14.44.17.14.x86.x64", + "Microsoft.VisualStudio.Component.VC.Llvm.Clang", + "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "Microsoft.VisualStudio.Component.Windows11SDK.22621", + "Microsoft.VisualStudio.Workload.CoreEditor", + "Microsoft.VisualStudio.Workload.ManagedDesktop", + "Microsoft.VisualStudio.Workload.NativeDesktop", + "Microsoft.VisualStudio.Workload.NativeGame" + ] +} diff --git a/Config/DefaultEditor.ini b/Config/DefaultEditor.ini new file mode 100644 index 0000000..2c08200 --- /dev/null +++ b/Config/DefaultEditor.ini @@ -0,0 +1,15 @@ +[UnrealEd.SimpleMap] +SimpleMapName=/Game/FirstPersonBP/Maps/FirstPersonExampleMap + +[EditoronlyBP] +bAllowClassAndBlueprintPinMatching=true +bReplaceBlueprintWithClass= true +bDontLoadBlueprintOutsideEditor= true +bBlueprintIsNotBlueprintType= true + +[/Script/AdvancedPreviewScene.SharedProfiles] ++Profiles=(ProfileName="Epic Headquarters",bSharedProfile=True,bIsEngineDefaultProfile=True,bUseSkyLighting=True,DirectionalLightIntensity=1.000000,DirectionalLightColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SkyLightIntensity=1.000000,bRotateLightingRig=False,bShowEnvironment=True,bShowFloor=False,bShowGrid=False,EnvironmentColor=(R=0.200000,G=0.200000,B=0.200000,A=1.000000),EnvironmentIntensity=1.000000,EnvironmentCubeMapPath="/Engine/EditorMaterials/AssetViewer/EpicQuadPanorama_CC+EV1.EpicQuadPanorama_CC+EV1",EnvironmentFloorMeshPath="/Engine/EditorMeshes/AssetViewer/Floor_Mesh.Floor_Mesh",EnvironmentFloorRotation=(Pitch=0.000000,Yaw=0.000000,Roll=0.000000),EnvironmentFloorScale=(X=4.000000,Y=4.000000,Z=1.000000),EnvironmentFloorMaterialPath="/Engine/EngineMaterials/M_Grid.M_Grid",bPostProcessingEnabled=True,PostProcessingSettings=(bOverride_TemperatureType=False,bOverride_WhiteTemp=False,bOverride_WhiteTint=False,bOverride_ColorSaturation=False,bOverride_ColorContrast=False,bOverride_ColorGamma=False,bOverride_ColorGain=False,bOverride_ColorOffset=False,bOverride_ColorSaturationShadows=False,bOverride_ColorContrastShadows=False,bOverride_ColorGammaShadows=False,bOverride_ColorGainShadows=False,bOverride_ColorOffsetShadows=False,bOverride_ColorSaturationMidtones=False,bOverride_ColorContrastMidtones=False,bOverride_ColorGammaMidtones=False,bOverride_ColorGainMidtones=False,bOverride_ColorOffsetMidtones=False,bOverride_ColorSaturationHighlights=False,bOverride_ColorContrastHighlights=False,bOverride_ColorGammaHighlights=False,bOverride_ColorGainHighlights=False,bOverride_ColorOffsetHighlights=False,bOverride_ColorCorrectionShadowsMax=False,bOverride_ColorCorrectionHighlightsMin=False,bOverride_ColorCorrectionHighlightsMax=False,bOverride_BlueCorrection=False,bOverride_ExpandGamut=False,bOverride_ToneCurveAmount=False,bOverride_TonemappingMethod=False,bOverride_FilmSlope=False,bOverride_FilmToe=False,bOverride_FilmShoulder=False,bOverride_FilmBlackClip=False,bOverride_FilmWhiteClip=False,bOverride_SceneColorTint=False,bOverride_SceneFringeIntensity=False,bOverride_ChromaticAberrationStartOffset=False,bOverride_bMegaLights=False,bOverride_MegaLightsFrontLayerTranslucency=False,bOverride_AmbientCubemapTint=False,bOverride_AmbientCubemapIntensity=False,bOverride_BloomMethod=False,bOverride_BloomIntensity=False,bOverride_BloomGaussianIntensity=False,bOverride_BloomThreshold=False,bOverride_Bloom1Tint=False,bOverride_Bloom1Size=False,bOverride_Bloom2Size=False,bOverride_Bloom2Tint=False,bOverride_Bloom3Tint=False,bOverride_Bloom3Size=False,bOverride_Bloom4Tint=False,bOverride_Bloom4Size=False,bOverride_Bloom5Tint=False,bOverride_Bloom5Size=False,bOverride_Bloom6Tint=False,bOverride_Bloom6Size=False,bOverride_BloomSizeScale=False,bOverride_BloomConvolutionIntensity=False,bOverride_BloomConvolutionTexture=False,bOverride_BloomConvolutionScatterDispersion=False,bOverride_BloomConvolutionSize=False,bOverride_BloomConvolutionCenterUV=False,bOverride_BloomConvolutionPreFilterMin=False,bOverride_BloomConvolutionPreFilterMax=False,bOverride_BloomConvolutionPreFilterMult=False,bOverride_BloomConvolutionBufferScale=False,bOverride_BloomDirtMaskIntensity=False,bOverride_BloomDirtMaskTint=False,bOverride_BloomDirtMask=False,bOverride_CameraShutterSpeed=False,bOverride_CameraISO=False,bOverride_AutoExposureMethod=False,bOverride_AutoExposureLowPercent=False,bOverride_AutoExposureHighPercent=False,bOverride_AutoExposureMinBrightness=False,bOverride_AutoExposureMaxBrightness=False,bOverride_AutoExposureSpeedUp=False,bOverride_AutoExposureSpeedDown=False,bOverride_AutoExposureBias=False,bOverride_AutoExposureBiasCurve=False,bOverride_AutoExposureMeterMask=False,bOverride_AutoExposureApplyPhysicalCameraExposure=False,bOverride_HistogramLogMin=False,bOverride_HistogramLogMax=False,bOverride_LocalExposureMethod=False,bOverride_LocalExposureHighlightContrastScale=False,bOverride_LocalExposureShadowContrastScale=False,bOverride_LocalExposureHighlightContrastCurve=False,bOverride_LocalExposureShadowContrastCurve=False,bOverride_LocalExposureHighlightThreshold=False,bOverride_LocalExposureShadowThreshold=False,bOverride_LocalExposureDetailStrength=False,bOverride_LocalExposureBlurredLuminanceBlend=False,bOverride_LocalExposureBlurredLuminanceKernelSizePercent=False,bOverride_LocalExposureHighlightThresholdStrength=False,bOverride_LocalExposureShadowThresholdStrength=False,bOverride_LocalExposureMiddleGreyBias=False,bOverride_LensFlareIntensity=False,bOverride_LensFlareTint=False,bOverride_LensFlareTints=False,bOverride_LensFlareBokehSize=False,bOverride_LensFlareBokehShape=False,bOverride_LensFlareThreshold=False,bOverride_VignetteIntensity=False,bOverride_VignetteType=False,bOverride_VignetteCenter=False,bOverride_VignetteColor=False,bOverride_VignetteSize=False,bOverride_VignetteSoftness=False,bOverride_VignetteTexture=False,bOverride_Sharpen=False,bOverride_FilmGrainIntensity=False,bOverride_FilmGrainIntensityShadows=False,bOverride_FilmGrainIntensityMidtones=False,bOverride_FilmGrainIntensityHighlights=False,bOverride_FilmGrainShadowsMax=False,bOverride_FilmGrainHighlightsMin=False,bOverride_FilmGrainHighlightsMax=False,bOverride_FilmGrainScale=False,bOverride_FilmGrainTexture=False,bOverride_AmbientOcclusionIntensity=False,bOverride_AmbientOcclusionStaticFraction=False,bOverride_AmbientOcclusionRadius=False,bOverride_AmbientOcclusionFadeDistance=False,bOverride_AmbientOcclusionFadeRadius=False,bOverride_AmbientOcclusionRadiusInWS=False,bOverride_AmbientOcclusionPower=False,bOverride_AmbientOcclusionBias=False,bOverride_AmbientOcclusionQuality=False,bOverride_AmbientOcclusionMipBlend=False,bOverride_AmbientOcclusionMipScale=False,bOverride_AmbientOcclusionMipThreshold=False,bOverride_AmbientOcclusionTemporalBlendWeight=False,bOverride_RayTracingAO=False,bOverride_RayTracingAOSamplesPerPixel=False,bOverride_RayTracingAOIntensity=False,bOverride_RayTracingAORadius=False,bOverride_IndirectLightingColor=False,bOverride_IndirectLightingIntensity=False,bOverride_ColorGradingIntensity=False,bOverride_ColorGradingLUT=False,bOverride_DepthOfFieldEnabled=False,bOverride_DepthOfFieldFocalDistance=False,bOverride_DepthOfFieldFstop=False,bOverride_DepthOfFieldMinFstop=False,bOverride_DepthOfFieldBladeCount=False,bOverride_DepthOfFieldSensorWidth=False,bOverride_DepthOfFieldSqueezeFactor=False,bOverride_DepthOfFieldDepthBlurRadius=False,bOverride_DepthOfFieldUseHairDepth=False,bOverride_DepthOfFieldPetzvalBokeh=False,bOverride_DepthOfFieldPetzvalBokehFalloff=False,bOverride_DepthOfFieldPetzvalExclusionBoxExtents=False,bOverride_DepthOfFieldPetzvalExclusionBoxRadius=False,bOverride_DepthOfFieldAspectRatioScalar=False,bOverride_DepthOfFieldMatteBoxFlags=False,bOverride_DepthOfFieldBarrelRadius=False,bOverride_DepthOfFieldBarrelLength=False,bOverride_DepthOfFieldDepthBlurAmount=False,bOverride_DepthOfFieldFocalRegion=False,bOverride_DepthOfFieldNearTransitionRegion=False,bOverride_DepthOfFieldFarTransitionRegion=False,bOverride_DepthOfFieldScale=False,bOverride_DepthOfFieldNearBlurSize=False,bOverride_DepthOfFieldFarBlurSize=False,bOverride_MobileHQGaussian=False,bOverride_DepthOfFieldOcclusion=False,bOverride_DepthOfFieldSkyFocusDistance=False,bOverride_DepthOfFieldVignetteSize=False,bOverride_MotionBlurAmount=False,bOverride_MotionBlurMax=False,bOverride_MotionBlurTargetFPS=False,bOverride_MotionBlurPerObjectSize=False,bOverride_ReflectionMethod=False,bOverride_LumenReflectionQuality=False,bOverride_ScreenSpaceReflectionIntensity=False,bOverride_ScreenSpaceReflectionQuality=False,bOverride_ScreenSpaceReflectionMaxRoughness=False,bOverride_ScreenSpaceReflectionRoughnessScale=False,bOverride_UserFlags=False,bOverride_RayTracingReflectionsMaxRoughness=False,bOverride_RayTracingReflectionsMaxBounces=False,bOverride_RayTracingReflectionsSamplesPerPixel=False,bOverride_RayTracingReflectionsShadows=False,bOverride_RayTracingReflectionsTranslucency=False,bOverride_TranslucencyType=False,bOverride_RayTracingTranslucencyMaxRoughness=False,bOverride_RayTracingTranslucencyRefractionRays=False,bOverride_RayTracingTranslucencySamplesPerPixel=False,bOverride_RayTracingTranslucencyShadows=False,bOverride_RayTracingTranslucencyRefraction=False,bOverride_RayTracingTranslucencyMaxPrimaryHitEvents=False,bOverride_RayTracingTranslucencyMaxSecondaryHitEvents=False,bOverride_RayTracingTranslucencyUseRayTracedRefraction=False,bOverride_DynamicGlobalIlluminationMethod=False,bOverride_LumenSceneLightingQuality=False,bOverride_LumenSceneDetail=False,bOverride_LumenSceneViewDistance=False,bOverride_LumenSceneLightingUpdateSpeed=False,bOverride_LumenFinalGatherQuality=False,bOverride_LumenFinalGatherLightingUpdateSpeed=False,bOverride_LumenFinalGatherScreenTraces=False,bOverride_LumenMaxTraceDistance=False,bOverride_LumenDiffuseColorBoost=False,bOverride_LumenAmbientOcclusionIntensity=False,bOverride_LumenSkylightLeaking=False,bOverride_LumenSkylightLeakingTint=False,bOverride_LumenFullSkylightLeakingDistance=False,bOverride_LumenRayLightingMode=False,bOverride_LumenReflectionsScreenTraces=False,bOverride_LumenFrontLayerTranslucencyReflections=False,bOverride_LumenMaxRoughnessToTraceReflections=False,bOverride_LumenMaxReflectionBounces=False,bOverride_LumenMaxRefractionBounces=False,bOverride_LumenSurfaceCacheResolution=False,bOverride_RayTracingGI=False,bOverride_RayTracingGIMaxBounces=False,bOverride_RayTracingGISamplesPerPixel=False,bOverride_PathTracingMaxBounces=False,bOverride_PathTracingSamplesPerPixel=False,bOverride_PathTracingMaxPathIntensity=False,bOverride_PathTracingEnableEmissiveMaterials=False,bOverride_PathTracingEnableReferenceDOF=False,bOverride_PathTracingEnableReferenceAtmosphere=False,bOverride_PathTracingEnableDenoiser=False,bOverride_PathTracingIncludeEmissive=False,bOverride_PathTracingIncludeDiffuse=False,bOverride_PathTracingIncludeIndirectDiffuse=False,bOverride_PathTracingIncludeSpecular=False,bOverride_PathTracingIncludeIndirectSpecular=False,bOverride_PathTracingIncludeVolume=False,bOverride_PathTracingIncludeIndirectVolume=False,bMobileHQGaussian=False,BloomMethod=BM_SOG,AutoExposureMethod=AEM_Histogram,TemperatureType=TEMP_WhiteBalance,WhiteTemp=6500.000000,WhiteTint=0.000000,ColorSaturation=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrast=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGamma=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGain=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffset=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetShadows=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetMidtones=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetHighlights=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorCorrectionHighlightsMin=0.500000,ColorCorrectionHighlightsMax=1.000000,ColorCorrectionShadowsMax=0.090000,BlueCorrection=0.600000,ExpandGamut=1.000000,ToneCurveAmount=1.000000,TonemappingMethod=Filmic,FilmSlope=0.880000,FilmToe=0.550000,FilmShoulder=0.260000,FilmBlackClip=0.000000,FilmWhiteClip=0.040000,SceneColorTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SceneFringeIntensity=0.000000,ChromaticAberrationStartOffset=0.000000,BloomIntensity=0.675000,BloomGaussianIntensity=1.000000,BloomThreshold=-1.000000,BloomSizeScale=4.000000,Bloom1Size=0.300000,Bloom2Size=1.000000,Bloom3Size=2.000000,Bloom4Size=10.000000,Bloom5Size=30.000000,Bloom6Size=64.000000,Bloom1Tint=(R=0.346500,G=0.346500,B=0.346500,A=1.000000),Bloom2Tint=(R=0.138000,G=0.138000,B=0.138000,A=1.000000),Bloom3Tint=(R=0.117600,G=0.117600,B=0.117600,A=1.000000),Bloom4Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom5Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom6Tint=(R=0.061000,G=0.061000,B=0.061000,A=1.000000),BloomConvolutionIntensity=1.000000,BloomConvolutionScatterDispersion=1.000000,BloomConvolutionSize=1.000000,BloomConvolutionTexture=None,BloomConvolutionCenterUV=(X=0.500000,Y=0.500000),BloomConvolutionPreFilterMin=7.000000,BloomConvolutionPreFilterMax=15000.000000,BloomConvolutionPreFilterMult=15.000000,BloomConvolutionBufferScale=0.133000,BloomDirtMask=None,BloomDirtMaskIntensity=0.000000,BloomDirtMaskTint=(R=0.500000,G=0.500000,B=0.500000,A=1.000000),DynamicGlobalIlluminationMethod=Lumen,IndirectLightingColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),IndirectLightingIntensity=1.000000,LumenRayLightingMode=Default,LumenSceneLightingQuality=1.000000,LumenSceneDetail=1.000000,LumenSceneViewDistance=20000.000000,LumenSceneLightingUpdateSpeed=1.000000,LumenFinalGatherQuality=1.000000,LumenFinalGatherLightingUpdateSpeed=1.000000,LumenFinalGatherScreenTraces=True,LumenMaxTraceDistance=20000.000000,LumenDiffuseColorBoost=1.000000,LumenAmbientOcclusionIntensity=1.000000,LumenSkylightLeaking=0.000000,LumenSkylightLeakingTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LumenFullSkylightLeakingDistance=1000.000000,LumenSurfaceCacheResolution=1.000000,ReflectionMethod=Lumen,LumenReflectionQuality=1.000000,LumenReflectionsScreenTraces=True,LumenFrontLayerTranslucencyReflections=False,LumenMaxRoughnessToTraceReflections=0.400000,LumenMaxReflectionBounces=1,LumenMaxRefractionBounces=0,ScreenSpaceReflectionIntensity=100.000000,ScreenSpaceReflectionQuality=50.000000,ScreenSpaceReflectionMaxRoughness=0.600000,bMegaLights=True,MegaLightsFrontLayerTranslucency=False,AmbientCubemapTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),AmbientCubemapIntensity=1.000000,AmbientCubemap=None,CameraShutterSpeed=60.000000,CameraISO=100.000000,DepthOfFieldFstop=4.000000,DepthOfFieldMinFstop=1.200000,DepthOfFieldBladeCount=5,AutoExposureBias=1.000000,AutoExposureBiasBackup=0.000000,bOverride_AutoExposureBiasBackup=False,AutoExposureApplyPhysicalCameraExposure=True,AutoExposureBiasCurve=None,AutoExposureMeterMask=None,AutoExposureLowPercent=10.000000,AutoExposureHighPercent=90.000000,AutoExposureMinBrightness=-10.000000,AutoExposureMaxBrightness=20.000000,AutoExposureSpeedUp=3.000000,AutoExposureSpeedDown=1.000000,HistogramLogMin=-10.000000,HistogramLogMax=20.000000,LocalExposureMethod=Bilateral,LocalExposureHighlightContrastScale=1.000000,LocalExposureShadowContrastScale=1.000000,LocalExposureHighlightContrastCurve=None,LocalExposureShadowContrastCurve=None,LocalExposureHighlightThreshold=0.000000,LocalExposureShadowThreshold=0.000000,LocalExposureDetailStrength=1.000000,LocalExposureBlurredLuminanceBlend=0.600000,LocalExposureBlurredLuminanceKernelSizePercent=50.000000,LocalExposureHighlightThresholdStrength=1.000000,LocalExposureShadowThresholdStrength=1.000000,LocalExposureMiddleGreyBias=0.000000,LensFlareIntensity=1.000000,LensFlareTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LensFlareBokehSize=3.000000,LensFlareThreshold=8.000000,LensFlareBokehShape=None,LensFlareTints[0]=(R=1.000000,G=0.800000,B=0.400000,A=0.600000),LensFlareTints[1]=(R=1.000000,G=1.000000,B=0.600000,A=0.530000),LensFlareTints[2]=(R=0.800000,G=0.800000,B=1.000000,A=0.460000),LensFlareTints[3]=(R=0.500000,G=1.000000,B=0.400000,A=0.390000),LensFlareTints[4]=(R=0.500000,G=0.800000,B=1.000000,A=0.310000),LensFlareTints[5]=(R=0.900000,G=1.000000,B=0.800000,A=0.270000),LensFlareTints[6]=(R=1.000000,G=0.800000,B=0.400000,A=0.220000),LensFlareTints[7]=(R=0.900000,G=0.700000,B=0.700000,A=0.150000),VignetteIntensity=0.400000,VignetteType=CosineFourthLaw,VignetteCenter=(X=0.500000,Y=0.500000),VignetteColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000),VignetteSize=(X=1.000000,Y=1.000000),VignetteSoftness=5.000000,VignetteTexture=None,Sharpen=0.000000,FilmGrainIntensity=0.000000,FilmGrainIntensityShadows=1.000000,FilmGrainIntensityMidtones=1.000000,FilmGrainIntensityHighlights=1.000000,FilmGrainShadowsMax=0.090000,FilmGrainHighlightsMin=0.500000,FilmGrainHighlightsMax=1.000000,FilmGrainScale=(X=1.000000,Y=1.000000),FilmGrainTexture=None,AmbientOcclusionIntensity=0.500000,AmbientOcclusionStaticFraction=1.000000,AmbientOcclusionRadius=200.000000,AmbientOcclusionRadiusInWS=False,AmbientOcclusionFadeDistance=8000.000000,AmbientOcclusionFadeRadius=5000.000000,AmbientOcclusionPower=2.000000,AmbientOcclusionBias=3.000000,AmbientOcclusionQuality=50.000000,AmbientOcclusionMipBlend=0.600000,AmbientOcclusionMipScale=1.700000,AmbientOcclusionMipThreshold=0.010000,AmbientOcclusionTemporalBlendWeight=0.100000,RayTracingAO=False,RayTracingAOSamplesPerPixel=1,RayTracingAOIntensity=1.000000,RayTracingAORadius=200.000000,ColorGradingIntensity=1.000000,ColorGradingLUT=None,DepthOfFieldEnabled=True,DepthOfFieldSensorWidth=24.576000,DepthOfFieldSqueezeFactor=1.000000,DepthOfFieldFocalDistance=0.000000,DepthOfFieldDepthBlurAmount=1.000000,DepthOfFieldDepthBlurRadius=0.000000,DepthOfFieldUseHairDepth=False,DepthOfFieldPetzvalBokeh=0.000000,DepthOfFieldPetzvalBokehFalloff=1.000000,DepthOfFieldPetzvalExclusionBoxExtents=(X=0.000000,Y=0.000000),DepthOfFieldPetzvalExclusionBoxRadius=0.000000,DepthOfFieldAspectRatioScalar=1.000000,DepthOfFieldBarrelRadius=5.000000,DepthOfFieldBarrelLength=0.000000,DepthOfFieldMatteBoxFlags[0]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[1]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[2]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldFocalRegion=0.000000,DepthOfFieldNearTransitionRegion=300.000000,DepthOfFieldFarTransitionRegion=500.000000,DepthOfFieldScale=0.000000,DepthOfFieldNearBlurSize=15.000000,DepthOfFieldFarBlurSize=15.000000,DepthOfFieldOcclusion=0.400000,DepthOfFieldSkyFocusDistance=0.000000,DepthOfFieldVignetteSize=200.000000,MotionBlurAmount=0.500000,MotionBlurMax=5.000000,MotionBlurTargetFPS=30,MotionBlurPerObjectSize=0.000000,TranslucencyType=Raster,RayTracingTranslucencyMaxRoughness=0.600000,RayTracingTranslucencyRefractionRays=3,RayTracingTranslucencySamplesPerPixel=1,RayTracingTranslucencyMaxPrimaryHitEvents=4,RayTracingTranslucencyMaxSecondaryHitEvents=2,RayTracingTranslucencyShadows=Hard_shadows,RayTracingTranslucencyRefraction=True,RayTracingTranslucencyUseRayTracedRefraction=False,PathTracingMaxBounces=32,PathTracingSamplesPerPixel=2048,PathTracingMaxPathIntensity=24.000000,PathTracingEnableEmissiveMaterials=True,PathTracingEnableReferenceDOF=False,PathTracingEnableReferenceAtmosphere=False,PathTracingEnableDenoiser=True,PathTracingIncludeEmissive=True,PathTracingIncludeDiffuse=True,PathTracingIncludeIndirectDiffuse=True,PathTracingIncludeSpecular=True,PathTracingIncludeIndirectSpecular=True,PathTracingIncludeVolume=True,PathTracingIncludeIndirectVolume=True,UserFlags=0,WeightedBlendables=(Array=)),LightingRigRotation=0.000000,RotationSpeed=2.000000,DirectionalLightRotation=(Pitch=-40.000000,Yaw=-67.500000,Roll=0.000000),bEnableToneMapping=True,bShowMeshEdges=False) ++Profiles=(ProfileName="Grey Wireframe",bSharedProfile=True,bIsEngineDefaultProfile=True,bUseSkyLighting=True,DirectionalLightIntensity=1.000000,DirectionalLightColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SkyLightIntensity=1.000000,bRotateLightingRig=False,bShowEnvironment=False,bShowFloor=False,bShowGrid=True,EnvironmentColor=(R=0.039216,G=0.039216,B=0.039216,A=1.000000),EnvironmentIntensity=1.000000,EnvironmentCubeMapPath="/Engine/EditorMaterials/AssetViewer/EpicQuadPanorama_CC+EV1.EpicQuadPanorama_CC+EV1",EnvironmentFloorMeshPath="/Engine/EditorMeshes/AssetViewer/Floor_Mesh.Floor_Mesh",EnvironmentFloorRotation=(Pitch=0.000000,Yaw=0.000000,Roll=0.000000),EnvironmentFloorScale=(X=4.000000,Y=4.000000,Z=1.000000),EnvironmentFloorMaterialPath="/Engine/EngineMaterials/M_Grid.M_Grid",bPostProcessingEnabled=False,PostProcessingSettings=(bOverride_TemperatureType=False,bOverride_WhiteTemp=False,bOverride_WhiteTint=False,bOverride_ColorSaturation=False,bOverride_ColorContrast=False,bOverride_ColorGamma=False,bOverride_ColorGain=False,bOverride_ColorOffset=False,bOverride_ColorSaturationShadows=False,bOverride_ColorContrastShadows=False,bOverride_ColorGammaShadows=False,bOverride_ColorGainShadows=False,bOverride_ColorOffsetShadows=False,bOverride_ColorSaturationMidtones=False,bOverride_ColorContrastMidtones=False,bOverride_ColorGammaMidtones=False,bOverride_ColorGainMidtones=False,bOverride_ColorOffsetMidtones=False,bOverride_ColorSaturationHighlights=False,bOverride_ColorContrastHighlights=False,bOverride_ColorGammaHighlights=False,bOverride_ColorGainHighlights=False,bOverride_ColorOffsetHighlights=False,bOverride_ColorCorrectionShadowsMax=False,bOverride_ColorCorrectionHighlightsMin=False,bOverride_ColorCorrectionHighlightsMax=False,bOverride_BlueCorrection=False,bOverride_ExpandGamut=False,bOverride_ToneCurveAmount=False,bOverride_TonemappingMethod=False,bOverride_FilmSlope=False,bOverride_FilmToe=False,bOverride_FilmShoulder=False,bOverride_FilmBlackClip=False,bOverride_FilmWhiteClip=False,bOverride_SceneColorTint=False,bOverride_SceneFringeIntensity=False,bOverride_ChromaticAberrationStartOffset=False,bOverride_bMegaLights=False,bOverride_MegaLightsFrontLayerTranslucency=False,bOverride_AmbientCubemapTint=False,bOverride_AmbientCubemapIntensity=False,bOverride_BloomMethod=False,bOverride_BloomIntensity=False,bOverride_BloomGaussianIntensity=False,bOverride_BloomThreshold=False,bOverride_Bloom1Tint=False,bOverride_Bloom1Size=False,bOverride_Bloom2Size=False,bOverride_Bloom2Tint=False,bOverride_Bloom3Tint=False,bOverride_Bloom3Size=False,bOverride_Bloom4Tint=False,bOverride_Bloom4Size=False,bOverride_Bloom5Tint=False,bOverride_Bloom5Size=False,bOverride_Bloom6Tint=False,bOverride_Bloom6Size=False,bOverride_BloomSizeScale=False,bOverride_BloomConvolutionIntensity=False,bOverride_BloomConvolutionTexture=False,bOverride_BloomConvolutionScatterDispersion=False,bOverride_BloomConvolutionSize=False,bOverride_BloomConvolutionCenterUV=False,bOverride_BloomConvolutionPreFilterMin=False,bOverride_BloomConvolutionPreFilterMax=False,bOverride_BloomConvolutionPreFilterMult=False,bOverride_BloomConvolutionBufferScale=False,bOverride_BloomDirtMaskIntensity=False,bOverride_BloomDirtMaskTint=False,bOverride_BloomDirtMask=False,bOverride_CameraShutterSpeed=False,bOverride_CameraISO=False,bOverride_AutoExposureMethod=False,bOverride_AutoExposureLowPercent=False,bOverride_AutoExposureHighPercent=False,bOverride_AutoExposureMinBrightness=False,bOverride_AutoExposureMaxBrightness=False,bOverride_AutoExposureSpeedUp=False,bOverride_AutoExposureSpeedDown=False,bOverride_AutoExposureBias=False,bOverride_AutoExposureBiasCurve=False,bOverride_AutoExposureMeterMask=False,bOverride_AutoExposureApplyPhysicalCameraExposure=False,bOverride_HistogramLogMin=False,bOverride_HistogramLogMax=False,bOverride_LocalExposureMethod=False,bOverride_LocalExposureHighlightContrastScale=False,bOverride_LocalExposureShadowContrastScale=False,bOverride_LocalExposureHighlightContrastCurve=False,bOverride_LocalExposureShadowContrastCurve=False,bOverride_LocalExposureHighlightThreshold=False,bOverride_LocalExposureShadowThreshold=False,bOverride_LocalExposureDetailStrength=False,bOverride_LocalExposureBlurredLuminanceBlend=False,bOverride_LocalExposureBlurredLuminanceKernelSizePercent=False,bOverride_LocalExposureHighlightThresholdStrength=False,bOverride_LocalExposureShadowThresholdStrength=False,bOverride_LocalExposureMiddleGreyBias=False,bOverride_LensFlareIntensity=False,bOverride_LensFlareTint=False,bOverride_LensFlareTints=False,bOverride_LensFlareBokehSize=False,bOverride_LensFlareBokehShape=False,bOverride_LensFlareThreshold=False,bOverride_VignetteIntensity=False,bOverride_VignetteType=False,bOverride_VignetteCenter=False,bOverride_VignetteColor=False,bOverride_VignetteSize=False,bOverride_VignetteSoftness=False,bOverride_VignetteTexture=False,bOverride_Sharpen=False,bOverride_FilmGrainIntensity=False,bOverride_FilmGrainIntensityShadows=False,bOverride_FilmGrainIntensityMidtones=False,bOverride_FilmGrainIntensityHighlights=False,bOverride_FilmGrainShadowsMax=False,bOverride_FilmGrainHighlightsMin=False,bOverride_FilmGrainHighlightsMax=False,bOverride_FilmGrainScale=False,bOverride_FilmGrainTexture=False,bOverride_AmbientOcclusionIntensity=False,bOverride_AmbientOcclusionStaticFraction=False,bOverride_AmbientOcclusionRadius=False,bOverride_AmbientOcclusionFadeDistance=False,bOverride_AmbientOcclusionFadeRadius=False,bOverride_AmbientOcclusionRadiusInWS=False,bOverride_AmbientOcclusionPower=False,bOverride_AmbientOcclusionBias=False,bOverride_AmbientOcclusionQuality=False,bOverride_AmbientOcclusionMipBlend=False,bOverride_AmbientOcclusionMipScale=False,bOverride_AmbientOcclusionMipThreshold=False,bOverride_AmbientOcclusionTemporalBlendWeight=False,bOverride_RayTracingAO=False,bOverride_RayTracingAOSamplesPerPixel=False,bOverride_RayTracingAOIntensity=False,bOverride_RayTracingAORadius=False,bOverride_IndirectLightingColor=False,bOverride_IndirectLightingIntensity=False,bOverride_ColorGradingIntensity=False,bOverride_ColorGradingLUT=False,bOverride_DepthOfFieldEnabled=False,bOverride_DepthOfFieldFocalDistance=False,bOverride_DepthOfFieldFstop=False,bOverride_DepthOfFieldMinFstop=False,bOverride_DepthOfFieldBladeCount=False,bOverride_DepthOfFieldSensorWidth=False,bOverride_DepthOfFieldSqueezeFactor=False,bOverride_DepthOfFieldDepthBlurRadius=False,bOverride_DepthOfFieldUseHairDepth=False,bOverride_DepthOfFieldPetzvalBokeh=False,bOverride_DepthOfFieldPetzvalBokehFalloff=False,bOverride_DepthOfFieldPetzvalExclusionBoxExtents=False,bOverride_DepthOfFieldPetzvalExclusionBoxRadius=False,bOverride_DepthOfFieldAspectRatioScalar=False,bOverride_DepthOfFieldMatteBoxFlags=False,bOverride_DepthOfFieldBarrelRadius=False,bOverride_DepthOfFieldBarrelLength=False,bOverride_DepthOfFieldDepthBlurAmount=False,bOverride_DepthOfFieldFocalRegion=False,bOverride_DepthOfFieldNearTransitionRegion=False,bOverride_DepthOfFieldFarTransitionRegion=False,bOverride_DepthOfFieldScale=False,bOverride_DepthOfFieldNearBlurSize=False,bOverride_DepthOfFieldFarBlurSize=False,bOverride_MobileHQGaussian=False,bOverride_DepthOfFieldOcclusion=False,bOverride_DepthOfFieldSkyFocusDistance=False,bOverride_DepthOfFieldVignetteSize=False,bOverride_MotionBlurAmount=False,bOverride_MotionBlurMax=False,bOverride_MotionBlurTargetFPS=False,bOverride_MotionBlurPerObjectSize=False,bOverride_ReflectionMethod=False,bOverride_LumenReflectionQuality=False,bOverride_ScreenSpaceReflectionIntensity=False,bOverride_ScreenSpaceReflectionQuality=False,bOverride_ScreenSpaceReflectionMaxRoughness=False,bOverride_ScreenSpaceReflectionRoughnessScale=False,bOverride_UserFlags=False,bOverride_RayTracingReflectionsMaxRoughness=False,bOverride_RayTracingReflectionsMaxBounces=False,bOverride_RayTracingReflectionsSamplesPerPixel=False,bOverride_RayTracingReflectionsShadows=False,bOverride_RayTracingReflectionsTranslucency=False,bOverride_TranslucencyType=False,bOverride_RayTracingTranslucencyMaxRoughness=False,bOverride_RayTracingTranslucencyRefractionRays=False,bOverride_RayTracingTranslucencySamplesPerPixel=False,bOverride_RayTracingTranslucencyShadows=False,bOverride_RayTracingTranslucencyRefraction=False,bOverride_RayTracingTranslucencyMaxPrimaryHitEvents=False,bOverride_RayTracingTranslucencyMaxSecondaryHitEvents=False,bOverride_RayTracingTranslucencyUseRayTracedRefraction=False,bOverride_DynamicGlobalIlluminationMethod=False,bOverride_LumenSceneLightingQuality=False,bOverride_LumenSceneDetail=False,bOverride_LumenSceneViewDistance=False,bOverride_LumenSceneLightingUpdateSpeed=False,bOverride_LumenFinalGatherQuality=False,bOverride_LumenFinalGatherLightingUpdateSpeed=False,bOverride_LumenFinalGatherScreenTraces=False,bOverride_LumenMaxTraceDistance=False,bOverride_LumenDiffuseColorBoost=False,bOverride_LumenAmbientOcclusionIntensity=False,bOverride_LumenSkylightLeaking=False,bOverride_LumenSkylightLeakingTint=False,bOverride_LumenFullSkylightLeakingDistance=False,bOverride_LumenRayLightingMode=False,bOverride_LumenReflectionsScreenTraces=False,bOverride_LumenFrontLayerTranslucencyReflections=False,bOverride_LumenMaxRoughnessToTraceReflections=False,bOverride_LumenMaxReflectionBounces=False,bOverride_LumenMaxRefractionBounces=False,bOverride_LumenSurfaceCacheResolution=False,bOverride_RayTracingGI=False,bOverride_RayTracingGIMaxBounces=False,bOverride_RayTracingGISamplesPerPixel=False,bOverride_PathTracingMaxBounces=False,bOverride_PathTracingSamplesPerPixel=False,bOverride_PathTracingMaxPathIntensity=False,bOverride_PathTracingEnableEmissiveMaterials=False,bOverride_PathTracingEnableReferenceDOF=False,bOverride_PathTracingEnableReferenceAtmosphere=False,bOverride_PathTracingEnableDenoiser=False,bOverride_PathTracingIncludeEmissive=False,bOverride_PathTracingIncludeDiffuse=False,bOverride_PathTracingIncludeIndirectDiffuse=False,bOverride_PathTracingIncludeSpecular=False,bOverride_PathTracingIncludeIndirectSpecular=False,bOverride_PathTracingIncludeVolume=False,bOverride_PathTracingIncludeIndirectVolume=False,bMobileHQGaussian=False,BloomMethod=BM_SOG,AutoExposureMethod=AEM_Histogram,TemperatureType=TEMP_WhiteBalance,WhiteTemp=6500.000000,WhiteTint=0.000000,ColorSaturation=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrast=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGamma=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGain=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffset=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetShadows=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetMidtones=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetHighlights=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorCorrectionHighlightsMin=0.500000,ColorCorrectionHighlightsMax=1.000000,ColorCorrectionShadowsMax=0.090000,BlueCorrection=0.600000,ExpandGamut=1.000000,ToneCurveAmount=1.000000,TonemappingMethod=Filmic,FilmSlope=0.880000,FilmToe=0.550000,FilmShoulder=0.260000,FilmBlackClip=0.000000,FilmWhiteClip=0.040000,SceneColorTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SceneFringeIntensity=0.000000,ChromaticAberrationStartOffset=0.000000,BloomIntensity=0.675000,BloomGaussianIntensity=1.000000,BloomThreshold=-1.000000,BloomSizeScale=4.000000,Bloom1Size=0.300000,Bloom2Size=1.000000,Bloom3Size=2.000000,Bloom4Size=10.000000,Bloom5Size=30.000000,Bloom6Size=64.000000,Bloom1Tint=(R=0.346500,G=0.346500,B=0.346500,A=1.000000),Bloom2Tint=(R=0.138000,G=0.138000,B=0.138000,A=1.000000),Bloom3Tint=(R=0.117600,G=0.117600,B=0.117600,A=1.000000),Bloom4Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom5Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom6Tint=(R=0.061000,G=0.061000,B=0.061000,A=1.000000),BloomConvolutionIntensity=1.000000,BloomConvolutionScatterDispersion=1.000000,BloomConvolutionSize=1.000000,BloomConvolutionTexture=None,BloomConvolutionCenterUV=(X=0.500000,Y=0.500000),BloomConvolutionPreFilterMin=7.000000,BloomConvolutionPreFilterMax=15000.000000,BloomConvolutionPreFilterMult=15.000000,BloomConvolutionBufferScale=0.133000,BloomDirtMask=None,BloomDirtMaskIntensity=0.000000,BloomDirtMaskTint=(R=0.500000,G=0.500000,B=0.500000,A=1.000000),DynamicGlobalIlluminationMethod=Lumen,IndirectLightingColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),IndirectLightingIntensity=1.000000,LumenRayLightingMode=Default,LumenSceneLightingQuality=1.000000,LumenSceneDetail=1.000000,LumenSceneViewDistance=20000.000000,LumenSceneLightingUpdateSpeed=1.000000,LumenFinalGatherQuality=1.000000,LumenFinalGatherLightingUpdateSpeed=1.000000,LumenFinalGatherScreenTraces=True,LumenMaxTraceDistance=20000.000000,LumenDiffuseColorBoost=1.000000,LumenAmbientOcclusionIntensity=1.000000,LumenSkylightLeaking=0.000000,LumenSkylightLeakingTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LumenFullSkylightLeakingDistance=1000.000000,LumenSurfaceCacheResolution=1.000000,ReflectionMethod=Lumen,LumenReflectionQuality=1.000000,LumenReflectionsScreenTraces=True,LumenFrontLayerTranslucencyReflections=False,LumenMaxRoughnessToTraceReflections=0.400000,LumenMaxReflectionBounces=1,LumenMaxRefractionBounces=0,ScreenSpaceReflectionIntensity=100.000000,ScreenSpaceReflectionQuality=50.000000,ScreenSpaceReflectionMaxRoughness=0.600000,bMegaLights=True,MegaLightsFrontLayerTranslucency=False,AmbientCubemapTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),AmbientCubemapIntensity=1.000000,AmbientCubemap=None,CameraShutterSpeed=60.000000,CameraISO=100.000000,DepthOfFieldFstop=4.000000,DepthOfFieldMinFstop=1.200000,DepthOfFieldBladeCount=5,AutoExposureBias=1.000000,AutoExposureBiasBackup=0.000000,bOverride_AutoExposureBiasBackup=False,AutoExposureApplyPhysicalCameraExposure=True,AutoExposureBiasCurve=None,AutoExposureMeterMask=None,AutoExposureLowPercent=10.000000,AutoExposureHighPercent=90.000000,AutoExposureMinBrightness=-10.000000,AutoExposureMaxBrightness=20.000000,AutoExposureSpeedUp=3.000000,AutoExposureSpeedDown=1.000000,HistogramLogMin=-10.000000,HistogramLogMax=20.000000,LocalExposureMethod=Bilateral,LocalExposureHighlightContrastScale=1.000000,LocalExposureShadowContrastScale=1.000000,LocalExposureHighlightContrastCurve=None,LocalExposureShadowContrastCurve=None,LocalExposureHighlightThreshold=0.000000,LocalExposureShadowThreshold=0.000000,LocalExposureDetailStrength=1.000000,LocalExposureBlurredLuminanceBlend=0.600000,LocalExposureBlurredLuminanceKernelSizePercent=50.000000,LocalExposureHighlightThresholdStrength=1.000000,LocalExposureShadowThresholdStrength=1.000000,LocalExposureMiddleGreyBias=0.000000,LensFlareIntensity=1.000000,LensFlareTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LensFlareBokehSize=3.000000,LensFlareThreshold=8.000000,LensFlareBokehShape=None,LensFlareTints[0]=(R=1.000000,G=0.800000,B=0.400000,A=0.600000),LensFlareTints[1]=(R=1.000000,G=1.000000,B=0.600000,A=0.530000),LensFlareTints[2]=(R=0.800000,G=0.800000,B=1.000000,A=0.460000),LensFlareTints[3]=(R=0.500000,G=1.000000,B=0.400000,A=0.390000),LensFlareTints[4]=(R=0.500000,G=0.800000,B=1.000000,A=0.310000),LensFlareTints[5]=(R=0.900000,G=1.000000,B=0.800000,A=0.270000),LensFlareTints[6]=(R=1.000000,G=0.800000,B=0.400000,A=0.220000),LensFlareTints[7]=(R=0.900000,G=0.700000,B=0.700000,A=0.150000),VignetteIntensity=0.400000,VignetteType=CosineFourthLaw,VignetteCenter=(X=0.500000,Y=0.500000),VignetteColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000),VignetteSize=(X=1.000000,Y=1.000000),VignetteSoftness=5.000000,VignetteTexture=None,Sharpen=0.000000,FilmGrainIntensity=0.000000,FilmGrainIntensityShadows=1.000000,FilmGrainIntensityMidtones=1.000000,FilmGrainIntensityHighlights=1.000000,FilmGrainShadowsMax=0.090000,FilmGrainHighlightsMin=0.500000,FilmGrainHighlightsMax=1.000000,FilmGrainScale=(X=1.000000,Y=1.000000),FilmGrainTexture=None,AmbientOcclusionIntensity=0.500000,AmbientOcclusionStaticFraction=1.000000,AmbientOcclusionRadius=200.000000,AmbientOcclusionRadiusInWS=False,AmbientOcclusionFadeDistance=8000.000000,AmbientOcclusionFadeRadius=5000.000000,AmbientOcclusionPower=2.000000,AmbientOcclusionBias=3.000000,AmbientOcclusionQuality=50.000000,AmbientOcclusionMipBlend=0.600000,AmbientOcclusionMipScale=1.700000,AmbientOcclusionMipThreshold=0.010000,AmbientOcclusionTemporalBlendWeight=0.100000,RayTracingAO=False,RayTracingAOSamplesPerPixel=1,RayTracingAOIntensity=1.000000,RayTracingAORadius=200.000000,ColorGradingIntensity=1.000000,ColorGradingLUT=None,DepthOfFieldEnabled=True,DepthOfFieldSensorWidth=24.576000,DepthOfFieldSqueezeFactor=1.000000,DepthOfFieldFocalDistance=0.000000,DepthOfFieldDepthBlurAmount=1.000000,DepthOfFieldDepthBlurRadius=0.000000,DepthOfFieldUseHairDepth=False,DepthOfFieldPetzvalBokeh=0.000000,DepthOfFieldPetzvalBokehFalloff=1.000000,DepthOfFieldPetzvalExclusionBoxExtents=(X=0.000000,Y=0.000000),DepthOfFieldPetzvalExclusionBoxRadius=0.000000,DepthOfFieldAspectRatioScalar=1.000000,DepthOfFieldBarrelRadius=5.000000,DepthOfFieldBarrelLength=0.000000,DepthOfFieldMatteBoxFlags[0]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[1]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[2]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldFocalRegion=0.000000,DepthOfFieldNearTransitionRegion=300.000000,DepthOfFieldFarTransitionRegion=500.000000,DepthOfFieldScale=0.000000,DepthOfFieldNearBlurSize=15.000000,DepthOfFieldFarBlurSize=15.000000,DepthOfFieldOcclusion=0.400000,DepthOfFieldSkyFocusDistance=0.000000,DepthOfFieldVignetteSize=200.000000,MotionBlurAmount=0.500000,MotionBlurMax=5.000000,MotionBlurTargetFPS=30,MotionBlurPerObjectSize=0.000000,TranslucencyType=Raster,RayTracingTranslucencyMaxRoughness=0.600000,RayTracingTranslucencyRefractionRays=3,RayTracingTranslucencySamplesPerPixel=1,RayTracingTranslucencyMaxPrimaryHitEvents=4,RayTracingTranslucencyMaxSecondaryHitEvents=2,RayTracingTranslucencyShadows=Hard_shadows,RayTracingTranslucencyRefraction=True,RayTracingTranslucencyUseRayTracedRefraction=False,PathTracingMaxBounces=32,PathTracingSamplesPerPixel=2048,PathTracingMaxPathIntensity=24.000000,PathTracingEnableEmissiveMaterials=True,PathTracingEnableReferenceDOF=False,PathTracingEnableReferenceAtmosphere=False,PathTracingEnableDenoiser=True,PathTracingIncludeEmissive=True,PathTracingIncludeDiffuse=True,PathTracingIncludeIndirectDiffuse=True,PathTracingIncludeSpecular=True,PathTracingIncludeIndirectSpecular=True,PathTracingIncludeVolume=True,PathTracingIncludeIndirectVolume=True,UserFlags=0,WeightedBlendables=(Array=)),LightingRigRotation=0.000000,RotationSpeed=2.000000,DirectionalLightRotation=(Pitch=-40.000000,Yaw=-67.500000,Roll=0.000000),bEnableToneMapping=False,bShowMeshEdges=True) ++Profiles=(ProfileName="Grey Ambient",bSharedProfile=True,bIsEngineDefaultProfile=True,bUseSkyLighting=True,DirectionalLightIntensity=4.000000,DirectionalLightColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SkyLightIntensity=2.000000,bRotateLightingRig=False,bShowEnvironment=True,bShowFloor=True,bShowGrid=False,EnvironmentColor=(R=0.200000,G=0.200000,B=0.200000,A=1.000000),EnvironmentIntensity=1.000000,EnvironmentCubeMapPath="/Engine/EditorMaterials/AssetViewer/T_GreyAmbient",EnvironmentFloorMeshPath="/Engine/EditorMeshes/AssetViewer/Floor_Mesh.Floor_Mesh",EnvironmentFloorRotation=(Pitch=0.000000,Yaw=0.000000,Roll=0.000000),EnvironmentFloorScale=(X=4.000000,Y=4.000000,Z=1.000000),EnvironmentFloorMaterialPath="/Engine/EngineMaterials/M_Grid.M_Grid",bPostProcessingEnabled=False,PostProcessingSettings=(bOverride_TemperatureType=False,bOverride_WhiteTemp=False,bOverride_WhiteTint=False,bOverride_ColorSaturation=False,bOverride_ColorContrast=False,bOverride_ColorGamma=False,bOverride_ColorGain=False,bOverride_ColorOffset=False,bOverride_ColorSaturationShadows=False,bOverride_ColorContrastShadows=False,bOverride_ColorGammaShadows=False,bOverride_ColorGainShadows=False,bOverride_ColorOffsetShadows=False,bOverride_ColorSaturationMidtones=False,bOverride_ColorContrastMidtones=False,bOverride_ColorGammaMidtones=False,bOverride_ColorGainMidtones=False,bOverride_ColorOffsetMidtones=False,bOverride_ColorSaturationHighlights=False,bOverride_ColorContrastHighlights=False,bOverride_ColorGammaHighlights=False,bOverride_ColorGainHighlights=False,bOverride_ColorOffsetHighlights=False,bOverride_ColorCorrectionShadowsMax=False,bOverride_ColorCorrectionHighlightsMin=False,bOverride_ColorCorrectionHighlightsMax=False,bOverride_BlueCorrection=False,bOverride_ExpandGamut=False,bOverride_ToneCurveAmount=False,bOverride_TonemappingMethod=False,bOverride_FilmSlope=False,bOverride_FilmToe=False,bOverride_FilmShoulder=False,bOverride_FilmBlackClip=False,bOverride_FilmWhiteClip=False,bOverride_SceneColorTint=False,bOverride_SceneFringeIntensity=False,bOverride_ChromaticAberrationStartOffset=False,bOverride_bMegaLights=False,bOverride_MegaLightsFrontLayerTranslucency=False,bOverride_AmbientCubemapTint=False,bOverride_AmbientCubemapIntensity=False,bOverride_BloomMethod=False,bOverride_BloomIntensity=False,bOverride_BloomGaussianIntensity=False,bOverride_BloomThreshold=False,bOverride_Bloom1Tint=False,bOverride_Bloom1Size=False,bOverride_Bloom2Size=False,bOverride_Bloom2Tint=False,bOverride_Bloom3Tint=False,bOverride_Bloom3Size=False,bOverride_Bloom4Tint=False,bOverride_Bloom4Size=False,bOverride_Bloom5Tint=False,bOverride_Bloom5Size=False,bOverride_Bloom6Tint=False,bOverride_Bloom6Size=False,bOverride_BloomSizeScale=False,bOverride_BloomConvolutionIntensity=False,bOverride_BloomConvolutionTexture=False,bOverride_BloomConvolutionScatterDispersion=False,bOverride_BloomConvolutionSize=False,bOverride_BloomConvolutionCenterUV=False,bOverride_BloomConvolutionPreFilterMin=False,bOverride_BloomConvolutionPreFilterMax=False,bOverride_BloomConvolutionPreFilterMult=False,bOverride_BloomConvolutionBufferScale=False,bOverride_BloomDirtMaskIntensity=False,bOverride_BloomDirtMaskTint=False,bOverride_BloomDirtMask=False,bOverride_CameraShutterSpeed=False,bOverride_CameraISO=False,bOverride_AutoExposureMethod=False,bOverride_AutoExposureLowPercent=False,bOverride_AutoExposureHighPercent=False,bOverride_AutoExposureMinBrightness=True,bOverride_AutoExposureMaxBrightness=True,bOverride_AutoExposureSpeedUp=False,bOverride_AutoExposureSpeedDown=False,bOverride_AutoExposureBias=False,bOverride_AutoExposureBiasCurve=False,bOverride_AutoExposureMeterMask=False,bOverride_AutoExposureApplyPhysicalCameraExposure=False,bOverride_HistogramLogMin=False,bOverride_HistogramLogMax=False,bOverride_LocalExposureMethod=False,bOverride_LocalExposureHighlightContrastScale=False,bOverride_LocalExposureShadowContrastScale=False,bOverride_LocalExposureHighlightContrastCurve=False,bOverride_LocalExposureShadowContrastCurve=False,bOverride_LocalExposureHighlightThreshold=False,bOverride_LocalExposureShadowThreshold=False,bOverride_LocalExposureDetailStrength=False,bOverride_LocalExposureBlurredLuminanceBlend=False,bOverride_LocalExposureBlurredLuminanceKernelSizePercent=False,bOverride_LocalExposureHighlightThresholdStrength=False,bOverride_LocalExposureShadowThresholdStrength=False,bOverride_LocalExposureMiddleGreyBias=False,bOverride_LensFlareIntensity=False,bOverride_LensFlareTint=False,bOverride_LensFlareTints=False,bOverride_LensFlareBokehSize=False,bOverride_LensFlareBokehShape=False,bOverride_LensFlareThreshold=False,bOverride_VignetteIntensity=False,bOverride_VignetteType=False,bOverride_VignetteCenter=False,bOverride_VignetteColor=False,bOverride_VignetteSize=False,bOverride_VignetteSoftness=False,bOverride_VignetteTexture=False,bOverride_Sharpen=False,bOverride_FilmGrainIntensity=False,bOverride_FilmGrainIntensityShadows=False,bOverride_FilmGrainIntensityMidtones=False,bOverride_FilmGrainIntensityHighlights=False,bOverride_FilmGrainShadowsMax=False,bOverride_FilmGrainHighlightsMin=False,bOverride_FilmGrainHighlightsMax=False,bOverride_FilmGrainScale=False,bOverride_FilmGrainTexture=False,bOverride_AmbientOcclusionIntensity=False,bOverride_AmbientOcclusionStaticFraction=False,bOverride_AmbientOcclusionRadius=False,bOverride_AmbientOcclusionFadeDistance=False,bOverride_AmbientOcclusionFadeRadius=False,bOverride_AmbientOcclusionRadiusInWS=False,bOverride_AmbientOcclusionPower=False,bOverride_AmbientOcclusionBias=False,bOverride_AmbientOcclusionQuality=False,bOverride_AmbientOcclusionMipBlend=False,bOverride_AmbientOcclusionMipScale=False,bOverride_AmbientOcclusionMipThreshold=False,bOverride_AmbientOcclusionTemporalBlendWeight=False,bOverride_RayTracingAO=False,bOverride_RayTracingAOSamplesPerPixel=False,bOverride_RayTracingAOIntensity=False,bOverride_RayTracingAORadius=False,bOverride_IndirectLightingColor=False,bOverride_IndirectLightingIntensity=False,bOverride_ColorGradingIntensity=False,bOverride_ColorGradingLUT=False,bOverride_DepthOfFieldEnabled=False,bOverride_DepthOfFieldFocalDistance=False,bOverride_DepthOfFieldFstop=False,bOverride_DepthOfFieldMinFstop=False,bOverride_DepthOfFieldBladeCount=False,bOverride_DepthOfFieldSensorWidth=False,bOverride_DepthOfFieldSqueezeFactor=False,bOverride_DepthOfFieldDepthBlurRadius=False,bOverride_DepthOfFieldUseHairDepth=False,bOverride_DepthOfFieldPetzvalBokeh=False,bOverride_DepthOfFieldPetzvalBokehFalloff=False,bOverride_DepthOfFieldPetzvalExclusionBoxExtents=False,bOverride_DepthOfFieldPetzvalExclusionBoxRadius=False,bOverride_DepthOfFieldAspectRatioScalar=False,bOverride_DepthOfFieldMatteBoxFlags=False,bOverride_DepthOfFieldBarrelRadius=False,bOverride_DepthOfFieldBarrelLength=False,bOverride_DepthOfFieldDepthBlurAmount=False,bOverride_DepthOfFieldFocalRegion=False,bOverride_DepthOfFieldNearTransitionRegion=False,bOverride_DepthOfFieldFarTransitionRegion=False,bOverride_DepthOfFieldScale=False,bOverride_DepthOfFieldNearBlurSize=False,bOverride_DepthOfFieldFarBlurSize=False,bOverride_MobileHQGaussian=False,bOverride_DepthOfFieldOcclusion=False,bOverride_DepthOfFieldSkyFocusDistance=False,bOverride_DepthOfFieldVignetteSize=False,bOverride_MotionBlurAmount=False,bOverride_MotionBlurMax=False,bOverride_MotionBlurTargetFPS=False,bOverride_MotionBlurPerObjectSize=False,bOverride_ReflectionMethod=False,bOverride_LumenReflectionQuality=False,bOverride_ScreenSpaceReflectionIntensity=False,bOverride_ScreenSpaceReflectionQuality=False,bOverride_ScreenSpaceReflectionMaxRoughness=False,bOverride_ScreenSpaceReflectionRoughnessScale=False,bOverride_UserFlags=False,bOverride_RayTracingReflectionsMaxRoughness=False,bOverride_RayTracingReflectionsMaxBounces=False,bOverride_RayTracingReflectionsSamplesPerPixel=False,bOverride_RayTracingReflectionsShadows=False,bOverride_RayTracingReflectionsTranslucency=False,bOverride_TranslucencyType=False,bOverride_RayTracingTranslucencyMaxRoughness=False,bOverride_RayTracingTranslucencyRefractionRays=False,bOverride_RayTracingTranslucencySamplesPerPixel=False,bOverride_RayTracingTranslucencyShadows=False,bOverride_RayTracingTranslucencyRefraction=False,bOverride_RayTracingTranslucencyMaxPrimaryHitEvents=False,bOverride_RayTracingTranslucencyMaxSecondaryHitEvents=False,bOverride_RayTracingTranslucencyUseRayTracedRefraction=False,bOverride_DynamicGlobalIlluminationMethod=False,bOverride_LumenSceneLightingQuality=False,bOverride_LumenSceneDetail=False,bOverride_LumenSceneViewDistance=False,bOverride_LumenSceneLightingUpdateSpeed=False,bOverride_LumenFinalGatherQuality=False,bOverride_LumenFinalGatherLightingUpdateSpeed=False,bOverride_LumenFinalGatherScreenTraces=False,bOverride_LumenMaxTraceDistance=False,bOverride_LumenDiffuseColorBoost=False,bOverride_LumenAmbientOcclusionIntensity=False,bOverride_LumenSkylightLeaking=False,bOverride_LumenSkylightLeakingTint=False,bOverride_LumenFullSkylightLeakingDistance=False,bOverride_LumenRayLightingMode=False,bOverride_LumenReflectionsScreenTraces=False,bOverride_LumenFrontLayerTranslucencyReflections=False,bOverride_LumenMaxRoughnessToTraceReflections=False,bOverride_LumenMaxReflectionBounces=False,bOverride_LumenMaxRefractionBounces=False,bOverride_LumenSurfaceCacheResolution=False,bOverride_RayTracingGI=False,bOverride_RayTracingGIMaxBounces=False,bOverride_RayTracingGISamplesPerPixel=False,bOverride_PathTracingMaxBounces=False,bOverride_PathTracingSamplesPerPixel=False,bOverride_PathTracingMaxPathIntensity=False,bOverride_PathTracingEnableEmissiveMaterials=False,bOverride_PathTracingEnableReferenceDOF=False,bOverride_PathTracingEnableReferenceAtmosphere=False,bOverride_PathTracingEnableDenoiser=False,bOverride_PathTracingIncludeEmissive=False,bOverride_PathTracingIncludeDiffuse=False,bOverride_PathTracingIncludeIndirectDiffuse=False,bOverride_PathTracingIncludeSpecular=False,bOverride_PathTracingIncludeIndirectSpecular=False,bOverride_PathTracingIncludeVolume=False,bOverride_PathTracingIncludeIndirectVolume=False,bMobileHQGaussian=False,BloomMethod=BM_SOG,AutoExposureMethod=AEM_Histogram,TemperatureType=TEMP_WhiteBalance,WhiteTemp=6500.000000,WhiteTint=0.000000,ColorSaturation=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrast=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGamma=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGain=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffset=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetShadows=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetMidtones=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetHighlights=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorCorrectionHighlightsMin=0.500000,ColorCorrectionHighlightsMax=1.000000,ColorCorrectionShadowsMax=0.090000,BlueCorrection=0.600000,ExpandGamut=1.000000,ToneCurveAmount=1.000000,TonemappingMethod=Filmic,FilmSlope=0.880000,FilmToe=0.550000,FilmShoulder=0.260000,FilmBlackClip=0.000000,FilmWhiteClip=0.040000,SceneColorTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SceneFringeIntensity=0.000000,ChromaticAberrationStartOffset=0.000000,BloomIntensity=0.675000,BloomGaussianIntensity=1.000000,BloomThreshold=-1.000000,BloomSizeScale=4.000000,Bloom1Size=0.300000,Bloom2Size=1.000000,Bloom3Size=2.000000,Bloom4Size=10.000000,Bloom5Size=30.000000,Bloom6Size=64.000000,Bloom1Tint=(R=0.346500,G=0.346500,B=0.346500,A=1.000000),Bloom2Tint=(R=0.138000,G=0.138000,B=0.138000,A=1.000000),Bloom3Tint=(R=0.117600,G=0.117600,B=0.117600,A=1.000000),Bloom4Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom5Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom6Tint=(R=0.061000,G=0.061000,B=0.061000,A=1.000000),BloomConvolutionIntensity=1.000000,BloomConvolutionScatterDispersion=1.000000,BloomConvolutionSize=1.000000,BloomConvolutionTexture=None,BloomConvolutionCenterUV=(X=0.500000,Y=0.500000),BloomConvolutionPreFilterMin=7.000000,BloomConvolutionPreFilterMax=15000.000000,BloomConvolutionPreFilterMult=15.000000,BloomConvolutionBufferScale=0.133000,BloomDirtMask=None,BloomDirtMaskIntensity=0.000000,BloomDirtMaskTint=(R=0.500000,G=0.500000,B=0.500000,A=1.000000),DynamicGlobalIlluminationMethod=Lumen,IndirectLightingColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),IndirectLightingIntensity=1.000000,LumenRayLightingMode=Default,LumenSceneLightingQuality=1.000000,LumenSceneDetail=1.000000,LumenSceneViewDistance=20000.000000,LumenSceneLightingUpdateSpeed=1.000000,LumenFinalGatherQuality=1.000000,LumenFinalGatherLightingUpdateSpeed=1.000000,LumenFinalGatherScreenTraces=True,LumenMaxTraceDistance=20000.000000,LumenDiffuseColorBoost=1.000000,LumenAmbientOcclusionIntensity=1.000000,LumenSkylightLeaking=0.000000,LumenSkylightLeakingTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LumenFullSkylightLeakingDistance=1000.000000,LumenSurfaceCacheResolution=1.000000,ReflectionMethod=Lumen,LumenReflectionQuality=1.000000,LumenReflectionsScreenTraces=True,LumenFrontLayerTranslucencyReflections=False,LumenMaxRoughnessToTraceReflections=0.400000,LumenMaxReflectionBounces=1,LumenMaxRefractionBounces=0,ScreenSpaceReflectionIntensity=100.000000,ScreenSpaceReflectionQuality=50.000000,ScreenSpaceReflectionMaxRoughness=0.600000,bMegaLights=True,MegaLightsFrontLayerTranslucency=False,AmbientCubemapTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),AmbientCubemapIntensity=1.000000,AmbientCubemap=None,CameraShutterSpeed=60.000000,CameraISO=100.000000,DepthOfFieldFstop=4.000000,DepthOfFieldMinFstop=1.200000,DepthOfFieldBladeCount=5,AutoExposureBias=1.000000,AutoExposureBiasBackup=0.000000,bOverride_AutoExposureBiasBackup=False,AutoExposureApplyPhysicalCameraExposure=True,AutoExposureBiasCurve=None,AutoExposureMeterMask=None,AutoExposureLowPercent=10.000000,AutoExposureHighPercent=90.000000,AutoExposureMinBrightness=-1.000000,AutoExposureMaxBrightness=1.000000,AutoExposureSpeedUp=3.000000,AutoExposureSpeedDown=1.000000,HistogramLogMin=-10.000000,HistogramLogMax=20.000000,LocalExposureMethod=Bilateral,LocalExposureHighlightContrastScale=1.000000,LocalExposureShadowContrastScale=1.000000,LocalExposureHighlightContrastCurve=None,LocalExposureShadowContrastCurve=None,LocalExposureHighlightThreshold=0.000000,LocalExposureShadowThreshold=0.000000,LocalExposureDetailStrength=1.000000,LocalExposureBlurredLuminanceBlend=0.600000,LocalExposureBlurredLuminanceKernelSizePercent=50.000000,LocalExposureHighlightThresholdStrength=1.000000,LocalExposureShadowThresholdStrength=1.000000,LocalExposureMiddleGreyBias=0.000000,LensFlareIntensity=1.000000,LensFlareTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LensFlareBokehSize=3.000000,LensFlareThreshold=8.000000,LensFlareBokehShape=None,LensFlareTints[0]=(R=1.000000,G=0.800000,B=0.400000,A=0.600000),LensFlareTints[1]=(R=1.000000,G=1.000000,B=0.600000,A=0.530000),LensFlareTints[2]=(R=0.800000,G=0.800000,B=1.000000,A=0.460000),LensFlareTints[3]=(R=0.500000,G=1.000000,B=0.400000,A=0.390000),LensFlareTints[4]=(R=0.500000,G=0.800000,B=1.000000,A=0.310000),LensFlareTints[5]=(R=0.900000,G=1.000000,B=0.800000,A=0.270000),LensFlareTints[6]=(R=1.000000,G=0.800000,B=0.400000,A=0.220000),LensFlareTints[7]=(R=0.900000,G=0.700000,B=0.700000,A=0.150000),VignetteIntensity=0.400000,VignetteType=CosineFourthLaw,VignetteCenter=(X=0.500000,Y=0.500000),VignetteColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000),VignetteSize=(X=1.000000,Y=1.000000),VignetteSoftness=5.000000,VignetteTexture=None,Sharpen=0.000000,FilmGrainIntensity=0.000000,FilmGrainIntensityShadows=1.000000,FilmGrainIntensityMidtones=1.000000,FilmGrainIntensityHighlights=1.000000,FilmGrainShadowsMax=0.090000,FilmGrainHighlightsMin=0.500000,FilmGrainHighlightsMax=1.000000,FilmGrainScale=(X=1.000000,Y=1.000000),FilmGrainTexture=None,AmbientOcclusionIntensity=0.500000,AmbientOcclusionStaticFraction=1.000000,AmbientOcclusionRadius=200.000000,AmbientOcclusionRadiusInWS=False,AmbientOcclusionFadeDistance=8000.000000,AmbientOcclusionFadeRadius=5000.000000,AmbientOcclusionPower=2.000000,AmbientOcclusionBias=3.000000,AmbientOcclusionQuality=50.000000,AmbientOcclusionMipBlend=0.600000,AmbientOcclusionMipScale=1.700000,AmbientOcclusionMipThreshold=0.010000,AmbientOcclusionTemporalBlendWeight=0.100000,RayTracingAO=False,RayTracingAOSamplesPerPixel=1,RayTracingAOIntensity=1.000000,RayTracingAORadius=200.000000,ColorGradingIntensity=1.000000,ColorGradingLUT=None,DepthOfFieldEnabled=True,DepthOfFieldSensorWidth=24.576000,DepthOfFieldSqueezeFactor=1.000000,DepthOfFieldFocalDistance=0.000000,DepthOfFieldDepthBlurAmount=1.000000,DepthOfFieldDepthBlurRadius=0.000000,DepthOfFieldUseHairDepth=False,DepthOfFieldPetzvalBokeh=0.000000,DepthOfFieldPetzvalBokehFalloff=1.000000,DepthOfFieldPetzvalExclusionBoxExtents=(X=0.000000,Y=0.000000),DepthOfFieldPetzvalExclusionBoxRadius=0.000000,DepthOfFieldAspectRatioScalar=1.000000,DepthOfFieldBarrelRadius=5.000000,DepthOfFieldBarrelLength=0.000000,DepthOfFieldMatteBoxFlags[0]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[1]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldMatteBoxFlags[2]=(Pitch=0.000000,Roll=0.000000,Length=0.000000),DepthOfFieldFocalRegion=0.000000,DepthOfFieldNearTransitionRegion=300.000000,DepthOfFieldFarTransitionRegion=500.000000,DepthOfFieldScale=0.000000,DepthOfFieldNearBlurSize=15.000000,DepthOfFieldFarBlurSize=15.000000,DepthOfFieldOcclusion=0.400000,DepthOfFieldSkyFocusDistance=0.000000,DepthOfFieldVignetteSize=200.000000,MotionBlurAmount=0.500000,MotionBlurMax=5.000000,MotionBlurTargetFPS=30,MotionBlurPerObjectSize=0.000000,TranslucencyType=Raster,RayTracingTranslucencyMaxRoughness=0.600000,RayTracingTranslucencyRefractionRays=3,RayTracingTranslucencySamplesPerPixel=1,RayTracingTranslucencyMaxPrimaryHitEvents=4,RayTracingTranslucencyMaxSecondaryHitEvents=2,RayTracingTranslucencyShadows=Hard_shadows,RayTracingTranslucencyRefraction=True,RayTracingTranslucencyUseRayTracedRefraction=False,PathTracingMaxBounces=32,PathTracingSamplesPerPixel=2048,PathTracingMaxPathIntensity=24.000000,PathTracingEnableEmissiveMaterials=True,PathTracingEnableReferenceDOF=False,PathTracingEnableReferenceAtmosphere=False,PathTracingEnableDenoiser=True,PathTracingIncludeEmissive=True,PathTracingIncludeDiffuse=True,PathTracingIncludeIndirectDiffuse=True,PathTracingIncludeSpecular=True,PathTracingIncludeIndirectSpecular=True,PathTracingIncludeVolume=True,PathTracingIncludeIndirectVolume=True,UserFlags=0,WeightedBlendables=(Array=)),LightingRigRotation=0.000000,RotationSpeed=2.000000,DirectionalLightRotation=(Pitch=-40.000000,Yaw=-67.500000,Roll=0.000000),bEnableToneMapping=False,bShowMeshEdges=False) +Version=ApplyNewGridMaterial + diff --git a/Config/DefaultEditorPerProjectUserSettings.ini b/Config/DefaultEditorPerProjectUserSettings.ini new file mode 100644 index 0000000..bde2f25 --- /dev/null +++ b/Config/DefaultEditorPerProjectUserSettings.ini @@ -0,0 +1,2 @@ +[ContentBrowser] +ContentBrowserTab1.SelectedPaths=/Game/FirstPersonBP \ No newline at end of file diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini new file mode 100644 index 0000000..3ad02e4 --- /dev/null +++ b/Config/DefaultEngine.ini @@ -0,0 +1,170 @@ +[/Script/Engine.CollisionProfile] +-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False) +-Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False) +-Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False) +-Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False) +-Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False) +-Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False) +-Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False) +-Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False) +-Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="WaterBodyCollision",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="",CustomResponses=((Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="Default Water Collision Profile (Created by Water Plugin)") ++Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision") ++Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.") ++Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ") ++Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ") ++Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic"),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.") ++Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.") ++Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors") ++Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors") ++Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.") ++Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.") ++Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.") ++Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.") ++Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.") ++Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility"),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="WaterBodyCollision",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="",CustomResponses=((Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="Default Water Collision Profile (Created by Water Plugin)") ++Profiles=(Name="Projectile",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="Projectile",CustomResponses=,HelpMessage="Preset for projectiles") ++DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="Projectile") ++DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="Interactable") ++EditProfiles=(Name="Trigger",CustomResponses=((Channel="Projectile",Response=ECR_Ignore))) +-ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") +-ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") +-ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") +-ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") +-ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") ++ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") ++ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") ++ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") ++ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") ++ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") +-CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") +-CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") +-CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") +-CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") ++CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") ++CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") ++CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") ++CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") + +[/Script/EngineSettings.GameMapsSettings] +EditorStartupMap=/Game/ThirdPerson/NewWorld.NewWorld +LocalMapOptions= +TransitionMap= +bUseSplitscreen=True +TwoPlayerSplitscreenLayout=Horizontal +ThreePlayerSplitscreenLayout=FavorTop +GameInstanceClass=/Script/Engine.GameInstance +GameDefaultMap=/Game/ThirdPerson/NewWorld.NewWorld +ServerDefaultMap=/Engine/Maps/Entry +GlobalDefaultGameMode=/Game/ThirdPerson/BP_ThirdPersonGameMode.BP_ThirdPersonGameMode_C +GlobalDefaultServerGameMode=None + +[/Script/Engine.RendererSettings] +r.ReflectionMethod=1 +r.GenerateMeshDistanceFields=True +r.DynamicGlobalIlluminationMethod=1 +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=true +r.AllowStaticLighting=False + + +r.SkinCache.CompileShaders=True + +r.RayTracing=True + +r.RayTracing.RayTracingProxies.ProjectEnabled=True + +r.Substrate=True + +r.Substrate.ProjectGBufferFormat=0 + +r.Shadow.Virtual.Enable=1 + +r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8 + +r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8 +r.DefaultFeature.Bloom=False + +[/Script/WindowsTargetPlatform.WindowsTargetSettings] +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +-D3D12TargetedShaderFormats=PCD3D_SM5 ++D3D12TargetedShaderFormats=PCD3D_SM6 +-D3D11TargetedShaderFormats=PCD3D_SM5 ++D3D11TargetedShaderFormats=PCD3D_SM5 +Compiler=Default +AudioSampleRate=48000 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=1 +AudioMaxChannels=0 +AudioNumSourceWorkers=4 +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) +CacheSizeKB=65536 +MaxChunkSizeOverrideKB=0 +bResampleForDevice=False +MaxSampleRate=48000.000000 +HighSampleRate=32000.000000 +MedSampleRate=24000.000000 +LowSampleRate=12000.000000 +MinSampleRate=8000.000000 +CompressionQualityModifier=1.000000 +AutoStreamingThreshold=0.000000 +SoundCueCookQualityIndex=-1 + +[/Script/LinuxTargetPlatform.LinuxTargetSettings] +-TargetedRHIs=SF_VULKAN_SM5 ++TargetedRHIs=SF_VULKAN_SM6 + +[/Script/MacTargetPlatform.MacTargetSettings] +-TargetedRHIs=SF_METAL_SM5 ++TargetedRHIs=SF_METAL_SM6 + +[/Script/AIModule.AISystem] +bForgetStaleActors=True + +[/Script/Engine.Engine] +NearClipPlane=5.000000 + + ++ActiveGameNameRedirects=(OldGameName="TP_FirstPersonBP",NewGameName="/Script/MaybeThisTime") ++ActiveGameNameRedirects=(OldGameName="/Script/TP_FirstPersonBP",NewGameName="/Script/MaybeThisTime") +bUseFixedFrameRate=True + +[/Script/HardwareTargeting.HardwareTargetingSettings] +TargetedHardwareClass=Desktop +AppliedTargetedHardwareClass=Desktop +DefaultGraphicsPerformance=Maximum +AppliedDefaultGraphicsPerformance=Maximum + +[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] +bEnablePlugin=True +bAllowNetworkConnection=True +SecurityToken=367F9BB640094CB33C302CB67FA4DDA7 +bIncludeInShipping=False +bAllowExternalStartInShipping=False +bCompileAFSProject=False +bUseCompression=False +bLogFiles=False +bReportStats=False +ConnectionType=USBOnly +bUseManualIPAddress=False +ManualIPAddress= + diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini new file mode 100644 index 0000000..785def8 --- /dev/null +++ b/Config/DefaultGame.ini @@ -0,0 +1,17 @@ +[/Script/EngineSettings.GeneralProjectSettings] +ProjectID=6BB310204CCDC31D6B334DBDF69E99B0 +ProjectName=First Person BP Game Template + +[/Script/Engine.AssetManagerSettings] +-PrimaryAssetTypesToScan=(PrimaryAssetType="Map",AssetBaseClass=/Script/Engine.World,bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game/Maps")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) +-PrimaryAssetTypesToScan=(PrimaryAssetType="PrimaryAssetLabel",AssetBaseClass=/Script/Engine.PrimaryAssetLabel,bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) ++PrimaryAssetTypesToScan=(PrimaryAssetType="Map",AssetBaseClass="/Script/Engine.World",bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game/Maps")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) ++PrimaryAssetTypesToScan=(PrimaryAssetType="PrimaryAssetLabel",AssetBaseClass="/Script/Engine.PrimaryAssetLabel",bHasBlueprintClasses=False,bIsEditorOnly=True,Directories=((Path="/Game")),SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=Unknown)) ++PrimaryAssetTypesToScan=(PrimaryAssetType="GameFeatureData",AssetBaseClass="/Script/GameFeatures.GameFeatureData",bHasBlueprintClasses=False,bIsEditorOnly=False,Directories=,SpecificAssets=,Rules=(Priority=-1,ChunkId=-1,bApplyRecursively=True,CookRule=AlwaysCook)) +bOnlyCookProductionAssets=False +bShouldManagerDetermineTypeAndName=False +bShouldGuessTypeAndNameInEditor=True +bShouldAcquireMissingChunksOnLoad=False +bShouldWarnAboutInvalidAssets=True +MetaDataTagsForAssetRegistry=() + diff --git a/Config/DefaultGameplayTags.ini b/Config/DefaultGameplayTags.ini new file mode 100644 index 0000000..705344c --- /dev/null +++ b/Config/DefaultGameplayTags.ini @@ -0,0 +1,36 @@ +;METADATA=(Diff=true, UseCommands=true) +[/Script/GameplayTags.GameplayTagsSettings] +ImportTagsFromConfig=True +WarnOnInvalidTags=True +ClearInvalidTags=False +AllowEditorTagUnloading=True +AllowGameTagUnloading=False +FastReplication=False +bDynamicReplication=False +InvalidTagCharacters="\"\'," +NumBitsForContainerSize=6 +NetIndexFirstBitSegment=16 ++GameplayTagRedirects=(OldTagName="Item.Equipable.Belt",NewTagName="Item.Type.Belt") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Hands",NewTagName="Item.Type.Hands") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Head",NewTagName="Item.Type.Head") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Legs",NewTagName="Item.Type.Legs") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Torso",NewTagName="Item.Type.Torso") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Weapon.Melee.OneHanded",NewTagName="Item.Type.Weapon.Melee.OneHanded") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Weapon.Melee.TwoHaned",NewTagName="Item.Type.Weapon.Melee.TwoHaned") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Weapon.Melee",NewTagName="Item.Type.Weapon.Melee") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Weapon.Ranged",NewTagName="Item.Type.Weapon.Ranged") ++GameplayTagRedirects=(OldTagName="Item.Equipable.Weapon",NewTagName="Item.Type.Weapon") ++GameplayTagRedirects=(OldTagName="Item.Equipable",NewTagName="Item.Type") ++GameplayTagList=(Tag="Item",DevComment="") ++GameplayTagList=(Tag="Item.Flag",DevComment="") ++GameplayTagList=(Tag="Item.Flag.Consumeable",DevComment="") ++GameplayTagList=(Tag="Item.Flag.Quest",DevComment="") ++GameplayTagList=(Tag="Item.Flag.Stackable",DevComment="") ++GameplayTagList=(Tag="Item.Type.Belt",DevComment="") ++GameplayTagList=(Tag="Item.Type.Hands",DevComment="") ++GameplayTagList=(Tag="Item.Type.Head",DevComment="") ++GameplayTagList=(Tag="Item.Type.Legs",DevComment="") ++GameplayTagList=(Tag="Item.Type.Torso",DevComment="") ++GameplayTagList=(Tag="Item.Type.Weapon.Melee.OneHanded",DevComment="") ++GameplayTagList=(Tag="Item.Type.Weapon.Ranged",DevComment="") + diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini new file mode 100644 index 0000000..4eb2a18 --- /dev/null +++ b/Config/DefaultInput.ini @@ -0,0 +1,120 @@ +[/Script/Engine.InputSettings] +-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) ++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Touch",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_FaceButton1",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_FaceButton2",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_IndexPointing",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_ThumbUp",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_ThumbRest",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_FaceButton1",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_FaceButton2",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_IndexPointing",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_ThumbUp",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_ThumbRest",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_ThumbPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_IndexPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_MiddlePinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_RingPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Left_PinkPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_ThumbPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_IndexPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_MiddlePinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_RingPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusHand_Right_PinkPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Cosmos_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Cosmos_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Cosmos_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Cosmos_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Cosmos_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Cosmos_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Cosmos_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Cosmos_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +bAltEnterTogglesFullscreen=True +bF11TogglesFullscreen=True +bUseMouseForTouch=False +bEnableMouseSmoothing=True +bEnableFOVScaling=True +bCaptureMouseOnLaunch=True +bEnableLegacyInputScales=True +bEnableMotionControls=True +bFilterInputByPlatformUser=False +bShouldFlushPressedKeysOnViewportFocusLost=True +bAlwaysShowTouchInterface=False +bShowConsoleOnFourFingerTap=True +bEnableGestureRecognizer=False +bUseAutocorrect=False +DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown +DefaultViewportMouseLockMode=LockOnCapture +FOVScale=0.011110 +DoubleClickTime=0.200000 +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent +DefaultTouchInterface=None +-ConsoleKeys=Tilde ++ConsoleKeys=Tilde + +[EnhancedInputPlatformSettings_Windows EnhancedInputPlatformSettings] +bShouldLogMappingContextRedirects=False + diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Back_01.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Back_01.uasset new file mode 100644 index 0000000..917cff8 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Death/MM_Death_Back_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_01.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_01.uasset new file mode 100644 index 0000000..ccfd8a9 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_02.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_02.uasset new file mode 100644 index 0000000..a5ccfc5 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_02.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_03.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_03.uasset new file mode 100644 index 0000000..d31ec0f Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Death/MM_Death_Front_03.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Left_01.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Left_01.uasset new file mode 100644 index 0000000..2ad429e Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Death/MM_Death_Left_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Death/MM_Death_Right_01.uasset b/Content/Characters/Mannequins/Anims/Death/MM_Death_Right_01.uasset new file mode 100644 index 0000000..bce3365 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Death/MM_Death_Right_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Aim/AO_Pistol.uasset b/Content/Characters/Mannequins/Anims/Pistol/Aim/AO_Pistol.uasset new file mode 100644 index 0000000..cc21f78 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Aim/AO_Pistol.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS1.uasset b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS1.uasset new file mode 100644 index 0000000..09c54fa Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS1.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CD.uasset b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CD.uasset new file mode 100644 index 0000000..94e36c7 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CD.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CU.uasset b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CU.uasset new file mode 100644 index 0000000..f8cd07f Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Aim/MF_Pistol_Idle_ADS_AO_CU.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd.uasset new file mode 100644 index 0000000..c5bc3a0 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Left.uasset new file mode 100644 index 0000000..1c0d6a0 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Right.uasset new file mode 100644 index 0000000..e934901 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Bwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd.uasset new file mode 100644 index 0000000..cc14f22 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Left.uasset new file mode 100644 index 0000000..955f71d Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Right.uasset new file mode 100644 index 0000000..bcd6de6 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Fwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Left.uasset new file mode 100644 index 0000000..d5f15aa Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Right.uasset new file mode 100644 index 0000000..e98c2d4 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jog/MF_Pistol_Jog_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Fall_Loop.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Fall_Loop.uasset new file mode 100644 index 0000000..7ca0d7c Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Fall_Loop.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_RecoveryAdditive.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_RecoveryAdditive.uasset new file mode 100644 index 0000000..9903187 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_RecoveryAdditive.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Start.uasset b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Start.uasset new file mode 100644 index 0000000..2e47a86 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Jump/MM_Pistol_Jump_Start.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/MF_Pistol_Idle_ADS.uasset b/Content/Characters/Mannequins/Anims/Pistol/MF_Pistol_Idle_ADS.uasset new file mode 100644 index 0000000..5829066 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/MF_Pistol_Idle_ADS.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_DryFire.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_DryFire.uasset new file mode 100644 index 0000000..d04d2f5 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_DryFire.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Equip.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Equip.uasset new file mode 100644 index 0000000..3c416f2 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Equip.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire.uasset new file mode 100644 index 0000000..7120917 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire_Montage.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire_Montage.uasset new file mode 100644 index 0000000..75d7c8c Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Fire_Montage.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Reload.uasset b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Reload.uasset new file mode 100644 index 0000000..077674e Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/MM_Pistol_Reload.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd.uasset new file mode 100644 index 0000000..2cd3e66 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Left.uasset new file mode 100644 index 0000000..eb16ba5 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Right.uasset new file mode 100644 index 0000000..c0e647d Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Bwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd.uasset new file mode 100644 index 0000000..dee4cde Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Left.uasset new file mode 100644 index 0000000..06eee3a Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Right.uasset new file mode 100644 index 0000000..2ff4293 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Fwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Left.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Left.uasset new file mode 100644 index 0000000..c277b2c Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Right.uasset b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Right.uasset new file mode 100644 index 0000000..885473d Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Pistol/Walk/MF_Pistol_Walk_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/AIM/AO_Rifle.uasset b/Content/Characters/Mannequins/Anims/Rifle/AIM/AO_Rifle.uasset new file mode 100644 index 0000000..1b85a18 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/AIM/AO_Rifle.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CC.uasset b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CC.uasset new file mode 100644 index 0000000..95292ac Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CC.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CD.uasset b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CD.uasset new file mode 100644 index 0000000..c5c06f9 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CD.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CU.uasset b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CU.uasset new file mode 100644 index 0000000..eb8a080 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/AIM/MM_Rifle_Idle_ADS_AO_CU.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Back_Med_01.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Back_Med_01.uasset new file mode 100644 index 0000000..74eb352 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Back_Med_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Hvy_01.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Hvy_01.uasset new file mode 100644 index 0000000..396e9f3 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Hvy_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_01.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_01.uasset new file mode 100644 index 0000000..a6846ff Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_02.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_02.uasset new file mode 100644 index 0000000..d0bef37 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_02.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_03.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_03.uasset new file mode 100644 index 0000000..dca4bc6 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_03.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_04.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_04.uasset new file mode 100644 index 0000000..d134adb Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Lgt_04.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_01.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_01.uasset new file mode 100644 index 0000000..70302cf Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_02.uasset b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_02.uasset new file mode 100644 index 0000000..fe6d7d6 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/HitReact/MM_HitReact_Front_Med_02.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd.uasset new file mode 100644 index 0000000..cc1c3a2 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Left.uasset new file mode 100644 index 0000000..23a8ebe Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Right.uasset new file mode 100644 index 0000000..2cd5292 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Bwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd.uasset new file mode 100644 index 0000000..0cc1859 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Left.uasset new file mode 100644 index 0000000..6aa7b51 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Right.uasset new file mode 100644 index 0000000..924600c Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Fwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Left.uasset new file mode 100644 index 0000000..edbb191 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Right.uasset new file mode 100644 index 0000000..84e67fd Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jog/MF_Rifle_Jog_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Apex.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Apex.uasset new file mode 100644 index 0000000..858c4c5 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Apex.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Land.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Land.uasset new file mode 100644 index 0000000..b411ecc Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Land.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Loop.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Loop.uasset new file mode 100644 index 0000000..826ae53 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Fall_Loop.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_RecoveryAdditive.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_RecoveryAdditive.uasset new file mode 100644 index 0000000..9baadd3 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_RecoveryAdditive.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start.uasset new file mode 100644 index 0000000..513b51e Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start_Loop.uasset b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start_Loop.uasset new file mode 100644 index 0000000..fc1774b Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Jump/MM_Rifle_Jump_Start_Loop.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/MF_Rifle_Idle_ADS.uasset b/Content/Characters/Mannequins/Anims/Rifle/MF_Rifle_Idle_ADS.uasset new file mode 100644 index 0000000..f569392 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/MF_Rifle_Idle_ADS.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_DryFire.uasset b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_DryFire.uasset new file mode 100644 index 0000000..8db0457 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_DryFire.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Equip.uasset b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Equip.uasset new file mode 100644 index 0000000..faf20c7 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Equip.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Fire.uasset b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Fire.uasset new file mode 100644 index 0000000..3120009 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Fire.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Reload.uasset b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Reload.uasset new file mode 100644 index 0000000..ebee502 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/MM_Rifle_Reload.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd.uasset new file mode 100644 index 0000000..29f95fd Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Left.uasset new file mode 100644 index 0000000..86ed9ac Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Right.uasset new file mode 100644 index 0000000..aed754e Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Bwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd.uasset new file mode 100644 index 0000000..18f0501 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Left.uasset new file mode 100644 index 0000000..9ec1dc5 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Right.uasset new file mode 100644 index 0000000..de08560 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Fwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Left.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Left.uasset new file mode 100644 index 0000000..e421d11 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Right.uasset b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Right.uasset new file mode 100644 index 0000000..f324682 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Rifle/Walk/MF_Rifle_Walk_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/ABP_Unarmed.uasset b/Content/Characters/Mannequins/Anims/Unarmed/ABP_Unarmed.uasset new file mode 100644 index 0000000..0ac838a Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/ABP_Unarmed.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_01.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_01.uasset new file mode 100644 index 0000000..58bd156 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_01.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_02.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_02.uasset new file mode 100644 index 0000000..ec5f1e3 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_02.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_03.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_03.uasset new file mode 100644 index 0000000..88efb9a Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_Attack_03.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_ChargedAttack.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_ChargedAttack.uasset new file mode 100644 index 0000000..a6dc463 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Attack/MM_ChargedAttack.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/BS_Idle_Walk_Run.uasset b/Content/Characters/Mannequins/Anims/Unarmed/BS_Idle_Walk_Run.uasset new file mode 100644 index 0000000..de46f07 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/BS_Idle_Walk_Run.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd.uasset new file mode 100644 index 0000000..21c9a0f Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Left.uasset new file mode 100644 index 0000000..34a4c9d Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Right.uasset new file mode 100644 index 0000000..c0c75e5 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Bwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd.uasset new file mode 100644 index 0000000..0a5fa59 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Left.uasset new file mode 100644 index 0000000..c6c5368 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Right.uasset new file mode 100644 index 0000000..112223b Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Fwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Left.uasset new file mode 100644 index 0000000..f9fe418 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Right.uasset new file mode 100644 index 0000000..e455a2e Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jog/MF_Unarmed_Jog_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Dash.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Dash.uasset new file mode 100644 index 0000000..69df391 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Dash.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Fall_Loop.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Fall_Loop.uasset new file mode 100644 index 0000000..86c58a1 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Fall_Loop.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Jump.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Jump.uasset new file mode 100644 index 0000000..5229aa9 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Jump.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Land.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Land.uasset new file mode 100644 index 0000000..9560d54 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_Land.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_WallJump.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_WallJump.uasset new file mode 100644 index 0000000..73a2af9 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Jump/MM_WallJump.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/MM_Idle.uasset b/Content/Characters/Mannequins/Anims/Unarmed/MM_Idle.uasset new file mode 100644 index 0000000..0f10045 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/MM_Idle.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd.uasset new file mode 100644 index 0000000..03db74a Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Left.uasset new file mode 100644 index 0000000..f7b1a96 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Right.uasset new file mode 100644 index 0000000..3a03801 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Bwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd.uasset new file mode 100644 index 0000000..d780a3a Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Left.uasset new file mode 100644 index 0000000..331e673 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Right.uasset new file mode 100644 index 0000000..b715bbe Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Fwd_Right.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Left.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Left.uasset new file mode 100644 index 0000000..5b5f188 Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Left.uasset differ diff --git a/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Right.uasset b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Right.uasset new file mode 100644 index 0000000..6d0ba3f Binary files /dev/null and b/Content/Characters/Mannequins/Anims/Unarmed/Walk/MF_Unarmed_Walk_Right.uasset differ diff --git a/Content/Characters/Mannequins/Materials/M_Mannequin.uasset b/Content/Characters/Mannequins/Materials/M_Mannequin.uasset new file mode 100644 index 0000000..a384381 Binary files /dev/null and b/Content/Characters/Mannequins/Materials/M_Mannequin.uasset differ diff --git a/Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset b/Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset new file mode 100644 index 0000000..6316baf Binary files /dev/null and b/Content/Characters/Mannequins/Materials/Manny/MI_Manny_01_New.uasset differ diff --git a/Content/Characters/Mannequins/Materials/Manny/MI_Manny_02_New.uasset b/Content/Characters/Mannequins/Materials/Manny/MI_Manny_02_New.uasset new file mode 100644 index 0000000..5c98ea5 Binary files /dev/null and b/Content/Characters/Mannequins/Materials/Manny/MI_Manny_02_New.uasset differ diff --git a/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_01.uasset b/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_01.uasset new file mode 100644 index 0000000..b2d7eec Binary files /dev/null and b/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_01.uasset differ diff --git a/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_02.uasset b/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_02.uasset new file mode 100644 index 0000000..74bbb66 Binary files /dev/null and b/Content/Characters/Mannequins/Materials/Quinn/MI_Quinn_02.uasset differ diff --git a/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset b/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset new file mode 100644 index 0000000..077e1f4 Binary files /dev/null and b/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset differ diff --git a/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset b/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset new file mode 100644 index 0000000..df9c636 Binary files /dev/null and b/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset differ diff --git a/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset b/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset new file mode 100644 index 0000000..60f16f0 Binary files /dev/null and b/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset differ diff --git a/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset b/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset new file mode 100644 index 0000000..6032287 Binary files /dev/null and b/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset differ diff --git a/Content/Characters/Mannequins/Rigs/CR_Mannequin_FootIK.uasset b/Content/Characters/Mannequins/Rigs/CR_Mannequin_FootIK.uasset new file mode 100644 index 0000000..b4c4426 Binary files /dev/null and b/Content/Characters/Mannequins/Rigs/CR_Mannequin_FootIK.uasset differ diff --git a/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset b/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset new file mode 100644 index 0000000..0b2c38d Binary files /dev/null and b/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset differ diff --git a/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset b/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset new file mode 100644 index 0000000..3518d39 Binary files /dev/null and b/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset new file mode 100644 index 0000000..2c4145b Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset new file mode 100644 index 0000000..2e236b4 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MRA.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MRA.uasset new file mode 100644 index 0000000..faa8537 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MRA.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset new file mode 100644 index 0000000..fbee995 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset new file mode 100644 index 0000000..56262e6 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MRA.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MRA.uasset new file mode 100644 index 0000000..f2f4f83 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MRA.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset new file mode 100644 index 0000000..e8e61da Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_D.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_D.uasset new file mode 100644 index 0000000..d2e0ab2 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_D.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_MRA.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_MRA.uasset new file mode 100644 index 0000000..8244da9 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_MRA.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_N.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_N.uasset new file mode 100644 index 0000000..44bd3c8 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_N.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_D.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_D.uasset new file mode 100644 index 0000000..63bd3b7 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_D.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_MRA.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_MRA.uasset new file mode 100644 index 0000000..6c4a979 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_MRA.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_N.uasset b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_N.uasset new file mode 100644 index 0000000..3ba5513 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_N.uasset differ diff --git a/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset b/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset new file mode 100644 index 0000000..1cc7ef6 Binary files /dev/null and b/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset differ diff --git a/Content/FirstPerson/Anims/ABP_FP_Copy.uasset b/Content/FirstPerson/Anims/ABP_FP_Copy.uasset new file mode 100644 index 0000000..1a9b8f7 Binary files /dev/null and b/Content/FirstPerson/Anims/ABP_FP_Copy.uasset differ diff --git a/Content/FirstPerson/Anims/CtrlRig_FPWarp.uasset b/Content/FirstPerson/Anims/CtrlRig_FPWarp.uasset new file mode 100644 index 0000000..8a32d08 Binary files /dev/null and b/Content/FirstPerson/Anims/CtrlRig_FPWarp.uasset differ diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonCameraManager.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonCameraManager.uasset new file mode 100644 index 0000000..72504c8 Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_FirstPersonCameraManager.uasset differ diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset new file mode 100644 index 0000000..8591ae8 Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset differ diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset new file mode 100644 index 0000000..d14e51c Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset differ diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonPlayerController.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonPlayerController.uasset new file mode 100644 index 0000000..eaa8501 Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_FirstPersonPlayerController.uasset differ diff --git a/Content/FirstPerson/Blueprints/BP_PlayerState.uasset b/Content/FirstPerson/Blueprints/BP_PlayerState.uasset new file mode 100644 index 0000000..b323c39 Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_PlayerState.uasset differ diff --git a/Content/FirstPerson/DefaultPlayerAttributeTable.uasset b/Content/FirstPerson/DefaultPlayerAttributeTable.uasset new file mode 100644 index 0000000..b546895 Binary files /dev/null and b/Content/FirstPerson/DefaultPlayerAttributeTable.uasset differ diff --git a/Content/FirstPerson/Lvl_FirstPerson.ini b/Content/FirstPerson/Lvl_FirstPerson.ini new file mode 100644 index 0000000..24954df --- /dev/null +++ b/Content/FirstPerson/Lvl_FirstPerson.ini @@ -0,0 +1,18 @@ +;METADATA=(Diff=true, UseCommands=true) +[/Script/UnrealEd.WorldPartitionConvertCommandlet] +EditorHashClass=/Script/CoreUObject.Class'/Script/Engine.WorldPartitionEditorSpatialHash' +RuntimeHashClass=/Script/CoreUObject.Class'/Script/Engine.WorldPartitionRuntimeHashSet' +bConvertActorsNotReferencedByLevelScript=True +WorldOrigin=(X=0.000000,Y=0.000000,Z=0.000000) +WorldExtent=(X=4398046511104.000000,Y=4398046511104.000000,Z=4398046511104.000000) +DefaultHLODLayerAsset=None +FoliageTypePath=/Game/FoliageTypes +LandscapeGridSize=4 +DataLayerAssetFolder=/Game/DataLayers/Lvl_FirstPerson_WP/ + +[/Script/Engine.WorldPartitionEditorSpatialHash] +CellSize=12800 +WorldImage=None +WorldImageTopLeftW=(X=0.000000,Y=0.000000) +WorldImageBottomRightW=(X=0.000000,Y=0.000000) + diff --git a/Content/FirstPerson/Lvl_FirstPerson.umap b/Content/FirstPerson/Lvl_FirstPerson.umap new file mode 100644 index 0000000..215367b Binary files /dev/null and b/Content/FirstPerson/Lvl_FirstPerson.umap differ diff --git a/Content/FirstPerson/MI_FirstPersonColorway.uasset b/Content/FirstPerson/MI_FirstPersonColorway.uasset new file mode 100644 index 0000000..0692429 Binary files /dev/null and b/Content/FirstPerson/MI_FirstPersonColorway.uasset differ diff --git a/Content/HUD/BP_HUD.uasset b/Content/HUD/BP_HUD.uasset new file mode 100644 index 0000000..0205234 Binary files /dev/null and b/Content/HUD/BP_HUD.uasset differ diff --git a/Content/HUD/Helper/W_Attribute.uasset b/Content/HUD/Helper/W_Attribute.uasset new file mode 100644 index 0000000..269af19 Binary files /dev/null and b/Content/HUD/Helper/W_Attribute.uasset differ diff --git a/Content/HUD/Helper/W_WidgetSwitcher_Button.uasset b/Content/HUD/Helper/W_WidgetSwitcher_Button.uasset new file mode 100644 index 0000000..7dc4d91 Binary files /dev/null and b/Content/HUD/Helper/W_WidgetSwitcher_Button.uasset differ diff --git a/Content/HUD/Inventory/W_InventoryContainer.uasset b/Content/HUD/Inventory/W_InventoryContainer.uasset new file mode 100644 index 0000000..504b608 Binary files /dev/null and b/Content/HUD/Inventory/W_InventoryContainer.uasset differ diff --git a/Content/HUD/Inventory/W_ItemSlot.uasset b/Content/HUD/Inventory/W_ItemSlot.uasset new file mode 100644 index 0000000..96e8bdb Binary files /dev/null and b/Content/HUD/Inventory/W_ItemSlot.uasset differ diff --git a/Content/HUD/Inventory/W_PlayerInventory.uasset b/Content/HUD/Inventory/W_PlayerInventory.uasset new file mode 100644 index 0000000..f387c90 Binary files /dev/null and b/Content/HUD/Inventory/W_PlayerInventory.uasset differ diff --git a/Content/HUD/LeftPanel/W_CommandEntry.uasset b/Content/HUD/LeftPanel/W_CommandEntry.uasset new file mode 100644 index 0000000..16a09fb Binary files /dev/null and b/Content/HUD/LeftPanel/W_CommandEntry.uasset differ diff --git a/Content/HUD/LeftPanel/W_FactionSettings.uasset b/Content/HUD/LeftPanel/W_FactionSettings.uasset new file mode 100644 index 0000000..5f521b7 Binary files /dev/null and b/Content/HUD/LeftPanel/W_FactionSettings.uasset differ diff --git a/Content/HUD/LeftPanel/W_Selection.uasset b/Content/HUD/LeftPanel/W_Selection.uasset new file mode 100644 index 0000000..7ab5a03 Binary files /dev/null and b/Content/HUD/LeftPanel/W_Selection.uasset differ diff --git a/Content/HUD/LeftPanel/W_UnitInfo.uasset b/Content/HUD/LeftPanel/W_UnitInfo.uasset new file mode 100644 index 0000000..3ecbd03 Binary files /dev/null and b/Content/HUD/LeftPanel/W_UnitInfo.uasset differ diff --git a/Content/HUD/LeftPanel/W_ZoneInfo.uasset b/Content/HUD/LeftPanel/W_ZoneInfo.uasset new file mode 100644 index 0000000..97486d0 Binary files /dev/null and b/Content/HUD/LeftPanel/W_ZoneInfo.uasset differ diff --git a/Content/HUD/LeftPanel/W_ZoneOverview.uasset b/Content/HUD/LeftPanel/W_ZoneOverview.uasset new file mode 100644 index 0000000..6ec5192 Binary files /dev/null and b/Content/HUD/LeftPanel/W_ZoneOverview.uasset differ diff --git a/Content/HUD/Testing/W_InfoPair.uasset b/Content/HUD/Testing/W_InfoPair.uasset new file mode 100644 index 0000000..08bbf4f Binary files /dev/null and b/Content/HUD/Testing/W_InfoPair.uasset differ diff --git a/Content/HUD/Testing/W_Testing.uasset b/Content/HUD/Testing/W_Testing.uasset new file mode 100644 index 0000000..213cbdf Binary files /dev/null and b/Content/HUD/Testing/W_Testing.uasset differ diff --git a/Content/HUD/W_LeftPanel.uasset b/Content/HUD/W_LeftPanel.uasset new file mode 100644 index 0000000..9bf6d15 Binary files /dev/null and b/Content/HUD/W_LeftPanel.uasset differ diff --git a/Content/HUD/W_Outliner.uasset b/Content/HUD/W_Outliner.uasset new file mode 100644 index 0000000..aa2becb Binary files /dev/null and b/Content/HUD/W_Outliner.uasset differ diff --git a/Content/HUD/W_OutlinerEntry.uasset b/Content/HUD/W_OutlinerEntry.uasset new file mode 100644 index 0000000..ec8ab86 Binary files /dev/null and b/Content/HUD/W_OutlinerEntry.uasset differ diff --git a/Content/HUD/W_TopBar.uasset b/Content/HUD/W_TopBar.uasset new file mode 100644 index 0000000..b52ebc4 Binary files /dev/null and b/Content/HUD/W_TopBar.uasset differ diff --git a/Content/Input/Actions/IA_CameraRotation.uasset b/Content/Input/Actions/IA_CameraRotation.uasset new file mode 100644 index 0000000..dfa1b7b Binary files /dev/null and b/Content/Input/Actions/IA_CameraRotation.uasset differ diff --git a/Content/Input/Actions/IA_Command.uasset b/Content/Input/Actions/IA_Command.uasset new file mode 100644 index 0000000..4b36141 Binary files /dev/null and b/Content/Input/Actions/IA_Command.uasset differ diff --git a/Content/Input/Actions/IA_Interact.uasset b/Content/Input/Actions/IA_Interact.uasset new file mode 100644 index 0000000..2c2e7eb Binary files /dev/null and b/Content/Input/Actions/IA_Interact.uasset differ diff --git a/Content/Input/Actions/IA_Jump.uasset b/Content/Input/Actions/IA_Jump.uasset new file mode 100644 index 0000000..49d209b Binary files /dev/null and b/Content/Input/Actions/IA_Jump.uasset differ diff --git a/Content/Input/Actions/IA_LShift.uasset b/Content/Input/Actions/IA_LShift.uasset new file mode 100644 index 0000000..346414e Binary files /dev/null and b/Content/Input/Actions/IA_LShift.uasset differ diff --git a/Content/Input/Actions/IA_Look.uasset b/Content/Input/Actions/IA_Look.uasset new file mode 100644 index 0000000..d87d291 Binary files /dev/null and b/Content/Input/Actions/IA_Look.uasset differ diff --git a/Content/Input/Actions/IA_MouseLook.uasset b/Content/Input/Actions/IA_MouseLook.uasset new file mode 100644 index 0000000..6161fb0 Binary files /dev/null and b/Content/Input/Actions/IA_MouseLook.uasset differ diff --git a/Content/Input/Actions/IA_Move.uasset b/Content/Input/Actions/IA_Move.uasset new file mode 100644 index 0000000..892d571 Binary files /dev/null and b/Content/Input/Actions/IA_Move.uasset differ diff --git a/Content/Input/Actions/IA_Scroll.uasset b/Content/Input/Actions/IA_Scroll.uasset new file mode 100644 index 0000000..af01abe Binary files /dev/null and b/Content/Input/Actions/IA_Scroll.uasset differ diff --git a/Content/Input/Actions/IA_Select.uasset b/Content/Input/Actions/IA_Select.uasset new file mode 100644 index 0000000..72ac3ea Binary files /dev/null and b/Content/Input/Actions/IA_Select.uasset differ diff --git a/Content/Input/Actions/IA_ToggleInventory.uasset b/Content/Input/Actions/IA_ToggleInventory.uasset new file mode 100644 index 0000000..e2a06a0 Binary files /dev/null and b/Content/Input/Actions/IA_ToggleInventory.uasset differ diff --git a/Content/Input/Actions/IA_ToggleMenus.uasset b/Content/Input/Actions/IA_ToggleMenus.uasset new file mode 100644 index 0000000..fc5fcce Binary files /dev/null and b/Content/Input/Actions/IA_ToggleMenus.uasset differ diff --git a/Content/Input/IMC_Default.uasset b/Content/Input/IMC_Default.uasset new file mode 100644 index 0000000..2667406 Binary files /dev/null and b/Content/Input/IMC_Default.uasset differ diff --git a/Content/Input/IMC_MouseLook.uasset b/Content/Input/IMC_MouseLook.uasset new file mode 100644 index 0000000..1216180 Binary files /dev/null and b/Content/Input/IMC_MouseLook.uasset differ diff --git a/Content/Input/Touch/BPI_TouchInterface.uasset b/Content/Input/Touch/BPI_TouchInterface.uasset new file mode 100644 index 0000000..f627245 Binary files /dev/null and b/Content/Input/Touch/BPI_TouchInterface.uasset differ diff --git a/Content/Input/Touch/UI_Thumbstick.uasset b/Content/Input/Touch/UI_Thumbstick.uasset new file mode 100644 index 0000000..f597a90 Binary files /dev/null and b/Content/Input/Touch/UI_Thumbstick.uasset differ diff --git a/Content/Input/Touch/UI_TouchSimple.uasset b/Content/Input/Touch/UI_TouchSimple.uasset new file mode 100644 index 0000000..3b6cb2b Binary files /dev/null and b/Content/Input/Touch/UI_TouchSimple.uasset differ diff --git a/Content/Interaction/BP_InteractInverface.uasset b/Content/Interaction/BP_InteractInverface.uasset new file mode 100644 index 0000000..a7f409b Binary files /dev/null and b/Content/Interaction/BP_InteractInverface.uasset differ diff --git a/Content/Inventory/Icons/Food_13.uasset b/Content/Inventory/Icons/Food_13.uasset new file mode 100644 index 0000000..c5981ed Binary files /dev/null and b/Content/Inventory/Icons/Food_13.uasset differ diff --git a/Content/Inventory/Icons/Food_20.uasset b/Content/Inventory/Icons/Food_20.uasset new file mode 100644 index 0000000..43470fc Binary files /dev/null and b/Content/Inventory/Icons/Food_20.uasset differ diff --git a/Content/Inventory/Icons/Food_29.uasset b/Content/Inventory/Icons/Food_29.uasset new file mode 100644 index 0000000..310d964 Binary files /dev/null and b/Content/Inventory/Icons/Food_29.uasset differ diff --git a/Content/Inventory/Icons/Food_45.uasset b/Content/Inventory/Icons/Food_45.uasset new file mode 100644 index 0000000..75c9ee5 Binary files /dev/null and b/Content/Inventory/Icons/Food_45.uasset differ diff --git a/Content/Inventory/Item/FoodRation.uasset b/Content/Inventory/Item/FoodRation.uasset new file mode 100644 index 0000000..8e83360 Binary files /dev/null and b/Content/Inventory/Item/FoodRation.uasset differ diff --git a/Content/Inventory/Item/Meat.uasset b/Content/Inventory/Item/Meat.uasset new file mode 100644 index 0000000..819a2d9 Binary files /dev/null and b/Content/Inventory/Item/Meat.uasset differ diff --git a/Content/Inventory/Item/TestItem.uasset b/Content/Inventory/Item/TestItem.uasset new file mode 100644 index 0000000..c0cc098 Binary files /dev/null and b/Content/Inventory/Item/TestItem.uasset differ diff --git a/Content/Inventory/Item/Water.uasset b/Content/Inventory/Item/Water.uasset new file mode 100644 index 0000000..016915e Binary files /dev/null and b/Content/Inventory/Item/Water.uasset differ diff --git a/Content/Inventory/Item/Wheat.uasset b/Content/Inventory/Item/Wheat.uasset new file mode 100644 index 0000000..ac26e43 Binary files /dev/null and b/Content/Inventory/Item/Wheat.uasset differ diff --git a/Content/Inventory/ItemRegisterDataTable.uasset b/Content/Inventory/ItemRegisterDataTable.uasset new file mode 100644 index 0000000..1ad1ced Binary files /dev/null and b/Content/Inventory/ItemRegisterDataTable.uasset differ diff --git a/Content/Inventory/Test/BP_ItemActor.uasset b/Content/Inventory/Test/BP_ItemActor.uasset new file mode 100644 index 0000000..89ab93f Binary files /dev/null and b/Content/Inventory/Test/BP_ItemActor.uasset differ diff --git a/Content/Inventory/Test/BP_PlaceableItemActor.uasset b/Content/Inventory/Test/BP_PlaceableItemActor.uasset new file mode 100644 index 0000000..011ac2a Binary files /dev/null and b/Content/Inventory/Test/BP_PlaceableItemActor.uasset differ diff --git a/Content/LevelPrototyping/Interactable/Door/BP_DoorFrame.uasset b/Content/LevelPrototyping/Interactable/Door/BP_DoorFrame.uasset new file mode 100644 index 0000000..88f7170 Binary files /dev/null and b/Content/LevelPrototyping/Interactable/Door/BP_DoorFrame.uasset differ diff --git a/Content/LevelPrototyping/Interactable/Door/Meshes/SM_Door.uasset b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_Door.uasset new file mode 100644 index 0000000..9f5a3e1 Binary files /dev/null and b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_Door.uasset differ diff --git a/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Corner.uasset b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Corner.uasset new file mode 100644 index 0000000..65c50ba Binary files /dev/null and b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Corner.uasset differ diff --git a/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Edge.uasset b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Edge.uasset new file mode 100644 index 0000000..4497526 Binary files /dev/null and b/Content/LevelPrototyping/Interactable/Door/Meshes/SM_DoorFrame_Edge.uasset differ diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/MI_GlowNT.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/MI_GlowNT.uasset new file mode 100644 index 0000000..df55d5c Binary files /dev/null and b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/MI_GlowNT.uasset differ diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_GradientGlow.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_GradientGlow.uasset new file mode 100644 index 0000000..0db8b14 Binary files /dev/null and b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_GradientGlow.uasset differ diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_SimpleGlow.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_SimpleGlow.uasset new file mode 100644 index 0000000..8b7eaba Binary files /dev/null and b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Materials/M_SimpleGlow.uasset differ diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularBand.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularBand.uasset new file mode 100644 index 0000000..4fe6d9a Binary files /dev/null and b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularBand.uasset differ diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularGlow.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularGlow.uasset new file mode 100644 index 0000000..86cecae Binary files /dev/null and b/Content/LevelPrototyping/Interactable/JumpPad/Assets/Meshes/SM_CircularGlow.uasset differ diff --git a/Content/LevelPrototyping/Interactable/JumpPad/Assets/NS_JumpPad.uasset b/Content/LevelPrototyping/Interactable/JumpPad/Assets/NS_JumpPad.uasset new file mode 100644 index 0000000..9981a30 Binary files /dev/null and b/Content/LevelPrototyping/Interactable/JumpPad/Assets/NS_JumpPad.uasset differ diff --git a/Content/LevelPrototyping/Interactable/JumpPad/BP_JumpPad.uasset b/Content/LevelPrototyping/Interactable/JumpPad/BP_JumpPad.uasset new file mode 100644 index 0000000..541de5c Binary files /dev/null and b/Content/LevelPrototyping/Interactable/JumpPad/BP_JumpPad.uasset differ diff --git a/Content/LevelPrototyping/Interactable/Target/Assets/SM_TargetBaseMesh.uasset b/Content/LevelPrototyping/Interactable/Target/Assets/SM_TargetBaseMesh.uasset new file mode 100644 index 0000000..f154a0e Binary files /dev/null and b/Content/LevelPrototyping/Interactable/Target/Assets/SM_TargetBaseMesh.uasset differ diff --git a/Content/LevelPrototyping/Interactable/Target/BP_WobbleTarget.uasset b/Content/LevelPrototyping/Interactable/Target/BP_WobbleTarget.uasset new file mode 100644 index 0000000..115c622 Binary files /dev/null and b/Content/LevelPrototyping/Interactable/Target/BP_WobbleTarget.uasset differ diff --git a/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset b/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset new file mode 100644 index 0000000..f3e6461 Binary files /dev/null and b/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset differ diff --git a/Content/LevelPrototyping/Materials/MI_DefaultColorway.uasset b/Content/LevelPrototyping/Materials/MI_DefaultColorway.uasset new file mode 100644 index 0000000..76da848 Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_DefaultColorway.uasset differ diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset new file mode 100644 index 0000000..63a5bfa Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset differ diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset new file mode 100644 index 0000000..2accd35 Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset differ diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_Round.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_Round.uasset new file mode 100644 index 0000000..954d27f Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_Round.uasset differ diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset new file mode 100644 index 0000000..bc39915 Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset differ diff --git a/Content/LevelPrototyping/Materials/M_FlatCol.uasset b/Content/LevelPrototyping/Materials/M_FlatCol.uasset new file mode 100644 index 0000000..a182f0c Binary files /dev/null and b/Content/LevelPrototyping/Materials/M_FlatCol.uasset differ diff --git a/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset b/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset new file mode 100644 index 0000000..edb0c7f Binary files /dev/null and b/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset differ diff --git a/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset b/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset new file mode 100644 index 0000000..f1df33d Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset differ diff --git a/Content/LevelPrototyping/Meshes/SM_Cube.uasset b/Content/LevelPrototyping/Meshes/SM_Cube.uasset new file mode 100644 index 0000000..064d510 Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_Cube.uasset differ diff --git a/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset b/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset new file mode 100644 index 0000000..c9507f3 Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset differ diff --git a/Content/LevelPrototyping/Meshes/SM_Plane.uasset b/Content/LevelPrototyping/Meshes/SM_Plane.uasset new file mode 100644 index 0000000..db5527a Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_Plane.uasset differ diff --git a/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset b/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset new file mode 100644 index 0000000..2e5bcee Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset differ diff --git a/Content/LevelPrototyping/Meshes/SM_QuarterCylinderOuter.uasset b/Content/LevelPrototyping/Meshes/SM_QuarterCylinderOuter.uasset new file mode 100644 index 0000000..fcab6f9 Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_QuarterCylinderOuter.uasset differ diff --git a/Content/LevelPrototyping/Meshes/SM_Ramp.uasset b/Content/LevelPrototyping/Meshes/SM_Ramp.uasset new file mode 100644 index 0000000..e1293ee Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_Ramp.uasset differ diff --git a/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset b/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset new file mode 100644 index 0000000..e901d24 Binary files /dev/null and b/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset differ diff --git a/Content/ThirdPerson/BP_ThirdPersonCharacter.uasset b/Content/ThirdPerson/BP_ThirdPersonCharacter.uasset new file mode 100644 index 0000000..14d6d25 Binary files /dev/null and b/Content/ThirdPerson/BP_ThirdPersonCharacter.uasset differ diff --git a/Content/ThirdPerson/BP_ThirdPersonController.uasset b/Content/ThirdPerson/BP_ThirdPersonController.uasset new file mode 100644 index 0000000..b1cf232 Binary files /dev/null and b/Content/ThirdPerson/BP_ThirdPersonController.uasset differ diff --git a/Content/ThirdPerson/BP_ThirdPersonGameMode.uasset b/Content/ThirdPerson/BP_ThirdPersonGameMode.uasset new file mode 100644 index 0000000..a8f28e6 Binary files /dev/null and b/Content/ThirdPerson/BP_ThirdPersonGameMode.uasset differ diff --git a/Content/ThirdPerson/NewWorld.umap b/Content/ThirdPerson/NewWorld.umap new file mode 100644 index 0000000..9f820f2 Binary files /dev/null and b/Content/ThirdPerson/NewWorld.umap differ diff --git a/Content/Unit/BP_BaseUnit.uasset b/Content/Unit/BP_BaseUnit.uasset new file mode 100644 index 0000000..a25526f Binary files /dev/null and b/Content/Unit/BP_BaseUnit.uasset differ diff --git a/Content/Unit/BP_PlayerUnit.uasset b/Content/Unit/BP_PlayerUnit.uasset new file mode 100644 index 0000000..be1f66a Binary files /dev/null and b/Content/Unit/BP_PlayerUnit.uasset differ diff --git a/Content/Variant_Horror/Blueprints/BP_HorrorCharacter.uasset b/Content/Variant_Horror/Blueprints/BP_HorrorCharacter.uasset new file mode 100644 index 0000000..1e46c7a Binary files /dev/null and b/Content/Variant_Horror/Blueprints/BP_HorrorCharacter.uasset differ diff --git a/Content/Variant_Horror/Blueprints/BP_HorrorGameMode.uasset b/Content/Variant_Horror/Blueprints/BP_HorrorGameMode.uasset new file mode 100644 index 0000000..543406d Binary files /dev/null and b/Content/Variant_Horror/Blueprints/BP_HorrorGameMode.uasset differ diff --git a/Content/Variant_Horror/Blueprints/BP_HorrorPlayerController.uasset b/Content/Variant_Horror/Blueprints/BP_HorrorPlayerController.uasset new file mode 100644 index 0000000..fb3f2ac Binary files /dev/null and b/Content/Variant_Horror/Blueprints/BP_HorrorPlayerController.uasset differ diff --git a/Content/Variant_Horror/Blueprints/BP_PC_Horror.uasset b/Content/Variant_Horror/Blueprints/BP_PC_Horror.uasset new file mode 100644 index 0000000..7ad3945 Binary files /dev/null and b/Content/Variant_Horror/Blueprints/BP_PC_Horror.uasset differ diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/LF_Flicker.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/LF_Flicker.uasset new file mode 100644 index 0000000..3f6e06a Binary files /dev/null and b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/LF_Flicker.uasset differ diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MF_LightFlicker.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MF_LightFlicker.uasset new file mode 100644 index 0000000..4bdbfe2 Binary files /dev/null and b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MF_LightFlicker.uasset differ diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MI_FlickeringLight.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MI_FlickeringLight.uasset new file mode 100644 index 0000000..7d5ef79 Binary files /dev/null and b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/MI_FlickeringLight.uasset differ diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_DustMote.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_DustMote.uasset new file mode 100644 index 0000000..87a7668 Binary files /dev/null and b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_DustMote.uasset differ diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_Light.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_Light.uasset new file mode 100644 index 0000000..d33522c Binary files /dev/null and b/Content/Variant_Horror/Blueprints/Light/Assets/Materials/M_Light.uasset differ diff --git a/Content/Variant_Horror/Blueprints/Light/Assets/NS_DustMote.uasset b/Content/Variant_Horror/Blueprints/Light/Assets/NS_DustMote.uasset new file mode 100644 index 0000000..b6242b0 Binary files /dev/null and b/Content/Variant_Horror/Blueprints/Light/Assets/NS_DustMote.uasset differ diff --git a/Content/Variant_Horror/Blueprints/Light/BP_HorrorLight.uasset b/Content/Variant_Horror/Blueprints/Light/BP_HorrorLight.uasset new file mode 100644 index 0000000..3263176 Binary files /dev/null and b/Content/Variant_Horror/Blueprints/Light/BP_HorrorLight.uasset differ diff --git a/Content/Variant_Horror/Input/IA_Sprint.uasset b/Content/Variant_Horror/Input/IA_Sprint.uasset new file mode 100644 index 0000000..cab56d3 Binary files /dev/null and b/Content/Variant_Horror/Input/IA_Sprint.uasset differ diff --git a/Content/Variant_Horror/Input/IMC_Horror.uasset b/Content/Variant_Horror/Input/IMC_Horror.uasset new file mode 100644 index 0000000..146c952 Binary files /dev/null and b/Content/Variant_Horror/Input/IMC_Horror.uasset differ diff --git a/Content/Variant_Horror/Lvl_Horror.ini b/Content/Variant_Horror/Lvl_Horror.ini new file mode 100644 index 0000000..085257e --- /dev/null +++ b/Content/Variant_Horror/Lvl_Horror.ini @@ -0,0 +1,18 @@ +;METADATA=(Diff=true, UseCommands=true) +[/Script/UnrealEd.WorldPartitionConvertCommandlet] +EditorHashClass=/Script/CoreUObject.Class'/Script/Engine.WorldPartitionEditorSpatialHash' +RuntimeHashClass=/Script/CoreUObject.Class'/Script/Engine.WorldPartitionRuntimeHashSet' +bConvertActorsNotReferencedByLevelScript=True +WorldOrigin=(X=0.000000,Y=0.000000,Z=0.000000) +WorldExtent=(X=4398046511104.000000,Y=4398046511104.000000,Z=4398046511104.000000) +DefaultHLODLayerAsset=None +FoliageTypePath=/Game/FoliageTypes +LandscapeGridSize=4 +DataLayerAssetFolder=/Game/DataLayers/Lvl_Horror_WP/ + +[/Script/Engine.WorldPartitionEditorSpatialHash] +CellSize=12800 +WorldImage=None +WorldImageTopLeftW=(X=0.000000,Y=0.000000) +WorldImageBottomRightW=(X=0.000000,Y=0.000000) + diff --git a/Content/Variant_Horror/Lvl_Horror.umap b/Content/Variant_Horror/Lvl_Horror.umap new file mode 100644 index 0000000..0942296 Binary files /dev/null and b/Content/Variant_Horror/Lvl_Horror.umap differ diff --git a/Content/Variant_Horror/UI/M_FillBackground.uasset b/Content/Variant_Horror/UI/M_FillBackground.uasset new file mode 100644 index 0000000..a6b126a Binary files /dev/null and b/Content/Variant_Horror/UI/M_FillBackground.uasset differ diff --git a/Content/Variant_Horror/UI/UI_Horror.uasset b/Content/Variant_Horror/UI/UI_Horror.uasset new file mode 100644 index 0000000..c372457 Binary files /dev/null and b/Content/Variant_Horror/UI/UI_Horror.uasset differ diff --git a/Content/Variant_Shooter/Anims/ABP_FP_Pistol.uasset b/Content/Variant_Shooter/Anims/ABP_FP_Pistol.uasset new file mode 100644 index 0000000..216c00d Binary files /dev/null and b/Content/Variant_Shooter/Anims/ABP_FP_Pistol.uasset differ diff --git a/Content/Variant_Shooter/Anims/ABP_FP_Weapon.uasset b/Content/Variant_Shooter/Anims/ABP_FP_Weapon.uasset new file mode 100644 index 0000000..39da641 Binary files /dev/null and b/Content/Variant_Shooter/Anims/ABP_FP_Weapon.uasset differ diff --git a/Content/Variant_Shooter/Anims/ABP_TP_Pistol.uasset b/Content/Variant_Shooter/Anims/ABP_TP_Pistol.uasset new file mode 100644 index 0000000..75ae157 Binary files /dev/null and b/Content/Variant_Shooter/Anims/ABP_TP_Pistol.uasset differ diff --git a/Content/Variant_Shooter/Anims/ABP_TP_Rifle.uasset b/Content/Variant_Shooter/Anims/ABP_TP_Rifle.uasset new file mode 100644 index 0000000..fa3dcaf Binary files /dev/null and b/Content/Variant_Shooter/Anims/ABP_TP_Rifle.uasset differ diff --git a/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment.uasset b/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment.uasset new file mode 100644 index 0000000..d2cef55 Binary files /dev/null and b/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment.uasset differ diff --git a/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment_Pistol.uasset b/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment_Pistol.uasset new file mode 100644 index 0000000..32b276a Binary files /dev/null and b/Content/Variant_Shooter/Anims/Ctrl_HandAdjusment_Pistol.uasset differ diff --git a/Content/Variant_Shooter/Anims/FP_Rifle_Shoot_Montage.uasset b/Content/Variant_Shooter/Anims/FP_Rifle_Shoot_Montage.uasset new file mode 100644 index 0000000..5d83cdd Binary files /dev/null and b/Content/Variant_Shooter/Anims/FP_Rifle_Shoot_Montage.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/BP_ShooterAIController.uasset b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterAIController.uasset new file mode 100644 index 0000000..a0bbb2b Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterAIController.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPC.uasset b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPC.uasset new file mode 100644 index 0000000..af3ff33 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPC.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPCSpawner.uasset b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPCSpawner.uasset new file mode 100644 index 0000000..27c39df Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/BP_ShooterNPCSpawner.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/EQS/EQS_FindRoamLocation.uasset b/Content/Variant_Shooter/Blueprints/AI/EQS/EQS_FindRoamLocation.uasset new file mode 100644 index 0000000..412c387 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/EQS/EQS_FindRoamLocation.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/EQS/EQS_FindSnipingLocation.uasset b/Content/Variant_Shooter/Blueprints/AI/EQS/EQS_FindSnipingLocation.uasset new file mode 100644 index 0000000..619e953 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/EQS/EQS_FindSnipingLocation.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/EQS/EnvQueryContext_Target.uasset b/Content/Variant_Shooter/Blueprints/AI/EQS/EnvQueryContext_Target.uasset new file mode 100644 index 0000000..358d8d2 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/EQS/EnvQueryContext_Target.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/ST_Shooter.uasset b/Content/Variant_Shooter/Blueprints/AI/ST_Shooter.uasset new file mode 100644 index 0000000..aa44285 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/ST_Shooter.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/ST_Shooter_ShootAtTarget.uasset b/Content/Variant_Shooter/Blueprints/AI/ST_Shooter_ShootAtTarget.uasset new file mode 100644 index 0000000..0f65b34 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/ST_Shooter_ShootAtTarget.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeCondition_HasLineOfSightToTarget.uasset b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeCondition_HasLineOfSightToTarget.uasset new file mode 100644 index 0000000..92ed997 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeCondition_HasLineOfSightToTarget.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_FaceActor.uasset b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_FaceActor.uasset new file mode 100644 index 0000000..b63774e Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_FaceActor.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_FaceLocation.uasset b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_FaceLocation.uasset new file mode 100644 index 0000000..286ae0f Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_FaceLocation.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_SenseEnemies.uasset b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_SenseEnemies.uasset new file mode 100644 index 0000000..1e95199 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_SenseEnemies.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_SetRandomFloat.uasset b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_SetRandomFloat.uasset new file mode 100644 index 0000000..eef28dc Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_SetRandomFloat.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_ShootAtTarget.uasset b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_ShootAtTarget.uasset new file mode 100644 index 0000000..7c4b563 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/AI/StateTree/StateTreeTask_ShootAtTarget.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/BPI_Shooter.uasset b/Content/Variant_Shooter/Blueprints/BPI_Shooter.uasset new file mode 100644 index 0000000..96f0553 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/BPI_Shooter.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/BP_ShooterCharacter.uasset b/Content/Variant_Shooter/Blueprints/BP_ShooterCharacter.uasset new file mode 100644 index 0000000..f9f68e7 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/BP_ShooterCharacter.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/BP_ShooterGameMode.uasset b/Content/Variant_Shooter/Blueprints/BP_ShooterGameMode.uasset new file mode 100644 index 0000000..0ccc8a0 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/BP_ShooterGameMode.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/BP_ShooterPlayerController.uasset b/Content/Variant_Shooter/Blueprints/BP_ShooterPlayerController.uasset new file mode 100644 index 0000000..e2e10e6 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/BP_ShooterPlayerController.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/BPI_Pickups.uasset b/Content/Variant_Shooter/Blueprints/Pickups/BPI_Pickups.uasset new file mode 100644 index 0000000..842f52a Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/BPI_Pickups.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/BPI_WeaponHolder.uasset b/Content/Variant_Shooter/Blueprints/Pickups/BPI_WeaponHolder.uasset new file mode 100644 index 0000000..63dd156 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/BPI_WeaponHolder.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterPickup.uasset b/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterPickup.uasset new file mode 100644 index 0000000..34d27f3 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterPickup.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterWeaponBase.uasset b/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterWeaponBase.uasset new file mode 100644 index 0000000..43cc8b8 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/BP_ShooterWeaponBase.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/DT_WeaponList.uasset b/Content/Variant_Shooter/Blueprints/Pickups/DT_WeaponList.uasset new file mode 100644 index 0000000..e2031f5 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/DT_WeaponList.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectileBase.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectileBase.uasset new file mode 100644 index 0000000..f43b1c0 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectileBase.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Bullet.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Bullet.uasset new file mode 100644 index 0000000..f391d4b Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Bullet.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Grenade.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Grenade.uasset new file mode 100644 index 0000000..5c9937f Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_ShooterProjectile_Grenade.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_Shooter_GrenadeExplosion.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_Shooter_GrenadeExplosion.uasset new file mode 100644 index 0000000..d25738a Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/BP_Shooter_GrenadeExplosion.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Materials/M_Explosion.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Materials/M_Explosion.uasset new file mode 100644 index 0000000..d93dfe2 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Materials/M_Explosion.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Meshes/SM_FoamBullet.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Meshes/SM_FoamBullet.uasset new file mode 100644 index 0000000..6f53b4b Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Projectiles/Meshes/SM_FoamBullet.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/ST_WeaponTableRow.uasset b/Content/Variant_Shooter/Blueprints/Pickups/ST_WeaponTableRow.uasset new file mode 100644 index 0000000..af1baed Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/ST_WeaponTableRow.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_GrenadeLauncher.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_GrenadeLauncher.uasset new file mode 100644 index 0000000..740220c Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_GrenadeLauncher.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Pistol.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Pistol.uasset new file mode 100644 index 0000000..9d5df61 Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Pistol.uasset differ diff --git a/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Rifle.uasset b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Rifle.uasset new file mode 100644 index 0000000..498f01b Binary files /dev/null and b/Content/Variant_Shooter/Blueprints/Pickups/Weapons/BP_ShooterWeapon_Rifle.uasset differ diff --git a/Content/Variant_Shooter/Input/Actions/IA_Shoot.uasset b/Content/Variant_Shooter/Input/Actions/IA_Shoot.uasset new file mode 100644 index 0000000..3798a88 Binary files /dev/null and b/Content/Variant_Shooter/Input/Actions/IA_Shoot.uasset differ diff --git a/Content/Variant_Shooter/Input/Actions/IA_SwapWeapon.uasset b/Content/Variant_Shooter/Input/Actions/IA_SwapWeapon.uasset new file mode 100644 index 0000000..5bffb0a Binary files /dev/null and b/Content/Variant_Shooter/Input/Actions/IA_SwapWeapon.uasset differ diff --git a/Content/Variant_Shooter/Input/BPI_Touch_Shooter.uasset b/Content/Variant_Shooter/Input/BPI_Touch_Shooter.uasset new file mode 100644 index 0000000..b2f53a7 Binary files /dev/null and b/Content/Variant_Shooter/Input/BPI_Touch_Shooter.uasset differ diff --git a/Content/Variant_Shooter/Input/IMC_Weapons.uasset b/Content/Variant_Shooter/Input/IMC_Weapons.uasset new file mode 100644 index 0000000..6e3f785 Binary files /dev/null and b/Content/Variant_Shooter/Input/IMC_Weapons.uasset differ diff --git a/Content/Variant_Shooter/Input/UI_TouchInterface_Shooter.uasset b/Content/Variant_Shooter/Input/UI_TouchInterface_Shooter.uasset new file mode 100644 index 0000000..3f0e95f Binary files /dev/null and b/Content/Variant_Shooter/Input/UI_TouchInterface_Shooter.uasset differ diff --git a/Content/Variant_Shooter/Lvl_ArenaShooter.ini b/Content/Variant_Shooter/Lvl_ArenaShooter.ini new file mode 100644 index 0000000..ebd419e --- /dev/null +++ b/Content/Variant_Shooter/Lvl_ArenaShooter.ini @@ -0,0 +1,18 @@ +;METADATA=(Diff=true, UseCommands=true) +[/Script/UnrealEd.WorldPartitionConvertCommandlet] +EditorHashClass=/Script/CoreUObject.Class'/Script/Engine.WorldPartitionEditorSpatialHash' +RuntimeHashClass=/Script/CoreUObject.Class'/Script/Engine.WorldPartitionRuntimeHashSet' +bConvertActorsNotReferencedByLevelScript=True +WorldOrigin=(X=0.000000,Y=0.000000,Z=0.000000) +WorldExtent=(X=4398046511104.000000,Y=4398046511104.000000,Z=4398046511104.000000) +DefaultHLODLayerAsset=None +FoliageTypePath=/Game/FoliageTypes +LandscapeGridSize=4 +DataLayerAssetFolder=/Game/Variant_Shooter/DataLayers/Lvl_ArenaShooter_WP/ + +[/Script/Engine.WorldPartitionEditorSpatialHash] +CellSize=12800 +WorldImage=None +WorldImageTopLeftW=(X=0.000000,Y=0.000000) +WorldImageBottomRightW=(X=0.000000,Y=0.000000) + diff --git a/Content/Variant_Shooter/Lvl_ArenaShooter.umap b/Content/Variant_Shooter/Lvl_ArenaShooter.umap new file mode 100644 index 0000000..2768eb6 Binary files /dev/null and b/Content/Variant_Shooter/Lvl_ArenaShooter.umap differ diff --git a/Content/Variant_Shooter/UI/M_BulletCounter.uasset b/Content/Variant_Shooter/UI/M_BulletCounter.uasset new file mode 100644 index 0000000..ad1561e Binary files /dev/null and b/Content/Variant_Shooter/UI/M_BulletCounter.uasset differ diff --git a/Content/Variant_Shooter/UI/UI_Shooter.uasset b/Content/Variant_Shooter/UI/UI_Shooter.uasset new file mode 100644 index 0000000..0fc0804 Binary files /dev/null and b/Content/Variant_Shooter/UI/UI_Shooter.uasset differ diff --git a/Content/Variant_Shooter/UI/UI_ShooterBulletCounter.uasset b/Content/Variant_Shooter/UI/UI_ShooterBulletCounter.uasset new file mode 100644 index 0000000..98afbcd Binary files /dev/null and b/Content/Variant_Shooter/UI/UI_ShooterBulletCounter.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Audio/FirstPersonTemplateWeaponFire02.uasset b/Content/Weapons/GrenadeLauncher/Audio/FirstPersonTemplateWeaponFire02.uasset new file mode 100644 index 0000000..e94d3b7 Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Audio/FirstPersonTemplateWeaponFire02.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Materials/M_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Materials/M_GrenadeLauncher.uasset new file mode 100644 index 0000000..d83dc70 Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Materials/M_GrenadeLauncher.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Materials/M_ProjectileBullet.uasset b/Content/Weapons/GrenadeLauncher/Materials/M_ProjectileBullet.uasset new file mode 100644 index 0000000..d8419cf Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Materials/M_ProjectileBullet.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Meshes/FirstPersonProjectileMesh.uasset b/Content/Weapons/GrenadeLauncher/Meshes/FirstPersonProjectileMesh.uasset new file mode 100644 index 0000000..b01be83 Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Meshes/FirstPersonProjectileMesh.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Meshes/PA_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Meshes/PA_GrenadeLauncher.uasset new file mode 100644 index 0000000..dc8a344 Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Meshes/PA_GrenadeLauncher.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Meshes/SKM_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Meshes/SKM_GrenadeLauncher.uasset new file mode 100644 index 0000000..1abcd96 Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Meshes/SKM_GrenadeLauncher.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Meshes/SK_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Meshes/SK_GrenadeLauncher.uasset new file mode 100644 index 0000000..f36a8cb Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Meshes/SK_GrenadeLauncher.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Meshes/SM_GrenadeLauncher.uasset b/Content/Weapons/GrenadeLauncher/Meshes/SM_GrenadeLauncher.uasset new file mode 100644 index 0000000..c7a61a4 Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Meshes/SM_GrenadeLauncher.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_M.uasset b/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_M.uasset new file mode 100644 index 0000000..f5db2c0 Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_M.uasset differ diff --git a/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_N.uasset b/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_N.uasset new file mode 100644 index 0000000..00adbcc Binary files /dev/null and b/Content/Weapons/GrenadeLauncher/Textures/T_FPGun_N.uasset differ diff --git a/Content/Weapons/Pistol/Materials/MI_Weapon_Pistol.uasset b/Content/Weapons/Pistol/Materials/MI_Weapon_Pistol.uasset new file mode 100644 index 0000000..48c0b8c Binary files /dev/null and b/Content/Weapons/Pistol/Materials/MI_Weapon_Pistol.uasset differ diff --git a/Content/Weapons/Pistol/Meshes/PA_Pistol.uasset b/Content/Weapons/Pistol/Meshes/PA_Pistol.uasset new file mode 100644 index 0000000..b87ed41 Binary files /dev/null and b/Content/Weapons/Pistol/Meshes/PA_Pistol.uasset differ diff --git a/Content/Weapons/Pistol/Meshes/SKM_Pistol.uasset b/Content/Weapons/Pistol/Meshes/SKM_Pistol.uasset new file mode 100644 index 0000000..39dedf8 Binary files /dev/null and b/Content/Weapons/Pistol/Meshes/SKM_Pistol.uasset differ diff --git a/Content/Weapons/Pistol/Meshes/SK_Pistol.uasset b/Content/Weapons/Pistol/Meshes/SK_Pistol.uasset new file mode 100644 index 0000000..a792334 Binary files /dev/null and b/Content/Weapons/Pistol/Meshes/SK_Pistol.uasset differ diff --git a/Content/Weapons/Pistol/Meshes/SM_Pistol.uasset b/Content/Weapons/Pistol/Meshes/SM_Pistol.uasset new file mode 100644 index 0000000..3078675 Binary files /dev/null and b/Content/Weapons/Pistol/Meshes/SM_Pistol.uasset differ diff --git a/Content/Weapons/Pistol/Textures/T_Pistol_AORM.uasset b/Content/Weapons/Pistol/Textures/T_Pistol_AORM.uasset new file mode 100644 index 0000000..05d92f1 Binary files /dev/null and b/Content/Weapons/Pistol/Textures/T_Pistol_AORM.uasset differ diff --git a/Content/Weapons/Pistol/Textures/T_Pistol_D.uasset b/Content/Weapons/Pistol/Textures/T_Pistol_D.uasset new file mode 100644 index 0000000..98fedf0 Binary files /dev/null and b/Content/Weapons/Pistol/Textures/T_Pistol_D.uasset differ diff --git a/Content/Weapons/Pistol/Textures/T_Pistol_Masks.uasset b/Content/Weapons/Pistol/Textures/T_Pistol_Masks.uasset new file mode 100644 index 0000000..1032026 Binary files /dev/null and b/Content/Weapons/Pistol/Textures/T_Pistol_Masks.uasset differ diff --git a/Content/Weapons/Pistol/Textures/T_Pistol_N.uasset b/Content/Weapons/Pistol/Textures/T_Pistol_N.uasset new file mode 100644 index 0000000..74fccfd Binary files /dev/null and b/Content/Weapons/Pistol/Textures/T_Pistol_N.uasset differ diff --git a/Content/Weapons/Rifle/Materials/M_Rifle.uasset b/Content/Weapons/Rifle/Materials/M_Rifle.uasset new file mode 100644 index 0000000..9ce89ae Binary files /dev/null and b/Content/Weapons/Rifle/Materials/M_Rifle.uasset differ diff --git a/Content/Weapons/Rifle/Materials/M_Weapon.uasset b/Content/Weapons/Rifle/Materials/M_Weapon.uasset new file mode 100644 index 0000000..e265f92 Binary files /dev/null and b/Content/Weapons/Rifle/Materials/M_Weapon.uasset differ diff --git a/Content/Weapons/Rifle/Meshes/PA_Rifle.uasset b/Content/Weapons/Rifle/Meshes/PA_Rifle.uasset new file mode 100644 index 0000000..bc65934 Binary files /dev/null and b/Content/Weapons/Rifle/Meshes/PA_Rifle.uasset differ diff --git a/Content/Weapons/Rifle/Meshes/SKM_Rifle.uasset b/Content/Weapons/Rifle/Meshes/SKM_Rifle.uasset new file mode 100644 index 0000000..1712710 Binary files /dev/null and b/Content/Weapons/Rifle/Meshes/SKM_Rifle.uasset differ diff --git a/Content/Weapons/Rifle/Meshes/SK_Rifle.uasset b/Content/Weapons/Rifle/Meshes/SK_Rifle.uasset new file mode 100644 index 0000000..ba5debe Binary files /dev/null and b/Content/Weapons/Rifle/Meshes/SK_Rifle.uasset differ diff --git a/Content/Weapons/Rifle/Meshes/SM_Rifle.uasset b/Content/Weapons/Rifle/Meshes/SM_Rifle.uasset new file mode 100644 index 0000000..98d7337 Binary files /dev/null and b/Content/Weapons/Rifle/Meshes/SM_Rifle.uasset differ diff --git a/Content/Weapons/Rifle/Textures/T_Rifle_BC.uasset b/Content/Weapons/Rifle/Textures/T_Rifle_BC.uasset new file mode 100644 index 0000000..9856203 Binary files /dev/null and b/Content/Weapons/Rifle/Textures/T_Rifle_BC.uasset differ diff --git a/Content/Weapons/Rifle/Textures/T_Rifle_N.uasset b/Content/Weapons/Rifle/Textures/T_Rifle_N.uasset new file mode 100644 index 0000000..5f34abb Binary files /dev/null and b/Content/Weapons/Rifle/Textures/T_Rifle_N.uasset differ diff --git a/Content/WorldObjects/Modules/BP_TestFarm.uasset b/Content/WorldObjects/Modules/BP_TestFarm.uasset new file mode 100644 index 0000000..20fb7af Binary files /dev/null and b/Content/WorldObjects/Modules/BP_TestFarm.uasset differ diff --git a/Content/WorldObjects/Modules/Definitions/DA_TestFarm.uasset b/Content/WorldObjects/Modules/Definitions/DA_TestFarm.uasset new file mode 100644 index 0000000..4ef4e92 Binary files /dev/null and b/Content/WorldObjects/Modules/Definitions/DA_TestFarm.uasset differ diff --git a/Content/WorldObjects/Zones/BP_ZoneActor.uasset b/Content/WorldObjects/Zones/BP_ZoneActor.uasset new file mode 100644 index 0000000..83bfd77 Binary files /dev/null and b/Content/WorldObjects/Zones/BP_ZoneActor.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/44/E30ITTGIQYU50RQY5Y9XCY.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/44/E30ITTGIQYU50RQY5Y9XCY.uasset new file mode 100644 index 0000000..379d915 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/44/E30ITTGIQYU50RQY5Y9XCY.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/56/I0F38RE5S8MZ8PNQ5GDDSS.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/56/I0F38RE5S8MZ8PNQ5GDDSS.uasset new file mode 100644 index 0000000..3fcbfcf Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/56/I0F38RE5S8MZ8PNQ5GDDSS.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/9C/F5Z2JNQMT747Y7QES5KOP7.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/9C/F5Z2JNQMT747Y7QES5KOP7.uasset new file mode 100644 index 0000000..4253bec Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/9C/F5Z2JNQMT747Y7QES5KOP7.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/ER/GJUIXEEO8HUV9WZCSZR9GH.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/ER/GJUIXEEO8HUV9WZCSZR9GH.uasset new file mode 100644 index 0000000..c26fb67 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/ER/GJUIXEEO8HUV9WZCSZR9GH.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/GZ/TTBKQTM7H2HDLWB3T16ZLY.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/GZ/TTBKQTM7H2HDLWB3T16ZLY.uasset new file mode 100644 index 0000000..728a0a6 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/GZ/TTBKQTM7H2HDLWB3T16ZLY.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/QF/0MZRSMWGNM91UYLLVJ3D8E.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/QF/0MZRSMWGNM91UYLLVJ3D8E.uasset new file mode 100644 index 0000000..4d8c2fa Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/0/QF/0MZRSMWGNM91UYLLVJ3D8E.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/2T/XLTJQ7V46UNMQF707MQDQK.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/2T/XLTJQ7V46UNMQF707MQDQK.uasset new file mode 100644 index 0000000..a24f4dc Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/2T/XLTJQ7V46UNMQF707MQDQK.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/CC/0JTUNI8VQLSXUN7CSUXHGJ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/CC/0JTUNI8VQLSXUN7CSUXHGJ.uasset new file mode 100644 index 0000000..0e67f5f Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/CC/0JTUNI8VQLSXUN7CSUXHGJ.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/IH/6AC5KKMX2JQTMBRMPI2QXX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/IH/6AC5KKMX2JQTMBRMPI2QXX.uasset new file mode 100644 index 0000000..bdbe4ea Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/IH/6AC5KKMX2JQTMBRMPI2QXX.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/TT/AN7EDCE3WNBXY7C6MLPGQH.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/TT/AN7EDCE3WNBXY7C6MLPGQH.uasset new file mode 100644 index 0000000..df94692 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/TT/AN7EDCE3WNBXY7C6MLPGQH.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/WL/M7MJFQ0T76JWU6F1Z7YH8J.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/WL/M7MJFQ0T76JWU6F1Z7YH8J.uasset new file mode 100644 index 0000000..746f21a Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/1/WL/M7MJFQ0T76JWU6F1Z7YH8J.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/1X/SN5R6LIXKDO3W51X1TVUTZ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/1X/SN5R6LIXKDO3W51X1TVUTZ.uasset new file mode 100644 index 0000000..1f922e9 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/1X/SN5R6LIXKDO3W51X1TVUTZ.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/EG/CIZR6W2NYH4Y5P8G67XOU0.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/EG/CIZR6W2NYH4Y5P8G67XOU0.uasset new file mode 100644 index 0000000..44773b6 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/EG/CIZR6W2NYH4Y5P8G67XOU0.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/NN/UPER9K07U6B78EE80PY058.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/NN/UPER9K07U6B78EE80PY058.uasset new file mode 100644 index 0000000..40a71dd Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/NN/UPER9K07U6B78EE80PY058.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/OC/XS0DUOELE7HJY3F9XZSBNV.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/OC/XS0DUOELE7HJY3F9XZSBNV.uasset new file mode 100644 index 0000000..09b14db Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/OC/XS0DUOELE7HJY3F9XZSBNV.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/SP/2T0RTK13XAOOIQD0QTXDQ9.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/SP/2T0RTK13XAOOIQD0QTXDQ9.uasset new file mode 100644 index 0000000..0d7f238 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/SP/2T0RTK13XAOOIQD0QTXDQ9.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/WY/PPJSR8CZ4CY98H1H4E9RYY.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/WY/PPJSR8CZ4CY98H1H4E9RYY.uasset new file mode 100644 index 0000000..50b7017 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/2/WY/PPJSR8CZ4CY98H1H4E9RYY.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/8B/S2VB6OCHYGRYWAD0QGDM9H.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/8B/S2VB6OCHYGRYWAD0QGDM9H.uasset new file mode 100644 index 0000000..30658ce Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/8B/S2VB6OCHYGRYWAD0QGDM9H.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/BN/PJBVMDVV9BICN8MLKJ849X.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/BN/PJBVMDVV9BICN8MLKJ849X.uasset new file mode 100644 index 0000000..0e41979 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/3/BN/PJBVMDVV9BICN8MLKJ849X.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/3X/YJ94LSV2G9NAIYZIK96QLE.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/3X/YJ94LSV2G9NAIYZIK96QLE.uasset new file mode 100644 index 0000000..b364a17 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/3X/YJ94LSV2G9NAIYZIK96QLE.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/6J/NUEDVP0K274K8FKJ6Y0WEX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/6J/NUEDVP0K274K8FKJ6Y0WEX.uasset new file mode 100644 index 0000000..f1a2809 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/6J/NUEDVP0K274K8FKJ6Y0WEX.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/8V/Q896X99E5DMTT521YEXM9A.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/8V/Q896X99E5DMTT521YEXM9A.uasset new file mode 100644 index 0000000..3ee6220 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/8V/Q896X99E5DMTT521YEXM9A.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/IJ/E7WQWO4MJ84GWAX8H4UR84.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/IJ/E7WQWO4MJ84GWAX8H4UR84.uasset new file mode 100644 index 0000000..379008e Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/IJ/E7WQWO4MJ84GWAX8H4UR84.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/N3/FQV2FW1I8D4Z06TF38UTCR.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/N3/FQV2FW1I8D4Z06TF38UTCR.uasset new file mode 100644 index 0000000..317dd03 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/N3/FQV2FW1I8D4Z06TF38UTCR.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/QB/9YXJRQGLS33G0BEH37USBX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/QB/9YXJRQGLS33G0BEH37USBX.uasset new file mode 100644 index 0000000..4a1476d Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/QB/9YXJRQGLS33G0BEH37USBX.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/XL/U0BAKX7624EKY7QR8W4QDX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/XL/U0BAKX7624EKY7QR8W4QDX.uasset new file mode 100644 index 0000000..4211a13 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/4/XL/U0BAKX7624EKY7QR8W4QDX.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/CA/EF4PBL6V835JFFH0SNZ2J8.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/CA/EF4PBL6V835JFFH0SNZ2J8.uasset new file mode 100644 index 0000000..5617452 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/CA/EF4PBL6V835JFFH0SNZ2J8.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/TI/UOUH4EXJHIGJNF2D0Y7CPX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/TI/UOUH4EXJHIGJNF2D0Y7CPX.uasset new file mode 100644 index 0000000..6e1fe11 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/TI/UOUH4EXJHIGJNF2D0Y7CPX.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/UU/1ZY1QFVHRWZSP8YI4VZLMK.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/UU/1ZY1QFVHRWZSP8YI4VZLMK.uasset new file mode 100644 index 0000000..6f47709 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/UU/1ZY1QFVHRWZSP8YI4VZLMK.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/V6/DING1S8EVR2AQW03U1ABGV.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/V6/DING1S8EVR2AQW03U1ABGV.uasset new file mode 100644 index 0000000..45bbd60 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/5/V6/DING1S8EVR2AQW03U1ABGV.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/6I/29E05UQXOAGP6TCP5CN0BQ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/6I/29E05UQXOAGP6TCP5CN0BQ.uasset new file mode 100644 index 0000000..b51d154 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/6I/29E05UQXOAGP6TCP5CN0BQ.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/96/JEF6NHSL8XXSCQTOUZMFM6.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/96/JEF6NHSL8XXSCQTOUZMFM6.uasset new file mode 100644 index 0000000..8c7f16b Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/96/JEF6NHSL8XXSCQTOUZMFM6.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/I5/5U3R0J6P3EIOET939AGA6V.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/I5/5U3R0J6P3EIOET939AGA6V.uasset new file mode 100644 index 0000000..fa78f89 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/I5/5U3R0J6P3EIOET939AGA6V.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/U8/LL0QNHFPYL403X5YW0FGG6.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/U8/LL0QNHFPYL403X5YW0FGG6.uasset new file mode 100644 index 0000000..6e6e7a7 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/6/U8/LL0QNHFPYL403X5YW0FGG6.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/HV/3VH3D4CLM38OC4F8ICXDVQ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/HV/3VH3D4CLM38OC4F8ICXDVQ.uasset new file mode 100644 index 0000000..8c9d7c7 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/HV/3VH3D4CLM38OC4F8ICXDVQ.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/NI/7Z9KFUHGDC33I0LYBUUYUQ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/NI/7Z9KFUHGDC33I0LYBUUYUQ.uasset new file mode 100644 index 0000000..564c15c Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/7/NI/7Z9KFUHGDC33I0LYBUUYUQ.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/2H/HS4VI3UZJT1LNKM6HC7PL2.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/2H/HS4VI3UZJT1LNKM6HC7PL2.uasset new file mode 100644 index 0000000..5fd1b46 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/2H/HS4VI3UZJT1LNKM6HC7PL2.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/7M/FNN1ELJOC3KQT4JN0YDHT6.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/7M/FNN1ELJOC3KQT4JN0YDHT6.uasset new file mode 100644 index 0000000..cadce2c Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/7M/FNN1ELJOC3KQT4JN0YDHT6.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/I3/0VVXG3S0B4RN6QSHFSGKGX.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/I3/0VVXG3S0B4RN6QSHFSGKGX.uasset new file mode 100644 index 0000000..d692e6c Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/I3/0VVXG3S0B4RN6QSHFSGKGX.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/II/DC1XODXXLD6VN109CJMW4N.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/II/DC1XODXXLD6VN109CJMW4N.uasset new file mode 100644 index 0000000..2a0a80c Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/II/DC1XODXXLD6VN109CJMW4N.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/KL/17EY7JSE7TF01OWV9LBSC1.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/KL/17EY7JSE7TF01OWV9LBSC1.uasset new file mode 100644 index 0000000..ac7a883 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/KL/17EY7JSE7TF01OWV9LBSC1.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/QY/FSMNL3KLM133J5VKZAU0BE.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/QY/FSMNL3KLM133J5VKZAU0BE.uasset new file mode 100644 index 0000000..bf5d0ea Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/QY/FSMNL3KLM133J5VKZAU0BE.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/W2/920TYXDM12T8GKK1E0M892.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/W2/920TYXDM12T8GKK1E0M892.uasset new file mode 100644 index 0000000..748499d Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/8/W2/920TYXDM12T8GKK1E0M892.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/3M/CN6DASGRPPAPEICARMETU3.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/3M/CN6DASGRPPAPEICARMETU3.uasset new file mode 100644 index 0000000..2a243cd Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/3M/CN6DASGRPPAPEICARMETU3.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/8O/BVYOAIREBMOAK7193TKE2N.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/8O/BVYOAIREBMOAK7193TKE2N.uasset new file mode 100644 index 0000000..9a96641 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/8O/BVYOAIREBMOAK7193TKE2N.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/9S/AT66MUZW91DYUD6WM5FH0P.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/9S/AT66MUZW91DYUD6WM5FH0P.uasset new file mode 100644 index 0000000..f1288b5 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/9S/AT66MUZW91DYUD6WM5FH0P.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/AC/RFQ7INIHB1Q1JWY7DWYQ5Y.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/AC/RFQ7INIHB1Q1JWY7DWYQ5Y.uasset new file mode 100644 index 0000000..b1927de Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/AC/RFQ7INIHB1Q1JWY7DWYQ5Y.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/D2/66RZ3E9MEBJPV125V7SWQ6.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/D2/66RZ3E9MEBJPV125V7SWQ6.uasset new file mode 100644 index 0000000..243bb9b Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/D2/66RZ3E9MEBJPV125V7SWQ6.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/LJ/OQX9YN9UJ9NNRX6ERJ3PPZ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/LJ/OQX9YN9UJ9NNRX6ERJ3PPZ.uasset new file mode 100644 index 0000000..b37967e Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/9/LJ/OQX9YN9UJ9NNRX6ERJ3PPZ.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/2N/XWEBNOYZ7JA5DZOPBGZ71S.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/2N/XWEBNOYZ7JA5DZOPBGZ71S.uasset new file mode 100644 index 0000000..3877a3c Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/2N/XWEBNOYZ7JA5DZOPBGZ71S.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/HH/BIAWP2Z8HW32809JWMRLU3.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/HH/BIAWP2Z8HW32809JWMRLU3.uasset new file mode 100644 index 0000000..7a14e36 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/HH/BIAWP2Z8HW32809JWMRLU3.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/J3/JQWZC33CXMXDX87CAIWJ94.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/J3/JQWZC33CXMXDX87CAIWJ94.uasset new file mode 100644 index 0000000..868edef Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/J3/JQWZC33CXMXDX87CAIWJ94.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/U0/N7D7PHGDI2A4EOLD58TA92.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/U0/N7D7PHGDI2A4EOLD58TA92.uasset new file mode 100644 index 0000000..17aba3a Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/A/U0/N7D7PHGDI2A4EOLD58TA92.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/JN/VY72C063B3TXKNZQ8SNV1P.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/JN/VY72C063B3TXKNZQ8SNV1P.uasset new file mode 100644 index 0000000..4c752e2 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/JN/VY72C063B3TXKNZQ8SNV1P.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/TG/2MDU2GF02TMAKTSII7ZI7V.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/TG/2MDU2GF02TMAKTSII7ZI7V.uasset new file mode 100644 index 0000000..298ff65 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/TG/2MDU2GF02TMAKTSII7ZI7V.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/U9/AHG6736Q2Y3SGC1JQONLFJ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/U9/AHG6736Q2Y3SGC1JQONLFJ.uasset new file mode 100644 index 0000000..a911d42 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/B/U9/AHG6736Q2Y3SGC1JQONLFJ.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/0I/0PXPLZ76IWADZO9D6J4VWA.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/0I/0PXPLZ76IWADZO9D6J4VWA.uasset new file mode 100644 index 0000000..2607938 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/0I/0PXPLZ76IWADZO9D6J4VWA.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/GO/765U52T3ZSF8D2MPGLVRR0.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/GO/765U52T3ZSF8D2MPGLVRR0.uasset new file mode 100644 index 0000000..ac25baf Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/C/GO/765U52T3ZSF8D2MPGLVRR0.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/BL/WB7S47W2IE4F23EZ9SLQ1B.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/BL/WB7S47W2IE4F23EZ9SLQ1B.uasset new file mode 100644 index 0000000..aa41cea Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/BL/WB7S47W2IE4F23EZ9SLQ1B.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/C7/LHEOZ28EA00LZG55QEAGFH.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/C7/LHEOZ28EA00LZG55QEAGFH.uasset new file mode 100644 index 0000000..0aedcc8 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/C7/LHEOZ28EA00LZG55QEAGFH.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/IP/FTEAYZDQR9M2KDS0TEPHA0.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/IP/FTEAYZDQR9M2KDS0TEPHA0.uasset new file mode 100644 index 0000000..2b33f44 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/IP/FTEAYZDQR9M2KDS0TEPHA0.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/LE/5ZDRK6QRB1CF1JSS3HJKPV.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/LE/5ZDRK6QRB1CF1JSS3HJKPV.uasset new file mode 100644 index 0000000..a621324 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/LE/5ZDRK6QRB1CF1JSS3HJKPV.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/R5/8FN93FIP5FEZUI0RECK61K.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/R5/8FN93FIP5FEZUI0RECK61K.uasset new file mode 100644 index 0000000..2ddc396 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/R5/8FN93FIP5FEZUI0RECK61K.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/TO/58Y2HCG1B7M6VAJN1E38IS.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/TO/58Y2HCG1B7M6VAJN1E38IS.uasset new file mode 100644 index 0000000..3fc7d22 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/TO/58Y2HCG1B7M6VAJN1E38IS.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/V1/DLNCFC4C5RQ8EDPCDYCKHQ.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/V1/DLNCFC4C5RQ8EDPCDYCKHQ.uasset new file mode 100644 index 0000000..7dc3afb Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/V1/DLNCFC4C5RQ8EDPCDYCKHQ.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/W0/RTEFXSATTAVCPYEQHKNEY1.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/W0/RTEFXSATTAVCPYEQHKNEY1.uasset new file mode 100644 index 0000000..e5b0e49 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/D/W0/RTEFXSATTAVCPYEQHKNEY1.uasset differ diff --git a/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/E/P7/9DOH3BZKA2A8C7ZTDWILWC.uasset b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/E/P7/9DOH3BZKA2A8C7ZTDWILWC.uasset new file mode 100644 index 0000000..23d0cc8 Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Lvl_FirstPerson/E/P7/9DOH3BZKA2A8C7ZTDWILWC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/9N/XNV375O8KPWILSKVGEFNR7.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/9N/XNV375O8KPWILSKVGEFNR7.uasset new file mode 100644 index 0000000..2290982 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/9N/XNV375O8KPWILSKVGEFNR7.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/H4/6XP4MN111ML9O0QCEYRKH2.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/H4/6XP4MN111ML9O0QCEYRKH2.uasset new file mode 100644 index 0000000..5e1ddd5 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/H4/6XP4MN111ML9O0QCEYRKH2.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/UL/NBOXI91CXDV03LG1XB034Y.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/UL/NBOXI91CXDV03LG1XB034Y.uasset new file mode 100644 index 0000000..e2d61bd Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/0/UL/NBOXI91CXDV03LG1XB034Y.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/BG/SUO39IID039W2OIT4A9WHD.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/BG/SUO39IID039W2OIT4A9WHD.uasset new file mode 100644 index 0000000..8f0c751 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/BG/SUO39IID039W2OIT4A9WHD.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/IF/NN5BW9XQMA6PPAIDJ7SMAQ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/IF/NN5BW9XQMA6PPAIDJ7SMAQ.uasset new file mode 100644 index 0000000..4db205d Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/IF/NN5BW9XQMA6PPAIDJ7SMAQ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/XK/00H4DFA6S89FDUNS6VXWUB.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/XK/00H4DFA6S89FDUNS6VXWUB.uasset new file mode 100644 index 0000000..8e74d31 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/1/XK/00H4DFA6S89FDUNS6VXWUB.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/64/I7XEQFHVL5DIB1CJZBSBRU.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/64/I7XEQFHVL5DIB1CJZBSBRU.uasset new file mode 100644 index 0000000..31cb987 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/64/I7XEQFHVL5DIB1CJZBSBRU.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/6N/K64CJI6KHKILLZWQSQ7IAN.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/6N/K64CJI6KHKILLZWQSQ7IAN.uasset new file mode 100644 index 0000000..bccf075 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/6N/K64CJI6KHKILLZWQSQ7IAN.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/9C/1NTY6MECNAM0L7QUTBTWTC.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/9C/1NTY6MECNAM0L7QUTBTWTC.uasset new file mode 100644 index 0000000..70a5238 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/9C/1NTY6MECNAM0L7QUTBTWTC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/B7/QY8ULQWFS49XORXUUJYHBV.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/B7/QY8ULQWFS49XORXUUJYHBV.uasset new file mode 100644 index 0000000..e9ff40b Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/B7/QY8ULQWFS49XORXUUJYHBV.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/JU/S4QLU8WK2BN4J46DP9RPNN.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/JU/S4QLU8WK2BN4J46DP9RPNN.uasset new file mode 100644 index 0000000..dbef78a Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/JU/S4QLU8WK2BN4J46DP9RPNN.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/LP/X22M42YXL5MXZCB4XVRYG9.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/LP/X22M42YXL5MXZCB4XVRYG9.uasset new file mode 100644 index 0000000..fce35b2 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/LP/X22M42YXL5MXZCB4XVRYG9.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/PD/B1KLFOWOLE3HXLMQBBLOPE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/PD/B1KLFOWOLE3HXLMQBBLOPE.uasset new file mode 100644 index 0000000..77f49d0 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/2/PD/B1KLFOWOLE3HXLMQBBLOPE.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/6N/OFZ2R5U7SYT7F3CB3XEANE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/6N/OFZ2R5U7SYT7F3CB3XEANE.uasset new file mode 100644 index 0000000..ba53641 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/6N/OFZ2R5U7SYT7F3CB3XEANE.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/8G/ZPBH7EIP0LIE3IEE3X5I9P.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/8G/ZPBH7EIP0LIE3IEE3X5I9P.uasset new file mode 100644 index 0000000..d885224 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/8G/ZPBH7EIP0LIE3IEE3X5I9P.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/AD/4ANYKIAZ7LHW90QHRA8XXY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/AD/4ANYKIAZ7LHW90QHRA8XXY.uasset new file mode 100644 index 0000000..d63fdba Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/AD/4ANYKIAZ7LHW90QHRA8XXY.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/GK/3ZJBQHCJ1O8II9Z86X5JZ8.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/GK/3ZJBQHCJ1O8II9Z86X5JZ8.uasset new file mode 100644 index 0000000..2684959 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/GK/3ZJBQHCJ1O8II9Z86X5JZ8.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/HE/OG8UP7YLDKLJGZ6KZI41ZV.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/HE/OG8UP7YLDKLJGZ6KZI41ZV.uasset new file mode 100644 index 0000000..2cd186b Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/HE/OG8UP7YLDKLJGZ6KZI41ZV.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/JM/JB5K424E7XL6HOHHKAGZ44.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/JM/JB5K424E7XL6HOHHKAGZ44.uasset new file mode 100644 index 0000000..4a243db Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/JM/JB5K424E7XL6HOHHKAGZ44.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/L5/T7HZAJOHJ8Z18VN4WJBHUF.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/L5/T7HZAJOHJ8Z18VN4WJBHUF.uasset new file mode 100644 index 0000000..2b07f7a Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/L5/T7HZAJOHJ8Z18VN4WJBHUF.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/PZ/4LJ5CNYK9QNGK7I6CKWDDP.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/PZ/4LJ5CNYK9QNGK7I6CKWDDP.uasset new file mode 100644 index 0000000..ac4047c Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/PZ/4LJ5CNYK9QNGK7I6CKWDDP.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/QB/9KU2R8SEQ5NZF4EGCALVVD.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/QB/9KU2R8SEQ5NZF4EGCALVVD.uasset new file mode 100644 index 0000000..d21411e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/QB/9KU2R8SEQ5NZF4EGCALVVD.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/U3/8G5Q2ACBQL028FQW3TNA83.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/U3/8G5Q2ACBQL028FQW3TNA83.uasset new file mode 100644 index 0000000..60970a1 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/U3/8G5Q2ACBQL028FQW3TNA83.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/XH/ZI2O8JLKELBZHG2VGWB2BY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/XH/ZI2O8JLKELBZHG2VGWB2BY.uasset new file mode 100644 index 0000000..0f68b92 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/3/XH/ZI2O8JLKELBZHG2VGWB2BY.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/1N/6ZCWCW0P2JN8XT3L45YXLS.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/1N/6ZCWCW0P2JN8XT3L45YXLS.uasset new file mode 100644 index 0000000..446ce23 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/1N/6ZCWCW0P2JN8XT3L45YXLS.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/3O/7P5L1R6H2S9W36WVJFO7C2.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/3O/7P5L1R6H2S9W36WVJFO7C2.uasset new file mode 100644 index 0000000..9bffe75 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/3O/7P5L1R6H2S9W36WVJFO7C2.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/CU/3X5T5KEXZ9AFNDPZO353I4.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/CU/3X5T5KEXZ9AFNDPZO353I4.uasset new file mode 100644 index 0000000..fb8109d Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/CU/3X5T5KEXZ9AFNDPZO353I4.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/LW/63SRQSBPGN1O19F38FOJJI.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/LW/63SRQSBPGN1O19F38FOJJI.uasset new file mode 100644 index 0000000..b2c00ec Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/LW/63SRQSBPGN1O19F38FOJJI.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YO/H0MBGL3CLVB8BC3LTOTEJZ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YO/H0MBGL3CLVB8BC3LTOTEJZ.uasset new file mode 100644 index 0000000..aa52258 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YO/H0MBGL3CLVB8BC3LTOTEJZ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YQ/U25QS32O4D60A2JP4UZWAL.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YQ/U25QS32O4D60A2JP4UZWAL.uasset new file mode 100644 index 0000000..1a81bce Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/4/YQ/U25QS32O4D60A2JP4UZWAL.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/9G/8PH3B28FAWBUO5LZGIKBPY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/9G/8PH3B28FAWBUO5LZGIKBPY.uasset new file mode 100644 index 0000000..d4293b1 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/9G/8PH3B28FAWBUO5LZGIKBPY.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/RE/41ING9B1UUSXVFVQAR67TW.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/RE/41ING9B1UUSXVFVQAR67TW.uasset new file mode 100644 index 0000000..79ddcb8 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/RE/41ING9B1UUSXVFVQAR67TW.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/TR/3KZ317G6QAISBA8KVHXNID.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/TR/3KZ317G6QAISBA8KVHXNID.uasset new file mode 100644 index 0000000..da5ec00 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/TR/3KZ317G6QAISBA8KVHXNID.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/V8/ELVBBJP6FQBB46EOR16SNV.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/V8/ELVBBJP6FQBB46EOR16SNV.uasset new file mode 100644 index 0000000..15b8032 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/V8/ELVBBJP6FQBB46EOR16SNV.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/XB/P3903AEGCCLEKH4X762BHW.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/XB/P3903AEGCCLEKH4X762BHW.uasset new file mode 100644 index 0000000..36b11f7 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/5/XB/P3903AEGCCLEKH4X762BHW.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/2Q/U1Q6LWD0LO8TBYP8XAG1HZ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/2Q/U1Q6LWD0LO8TBYP8XAG1HZ.uasset new file mode 100644 index 0000000..5bef3db Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/2Q/U1Q6LWD0LO8TBYP8XAG1HZ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/BR/8VZFJT0FO7JL9XP9AKBVU0.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/BR/8VZFJT0FO7JL9XP9AKBVU0.uasset new file mode 100644 index 0000000..e06d688 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/BR/8VZFJT0FO7JL9XP9AKBVU0.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/FN/P6DHQRHWG5A4ANBB6IVE9X.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/FN/P6DHQRHWG5A4ANBB6IVE9X.uasset new file mode 100644 index 0000000..fb7e902 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/FN/P6DHQRHWG5A4ANBB6IVE9X.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/NR/EKR8BAGTREZL6130JK27PM.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/NR/EKR8BAGTREZL6130JK27PM.uasset new file mode 100644 index 0000000..d1b61b6 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/NR/EKR8BAGTREZL6130JK27PM.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/ST/OY6MMZK8D42GBJO5FHWZLC.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/ST/OY6MMZK8D42GBJO5FHWZLC.uasset new file mode 100644 index 0000000..6af0e8a Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/6/ST/OY6MMZK8D42GBJO5FHWZLC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/7/H6/HH9TF15E2MP5ZWX3UGV7P3.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/7/H6/HH9TF15E2MP5ZWX3UGV7P3.uasset new file mode 100644 index 0000000..96a95ac Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/7/H6/HH9TF15E2MP5ZWX3UGV7P3.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/4F/T21R05MMSCET8BZ2EG6SWS.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/4F/T21R05MMSCET8BZ2EG6SWS.uasset new file mode 100644 index 0000000..6d6888c Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/4F/T21R05MMSCET8BZ2EG6SWS.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/9N/KESGN0131EL35XN79RTO8S.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/9N/KESGN0131EL35XN79RTO8S.uasset new file mode 100644 index 0000000..2de6279 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/9N/KESGN0131EL35XN79RTO8S.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/GM/VJPIOZG5M5HV9SMJQGRMD7.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/GM/VJPIOZG5M5HV9SMJQGRMD7.uasset new file mode 100644 index 0000000..30578a0 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/GM/VJPIOZG5M5HV9SMJQGRMD7.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/VA/9SHJ6ONF0NO9EQH3EUOZ67.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/VA/9SHJ6ONF0NO9EQH3EUOZ67.uasset new file mode 100644 index 0000000..f296281 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/8/VA/9SHJ6ONF0NO9EQH3EUOZ67.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8K/OGFT07X88T4YB1XZANAEWK.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8K/OGFT07X88T4YB1XZANAEWK.uasset new file mode 100644 index 0000000..2eb3833 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8K/OGFT07X88T4YB1XZANAEWK.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8P/HXB7QO5CUITP877I1SNGVT.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8P/HXB7QO5CUITP877I1SNGVT.uasset new file mode 100644 index 0000000..cb37e60 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/8P/HXB7QO5CUITP877I1SNGVT.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/DJ/PDAUG5BCKDEAJ2FGTRYQW7.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/DJ/PDAUG5BCKDEAJ2FGTRYQW7.uasset new file mode 100644 index 0000000..f703fd7 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/DJ/PDAUG5BCKDEAJ2FGTRYQW7.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/J6/KXD20TVKFIAWADS9P5K6T3.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/J6/KXD20TVKFIAWADS9P5K6T3.uasset new file mode 100644 index 0000000..b2fd7d9 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/J6/KXD20TVKFIAWADS9P5K6T3.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/L1/8PH18ZESFPZR6AFQNZZJHY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/L1/8PH18ZESFPZR6AFQNZZJHY.uasset new file mode 100644 index 0000000..5367ca3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/L1/8PH18ZESFPZR6AFQNZZJHY.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/NW/3TP5SO08C78O361MV635WZ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/NW/3TP5SO08C78O361MV635WZ.uasset new file mode 100644 index 0000000..4be6aca Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/NW/3TP5SO08C78O361MV635WZ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PO/Z5JQ3715U90GC78LF8YVZE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PO/Z5JQ3715U90GC78LF8YVZE.uasset new file mode 100644 index 0000000..f17fde1 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PO/Z5JQ3715U90GC78LF8YVZE.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PQ/FUO1PC0ZE1T7HGD5M7WH3M.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PQ/FUO1PC0ZE1T7HGD5M7WH3M.uasset new file mode 100644 index 0000000..307399a Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/PQ/FUO1PC0ZE1T7HGD5M7WH3M.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/SQ/MI31B44UZ0O83WZ92D8YYJ.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/SQ/MI31B44UZ0O83WZ92D8YYJ.uasset new file mode 100644 index 0000000..386e0bc Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/9/SQ/MI31B44UZ0O83WZ92D8YYJ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/4E/Z2RVP4X49TRJ8PV1TG7F99.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/4E/Z2RVP4X49TRJ8PV1TG7F99.uasset new file mode 100644 index 0000000..b144227 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/4E/Z2RVP4X49TRJ8PV1TG7F99.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/A0/0ZNCGT5BJTSIS7GE8BBTBR.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/A0/0ZNCGT5BJTSIS7GE8BBTBR.uasset new file mode 100644 index 0000000..d02b2d7 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/A0/0ZNCGT5BJTSIS7GE8BBTBR.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/RE/2051XEA4LGIN555FZ9R41D.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/RE/2051XEA4LGIN555FZ9R41D.uasset new file mode 100644 index 0000000..bc9ffad Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/RE/2051XEA4LGIN555FZ9R41D.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/TT/PEKH451HOOMAWN4TUYPAXE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/TT/PEKH451HOOMAWN4TUYPAXE.uasset new file mode 100644 index 0000000..a9625a8 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/TT/PEKH451HOOMAWN4TUYPAXE.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/WM/PVV6DOCSPK8FAIAI96F846.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/WM/PVV6DOCSPK8FAIAI96F846.uasset new file mode 100644 index 0000000..a3384bb Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/A/WM/PVV6DOCSPK8FAIAI96F846.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/2Z/V55SREFRW1QNPJ6CMEYPID.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/2Z/V55SREFRW1QNPJ6CMEYPID.uasset new file mode 100644 index 0000000..e9ebd4f Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/2Z/V55SREFRW1QNPJ6CMEYPID.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/CQ/T05AOFB8X3Y7RPQEZ703H3.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/CQ/T05AOFB8X3Y7RPQEZ703H3.uasset new file mode 100644 index 0000000..5bb4f73 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/CQ/T05AOFB8X3Y7RPQEZ703H3.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/DR/JY8SVZB41D6BLQJZT15DEL.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/DR/JY8SVZB41D6BLQJZT15DEL.uasset new file mode 100644 index 0000000..49d539f Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/DR/JY8SVZB41D6BLQJZT15DEL.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/E5/HXHMPRE5K9TQ8IMYNUFT0K.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/E5/HXHMPRE5K9TQ8IMYNUFT0K.uasset new file mode 100644 index 0000000..5f53b52 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/E5/HXHMPRE5K9TQ8IMYNUFT0K.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/FY/LE2HVZRIWYTD4D2LOE75Z7.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/FY/LE2HVZRIWYTD4D2LOE75Z7.uasset new file mode 100644 index 0000000..60f4b9d Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/FY/LE2HVZRIWYTD4D2LOE75Z7.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/JT/XP386E2S52UV4Y1UWONFOG.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/JT/XP386E2S52UV4Y1UWONFOG.uasset new file mode 100644 index 0000000..6f8f967 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/JT/XP386E2S52UV4Y1UWONFOG.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/LN/PZBDBOZ4P0GSOF0G4UQO24.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/LN/PZBDBOZ4P0GSOF0G4UQO24.uasset new file mode 100644 index 0000000..8985451 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/LN/PZBDBOZ4P0GSOF0G4UQO24.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/U8/WEFKJYFRD6NOQWK1CYE8MC.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/U8/WEFKJYFRD6NOQWK1CYE8MC.uasset new file mode 100644 index 0000000..02e2a13 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/B/U8/WEFKJYFRD6NOQWK1CYE8MC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/6B/R2H3DQMJE0N712J72DUGZM.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/6B/R2H3DQMJE0N712J72DUGZM.uasset new file mode 100644 index 0000000..324459c Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/6B/R2H3DQMJE0N712J72DUGZM.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/F2/KD7ZDAX5WSTHYZHAIHIVOE.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/F2/KD7ZDAX5WSTHYZHAIHIVOE.uasset new file mode 100644 index 0000000..87262e9 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/F2/KD7ZDAX5WSTHYZHAIHIVOE.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/VN/3X14DSC2WBO2DN31WFFFEC.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/VN/3X14DSC2WBO2DN31WFFFEC.uasset new file mode 100644 index 0000000..4c7e93e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/C/VN/3X14DSC2WBO2DN31WFFFEC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/G7/X9LYXH5KHAQDRL4H74W1CV.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/G7/X9LYXH5KHAQDRL4H74W1CV.uasset new file mode 100644 index 0000000..e9979a4 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/G7/X9LYXH5KHAQDRL4H74W1CV.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/GK/ZY5JAZ69GEG4DXEH3ABYGY.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/GK/ZY5JAZ69GEG4DXEH3ABYGY.uasset new file mode 100644 index 0000000..6be33f3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/GK/ZY5JAZ69GEG4DXEH3ABYGY.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/XI/NKDB0RUCK5SBQ97LIA6W5N.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/XI/NKDB0RUCK5SBQ97LIA6W5N.uasset new file mode 100644 index 0000000..e6f5d80 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/XI/NKDB0RUCK5SBQ97LIA6W5N.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/ZA/2D8B8Y2TMBHSQR4C5FUHOM.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/ZA/2D8B8Y2TMBHSQR4C5FUHOM.uasset new file mode 100644 index 0000000..8a888cb Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/D/ZA/2D8B8Y2TMBHSQR4C5FUHOM.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/7J/9BJEHFBRWNQ4Y19IW2AX89.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/7J/9BJEHFBRWNQ4Y19IW2AX89.uasset new file mode 100644 index 0000000..d2e4279 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/7J/9BJEHFBRWNQ4Y19IW2AX89.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/ID/VDROBGOSK9AYG8F03X20KO.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/ID/VDROBGOSK9AYG8F03X20KO.uasset new file mode 100644 index 0000000..868cdb2 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/ID/VDROBGOSK9AYG8F03X20KO.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/IM/098ZZWGR4KV9W9OSXMLS3F.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/IM/098ZZWGR4KV9W9OSXMLS3F.uasset new file mode 100644 index 0000000..8caf443 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/IM/098ZZWGR4KV9W9OSXMLS3F.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/OZ/EWBP9T0DZVQI1I0D108ARK.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/OZ/EWBP9T0DZVQI1I0D108ARK.uasset new file mode 100644 index 0000000..54702f5 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/E/OZ/EWBP9T0DZVQI1I0D108ARK.uasset differ diff --git a/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/F/30/Q30QC3KM9PIKZM4AGT7MT8.uasset b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/F/30/Q30QC3KM9PIKZM4AGT7MT8.uasset new file mode 100644 index 0000000..0cb30d3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Horror/Lvl_Horror/F/30/Q30QC3KM9PIKZM4AGT7MT8.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/3V/OL4ZN1YHXCGPU83HYC2PAJ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/3V/OL4ZN1YHXCGPU83HYC2PAJ.uasset new file mode 100644 index 0000000..2801168 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/3V/OL4ZN1YHXCGPU83HYC2PAJ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/49/58ATOPL8S4KJJS029K7TTO.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/49/58ATOPL8S4KJJS029K7TTO.uasset new file mode 100644 index 0000000..6b32c00 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/49/58ATOPL8S4KJJS029K7TTO.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/AQ/PD9G3EOREMOM40DNFF2V89.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/AQ/PD9G3EOREMOM40DNFF2V89.uasset new file mode 100644 index 0000000..33e78a3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/AQ/PD9G3EOREMOM40DNFF2V89.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/CW/CAHCMFLOINBEHQESBX7DKK.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/CW/CAHCMFLOINBEHQESBX7DKK.uasset new file mode 100644 index 0000000..fd5f6a9 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/CW/CAHCMFLOINBEHQESBX7DKK.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/GT/D1B3OPMGPCLGVX2AVZGCX0.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/GT/D1B3OPMGPCLGVX2AVZGCX0.uasset new file mode 100644 index 0000000..c4e94d3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/GT/D1B3OPMGPCLGVX2AVZGCX0.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/KK/9CVT5CS3RHKZJPB9YZ3X9D.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/KK/9CVT5CS3RHKZJPB9YZ3X9D.uasset new file mode 100644 index 0000000..2765acf Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/KK/9CVT5CS3RHKZJPB9YZ3X9D.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/LC/WRM7UK93IMBSKKNHF5A983.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/LC/WRM7UK93IMBSKKNHF5A983.uasset new file mode 100644 index 0000000..bdd5b43 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/LC/WRM7UK93IMBSKKNHF5A983.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/NC/UX2DCTV8GAXRFKN3QMDRPM.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/NC/UX2DCTV8GAXRFKN3QMDRPM.uasset new file mode 100644 index 0000000..551eccb Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/NC/UX2DCTV8GAXRFKN3QMDRPM.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/NY/M3EGAL2PSPM1XALRU010D8.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/NY/M3EGAL2PSPM1XALRU010D8.uasset new file mode 100644 index 0000000..8a96f98 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/NY/M3EGAL2PSPM1XALRU010D8.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/TJ/2WJFGB3LW71IQH3WUDE9YS.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/TJ/2WJFGB3LW71IQH3WUDE9YS.uasset new file mode 100644 index 0000000..0de8d04 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/0/TJ/2WJFGB3LW71IQH3WUDE9YS.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/13/LXYGOYVB4LCS5W43Y6OYEZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/13/LXYGOYVB4LCS5W43Y6OYEZ.uasset new file mode 100644 index 0000000..e0ba3f3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/13/LXYGOYVB4LCS5W43Y6OYEZ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/2M/4RN5Q2KBXUF5G5V1EB8JLH.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/2M/4RN5Q2KBXUF5G5V1EB8JLH.uasset new file mode 100644 index 0000000..c82f31e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/2M/4RN5Q2KBXUF5G5V1EB8JLH.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/35/7CE9YQ1JBI8OUWQV36H592.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/35/7CE9YQ1JBI8OUWQV36H592.uasset new file mode 100644 index 0000000..7df7f81 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/35/7CE9YQ1JBI8OUWQV36H592.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/4Z/LI4AVVJ9EK7DN8VZ876THL.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/4Z/LI4AVVJ9EK7DN8VZ876THL.uasset new file mode 100644 index 0000000..b11318d Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/4Z/LI4AVVJ9EK7DN8VZ876THL.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/B5/4LIGS8YKY5VLJ66OROZMJC.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/B5/4LIGS8YKY5VLJ66OROZMJC.uasset new file mode 100644 index 0000000..0dd3b08 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/B5/4LIGS8YKY5VLJ66OROZMJC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/F0/0F1M1AECVY99IHVEC2POUD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/F0/0F1M1AECVY99IHVEC2POUD.uasset new file mode 100644 index 0000000..68bc26f Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/F0/0F1M1AECVY99IHVEC2POUD.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/HU/QV23357J2OCOWALK273DTD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/HU/QV23357J2OCOWALK273DTD.uasset new file mode 100644 index 0000000..489831b Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/HU/QV23357J2OCOWALK273DTD.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/KO/M43L8KXTDGY6TFKF86NX1M.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/KO/M43L8KXTDGY6TFKF86NX1M.uasset new file mode 100644 index 0000000..01e1575 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/KO/M43L8KXTDGY6TFKF86NX1M.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/PA/GBLESTBI1D396GRYRB14H4.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/PA/GBLESTBI1D396GRYRB14H4.uasset new file mode 100644 index 0000000..19234cd Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/PA/GBLESTBI1D396GRYRB14H4.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/RS/YRVTB4TYQJFRFKXYPO5DQM.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/RS/YRVTB4TYQJFRFKXYPO5DQM.uasset new file mode 100644 index 0000000..537fbda Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/RS/YRVTB4TYQJFRFKXYPO5DQM.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/S0/E1UE8ALIEVUQ54DO36TEKR.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/S0/E1UE8ALIEVUQ54DO36TEKR.uasset new file mode 100644 index 0000000..ab53f36 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/S0/E1UE8ALIEVUQ54DO36TEKR.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/W6/W46WKXS7K4MW4LY0PIIQ6I.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/W6/W46WKXS7K4MW4LY0PIIQ6I.uasset new file mode 100644 index 0000000..5a9b615 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/W6/W46WKXS7K4MW4LY0PIIQ6I.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/W9/627CE3QQTPYS0K2ERRO9S9.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/W9/627CE3QQTPYS0K2ERRO9S9.uasset new file mode 100644 index 0000000..c6f6cb5 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/1/W9/627CE3QQTPYS0K2ERRO9S9.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/80/T1BJ7C679F5S1ARQ90PJ8E.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/80/T1BJ7C679F5S1ARQ90PJ8E.uasset new file mode 100644 index 0000000..c3d8275 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/80/T1BJ7C679F5S1ARQ90PJ8E.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/8I/E827F3ANSSK69ARY4YU0SU.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/8I/E827F3ANSSK69ARY4YU0SU.uasset new file mode 100644 index 0000000..3bd6254 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/8I/E827F3ANSSK69ARY4YU0SU.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/AO/9L2V839PBKYYEBS6CE0H1G.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/AO/9L2V839PBKYYEBS6CE0H1G.uasset new file mode 100644 index 0000000..68c335b Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/AO/9L2V839PBKYYEBS6CE0H1G.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/DK/PU119TWEUKX9CE1SL4M8XW.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/DK/PU119TWEUKX9CE1SL4M8XW.uasset new file mode 100644 index 0000000..21db6cf Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/DK/PU119TWEUKX9CE1SL4M8XW.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/ED/Q8CR9DT73NEGXR57L9F1AJ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/ED/Q8CR9DT73NEGXR57L9F1AJ.uasset new file mode 100644 index 0000000..c1e579c Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/ED/Q8CR9DT73NEGXR57L9F1AJ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/FZ/KUZOSYCY188KMC0G2K12OW.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/FZ/KUZOSYCY188KMC0G2K12OW.uasset new file mode 100644 index 0000000..80fb77a Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/FZ/KUZOSYCY188KMC0G2K12OW.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/NV/7WKB15TEMYYNO61ZP6UQCP.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/NV/7WKB15TEMYYNO61ZP6UQCP.uasset new file mode 100644 index 0000000..8ebd401 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/NV/7WKB15TEMYYNO61ZP6UQCP.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/SS/Q3LZSLH2QL689GZTWB75ZJ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/SS/Q3LZSLH2QL689GZTWB75ZJ.uasset new file mode 100644 index 0000000..5b89898 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/SS/Q3LZSLH2QL689GZTWB75ZJ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/W2/VKWU0SB05EXBIREEH3146R.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/W2/VKWU0SB05EXBIREEH3146R.uasset new file mode 100644 index 0000000..6aaa1a3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/2/W2/VKWU0SB05EXBIREEH3146R.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/2G/J3HCVLZB10Y5J5S6YKOK0Y.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/2G/J3HCVLZB10Y5J5S6YKOK0Y.uasset new file mode 100644 index 0000000..c6ebc2a Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/2G/J3HCVLZB10Y5J5S6YKOK0Y.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/6K/LM6III8A3JW0GO766WLBRH.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/6K/LM6III8A3JW0GO766WLBRH.uasset new file mode 100644 index 0000000..c9849cc Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/6K/LM6III8A3JW0GO766WLBRH.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/95/69CSX702SUKZUV3E11L2LT.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/95/69CSX702SUKZUV3E11L2LT.uasset new file mode 100644 index 0000000..0841e78 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/95/69CSX702SUKZUV3E11L2LT.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/AA/OAA8NNF0QWBIRW6Y3S8BP3.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/AA/OAA8NNF0QWBIRW6Y3S8BP3.uasset new file mode 100644 index 0000000..1342114 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/AA/OAA8NNF0QWBIRW6Y3S8BP3.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/AJ/OJ8QYCG39YTUX394GYD8WN.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/AJ/OJ8QYCG39YTUX394GYD8WN.uasset new file mode 100644 index 0000000..0a68684 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/AJ/OJ8QYCG39YTUX394GYD8WN.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/BS/9YUR2L8603AGGZDL0OUNR9.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/BS/9YUR2L8603AGGZDL0OUNR9.uasset new file mode 100644 index 0000000..30df1ef Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/BS/9YUR2L8603AGGZDL0OUNR9.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/PF/4X8IDNPQ5QX7M1LLEGOQ26.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/PF/4X8IDNPQ5QX7M1LLEGOQ26.uasset new file mode 100644 index 0000000..1336215 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/PF/4X8IDNPQ5QX7M1LLEGOQ26.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/RO/55V6CT76YZ26YUDVMI6DTI.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/RO/55V6CT76YZ26YUDVMI6DTI.uasset new file mode 100644 index 0000000..33f40fa Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/RO/55V6CT76YZ26YUDVMI6DTI.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/SE/BINU1JOZ1KTJUZZMVO9TSL.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/SE/BINU1JOZ1KTJUZZMVO9TSL.uasset new file mode 100644 index 0000000..ee9a92b Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/SE/BINU1JOZ1KTJUZZMVO9TSL.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/Y5/02RVKQ9YDGSKZ1PFAJWBYW.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/Y5/02RVKQ9YDGSKZ1PFAJWBYW.uasset new file mode 100644 index 0000000..d0b3f0e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/Y5/02RVKQ9YDGSKZ1PFAJWBYW.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/Y5/5YRMTFVPFEWPH6JDZ1TXYZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/Y5/5YRMTFVPFEWPH6JDZ1TXYZ.uasset new file mode 100644 index 0000000..a377193 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/3/Y5/5YRMTFVPFEWPH6JDZ1TXYZ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/E1/H13N7ZOE2TW4UK3FUJXX4O.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/E1/H13N7ZOE2TW4UK3FUJXX4O.uasset new file mode 100644 index 0000000..cb73984 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/E1/H13N7ZOE2TW4UK3FUJXX4O.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/JR/FAFJPC70240JN3QAKZ4MD9.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/JR/FAFJPC70240JN3QAKZ4MD9.uasset new file mode 100644 index 0000000..b5dd1e3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/JR/FAFJPC70240JN3QAKZ4MD9.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/N7/4AXSCJ3ZQEC0VOEW8HCN6D.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/N7/4AXSCJ3ZQEC0VOEW8HCN6D.uasset new file mode 100644 index 0000000..9a96fa5 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/N7/4AXSCJ3ZQEC0VOEW8HCN6D.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/SH/YMXFUET2Z4RL3SATAEQTFB.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/SH/YMXFUET2Z4RL3SATAEQTFB.uasset new file mode 100644 index 0000000..a3ca903 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/4/SH/YMXFUET2Z4RL3SATAEQTFB.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/0G/VDRB5M2PY9KE6OH651LEU3.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/0G/VDRB5M2PY9KE6OH651LEU3.uasset new file mode 100644 index 0000000..55202c4 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/0G/VDRB5M2PY9KE6OH651LEU3.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/1G/M649JQNL2P50LG8FGPNEAQ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/1G/M649JQNL2P50LG8FGPNEAQ.uasset new file mode 100644 index 0000000..5cc337c Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/1G/M649JQNL2P50LG8FGPNEAQ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/3M/OAHCTO2HG7D3AMTCSIOSO7.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/3M/OAHCTO2HG7D3AMTCSIOSO7.uasset new file mode 100644 index 0000000..bc78ed9 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/3M/OAHCTO2HG7D3AMTCSIOSO7.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/40/4O1YBVOMNI8E943NLTVFJ1.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/40/4O1YBVOMNI8E943NLTVFJ1.uasset new file mode 100644 index 0000000..42e1bb5 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/40/4O1YBVOMNI8E943NLTVFJ1.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/44/LM0WQRDRMBGNJN9Y0LN392.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/44/LM0WQRDRMBGNJN9Y0LN392.uasset new file mode 100644 index 0000000..a54cf39 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/44/LM0WQRDRMBGNJN9Y0LN392.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/4H/SDAJL28OCQT244RONW16C0.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/4H/SDAJL28OCQT244RONW16C0.uasset new file mode 100644 index 0000000..e3511ee Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/4H/SDAJL28OCQT244RONW16C0.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/5C/K7PNC7IUZ4JYMO3UUASMAB.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/5C/K7PNC7IUZ4JYMO3UUASMAB.uasset new file mode 100644 index 0000000..4a966f0 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/5C/K7PNC7IUZ4JYMO3UUASMAB.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/6W/IUAZZQZOTMJ3MDF5HTX00X.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/6W/IUAZZQZOTMJ3MDF5HTX00X.uasset new file mode 100644 index 0000000..b2cd57b Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/6W/IUAZZQZOTMJ3MDF5HTX00X.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/AG/711O4CCHXHDRHSMXHZP18W.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/AG/711O4CCHXHDRHSMXHZP18W.uasset new file mode 100644 index 0000000..7070ec2 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/AG/711O4CCHXHDRHSMXHZP18W.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/AN/EUS8GFQRFV3HY0J9IX4JCJ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/AN/EUS8GFQRFV3HY0J9IX4JCJ.uasset new file mode 100644 index 0000000..1db072f Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/AN/EUS8GFQRFV3HY0J9IX4JCJ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/D3/UJDBGM2MSYH3ENPB6EGM0W.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/D3/UJDBGM2MSYH3ENPB6EGM0W.uasset new file mode 100644 index 0000000..64fcd74 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/D3/UJDBGM2MSYH3ENPB6EGM0W.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/LW/83FK2AQZAIPTLD9ATBBGVY.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/LW/83FK2AQZAIPTLD9ATBBGVY.uasset new file mode 100644 index 0000000..f65fef6 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/LW/83FK2AQZAIPTLD9ATBBGVY.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/QT/HLUWFXYAN2LEZRU01H1KNG.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/QT/HLUWFXYAN2LEZRU01H1KNG.uasset new file mode 100644 index 0000000..1b121d1 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/QT/HLUWFXYAN2LEZRU01H1KNG.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/T6/4MSY9LEXLE5K6KESPRVD9X.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/T6/4MSY9LEXLE5K6KESPRVD9X.uasset new file mode 100644 index 0000000..28301e5 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/T6/4MSY9LEXLE5K6KESPRVD9X.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/UI/SUVYUVBM4EBEPWMZYN75ZH.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/UI/SUVYUVBM4EBEPWMZYN75ZH.uasset new file mode 100644 index 0000000..6cc87ae Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/5/UI/SUVYUVBM4EBEPWMZYN75ZH.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/6/U7/SLUO9D3OQ8XTG638HAX9IC.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/6/U7/SLUO9D3OQ8XTG638HAX9IC.uasset new file mode 100644 index 0000000..ded1b36 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/6/U7/SLUO9D3OQ8XTG638HAX9IC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/10/79QRL2RW06TJLGVGOZ83VO.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/10/79QRL2RW06TJLGVGOZ83VO.uasset new file mode 100644 index 0000000..4a98370 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/10/79QRL2RW06TJLGVGOZ83VO.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/2Z/CJM7E2ABXXOVG7OFZ3OMYJ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/2Z/CJM7E2ABXXOVG7OFZ3OMYJ.uasset new file mode 100644 index 0000000..117b2d0 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/2Z/CJM7E2ABXXOVG7OFZ3OMYJ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/6E/A5GQSRU3Z0PTOMRZ3D0ORA.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/6E/A5GQSRU3Z0PTOMRZ3D0ORA.uasset new file mode 100644 index 0000000..b2fc9ce Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/6E/A5GQSRU3Z0PTOMRZ3D0ORA.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/BJ/6VZT56D9LOTHZMWIGIJSGA.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/BJ/6VZT56D9LOTHZMWIGIJSGA.uasset new file mode 100644 index 0000000..5e0c300 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/BJ/6VZT56D9LOTHZMWIGIJSGA.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/C2/38ORVMB76YT7N0M3I5ENVK.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/C2/38ORVMB76YT7N0M3I5ENVK.uasset new file mode 100644 index 0000000..e172707 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/C2/38ORVMB76YT7N0M3I5ENVK.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/C5/HHXICADV2NXRENP3IYXB9X.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/C5/HHXICADV2NXRENP3IYXB9X.uasset new file mode 100644 index 0000000..b3166ca Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/C5/HHXICADV2NXRENP3IYXB9X.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/CT/X9C53WAB4W9NOICDMWAG5V.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/CT/X9C53WAB4W9NOICDMWAG5V.uasset new file mode 100644 index 0000000..b45c442 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/CT/X9C53WAB4W9NOICDMWAG5V.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/EL/8F8H25S3REW2K4NGB3CCCI.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/EL/8F8H25S3REW2K4NGB3CCCI.uasset new file mode 100644 index 0000000..aab49b6 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/EL/8F8H25S3REW2K4NGB3CCCI.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/HB/RH6OAU0TH92IHKMQR4I0N5.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/HB/RH6OAU0TH92IHKMQR4I0N5.uasset new file mode 100644 index 0000000..b284c39 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/HB/RH6OAU0TH92IHKMQR4I0N5.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/SH/J352X8THK943K1EBVZ14TY.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/SH/J352X8THK943K1EBVZ14TY.uasset new file mode 100644 index 0000000..59ff01e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/SH/J352X8THK943K1EBVZ14TY.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/ZV/3DYDFY0FKLFKCFQNSJXR5P.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/ZV/3DYDFY0FKLFKCFQNSJXR5P.uasset new file mode 100644 index 0000000..31d17b2 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/7/ZV/3DYDFY0FKLFKCFQNSJXR5P.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/2S/G536FQ9CYZ89DA1TEMHBC2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/2S/G536FQ9CYZ89DA1TEMHBC2.uasset new file mode 100644 index 0000000..45974f1 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/2S/G536FQ9CYZ89DA1TEMHBC2.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/8C/4CPPZKCUKG8EVYDOR4K3BN.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/8C/4CPPZKCUKG8EVYDOR4K3BN.uasset new file mode 100644 index 0000000..09a719f Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/8C/4CPPZKCUKG8EVYDOR4K3BN.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/H6/6GU7YE6GPELYQHWNN91V24.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/H6/6GU7YE6GPELYQHWNN91V24.uasset new file mode 100644 index 0000000..6f05857 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/H6/6GU7YE6GPELYQHWNN91V24.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/I0/BTGN2R9C216C7NV8GEOIOB.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/I0/BTGN2R9C216C7NV8GEOIOB.uasset new file mode 100644 index 0000000..5dc9671 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/I0/BTGN2R9C216C7NV8GEOIOB.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/JT/7A2UNTDBQ6T9RPGR665QM2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/JT/7A2UNTDBQ6T9RPGR665QM2.uasset new file mode 100644 index 0000000..a3757df Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/JT/7A2UNTDBQ6T9RPGR665QM2.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/K1/W0PPONJXWWLRJS9H6I6LLO.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/K1/W0PPONJXWWLRJS9H6I6LLO.uasset new file mode 100644 index 0000000..a18c00c Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/K1/W0PPONJXWWLRJS9H6I6LLO.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/N8/PS3UWIRXD1RDWLWFG1OEYE.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/N8/PS3UWIRXD1RDWLWFG1OEYE.uasset new file mode 100644 index 0000000..73b792d Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/8/N8/PS3UWIRXD1RDWLWFG1OEYE.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/11/ENYK1AUZ1CRDEN5PI33FC3.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/11/ENYK1AUZ1CRDEN5PI33FC3.uasset new file mode 100644 index 0000000..d285de9 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/11/ENYK1AUZ1CRDEN5PI33FC3.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/4D/7JH5795OQ5C7U8ORAKRBVL.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/4D/7JH5795OQ5C7U8ORAKRBVL.uasset new file mode 100644 index 0000000..77a98d6 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/4D/7JH5795OQ5C7U8ORAKRBVL.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/C7/K8Y1HU91W2SLSFTI6UDC3H.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/C7/K8Y1HU91W2SLSFTI6UDC3H.uasset new file mode 100644 index 0000000..9c4bdb5 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/C7/K8Y1HU91W2SLSFTI6UDC3H.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/GN/SDG9AADVB7PYBTVAXOX8VV.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/GN/SDG9AADVB7PYBTVAXOX8VV.uasset new file mode 100644 index 0000000..c56ff85 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/GN/SDG9AADVB7PYBTVAXOX8VV.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/HI/YVG54Y37C7TXOR77FQBCYP.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/HI/YVG54Y37C7TXOR77FQBCYP.uasset new file mode 100644 index 0000000..a8c3d6e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/HI/YVG54Y37C7TXOR77FQBCYP.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/JS/RJ3J2T1OH2FWG75BRZ6IYX.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/JS/RJ3J2T1OH2FWG75BRZ6IYX.uasset new file mode 100644 index 0000000..56019aa Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/JS/RJ3J2T1OH2FWG75BRZ6IYX.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/NJ/PHZO5SC7UIW31JMH3GGC87.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/NJ/PHZO5SC7UIW31JMH3GGC87.uasset new file mode 100644 index 0000000..5c852fb Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/NJ/PHZO5SC7UIW31JMH3GGC87.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/XR/24MB0AMNCDLPPBIT3F5J68.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/XR/24MB0AMNCDLPPBIT3F5J68.uasset new file mode 100644 index 0000000..cc294e7 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/9/XR/24MB0AMNCDLPPBIT3F5J68.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/03/C6JT5PI8VWH6O6SQK2U6DE.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/03/C6JT5PI8VWH6O6SQK2U6DE.uasset new file mode 100644 index 0000000..5ef9048 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/03/C6JT5PI8VWH6O6SQK2U6DE.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/0X/BXNZGEX1ZW9H6A34A4CIKA.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/0X/BXNZGEX1ZW9H6A34A4CIKA.uasset new file mode 100644 index 0000000..cc01759 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/0X/BXNZGEX1ZW9H6A34A4CIKA.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/4N/DJ38I4P7X9ZMYPYJWXOV04.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/4N/DJ38I4P7X9ZMYPYJWXOV04.uasset new file mode 100644 index 0000000..87001e8 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/4N/DJ38I4P7X9ZMYPYJWXOV04.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/A5/QHKMK2LUL56AJMS4WZ4F9M.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/A5/QHKMK2LUL56AJMS4WZ4F9M.uasset new file mode 100644 index 0000000..c23b031 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/A5/QHKMK2LUL56AJMS4WZ4F9M.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/FK/3L4V8IDE04ZLBB3AALNR5D.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/FK/3L4V8IDE04ZLBB3AALNR5D.uasset new file mode 100644 index 0000000..16123cb Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/FK/3L4V8IDE04ZLBB3AALNR5D.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/NI/PX5VXR4F0OGBX0DVO52LV3.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/NI/PX5VXR4F0OGBX0DVO52LV3.uasset new file mode 100644 index 0000000..ec844cc Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/NI/PX5VXR4F0OGBX0DVO52LV3.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/OS/39HPH3I7116RM7VUBEFONN.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/OS/39HPH3I7116RM7VUBEFONN.uasset new file mode 100644 index 0000000..11935bb Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/OS/39HPH3I7116RM7VUBEFONN.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/R8/ATJNFRPXC3RAQWAJDM8NH1.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/R8/ATJNFRPXC3RAQWAJDM8NH1.uasset new file mode 100644 index 0000000..5f07704 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/R8/ATJNFRPXC3RAQWAJDM8NH1.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/SR/217Z3QH2OJX5REY1604OVK.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/SR/217Z3QH2OJX5REY1604OVK.uasset new file mode 100644 index 0000000..de2950e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/SR/217Z3QH2OJX5REY1604OVK.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/U7/WQK9V1FHIXDQT7CSYIN9US.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/U7/WQK9V1FHIXDQT7CSYIN9US.uasset new file mode 100644 index 0000000..36214bb Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/A/U7/WQK9V1FHIXDQT7CSYIN9US.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/6O/EXP7IV7TE109NE10NGP8IV.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/6O/EXP7IV7TE109NE10NGP8IV.uasset new file mode 100644 index 0000000..e1ae22e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/6O/EXP7IV7TE109NE10NGP8IV.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/9V/RB4Z65P6ZXTUNWTFN9LBS2.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/9V/RB4Z65P6ZXTUNWTFN9LBS2.uasset new file mode 100644 index 0000000..078a135 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/9V/RB4Z65P6ZXTUNWTFN9LBS2.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/AO/9AV09QQ77U0OEMTM4469BN.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/AO/9AV09QQ77U0OEMTM4469BN.uasset new file mode 100644 index 0000000..26f05f1 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/AO/9AV09QQ77U0OEMTM4469BN.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/O8/GYEJ5WC1N2CFLH33C0JXRZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/O8/GYEJ5WC1N2CFLH33C0JXRZ.uasset new file mode 100644 index 0000000..7634355 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/O8/GYEJ5WC1N2CFLH33C0JXRZ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/SQ/NTYWI1ULLP6M6MM5Q1TCL8.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/SQ/NTYWI1ULLP6M6MM5Q1TCL8.uasset new file mode 100644 index 0000000..e3f15bc Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/SQ/NTYWI1ULLP6M6MM5Q1TCL8.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/XD/X8SCUJSN39S28ZF44121PC.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/XD/X8SCUJSN39S28ZF44121PC.uasset new file mode 100644 index 0000000..fc807ff Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/B/XD/X8SCUJSN39S28ZF44121PC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/2Y/NBQ5OBY0KVQIDB8N888CVW.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/2Y/NBQ5OBY0KVQIDB8N888CVW.uasset new file mode 100644 index 0000000..166cbc7 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/2Y/NBQ5OBY0KVQIDB8N888CVW.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/5K/IBAO3QSFUVURVL827VNHS8.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/5K/IBAO3QSFUVURVL827VNHS8.uasset new file mode 100644 index 0000000..a176cc3 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/5K/IBAO3QSFUVURVL827VNHS8.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/7C/38AEKF470V4NV9BF55CAG0.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/7C/38AEKF470V4NV9BF55CAG0.uasset new file mode 100644 index 0000000..fec4431 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/7C/38AEKF470V4NV9BF55CAG0.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/CA/FN2PRYN7TLU4K2S07CVOB8.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/CA/FN2PRYN7TLU4K2S07CVOB8.uasset new file mode 100644 index 0000000..71087ae Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/CA/FN2PRYN7TLU4K2S07CVOB8.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/EU/0YP406S9BTT0WRNE3BFTRZ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/EU/0YP406S9BTT0WRNE3BFTRZ.uasset new file mode 100644 index 0000000..e63cf22 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/EU/0YP406S9BTT0WRNE3BFTRZ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/J9/J3WD5EBPDSTJ52HVWLPIZT.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/J9/J3WD5EBPDSTJ52HVWLPIZT.uasset new file mode 100644 index 0000000..28ca597 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/J9/J3WD5EBPDSTJ52HVWLPIZT.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/L6/A15LL7600436P40CI9LH7H.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/L6/A15LL7600436P40CI9LH7H.uasset new file mode 100644 index 0000000..df99542 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/L6/A15LL7600436P40CI9LH7H.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/VB/G5FS3IU5EYFBL6CZ5OC3YQ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/VB/G5FS3IU5EYFBL6CZ5OC3YQ.uasset new file mode 100644 index 0000000..c7c9f07 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/VB/G5FS3IU5EYFBL6CZ5OC3YQ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/ZR/ZBELVUKHYI7T49Y4CVQG6R.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/ZR/ZBELVUKHYI7T49Y4CVQG6R.uasset new file mode 100644 index 0000000..3cce27d Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/C/ZR/ZBELVUKHYI7T49Y4CVQG6R.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/IX/ZK5FX81CEZMXG6F4ONJIOB.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/IX/ZK5FX81CEZMXG6F4ONJIOB.uasset new file mode 100644 index 0000000..4637ec5 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/IX/ZK5FX81CEZMXG6F4ONJIOB.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/QJ/7W8A58NZWW2A9JRQ53TBJQ.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/QJ/7W8A58NZWW2A9JRQ53TBJQ.uasset new file mode 100644 index 0000000..16ac1bc Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/QJ/7W8A58NZWW2A9JRQ53TBJQ.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/RZ/OLHK4HQSKYQJYTMG0TBRXX.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/RZ/OLHK4HQSKYQJYTMG0TBRXX.uasset new file mode 100644 index 0000000..7ef9871 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/RZ/OLHK4HQSKYQJYTMG0TBRXX.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/SV/PE065923KDIC5HRV559LWD.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/SV/PE065923KDIC5HRV559LWD.uasset new file mode 100644 index 0000000..18460b2 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/SV/PE065923KDIC5HRV559LWD.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/X4/I06LK49GNVL7SE2ZZIGRTR.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/X4/I06LK49GNVL7SE2ZZIGRTR.uasset new file mode 100644 index 0000000..377f026 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/D/X4/I06LK49GNVL7SE2ZZIGRTR.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/39/ETG0KFR5WUQ0OFTXVTEZHG.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/39/ETG0KFR5WUQ0OFTXVTEZHG.uasset new file mode 100644 index 0000000..1fbd753 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/39/ETG0KFR5WUQ0OFTXVTEZHG.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/3D/Y4X1BT9GLSD18TL47CH8VC.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/3D/Y4X1BT9GLSD18TL47CH8VC.uasset new file mode 100644 index 0000000..d4bf46e Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/3D/Y4X1BT9GLSD18TL47CH8VC.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/4P/BB1FLLGT5NWIVPX25TRODL.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/4P/BB1FLLGT5NWIVPX25TRODL.uasset new file mode 100644 index 0000000..621f566 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/4P/BB1FLLGT5NWIVPX25TRODL.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/C0/86JK4ZQIAIIETSOR3P3AZH.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/C0/86JK4ZQIAIIETSOR3P3AZH.uasset new file mode 100644 index 0000000..41841c1 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/C0/86JK4ZQIAIIETSOR3P3AZH.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/DF/YBS88P16C130M3Q4KOPCGE.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/DF/YBS88P16C130M3Q4KOPCGE.uasset new file mode 100644 index 0000000..b39e4f8 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/DF/YBS88P16C130M3Q4KOPCGE.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/EC/AX7R1S56LE8T62FJLOXCZW.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/EC/AX7R1S56LE8T62FJLOXCZW.uasset new file mode 100644 index 0000000..525e0c2 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/EC/AX7R1S56LE8T62FJLOXCZW.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/FA/WDW5W2FUD65WZ5V98DPGMN.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/FA/WDW5W2FUD65WZ5V98DPGMN.uasset new file mode 100644 index 0000000..9ab5ce6 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/FA/WDW5W2FUD65WZ5V98DPGMN.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/LL/KHE22JW7ELELWVBZK0ZCX5.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/LL/KHE22JW7ELELWVBZK0ZCX5.uasset new file mode 100644 index 0000000..e9ee8b1 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/LL/KHE22JW7ELELWVBZK0ZCX5.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/M2/A4SEUSPU755XPPJF5PSL6H.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/M2/A4SEUSPU755XPPJF5PSL6H.uasset new file mode 100644 index 0000000..40af451 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/M2/A4SEUSPU755XPPJF5PSL6H.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/OH/5AHRLU782H9IRW9N3ZZMJ0.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/OH/5AHRLU782H9IRW9N3ZZMJ0.uasset new file mode 100644 index 0000000..5686303 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/OH/5AHRLU782H9IRW9N3ZZMJ0.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/RM/3342U00QKX8AIABTMNITXP.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/RM/3342U00QKX8AIABTMNITXP.uasset new file mode 100644 index 0000000..ee7a061 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/RM/3342U00QKX8AIABTMNITXP.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/SW/AMEX48WG9OO1I1ACCL849C.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/SW/AMEX48WG9OO1I1ACCL849C.uasset new file mode 100644 index 0000000..fb78f18 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/SW/AMEX48WG9OO1I1ACCL849C.uasset differ diff --git a/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/U6/02V6M9C5U71IQYCXQMIPPI.uasset b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/U6/02V6M9C5U71IQYCXQMIPPI.uasset new file mode 100644 index 0000000..3c42208 Binary files /dev/null and b/Content/__ExternalActors__/Variant_Shooter/Lvl_ArenaShooter/E/U6/02V6M9C5U71IQYCXQMIPPI.uasset differ diff --git a/Content/__ExternalObjects__/FirstPerson/Lvl_FirstPerson/1/E5/IOQOGT9AJYYZQ06SOLO6RW.uasset b/Content/__ExternalObjects__/FirstPerson/Lvl_FirstPerson/1/E5/IOQOGT9AJYYZQ06SOLO6RW.uasset new file mode 100644 index 0000000..7dd9c6c Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Lvl_FirstPerson/1/E5/IOQOGT9AJYYZQ06SOLO6RW.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Horror/Lvl_Horror/E/4S/MTC0EUCY5X4PPSGG0YEW81.uasset b/Content/__ExternalObjects__/Variant_Horror/Lvl_Horror/E/4S/MTC0EUCY5X4PPSGG0YEW81.uasset new file mode 100644 index 0000000..9d0ef2d Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Horror/Lvl_Horror/E/4S/MTC0EUCY5X4PPSGG0YEW81.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/0/2V/4RMN685QFM18EMMOS53UX1.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/0/2V/4RMN685QFM18EMMOS53UX1.uasset new file mode 100644 index 0000000..65116ed Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/0/2V/4RMN685QFM18EMMOS53UX1.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/1/IA/E4XOACU9NFRF45RN18NT1U.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/1/IA/E4XOACU9NFRF45RN18NT1U.uasset new file mode 100644 index 0000000..cc076e6 Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/1/IA/E4XOACU9NFRF45RN18NT1U.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/1/IK/ZYRM0WTKB3EHNFRS105XUN.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/1/IK/ZYRM0WTKB3EHNFRS105XUN.uasset new file mode 100644 index 0000000..79a3910 Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/1/IK/ZYRM0WTKB3EHNFRS105XUN.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/4/WR/7CEH4H65LV3H3J89K9F2WF.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/4/WR/7CEH4H65LV3H3J89K9F2WF.uasset new file mode 100644 index 0000000..42480de Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/4/WR/7CEH4H65LV3H3J89K9F2WF.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/5/Q8/Q68FVUA4IU7AYGVA47JX2I.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/5/Q8/Q68FVUA4IU7AYGVA47JX2I.uasset new file mode 100644 index 0000000..138c0fd Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/5/Q8/Q68FVUA4IU7AYGVA47JX2I.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/6/01/Z0AMGRVPH5P2BHGYKF4K4V.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/6/01/Z0AMGRVPH5P2BHGYKF4K4V.uasset new file mode 100644 index 0000000..e109e79 Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/6/01/Z0AMGRVPH5P2BHGYKF4K4V.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/6/B0/DVYV13ZDSS9SN6CLHPT604.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/6/B0/DVYV13ZDSS9SN6CLHPT604.uasset new file mode 100644 index 0000000..8428bc5 Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/6/B0/DVYV13ZDSS9SN6CLHPT604.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/C/X3/2I603L4LWO0HESUZXBN5SL.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/C/X3/2I603L4LWO0HESUZXBN5SL.uasset new file mode 100644 index 0000000..15e1523 Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/C/X3/2I603L4LWO0HESUZXBN5SL.uasset differ diff --git a/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/F/4S/UPLVJQYBV2IZM9V2XC7A9U.uasset b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/F/4S/UPLVJQYBV2IZM9V2XC7A9U.uasset new file mode 100644 index 0000000..8b912b0 Binary files /dev/null and b/Content/__ExternalObjects__/Variant_Shooter/Lvl_ArenaShooter/F/4S/UPLVJQYBV2IZM9V2XC7A9U.uasset differ diff --git a/MaybeThisTime.uproject b/MaybeThisTime.uproject new file mode 100644 index 0000000..8beaddb --- /dev/null +++ b/MaybeThisTime.uproject @@ -0,0 +1,48 @@ +{ + "FileVersion": 3, + "EngineAssociation": "5.8", + "Category": "", + "Description": "", + "Modules": [ + { + "Name": "MaybeThisTime", + "Type": "Runtime", + "LoadingPhase": "Default", + "AdditionalDependencies": [ + "Engine", + "GameplayAbilities", + "CoreUObject", + "AIModule" + ] + } + ], + "Plugins": [ + { + "Name": "ModelingToolsEditorMode", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "GameplayStateTree", + "Enabled": true + }, + { + "Name": "GameplayAbilities", + "Enabled": true + }, + { + "Name": "AbilitySystemGameFeatureActions", + "Enabled": true + }, + { + "Name": "GameplayBehaviorSmartObjects", + "Enabled": true + }, + { + "Name": "GameplayInteractions", + "Enabled": true + } + ] +} \ No newline at end of file diff --git a/Source/MaybeThisTime.Target.cs b/Source/MaybeThisTime.Target.cs new file mode 100644 index 0000000..c916cd2 --- /dev/null +++ b/Source/MaybeThisTime.Target.cs @@ -0,0 +1,16 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class MaybeThisTimeTarget : TargetRules +{ + public MaybeThisTimeTarget(TargetInfo Target) : base(Target) + { + Type = TargetType.Game; + DefaultBuildSettings = BuildSettingsVersion.V7; + IncludeOrderVersion = EngineIncludeOrderVersion.Latest; + + ExtraModuleNames.AddRange( new string[] { "MaybeThisTime" } ); + } +} diff --git a/Source/MaybeThisTime/MaybeThisTime.Build.cs b/Source/MaybeThisTime/MaybeThisTime.Build.cs new file mode 100644 index 0000000..ae879a7 --- /dev/null +++ b/Source/MaybeThisTime/MaybeThisTime.Build.cs @@ -0,0 +1,36 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; +using UnrealBuildTool.Rules; + +public class MaybeThisTime : ModuleRules +{ + public MaybeThisTime(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicDependencyModuleNames.AddRange(new string[] { + "Core", + "CoreUObject", + "Engine", + "InputCore", + "GameplayTags", + "GameplayAbilities", + "GameplayTasks", + "NavigationSystem", + "AIModule", + "Slate", + "SlateCore" + }); + + PrivateDependencyModuleNames.AddRange(new string[] { }); + + // Uncomment if you are using Slate UI + // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); + + // Uncomment if you are using online features + // PrivateDependencyModuleNames.Add("OnlineSubsystem"); + + // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true + } +} diff --git a/Source/MaybeThisTime/MaybeThisTime.cpp b/Source/MaybeThisTime/MaybeThisTime.cpp new file mode 100644 index 0000000..3191c58 --- /dev/null +++ b/Source/MaybeThisTime/MaybeThisTime.cpp @@ -0,0 +1,6 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "MaybeThisTime.h" +#include "Modules/ModuleManager.h" + +IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, MaybeThisTime, "MaybeThisTime" ); diff --git a/Source/MaybeThisTime/MaybeThisTime.h b/Source/MaybeThisTime/MaybeThisTime.h new file mode 100644 index 0000000..90aad9e --- /dev/null +++ b/Source/MaybeThisTime/MaybeThisTime.h @@ -0,0 +1,6 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" + diff --git a/Source/MaybeThisTime/Private/AModuleActor.cpp b/Source/MaybeThisTime/Private/AModuleActor.cpp new file mode 100644 index 0000000..d7654d0 --- /dev/null +++ b/Source/MaybeThisTime/Private/AModuleActor.cpp @@ -0,0 +1,27 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "AModuleActor.h" + +// Sets default values +AAModuleActor::AAModuleActor() +{ + // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + +} + +// Called when the game starts or when spawned +void AAModuleActor::BeginPlay() +{ + Super::BeginPlay(); + +} + +// Called every frame +void AAModuleActor::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + +} + diff --git a/Source/MaybeThisTime/Private/BaseAttributeSet.cpp b/Source/MaybeThisTime/Private/BaseAttributeSet.cpp new file mode 100644 index 0000000..26d3ac1 --- /dev/null +++ b/Source/MaybeThisTime/Private/BaseAttributeSet.cpp @@ -0,0 +1,180 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BaseAttributeSet.h" +#include "Net/UnrealNetwork.h" +#include "GameplayEffectExtension.h" + +void UBaseAttributeSet::PreAttributeChange(const FGameplayAttribute& Attribute, float& NewValue) +{ + Super::PreAttributeChange(Attribute, NewValue); + + if(Attribute == GetHealthAttribute()) + { + NewValue = FMath::Clamp(NewValue, 0.0f, GetMaxHealth()); + } + if (Attribute == GetStaminaAttribute()) + { + NewValue = FMath::Clamp(NewValue, 0.0f, GetMaxStamina()); + } + if (Attribute == GetManaAttribute()) + { + NewValue = FMath::Clamp(NewValue, 0.0f, GetMaxMana()); + } + if (Attribute == GetSatietyAttribute()) + { + NewValue = FMath::Clamp(NewValue, 0.0f, GetMaxSatiety()); + } +} + +void UBaseAttributeSet::PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue) +{ + if (Attribute == GetHealthAttribute()) { + + } + if (Attribute == GetStaminaAttribute()) + { + + } + if (Attribute == GetManaAttribute()) + { + + } +} + +void UBaseAttributeSet::PostGameplayEffectExecute(const FGameplayEffectModCallbackData& Data) +{ + Super::PostGameplayEffectExecute(Data); + + if (Data.EvaluatedData.Attribute == GetSatietyAttribute()) + { + SetSatiety(FMath::Clamp(GetSatiety(), 0.f, GetMaxSatiety())); + } +} + +void UBaseAttributeSet::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, MaxHealth, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, Health, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, HealthRegen, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, MaxStamina, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, Stamina, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, StaminaRegen, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, MaxMana, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, Mana, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, ManaRegen, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, Armor, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, ElementalArmor, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, CritChance, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, CritaDamage, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, MoveSpeed, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, SprintSpeedMultiplier, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, SneakSpeedMultiplier, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, SneakDmgMultiplier, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, WeakSpotDmgMultiplier, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, MaxSatiety, COND_None, REPNOTIFY_Always); + DOREPLIFETIME_CONDITION_NOTIFY(UBaseAttributeSet, Satiety, COND_None, REPNOTIFY_Always); +} + +void UBaseAttributeSet::OnRep_MaxHealth(const FGameplayAttributeData& OldMaxHealth) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, MaxHealth, OldMaxHealth); +} + +void UBaseAttributeSet::OnRep_Health(const FGameplayAttributeData& OldHealth) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, Health, OldHealth); +} + +void UBaseAttributeSet::OnRep_HealthRegen(const FGameplayAttributeData& OldHealthRegen) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, HealthRegen, OldHealthRegen); +} + +void UBaseAttributeSet::OnRep_MaxStamina(const FGameplayAttributeData& OldMaxStamina) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, MaxStamina, OldMaxStamina); +} + +void UBaseAttributeSet::OnRep_Stamina(const FGameplayAttributeData& OldStamina) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, Stamina, OldStamina); +} + +void UBaseAttributeSet::OnRep_StaminaRegen(const FGameplayAttributeData& OldStaminaRegen) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, StaminaRegen, OldStaminaRegen); +} + +void UBaseAttributeSet::OnRep_MaxMana(const FGameplayAttributeData& OldMaxMana) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, MaxMana, OldMaxMana); +} + +void UBaseAttributeSet::OnRep_Mana(const FGameplayAttributeData& OldMana) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, Mana, OldMana); +} + +void UBaseAttributeSet::OnRep_ManaRegen(const FGameplayAttributeData& OldManaRegen) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, ManaRegen, OldManaRegen); +} + +void UBaseAttributeSet::OnRep_Armor(const FGameplayAttributeData& OldArmor) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, Armor, OldArmor); +} + +void UBaseAttributeSet::OnRep_ElementalArmor(const FGameplayAttributeData& OldElementalArmor) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, ElementalArmor, OldElementalArmor); +} + +void UBaseAttributeSet::OnRep_CritChance(const FGameplayAttributeData& OldCritChance) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, CritChance, OldCritChance); +} + +void UBaseAttributeSet::OnRep_CritaDamage(const FGameplayAttributeData& OldCritaDamage) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, CritaDamage, OldCritaDamage); +} + +void UBaseAttributeSet::OnRep_MoveSpeed(const FGameplayAttributeData& OldMoveSpeed) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, MoveSpeed, OldMoveSpeed); +} + +void UBaseAttributeSet::OnRep_SprintSpeedMultiplier(const FGameplayAttributeData& OldSprintSpeedMultiplier) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, SprintSpeedMultiplier, OldSprintSpeedMultiplier); +} + +void UBaseAttributeSet::OnRep_SneakSpeedMultiplier(const FGameplayAttributeData& OldSneakSpeedMultiplier) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, SneakSpeedMultiplier, OldSneakSpeedMultiplier); +} + +void UBaseAttributeSet::OnRep_SneakDmgMultiplier(const FGameplayAttributeData& OldSneakDmgMultiplier) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, SneakDmgMultiplier, OldSneakDmgMultiplier); +} + +void UBaseAttributeSet::OnRep_WeakSpotDmgMultiplier(const FGameplayAttributeData& OldWeakSpotDmgMultiplier) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, WeakSpotDmgMultiplier, OldWeakSpotDmgMultiplier); +} + +void UBaseAttributeSet::OnRep_MaxSatiety(const FGameplayAttributeData& OldMaxSatiety) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, MaxSatiety, OldMaxSatiety); +} + +void UBaseAttributeSet::OnRep_Satiety(const FGameplayAttributeData& OldSatiety) +{ + GAMEPLAYATTRIBUTE_REPNOTIFY(UBaseAttributeSet, Satiety, OldSatiety); +} + diff --git a/Source/MaybeThisTime/Private/BaseCharacter.cpp b/Source/MaybeThisTime/Private/BaseCharacter.cpp new file mode 100644 index 0000000..d11744c --- /dev/null +++ b/Source/MaybeThisTime/Private/BaseCharacter.cpp @@ -0,0 +1,135 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "BaseCharacter.h" +#include "InteractionInterface.h" +#include "ItemData.h" +#include "AbilitySystemComponent.h" + + +// Sets default values +ABaseCharacter::ABaseCharacter() +{ + // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + + if (!IsValid(AbilitySystemComponent)) + { + AbilitySystemComponent = CreateDefaultSubobject(TEXT("AbilitySystemComponent")); + AbilitySystemComponent->SetIsReplicated(true); + AbilitySystemComponent->SetReplicationMode(EGameplayEffectReplicationMode::Mixed); + } + + if(!IsValid(InventoryComponent)) + { + InventoryComponent = CreateDefaultSubobject(TEXT("InventoryComponent")); + InventoryComponent->SetIsReplicated(true); + } +} + +// Called when the game starts or when spawned +void ABaseCharacter::BeginPlay() +{ + Super::BeginPlay(); + + if (IsLocallyControlled()) { + UAbilitySystemComponent* ASC = GetAbilitySystemComponent(); + + if (IsValid(ASC)) + { + AttributeSet = ASC->GetSet(); + } + } + + //if (GEngine) { GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Hello World")); } + +} + +// Called every frame +void ABaseCharacter::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + + InteractionLineTrace(); + +} + +// Called to bind functionality to input +void ABaseCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); + +} + +UAbilitySystemComponent* ABaseCharacter::GetAbilitySystemComponent() const +{ + return AbilitySystemComponent; +} + +void ABaseCharacter::InteractionLineTrace() +{ + FVector Start; + FRotator Direction; + if (!Controller) return; + Controller->GetPlayerViewPoint(Start, Direction); + + FVector End = Start + (Direction.Vector() * InteractionDistance); + + FHitResult Hit; + FCollisionQueryParams Params; + Params.AddIgnoredActor(this); + + bool bHit = GetWorld()->LineTraceSingleByChannel( + Hit, + Start, + End, + ECC_Visibility, + Params + ); + + AActor* NewLookedAtActor = bHit ? Hit.GetActor() : nullptr; + + if (NewLookedAtActor == LookedAtActor) return; + + if (LookedAtActor && LookedAtActor->Implements()) + { + IInteractionInterface::Execute_LookingAt(LookedAtActor, this, false); + } + + LookedAtActor = nullptr; + + if (NewLookedAtActor && NewLookedAtActor->Implements()) + { + LookedAtActor = NewLookedAtActor; + IInteractionInterface::Execute_LookingAt(LookedAtActor, this, true); + } +} + +void ABaseCharacter::InteractWithInteractable_Implementation(AActor* TargetActor) +{ + if (!LookedAtActor || !LookedAtActor->Implements()) return; + IInteractionInterface::Execute_Interact(LookedAtActor, this); +} + +void ABaseCharacter::TryPickup_Implementation(AItemActor* ItemActor) +{ + if (!HasAuthority()) return; + if (!ItemActor || !InventoryComponent) return; + + FItemData ItemToAdd = ItemActor->GetItemData(); + + FItemData OutRemainingItem = FItemData(); + EAddItemResult Result = InventoryComponent->TryAddItem(ItemToAdd, OutRemainingItem); + + switch (Result) { + case EAddItemResult::FullyAdded: + ItemActor->Destroy(); + return; + case EAddItemResult::PartiallyAdded: + ItemActor->SetItemObject(OutRemainingItem); + return; + default: + if (GEngine) { GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Couldnt Pick up Item")); } + return; + } +} + diff --git a/Source/MaybeThisTime/Private/BaseCommand.cpp b/Source/MaybeThisTime/Private/BaseCommand.cpp new file mode 100644 index 0000000..9a4c377 --- /dev/null +++ b/Source/MaybeThisTime/Private/BaseCommand.cpp @@ -0,0 +1,14 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BaseCommand.h" + +void UBaseCommand::Interrupt_Implementation() +{ + OnCommandFinished.Broadcast(false); +} + +void UBaseCommand::Execute_Implementation() +{ + OnCommandFinished.Broadcast(false); +} diff --git a/Source/MaybeThisTime/Private/BaseCommands.cpp b/Source/MaybeThisTime/Private/BaseCommands.cpp new file mode 100644 index 0000000..1ee4764 --- /dev/null +++ b/Source/MaybeThisTime/Private/BaseCommands.cpp @@ -0,0 +1,128 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BaseCommands.h" +#include "InteractionInterface.h" +#include "BaseUnit.h" + +// UMoveToCommand +void UMoveToCommand::Execute_Implementation() +{ + if (!Owner) + { + Complete(false); + return; + } + + AIController = Cast(Owner->GetController()); + if (!AIController) + { + Complete(false); + return; + } + + // Bind to move completed delegate + AIController->ReceiveMoveCompleted.AddDynamic(this, &UMoveToCommand::OnMoveCompleted); + + // Request navigation move + FAIMoveRequest MoveRequest; + MoveRequest.SetGoalLocation(Destination); + MoveRequest.SetAcceptanceRadius(AcceptanceRadius); + MoveRequest.SetUsePathfinding(true); + + AIController->MoveTo(MoveRequest); +} + +void UMoveToCommand::Interrupt_Implementation() +{ + if (AIController) + { + AIController->ReceiveMoveCompleted.RemoveDynamic( + this, &UMoveToCommand::OnMoveCompleted); + AIController->StopMovement(); + } +} + +void UMoveToCommand::OnMoveCompleted(FAIRequestID RequestID, EPathFollowingResult::Type Result) +{ + if (AIController) + { + AIController->ReceiveMoveCompleted.RemoveDynamic( + this, &UMoveToCommand::OnMoveCompleted); + } + + switch (Result) + { + case EPathFollowingResult::Success: + Complete(true); + break; + default: + Complete(false); + break; + } +} + +// UInteractCommand +void UInteractCommand::Execute_Implementation() +{ + if(!TargetActor || !TargetActor->Implements()) { Complete(false); return; } + + // Check if already in range + float DistToTarget = FVector::Dist(Owner->GetActorLocation(), TargetActor->GetActorLocation()); + if (DistToTarget <= InteractionRange) + { + DoInteract(); + return; + } + + // Not in range, create move subcommand + SubMoveCommand = NewObject(); + SubMoveCommand->Owner = Owner; + SubMoveCommand->Destination = TargetActor->GetActorLocation(); + + // Bind to its completion, ... NOT going through the queue + SubMoveCommand->OnCommandFinished.AddDynamic(this, &UInteractCommand::OnMoveFinished); + SubMoveCommand->Execute(); +} + +void UInteractCommand::Interrupt_Implementation() +{ + if (SubMoveCommand) + { + SubMoveCommand->OnCommandFinished.RemoveDynamic(this, &UInteractCommand::OnMoveFinished); + SubMoveCommand->Interrupt(); + SubMoveCommand = nullptr; + } +} + +void UInteractCommand::DoInteract() +{ + IInteractionInterface::Execute_Interact(TargetActor, Owner); + Complete(true); +} + +void UInteractCommand::OnMoveFinished(bool bSuccess) +{ + if (SubMoveCommand) + { + SubMoveCommand->OnCommandFinished.RemoveDynamic(this, &UInteractCommand::OnMoveFinished); + SubMoveCommand = nullptr; + } + + if (!bSuccess || !TargetActor) + { + Complete(false); + return; + } + + float DistToTarget = FVector::Dist(Owner->GetActorLocation(), TargetActor->GetActorLocation()); + + UE_LOG(LogTemp, Error, TEXT("%f %d"), DistToTarget, InteractionRange); + + if (DistToTarget > InteractionRange) + { + Complete(false); + return; + } + DoInteract(); +} \ No newline at end of file diff --git a/Source/MaybeThisTime/Private/BaseUnit.cpp b/Source/MaybeThisTime/Private/BaseUnit.cpp new file mode 100644 index 0000000..6ecbf84 --- /dev/null +++ b/Source/MaybeThisTime/Private/BaseUnit.cpp @@ -0,0 +1,162 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BaseUnit.h" +#include "Components/CapsuleComponent.h" +#include "TopDownGameState.h" +#include "Net/UnrealNetwork.h" +#include "Commands/CommandComponent.h" + +// Sets default values +ABaseUnit::ABaseUnit() +{ + PrimaryActorTick.bCanEverTick = false; + + AbilitySystemComponent = CreateDefaultSubobject(TEXT("AbilitySystemComponent")); + AbilitySystemComponent->SetIsReplicated(true); + AbilitySystemComponent->SetReplicationMode(EGameplayEffectReplicationMode::Mixed); + + InventoryComponent = CreateDefaultSubobject(TEXT("InventoryComponent")); + InventoryComponent->SetIsReplicated(true); + + AttributeSet = CreateDefaultSubobject( TEXT("AttributeSet")); + + CommandComponent = CreateDefaultSubobject(TEXT("CommandComponent")); + + GetCapsuleComponent()->SetCollisionResponseToChannel(ECC_GameTraceChannel2, ECR_Block); +} + +// Called when the game starts or when spawned +void ABaseUnit::BeginPlay() +{ + Super::BeginPlay(); + + if (!HasAuthority()) return; + + UAbilitySystemComponent* ASC = GetAbilitySystemComponent(); + if (!ASC || !AttributeSet) return; + + AttributeSet->SetSatiety(100.f); + AttributeSet->SetMaxSatiety(100.f); + + // Apply default resource consumption + for (TSubclassOf EffectClass : PassiveUpkeepEffects) + { + if (!EffectClass) continue; + FGameplayEffectContextHandle Context = ASC->MakeEffectContext(); + ASC->ApplyGameplayEffectToSelf(EffectClass->GetDefaultObject(), 1.f, Context); + } +} + +UAbilitySystemComponent* ABaseUnit::GetAbilitySystemComponent() const +{ + return AbilitySystemComponent; +} + +void ABaseUnit::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + DOREPLIFETIME(ABaseUnit, DisplayName); + DOREPLIFETIME(ABaseUnit, PrimaryFaction); +} + +UInventoryComponent* ABaseUnit::GetInventoryComponent_Implementation() const +{ + return InventoryComponent; +} + +EOutlinerStatus ABaseUnit::GetOutlinerStatus() const +{ + return EOutlinerStatus::OK; +} + +void ABaseUnit::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + // Unregister from GameState when destroyed + if (ATopDownGameState* GS = GetWorld()->GetGameState()) + { + GS->UnregisterUnit(this); + } +} + + + + + + + + + + + +/* +void ABaseUnit::InteractionLineTrace() +{ + FVector Start; + FRotator Direction; + if (!Controller) return; + Controller->GetPlayerViewPoint(Start, Direction); + + FVector End = Start + (Direction.Vector() * InteractionDistance); + + FHitResult Hit; + FCollisionQueryParams Params; + Params.AddIgnoredActor(this); + + bool bHit = GetWorld()->LineTraceSingleByChannel( + Hit, + Start, + End, + ECC_Visibility, + Params + ); + + AActor* NewLookedAtActor = bHit ? Hit.GetActor() : nullptr; + + if (NewLookedAtActor == LookedAtActor) return; + + if (LookedAtActor && LookedAtActor->Implements()) + { + IInteractionInterface::Execute_LookingAt(LookedAtActor, this, false); + } + + LookedAtActor = nullptr; + + if (NewLookedAtActor && NewLookedAtActor->Implements()) + { + LookedAtActor = NewLookedAtActor; + IInteractionInterface::Execute_LookingAt(LookedAtActor, this, true); + } +} + +void ABaseUnit::InteractWithInteractable_Implementation(AActor* TargetActor) +{ + if (!LookedAtActor || !LookedAtActor->Implements()) return; + IInteractionInterface::Execute_Interact(LookedAtActor, this); +} + +void ABaseUnit::TryPickup_Implementation(AItemActor* ItemActor) +{ + if (!HasAuthority()) return; + if (!ItemActor || !InventoryComponent) return; + + FItemData ItemToAdd = ItemActor->GetItemData(); + + FItemData OutRemainingItem = FItemData(); + EAddItemResult Result = InventoryComponent->TryAddItem(ItemToAdd, OutRemainingItem); + + switch (Result) { + case EAddItemResult::FullyAdded: + ItemActor->Destroy(); + return; + case EAddItemResult::PartiallyAdded: + ItemActor->SetItemObject(OutRemainingItem); + return; + default: + if (GEngine) { GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Couldnt Pick up Item")); } + return; + } +} +*/ \ No newline at end of file diff --git a/Source/MaybeThisTime/Private/BaseUnitAIController.cpp b/Source/MaybeThisTime/Private/BaseUnitAIController.cpp new file mode 100644 index 0000000..35b3a1a --- /dev/null +++ b/Source/MaybeThisTime/Private/BaseUnitAIController.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "BaseUnitAIController.h" + diff --git a/Source/MaybeThisTime/Private/Commands/CommandComponent.cpp b/Source/MaybeThisTime/Private/Commands/CommandComponent.cpp new file mode 100644 index 0000000..3adfab5 --- /dev/null +++ b/Source/MaybeThisTime/Private/Commands/CommandComponent.cpp @@ -0,0 +1,107 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Commands/CommandComponent.h" +#include "BaseCommand.h" +#include "BaseUnit.h" + +// Sets default values for this component's properties +UCommandComponent::UCommandComponent() +{ + PrimaryComponentTick.bCanEverTick = false; + +} + + +// Called when the game starts +void UCommandComponent::BeginPlay() +{ + Super::BeginPlay(); + OwnerUnit = Cast(GetOwner()); + +} + + +void UCommandComponent::GiveCommand(UBaseCommand* NewCommand, bool bQueue) +{ + if (!NewCommand) return; + if (!bQueue) ClearCommandQueue(); + + NewCommand->Owner = OwnerUnit; + CommandQueue.Add(NewCommand); + if (CommandQueue.Num() == 1) ExecuteCommand(CommandQueue[0]); + + OnCommandQueueChanged.Broadcast(); +} + +void UCommandComponent::ExecuteNextCommand(bool bInterrupt) +{ + if (CommandQueue.Num() == 0) return; + + if (bInterrupt) CommandQueue[0]->Interrupt(); + + CommandQueue[0]->OnCommandFinished.RemoveDynamic(this, &UCommandComponent::CommandFinished); + CommandQueue.RemoveAt(0); + + if (CommandQueue.Num() == 0) return; + ExecuteCommand(CommandQueue[0]); +} + +void UCommandComponent::InterruptCurrentCommand() +{ + if (CommandQueue.Num() == 0) return; + + CommandQueue[0]->OnCommandFinished.RemoveDynamic(this, &UCommandComponent::CommandFinished); + CommandQueue[0]->Interrupt(); + CommandQueue.RemoveAt(0); + OnCommandQueueChanged.Broadcast(); +} + +void UCommandComponent::ClearCommandQueue() +{ + InterruptCurrentCommand(); + CommandQueue.Empty(); + OnCommandQueueChanged.Broadcast(); +} + +void UCommandComponent::RemoveCommandFromQueue(UBaseCommand* CommandToRemove) +{ + if (!CommandToRemove) return; + if (CommandQueue[0] == CommandToRemove) + { + ExecuteNextCommand(true); + } + else + { + CommandQueue.Remove(CommandToRemove); + } + + OnCommandQueueChanged.Broadcast(); +} + +void UCommandComponent::ExecuteCommand(UBaseCommand* Command) +{ + Command->OnCommandFinished.AddDynamic(this, &UCommandComponent::CommandFinished); + Command->Execute(); +} + +void UCommandComponent::CommandFinished(bool bSuccess) +{ + if (bSuccess) + { + + } + + ExecuteNextCommand(false); + OnCommandQueueChanged.Broadcast(); +} + +const TArray UCommandComponent::GetUnitCommandQueue() +{ + return CommandQueue; +} + +bool UCommandComponent::IsExecutingCommad() const +{ + return CommandQueue.Num() != 0; +} \ No newline at end of file diff --git a/Source/MaybeThisTime/Private/FactionManager.cpp b/Source/MaybeThisTime/Private/FactionManager.cpp new file mode 100644 index 0000000..26f6c74 --- /dev/null +++ b/Source/MaybeThisTime/Private/FactionManager.cpp @@ -0,0 +1,162 @@ +// FactionManager.cpp +#include "FactionManager.h" +#include "Net/UnrealNetwork.h" + +UFactionManager::UFactionManager() +{ + SetIsReplicatedByDefault(true); + PrimaryComponentTick.bCanEverTick = false; +} + +void UFactionManager::BeginPlay() +{ + Super::BeginPlay(); + + if (!GetOwner()->HasAuthority()) return; + InitializeDefaultFactions(); +} + +void UFactionManager::GetLifetimeReplicatedProps( + TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + DOREPLIFETIME(UFactionManager, Factions); +} + +void UFactionManager::InitializeDefaultFactions() +{ + // Wanderer - neutral to everyone by default + FFactionData Wanderer; + Wanderer.FactionID = FactionID::Wanderer; + Wanderer.DisplayName = FText::FromString("Wanderer"); + Wanderer.FactionType = EFactionType::Wanderer; + Wanderer.FactionColor = FLinearColor::Gray; + RegisterFaction(Wanderer); + + // Feral - hostile to everyone + FFactionData Feral; + Feral.FactionID = FactionID::Feral; + Feral.DisplayName = FText::FromString("Feral"); + Feral.FactionType = EFactionType::Hostile; + Feral.FactionColor = FLinearColor::Red; + // Hostile to all registered factions + Feral.RelationsTo.Add(FFactionRelation{ FactionID::Wanderer, -100.f }); + Feral.RelationsTo.Add(FFactionRelation{ FactionID::Wildlife, -100.f }); + RegisterFaction(Feral); + + // Wildlife - neutral unless provoked (no default relations = 0 = neutral) + FFactionData Wildlife; + Wildlife.FactionID = FactionID::Wildlife; + Wildlife.DisplayName = FText::FromString("Wildlife"); + Wildlife.FactionType = EFactionType::Wildlife; + Wildlife.FactionColor = FLinearColor::Green; + RegisterFaction(Wildlife); + + // NPC Faction A - Survivors + FFactionData Survivors; + Survivors.FactionID = "Survivors"; + Survivors.DisplayName = FText::FromString("Survivors"); + Survivors.FactionType = EFactionType::Civilized; + Survivors.FactionColor = FLinearColor::Green; + Survivors.RelationsTo.Add(FFactionRelation{ FactionID::Feral, -100 }); + RegisterFaction(Survivors); + + // NPC Faction B - Raiders + FFactionData Raiders; + Raiders.FactionID = "Raiders"; + Raiders.DisplayName = FText::FromString("Raiders"); + Raiders.FactionType = EFactionType::Bandit; + Raiders.FactionColor = FLinearColor::Red; + Raiders.RelationsTo.Add(FFactionRelation{ "Survivors", -75 }); + RegisterFaction(Raiders); +} + +void UFactionManager::RegisterFaction(FFactionData NewFaction) +{ + if (NewFaction.FactionID.IsNone()) return; + + // Check if already exists - update if so + FFactionData* Existing = GetFaction(NewFaction.FactionID); + if (Existing) + { + *Existing = NewFaction; + } + else + { + Factions.Add(NewFaction); + } + OnFactionChanged.Broadcast(NewFaction.FactionID); +} + +FFactionData* UFactionManager::GetFaction(FName InFactionID) +{ + return Factions.FindByPredicate([InFactionID](const FFactionData& F) + { + return F.FactionID == InFactionID; + }); +} + +const FFactionData* UFactionManager::GetFaction(FName InFactionID) const +{ + return Factions.FindByPredicate([InFactionID](const FFactionData& F) + { + return F.FactionID == InFactionID; + }); +} + +FFactionData UFactionManager::GetFactionCopy(FName FactionID) const +{ + const FFactionData* Found = GetFaction(FactionID); + return Found ? *Found : FFactionData(); +} + +bool UFactionManager::FactionExists(FName FactionID) const +{ + return GetFaction(FactionID) != nullptr; +} + +float UFactionManager::GetRelation(FName FactionA, FName FactionB) const +{ + const FFactionData* FA = GetFaction(FactionA); + if (!FA) return 0.f; + return FA->GetRelationTo(FactionB); +} + +ERelationState UFactionManager::GetRelationState(FName FactionA, FName FactionB) const +{ + const FFactionData* FA = GetFaction(FactionA); + if (!FA) return ERelationState::Neutral; + return FA->GetRelationStateTo(FactionB); +} + +void UFactionManager::ModifyRelation(FName FactionA, FName FactionB, float Delta) +{ + FFactionData* FA = GetFaction(FactionA); + if (!FA) return; + + float& Relation = FA->FindOrAddRelationTo(FactionB); + Relation = FMath::Clamp(Relation + Delta, -100.f, 100.f); + + OnRelationChanged.Broadcast(FactionA, FactionB, Relation); +} + +bool UFactionManager::AreHostile(FName FactionA, FName FactionB) const +{ + return GetRelationState(FactionA, FactionB) == ERelationState::Hostile || GetRelationState(FactionB, FactionA) == ERelationState::Hostile; +} + +bool UFactionManager::AreAllied(FName FactionA, FName FactionB) const +{ + return GetRelationState(FactionA, FactionB) == ERelationState::Allied && GetRelationState(FactionB, FactionA) == ERelationState::Allied; +} + +void UFactionManager::EvaluateFactionNeeds() +{ + +} + +void UFactionManager::OnRep_Factions() +{ + // Clients can react to faction data arriving + // UI updates etc +} \ No newline at end of file diff --git a/Source/MaybeThisTime/Private/InteractionInterface.cpp b/Source/MaybeThisTime/Private/InteractionInterface.cpp new file mode 100644 index 0000000..37264da --- /dev/null +++ b/Source/MaybeThisTime/Private/InteractionInterface.cpp @@ -0,0 +1,4 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "InteractionInterface.h" diff --git a/Source/MaybeThisTime/Private/InventoryComponent.cpp b/Source/MaybeThisTime/Private/InventoryComponent.cpp new file mode 100644 index 0000000..6c51551 --- /dev/null +++ b/Source/MaybeThisTime/Private/InventoryComponent.cpp @@ -0,0 +1,416 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "InventoryComponent.h" +#include "Net/UnrealNetwork.h" +#include "BaseCharacter.h" +#include "MyGameplayTags.h" + +// Sets default values for this component's properties +UInventoryComponent::UInventoryComponent() +{ + PrimaryComponentTick.bCanEverTick = false; + SetIsReplicatedByDefault(true); + + SetInventorySize(InventorySize); + ItemList.Init(FItemData(), InventorySize); +} + + +// Called when the game starts +void UInventoryComponent::BeginPlay() +{ + Super::BeginPlay(); + + +} + +float UInventoryComponent::AddResource(FItemData& ItemData) +{ + float AddableAmount = FMath::FloorToInt(GetFreeCapacity() / ItemData.Definition->WeightPerUnit); + float AmountToAdd = FMath::Clamp(ItemData.CurrentStackSize, 0, AddableAmount); + + if (AmountToAdd == 0) return ItemData.CurrentStackSize; + + float AmountToReturn = ItemData.CurrentStackSize - AmountToAdd; + + for (FItemData& Resource : Resources) { + if (Resource.Definition->ID != ItemData.Definition->ID) continue; + + Resource.CurrentStackSize += AmountToAdd; + CurrentWeight += AmountToAdd * ItemData.Definition->WeightPerUnit; + OnInventoryChanged.Broadcast(); + + return AmountToReturn; + } + + ItemData.CurrentStackSize = AmountToAdd; + + Resources.Add(ItemData); + + CurrentWeight += AmountToAdd * ItemData.Definition->WeightPerUnit; + + OnInventoryChanged.Broadcast(); + + return AmountToReturn; +} + +bool UInventoryComponent::ConsumeResource(FName ResourceID, float Amount) +{ + for (int32 i = 0; i < Resources.Num(); i++) + { + FItemData& Resource = Resources[i]; + + if (Resource.Definition->ID != ResourceID) continue; + if (Resource.CurrentStackSize < Amount) return false; + + Resource.CurrentStackSize -= Amount; + CurrentWeight -= Amount * Resource.Definition->WeightPerUnit; + + if (Resource.CurrentStackSize == 0) Resources.RemoveAt(i); + + OnInventoryChanged.Broadcast(); + + return true; + } + + return false; +} + +float UInventoryComponent::GetResource(FName ResourceID) const +{ + for (const FItemData& Resource : Resources) { + if (Resource.Definition->ID == ResourceID) return Resource.CurrentStackSize; + } + + return 0.0f; +} + +void UInventoryComponent::OnRep_ItemList() +{ + OnInventoryChanged.Broadcast(); + + +} + +void UInventoryComponent::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + DOREPLIFETIME(UInventoryComponent, ItemList); + DOREPLIFETIME(UInventoryComponent, InventorySize); +} + +const FItemData& UInventoryComponent::GetItemAt(int32 SlotIndex) const +{ + static const FItemData InvalidItem; + if (!ItemList.IsValidIndex(SlotIndex)) return InvalidItem; + + return ItemList[SlotIndex]; +} + +const TArray UInventoryComponent::GetAllItems() const +{ + return ItemList; +} + +EAddItemResult UInventoryComponent::TryAddItem(FItemData NewItem, FItemData& OutRemainingItem) +{ + int FreeSlotIndex = 0; + bool PartiallyAdded = false; + + if (!NewItem.IsValid()) return EAddItemResult::Failed; + + if (NewItem.HasTag(Item_Flag_Resource)) { + EAddItemResult Result; + float AmountLeft = AddResource(NewItem); + + if (AmountLeft == 0) Result = EAddItemResult::FullyAdded; + else if (AmountLeft != NewItem.CurrentStackSize) Result = EAddItemResult::PartiallyAdded; + else Result = EAddItemResult::Failed; + + OutRemainingItem = NewItem; + OutRemainingItem.CurrentStackSize = AmountLeft; + + return Result; + } + + // Try add Item to existing Stack + for (int SlotIndex = 0; SlotIndex < InventorySize; SlotIndex++) { + switch (AddItemAt(NewItem, SlotIndex, OutRemainingItem, false, false)) + { + case EAddItemResult::FullyAdded: + return EAddItemResult::FullyAdded; + case EAddItemResult::PartiallyAdded: + NewItem = OutRemainingItem; + PartiallyAdded = true; + break; + case EAddItemResult::Failed: + break; + } + } + + // Get first free Slot and add the Item there + if (GetFirstFreeSlot(FreeSlotIndex)) { + EAddItemResult a = AddItemAt(NewItem, FreeSlotIndex, OutRemainingItem, false, true); + return a; + } + + if (PartiallyAdded) return EAddItemResult::PartiallyAdded; + return EAddItemResult::Failed; +} + +EAddItemResult UInventoryComponent::AddItemAt(FItemData NewItem, int32 SlotIndex, FItemData& OutRemainingItem, bool AllowSwitch, bool AllowEmptySlots) +{ + OutRemainingItem = FItemData(); + + if (!ItemList.IsValidIndex(SlotIndex)) return EAddItemResult::Failed; // Check if the Index is valid + if (!NewItem.IsValid() || !NewItem.Definition) return EAddItemResult::Failed; // Check if a valid Item was provided + + FItemData& ItemSlot = ItemList[SlotIndex]; + + if (!AllowEmptySlots && !ItemSlot.IsValid()) return EAddItemResult::Failed; // If the Slot is empty and AllowEmptySlots is false the Item cannot be added + + // Add the Item to an emtpy slot + if (AllowEmptySlots && !ItemSlot.IsValid()) { + ItemSlot = NewItem; + OnInventoryChanged.Broadcast(); + return EAddItemResult::FullyAdded; + } + + // Add Item to existing Stack + if (ItemSlot.Definition && ItemSlot.Definition->ID == NewItem.Definition->ID) { + if (ItemSlot.HasTag(Item_Flag_Stackable)) { + + if (ItemSlot.CurrentStackSize + NewItem.CurrentStackSize <= ItemSlot.Definition->MaxStackSize) { + ItemSlot.CurrentStackSize += NewItem.CurrentStackSize; + OnInventoryChanged.Broadcast(); + return EAddItemResult::FullyAdded; + } + + int32 TotalStackSize = ItemSlot.CurrentStackSize + NewItem.CurrentStackSize; + ItemSlot.CurrentStackSize = ItemSlot.Definition->MaxStackSize; + + OutRemainingItem = NewItem; + OutRemainingItem.CurrentStackSize = TotalStackSize - ItemSlot.Definition->MaxStackSize; + OnInventoryChanged.Broadcast(); + return EAddItemResult::PartiallyAdded; + } + } + + // Switch an Item in an Slot if its not a Quest Item + if(AllowSwitch && !ItemSlot.HasTag(Item_Flag_Quest)){ + OutRemainingItem = ItemSlot; + ItemSlot = NewItem; + OnInventoryChanged.Broadcast(); + return EAddItemResult::Switched; + } + + return EAddItemResult::Failed; +} + +void UInventoryComponent::SetItemAt(FItemData NewItem, int32 SlotIndex) +{ + if (!ItemList.IsValidIndex(SlotIndex)) return; + + ItemList[SlotIndex] = NewItem; + OnInventoryChanged.Broadcast(); +} + +const TArray UInventoryComponent::FindItemsByID(FName ItemID) const +{ + TArray FoundItems; + + for (FItemData Item : ItemList) { + if (Item.Definition->ID != ItemID) continue; + + FoundItems.Add(Item); + + } + + return FoundItems; +} + +bool UInventoryComponent::GetFirstFreeSlot(int32& SlotIndex) const +{ + int32 Index = 0; + for (const FItemData Item : ItemList) { + if (!Item.IsValid()) { + SlotIndex = Index; + return true; + } + + Index++; + } + return false; +} + +void UInventoryComponent::SetInventorySize(int32 NewInventorySize) +{ + InventorySize = NewInventorySize; + ItemList.SetNum(InventorySize); + OnInventoryChanged.Broadcast(); +} + +int32 UInventoryComponent::GetInventorySize() const +{ + return InventorySize; +} + +void UInventoryComponent::DropItemData_Implementation(FItemData ItemToDrop) +{ + if (!ItemToDrop.IsValid()) return; + + FTransform LocationToDrop = GetDropTransform(); + if (!LocationToDrop.IsValid()) return; // Currently not nececarry, as the output is always Valid unless the DropTransfrom calculation is Valid surly at some point. + + DropItem(ItemToDrop, LocationToDrop); +} + +void UInventoryComponent::DropItemAtSlot_Implementation(int32 SlotIndex) +{ + if (!ItemList.IsValidIndex(SlotIndex)) return; + + FItemData ItemToDrop = GetItemAt(SlotIndex); + RemoveItemAt(SlotIndex); + + DropItemData(ItemToDrop); +} + +FTransform UInventoryComponent::GetDropTransform() const +{ + AActor* Owner = GetOwner(); + if (!Owner) return FTransform::Identity; + + FVector SpawnLocation = Owner->GetActorLocation() + (Owner->GetActorForwardVector() * DropDistance); + + return FTransform(Owner->GetActorRotation(), SpawnLocation); +} + +bool UInventoryComponent::ContainsItem(FName ItemID, int32 AmountToFind) const +{ + + int32 AmountFound = 0; + + for (FItemData Item : ItemList) { + if (Item.IsValid() && Item.Definition && Item.Definition->ID == ItemID) { + AmountFound += Item.CurrentStackSize; + } + + if (AmountFound >= AmountToFind) { + return true; + } + } + + return false; +} + +bool UInventoryComponent::ContainsItems(const TMap& RequiredItems) const +{ + for (const auto& Pair : RequiredItems) { + if (!ContainsItem(Pair.Key, Pair.Value)) return false; + } + + return true; +} + +bool UInventoryComponent::RemoveItem(FName ItemID, int32 Amount) +{ + if (!ContainsItem(ItemID, Amount))return false; + + for (FItemData& Item : ItemList) { + if (!Item.IsValid() || Item.Definition->ID != ItemID) continue; + + Item.CurrentStackSize -= Amount; + if (Item.CurrentStackSize <= 0) { + Amount = FMath::Abs(Item.CurrentStackSize); + Item = FItemData(); + + if (Amount == 0) { + OnInventoryChanged.Broadcast(); + return true; + } + } + else { + OnInventoryChanged.Broadcast(); + return true; + } + } + + OnInventoryChanged.Broadcast(); + return true; +} + +bool UInventoryComponent::RemoveItems(const TMap& RequiredItems) +{ + if (!ContainsItems(RequiredItems)) return false; + for (const auto& Pair : RequiredItems) { + RemoveItem(Pair.Key, Pair.Value); + } + + OnInventoryChanged.Broadcast(); + return true; +} + +void UInventoryComponent::RemoveItemAt(int32 SlotIndex) +{ + if (!ItemList.IsValidIndex(SlotIndex)) return; + ItemList[SlotIndex] = FItemData(); + OnInventoryChanged.Broadcast(); +} + +int32 UInventoryComponent::GetItemAmount(FName ID) const +{ + int32 Amount = 0; + for (const FItemData& Item : ItemList) { + if (Item.IsValid() && Item.Definition->ID == ID) Amount += Item.CurrentStackSize; + } + + return Amount; +} + +void UInventoryComponent::Sort(ESortType SortType) +{ + if (GEngine) { GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("ToDo: Implement Inventory Sorting")); } + switch (SortType) { + case ESortType::Alpabeticaly: + break; + case ESortType::Type: + break; + case ESortType::Weight: + break; + case ESortType::Amount: + break; + } + + OnInventoryChanged.Broadcast(); +} + +void UInventoryComponent::SetMaxCapacity_Implementation(float NewMaxCapacity) +{ + MaxCapacity = NewMaxCapacity; +} + + +void UInventoryComponent::DropItem_Implementation(FItemData ItemToDrop, const FTransform& SpawnTransform) +{ + if (!ItemToDrop.IsValid() || !ItemToDrop.Definition) return; + + AItemActor* DroppedActor = GetWorld()->SpawnActorDeferred( + ItemToDrop.Definition->ItemActorClass, + SpawnTransform, + GetOwner() + ); + + if (!DroppedActor) return; + + DroppedActor->SetItemObject(ItemToDrop); + DroppedActor->FinishSpawning(SpawnTransform); + + OnInventoryChanged.Broadcast(); + return; +} + + + + + diff --git a/Source/MaybeThisTime/Private/InventoryInterface.cpp b/Source/MaybeThisTime/Private/InventoryInterface.cpp new file mode 100644 index 0000000..ba30cde --- /dev/null +++ b/Source/MaybeThisTime/Private/InventoryInterface.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "InventoryInterface.h" + diff --git a/Source/MaybeThisTime/Private/ItemActor.cpp b/Source/MaybeThisTime/Private/ItemActor.cpp new file mode 100644 index 0000000..6650675 --- /dev/null +++ b/Source/MaybeThisTime/Private/ItemActor.cpp @@ -0,0 +1,103 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "ItemActor.h" +#include "Net/UnrealNetwork.h" +#include "BaseCharacter.h" +#include "InventoryInterface.h" + +// Sets default values +AItemActor::AItemActor() +{ + bAlwaysRelevant = true; + bReplicates = true; + SetReplicateMovement(true); + + PrimaryActorTick.bCanEverTick = false; + MeshComponent = CreateDefaultSubobject(TEXT("MeshComponent")); + RootComponent = MeshComponent; + + MeshComponent->SetCollisionResponseToChannel(ECC_GameTraceChannel2, ECR_Block); +} + +// Called when the game starts or when spawned +void AItemActor::BeginPlay() +{ + Super::BeginPlay(); + + if (!ItemData.IsValid()) return; + + if (!ItemData.Definition || !ItemData.Definition->StaticMesh) + { + UE_LOG(LogTemp, Error, TEXT("Fuck this Item")); + Destroy(); + return; + } + + MeshComponent->SetStaticMesh(ItemData.Definition->StaticMesh); +} + +void AItemActor::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + DOREPLIFETIME(AItemActor, ItemData); +} + +void AItemActor::Interact_Implementation(AActor* Interactor) +{ + if (!HasAuthority()) return; + if (!Interactor || !Interactor->Implements()) return; + + UInventoryComponent* Inventory = IInventoryInterface::Execute_GetInventoryComponent(Interactor); + if (!Inventory) return; + + FItemData OutRemainingItem; + EAddItemResult Result = Inventory->TryAddItem(ItemData, OutRemainingItem); + + switch (Result) + { + case EAddItemResult::FullyAdded: + Destroy(); + return; + case EAddItemResult::PartiallyAdded: + SetItemObject(OutRemainingItem); + return; + default: + return; + } +} + +void AItemActor::LookingAt_Implementation(AActor* Interactor, bool IsLooking) +{ + if (!Interactor) return; + if (!ItemData.IsValid() || !ItemData.Definition) return; + + // ToDo +} + +void AItemActor::SetItemObject(FItemData NewItem) +{ + ItemData = NewItem; +} + +void AItemActor::Destroyed() +{ + Super::Destroyed(); + // ToDo(maybe): Add other cleanupstuff +} + +void AItemActor::OnRep_ItemData() +{ + if (!ItemData.Definition || + !ItemData.Definition->StaticMesh) + { + return; + } + + MeshComponent->SetStaticMesh(ItemData.Definition->StaticMesh); +} + +FItemData AItemActor::GetItemData() const +{ + return ItemData; +} diff --git a/Source/MaybeThisTime/Private/ItemData.cpp b/Source/MaybeThisTime/Private/ItemData.cpp new file mode 100644 index 0000000..8339fb3 --- /dev/null +++ b/Source/MaybeThisTime/Private/ItemData.cpp @@ -0,0 +1,4 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "ItemData.h" diff --git a/Source/MaybeThisTime/Private/ItemDefinition.cpp b/Source/MaybeThisTime/Private/ItemDefinition.cpp new file mode 100644 index 0000000..7e0e05d --- /dev/null +++ b/Source/MaybeThisTime/Private/ItemDefinition.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "ItemDefinition.h" + diff --git a/Source/MaybeThisTime/Private/ItemObject.cpp b/Source/MaybeThisTime/Private/ItemObject.cpp new file mode 100644 index 0000000..1f6eaca --- /dev/null +++ b/Source/MaybeThisTime/Private/ItemObject.cpp @@ -0,0 +1,115 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "ItemObject.h" +#include "MyGameplayTags.h" +#include "Net/UnrealNetwork.h" + +UItemObject::UItemObject() +{ + + +} + +UItemObject::~UItemObject() +{ + + +} + +void UItemObject::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + + DOREPLIFETIME(UItemObject, CurrentStackSize); + DOREPLIFETIME(UItemObject, CurrentDurability); + DOREPLIFETIME(UItemObject, Definition); +} + +bool UItemObject::HasTag(FGameplayTag Tag) const +{ + return Definition->Tags.HasTag(Tag);; +} + + + +int32 UItemObject::AddToStack(int32 Value) +{ + if (!HasTag(Item_Flag_Stackable)) { + CurrentStackSize = 1; + return Value; + } + + int32 NewTotal = CurrentStackSize + Value; + CurrentStackSize = FMath::Min(CurrentStackSize + Value, Definition->MaxStackSize); + int32 Overflow = FMath::Max(NewTotal - Definition->MaxStackSize, 0); + + CurrentStackSize = FMath::Min(NewTotal, Definition->MaxStackSize); + + return Overflow; +} + +float UItemObject::AddToDurability(float Value) +{ + if (!HasTag(Item_Flag_Durable)) { + CurrentDurability = 1; + return Value; + } + + float NewTotal = CurrentDurability + Value; + float Overflow = FMath::Max(NewTotal - Definition->MaxDurability, 0.f); + + CurrentDurability = FMath::Min(NewTotal, Definition->MaxDurability); + + return Overflow; +} + +int32 UItemObject::SetStack(int32 NewValue) +{ + if (!HasTag(Item_Flag_Stackable)) + { + CurrentStackSize = 1; + return NewValue; + } + + int32 ClampedValue = FMath::Clamp(NewValue, 0, Definition->MaxStackSize); + int32 Overflow = NewValue - ClampedValue; + + CurrentStackSize = ClampedValue; + + return FMath::Max(Overflow, 0); +} + +float UItemObject::SetDurability(float NewValue) +{ + if (!HasTag(Item_Flag_Durable)) + { + CurrentDurability = 1; + return NewValue; + } + + float ClampedValue = FMath::Clamp(NewValue, 0.f, Definition->MaxDurability); + float Overflow = NewValue - ClampedValue; + + CurrentDurability = ClampedValue; + + return FMath::Max(Overflow, 0); +} + +void UItemObject::SetItemDefinition(UItemDefinition* NewDefinition) +{ + if (!NewDefinition) return; + Definition = NewDefinition; +} + +TArray> UItemObject::GetGrantedEffects() const +{ + return Definition->GrantedEffects; +} + +TArray> UItemObject::GetGrantedAbility() const +{ + return Definition->GrantedAbility; +} + + diff --git a/Source/MaybeThisTime/Private/ItemRegistry.cpp b/Source/MaybeThisTime/Private/ItemRegistry.cpp new file mode 100644 index 0000000..41b46de --- /dev/null +++ b/Source/MaybeThisTime/Private/ItemRegistry.cpp @@ -0,0 +1,50 @@ +// ItemRegistry.cpp +#include "ItemRegistry.h" + +void UItemRegistry::Initialize(FSubsystemCollectionBase& Collection) +{ + Super::Initialize(Collection); + + ItemDataTable = TSoftObjectPtr(FSoftObjectPath(TEXT("/Game/Inventory/ItemRegisterDataTable.ItemRegisterDataTable"))); + + LoadTable(); +} + +void UItemRegistry::LoadTable() +{ + if (ItemDataTable.IsNull()) + { + UE_LOG(LogTemp, Warning, TEXT("ItemRegistry: No DataTable assigned!")); + return; + } + + LoadedTable = ItemDataTable.LoadSynchronous(); + if (!LoadedTable) + { + UE_LOG(LogTemp, Error, TEXT("ItemRegistry: Failed to load DataTable!")); + return; + } + + UE_LOG(LogTemp, Log, TEXT("ItemRegistry: Loaded %d items"),LoadedTable->GetRowNames().Num()); +} + +UItemDefinition* UItemRegistry::GetDefinition(FName ItemID) const +{ + if (!LoadedTable || ItemID.IsNone()) return nullptr; + + const FItemRegistryRow* Row = LoadedTable->FindRow(ItemID, TEXT("ItemRegistry::GetDefinition")); + + if (!Row || !Row->Definition) return nullptr; + return Row->Definition; +} + +bool UItemRegistry::IsValidItem(FName ItemID) const +{ + return GetDefinition(ItemID) != nullptr; +} + +TArray UItemRegistry::GetAllItemIDs() const +{ + if (!LoadedTable) return {}; + return LoadedTable->GetRowNames(); +} \ No newline at end of file diff --git a/Source/MaybeThisTime/Private/ModuleActor.cpp b/Source/MaybeThisTime/Private/ModuleActor.cpp new file mode 100644 index 0000000..d3b108c --- /dev/null +++ b/Source/MaybeThisTime/Private/ModuleActor.cpp @@ -0,0 +1,285 @@ + +#include "ModuleActor.h" +#include "ZoneActor.h" +#include "InventoryComponent.h" +#include "BaseUnit.h" +#include "Net/UnrealNetwork.h" +#include +#include "ItemRegistry.h" + +AModuleActor::AModuleActor() +{ + bReplicates = true; + PrimaryActorTick.bCanEverTick = false; +} + +void AModuleActor::BeginPlay() +{ + Super::BeginPlay(); + if (!HasAuthority()) return; + + // Auto register with DefaultZone if set in editor + if (DefaultZone) + { + ForceCompleteConstruction(DefaultZone); + } +} + +void AModuleActor::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + if (OwningZone) + { + OwningZone->UnregisterModule(this); + } +} + +void AModuleActor::GetLifetimeReplicatedProps( + TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + DOREPLIFETIME(AModuleActor, Definition); + DOREPLIFETIME(AModuleActor, ModuleState); + DOREPLIFETIME(AModuleActor, ConstructionProgress); + DOREPLIFETIME(AModuleActor, OwningZone); + DOREPLIFETIME(AModuleActor, AssignedWorkers); +} + +void AModuleActor::AddResourceToZone(UInventoryComponent* ZoneStorage, FName ResourceID, float Amount) +{ + UE_LOG(LogTemp, Warning, TEXT("Adding %f of %s to zone storage"), Amount, *ResourceID.ToString()); + if (!ZoneStorage) return; + + UItemRegistry* Registry = GetGameInstance()->GetSubsystem(); + if (!Registry) return; + + UItemDefinition* Def = Registry->GetDefinition(ResourceID); + if (!Def) + { + UE_LOG(LogTemp, Warning, TEXT("ModuleActor: Unknown resource ID: %s"), *ResourceID.ToString()); + return; + } + + FItemData NewItem; + NewItem.Definition = Def; + NewItem.CurrentStackSize = FMath::FloorToInt(Amount); + NewItem.Definition->Tags.AddTag(Item_Flag_Resource); + + FItemData OutRemaining; + EAddItemResult Result = ZoneStorage->TryAddItem(NewItem, OutRemaining); + + if (Result == EAddItemResult::PartiallyAdded) + { + UE_LOG(LogTemp, Warning, TEXT("Zone storage full, overflow: %d of %s"), + OutRemaining.CurrentStackSize, *ResourceID.ToString()); + } + else if (Result == EAddItemResult::Failed) + { + UE_LOG(LogTemp, Warning, TEXT("Zone storage completely full, could not add %s"), + *ResourceID.ToString()); + } +} + +bool AModuleActor::CanAffordConstruction(UInventoryComponent* PayingInventory) const +{ + if (!Definition || !PayingInventory) return false; + + for (const FModuleCost& Cost : Definition->ConstructionCost) + { + if (PayingInventory->GetResource(Cost.ResourceID) < Cost.Amount) + return false; + } + return true; +} + +bool AModuleActor::StartConstruction( + AZoneActor* Zone, UInventoryComponent* PayingInventory) +{ + if (!HasAuthority()) return false; + if (!Definition || !Zone) return false; + if (!CanAffordConstruction(PayingInventory)) return false; + + // Deduct construction cost + for (const FModuleCost& Cost : Definition->ConstructionCost) + { + PayingInventory->ConsumeResource(Cost.ResourceID, Cost.Amount); + } + + OwningZone = Zone; + Zone->RegisterModule(this); + ModuleState = EModuleState::UnderConstruction; + ConstructionProgress = 0.f; + OnModuleStateChanged.Broadcast(ModuleState); + + return true; +} + +void AModuleActor::TickProduction( + float GameHoursDelta, UInventoryComponent* ZoneStorage) +{ + if (!HasAuthority() || !Definition) return; + switch (ModuleState) + { + case EModuleState::UnderConstruction: + TickConstruction(GameHoursDelta); + break; + case EModuleState::Active: + TickActiveProduction(GameHoursDelta, ZoneStorage); + break; + default: + break; + } +} + +void AModuleActor::TickConstruction(float GameHoursDelta) +{ + if (Definition->ConstructionTimeHours <= 0.f) + { + ConstructionProgress = 1.f; + } + else + { + ConstructionProgress += GameHoursDelta / Definition->ConstructionTimeHours; + ConstructionProgress = FMath::Clamp(ConstructionProgress, 0.f, 1.f); + } + + if (ConstructionProgress >= 1.f) + { + ModuleState = EModuleState::Inactive; + UpdateWorkingState(); // check if we should go Active immediately + OnModuleStateChanged.Broadcast(ModuleState); + } +} + +void AModuleActor::TickActiveProduction(float GameHoursDelta, UInventoryComponent* ZoneStorage) +{ + UE_LOG(LogTemp, Warning, TEXT("Module %s ticking production"), *GetName()); + if (!ZoneStorage) return; + + // Produce outputs + for (const FModuleResourceRate& Rate : Definition->ProducedResources) + { + // Worker-required production scales with worker count + float WorkerMultiplier = 1.f; + if (Rate.bRequiresWorkers) + { + if (AssignedWorkers.Num() == 0) continue; + WorkerMultiplier = FMath::Clamp( (float)AssignedWorkers.Num() / Definition->MaxWorkers, 0.f, 1.f); + } + + float AmountToAdd = Rate.AmountPerHour * GameHoursDelta * WorkerMultiplier; + AddResourceToZone(ZoneStorage, Rate.ResourceID, AmountToAdd); + } +} + +void AModuleActor::UpdateWorkingState() +{ + if (!Definition) return; + if (ModuleState == EModuleState::UnderConstruction) return; + if (ModuleState == EModuleState::Destroyed) return; + + bool bShouldBeActive = true; + + // Check minimum workers + if (Definition->MinWorkersToOperate > 0 && + AssignedWorkers.Num() < Definition->MinWorkersToOperate) + { + bShouldBeActive = false; + } + + EModuleState NewState = bShouldBeActive ? + EModuleState::Active : EModuleState::Inactive; + + if (NewState != ModuleState) + { + ModuleState = NewState; + OnModuleStateChanged.Broadcast(ModuleState); + } +} + +bool AModuleActor::AssignWorker(ABaseUnit* Unit) +{ + if (!Unit) return false; + if (!Definition) return false; + if (AssignedWorkers.Num() >= Definition->MaxWorkers) return false; + if (AssignedWorkers.Contains(Unit)) return false; + + AssignedWorkers.Add(Unit); + UpdateWorkingState(); + return true; +} + +void AModuleActor::RemoveWorker(ABaseUnit* Unit) +{ + AssignedWorkers.Remove(Unit); + UpdateWorkingState(); +} + +bool AModuleActor::CanBePlacedAt(FVector Location, AZoneActor* Zone) const +{ + if (!Definition || !Zone) return false; + + // Must be inside zone + if (!Zone->IsLocationInsideZone(Location)) return false; + + // Check overlap with other modules + for (AModuleActor* Other : Zone->Modules) + { + if (!Other || Other == this) continue; + float Dist = FVector::Dist2D(Location, Other->GetActorLocation()); + float MinDist = Definition->PlacementRadius + + (Other->Definition ? Other->Definition->PlacementRadius : 200.f); + if (Dist < MinDist) return false; + } + + return true; +} + +void AModuleActor::OnRep_Definition() +{ + OnDefinitionLoaded(); +} + +void AModuleActor::OnRep_State() +{ + OnStateChanged(ModuleState); +} + + + +void AModuleActor::OnDefinitionLoaded_Implementation() +{ + // Blueprint handles visual setup +} + +void AModuleActor::OnStateChanged_Implementation(EModuleState NewState) +{ + // Blueprint swaps ghost mesh -> real mesh when construction completes +} + +EOutlinerStatus AModuleActor::GetOutlinerStatus() const +{ + switch (ModuleState) + { + case EModuleState::UnderConstruction: return EOutlinerStatus::Construction; + case EModuleState::Active: return EOutlinerStatus::OK; + case EModuleState::Inactive: return EOutlinerStatus::Inactive; + case EModuleState::Damaged: return EOutlinerStatus::Critical; + case EModuleState::Destroyed: return EOutlinerStatus::Critical; + default: return EOutlinerStatus::Inactive; + } +} + +// Testing +// ----------------------------- + +void AModuleActor::ForceCompleteConstruction(AZoneActor* Zone) +{ + if (!HasAuthority()) return; + OwningZone = Zone; + Zone->RegisterModule(this); + ModuleState = EModuleState::Active; + ConstructionProgress = 1.f; + OnModuleStateChanged.Broadcast(ModuleState); + UE_LOG(LogTemp, Warning, TEXT("Module %s force completed"), *GetName()); +} \ No newline at end of file diff --git a/Source/MaybeThisTime/Private/ModuleDefinition.cpp b/Source/MaybeThisTime/Private/ModuleDefinition.cpp new file mode 100644 index 0000000..f02680b --- /dev/null +++ b/Source/MaybeThisTime/Private/ModuleDefinition.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "ModuleDefinition.h" diff --git a/Source/MaybeThisTime/Private/MyGameplayTags.cpp b/Source/MaybeThisTime/Private/MyGameplayTags.cpp new file mode 100644 index 0000000..af71cf0 --- /dev/null +++ b/Source/MaybeThisTime/Private/MyGameplayTags.cpp @@ -0,0 +1,28 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "MyGameplayTags.h" + + +//6.März +//10:15 + +// Flags +UE_DEFINE_GAMEPLAY_TAG(Item_Flag_Stackable, "Item.Flag.Stackable"); +UE_DEFINE_GAMEPLAY_TAG(Item_Flag_Quest, "Item.Flag.Quest"); +UE_DEFINE_GAMEPLAY_TAG(Item_Flag_Consumeable, "Item.Flag.Consumeable"); +UE_DEFINE_GAMEPLAY_TAG(Item_Flag_Durable, "Item.Flag.Durable"); +UE_DEFINE_GAMEPLAY_TAG(Item_Flag_Resource, "Item.Flag.Resource"); + +// Equipment Slots +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Belt, "Item.Type.Belt"); +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Hands, "Item.Type.Hands"); +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Head, "Item.Type.Head"); +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Legs, "Item.Type.Legs"); +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Torso, "Item.Type.Torso"); + +// Weapons +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Weapon_Ranged, "Item.Type.Weapon.Ranged"); +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Weapon_Melee, "Item.Type.Weapon.Melee"); +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Weapon_Melee_TwoHanded, "Item.Type.Weapon.Melee.TwoHanded"); +UE_DEFINE_GAMEPLAY_TAG(Item_Type_Weapon_Melee_OneHanded, "Item.Type.Weapon.Melee.OneHanded"); \ No newline at end of file diff --git a/Source/MaybeThisTime/Private/OutlinerTypes.cpp b/Source/MaybeThisTime/Private/OutlinerTypes.cpp new file mode 100644 index 0000000..d3ca64c --- /dev/null +++ b/Source/MaybeThisTime/Private/OutlinerTypes.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "OutlinerTypes.h" + diff --git a/Source/MaybeThisTime/Private/PlaceableItemActor.cpp b/Source/MaybeThisTime/Private/PlaceableItemActor.cpp new file mode 100644 index 0000000..f31bbcc --- /dev/null +++ b/Source/MaybeThisTime/Private/PlaceableItemActor.cpp @@ -0,0 +1,21 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "PlaceableItemActor.h" + +void APlaceableItemActor::BeginPlay() +{ + Super::BeginPlay(); + + if (!HasAuthority()) return; + + if (!DefaultDefinition) { Destroy(); return; } + + ItemData = FItemData(); + ItemData.SetItemDefinition(DefaultDefinition); + ItemData.SetDurability(DefaultDurability); + ItemData.SetStack(DefaultStackSize); + + if (!ItemData.Definition->StaticMesh) { Destroy(); return; } + MeshComponent->SetStaticMesh(ItemData.Definition->StaticMesh); +} diff --git a/Source/MaybeThisTime/Private/PlayerUnit.cpp b/Source/MaybeThisTime/Private/PlayerUnit.cpp new file mode 100644 index 0000000..6789452 --- /dev/null +++ b/Source/MaybeThisTime/Private/PlayerUnit.cpp @@ -0,0 +1,9 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "PlayerUnit.h" + +EOutlinerStatus APlayerUnit::GetOutlinerStatus() const +{ + return EOutlinerStatus::Player; +} diff --git a/Source/MaybeThisTime/Private/ThirdPersonCharacter.cpp b/Source/MaybeThisTime/Private/ThirdPersonCharacter.cpp new file mode 100644 index 0000000..f0f2aa9 --- /dev/null +++ b/Source/MaybeThisTime/Private/ThirdPersonCharacter.cpp @@ -0,0 +1,34 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "ThirdPersonCharacter.h" + +// Sets default values +AThirdPersonCharacter::AThirdPersonCharacter() +{ + // Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + +} + +// Called when the game starts or when spawned +void AThirdPersonCharacter::BeginPlay() +{ + Super::BeginPlay(); + +} + +// Called every frame +void AThirdPersonCharacter::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + +} + +// Called to bind functionality to input +void AThirdPersonCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); + +} + diff --git a/Source/MaybeThisTime/Private/ThirdPersonController.cpp b/Source/MaybeThisTime/Private/ThirdPersonController.cpp new file mode 100644 index 0000000..192c667 --- /dev/null +++ b/Source/MaybeThisTime/Private/ThirdPersonController.cpp @@ -0,0 +1,212 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "ThirdPersonController.h" +#include "InteractionInterface.h" +#include "Net/UnrealNetwork.h" +#include "UnitManagerComponent.h" +#include "PlayerUnit.h" +#include "TopDownGameState.h" +#include "ZoneActor.h" +#include "ModuleActor.h" +#include "Framework/Application/SlateApplication.h" + +AThirdPersonController::AThirdPersonController() +{ + UnitManager = CreateDefaultSubobject(TEXT("UnitManager")); + bShowMouseCursor = true; + bEnableClickEvents = true; + bEnableMouseOverEvents = true; + PrimaryActorTick.bCanEverTick = true; +} + +void AThirdPersonController::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + DOREPLIFETIME(AThirdPersonController, PlayerFactionID); +} + +void AThirdPersonController::BeginPlay() +{ + Super::BeginPlay(); +} + +void AThirdPersonController::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + HandleHover(); +} + +bool AThirdPersonController::IsMouseOverUI() const +{ + ULocalPlayer* LP = GetLocalPlayer(); + if (!LP || !LP->ViewportClient) return false; + + FVector2D MousePos; + if (!LP->ViewportClient->GetMousePosition(MousePos)) return false; + + FWidgetPath WidgetPath = FSlateApplication::Get() + .LocateWindowUnderMouse( + FSlateApplication::Get().GetCursorPos(), + FSlateApplication::Get().GetInteractiveTopLevelWindows(), + false); + + if (!WidgetPath.IsValid()) return false; + + for (int32 i = WidgetPath.Widgets.Num() - 1; i >= 0; i--) + { + FString Type = WidgetPath.Widgets[i].Widget->GetTypeAsString(); + if (Type == TEXT("SViewport") || + Type == TEXT("SGameLayerManager")) + { + return false; // hit viewport before any UI + } + if (Type == TEXT("SObjectWidget")) // UMG widget + { + return true; + } + } + return false; +} + +TArray AThirdPersonController::GetOwnedZones() const +{ + ATopDownGameState* GS = GetWorld()->GetGameState(); + if (!GS) return {}; + return GS->GetZonesForFaction(PlayerFactionID); +} + + +void AThirdPersonController::HandleHover() +{ + FHitResult Hit; + GetHitResultUnderCursor(ECC_GameTraceChannel2, false, Hit); + + AActor* NewHovered = Hit.GetActor(); + + // Actor changed + if (NewHovered != LastHoveredActor) + { + // Stop looking at old actor + if (LastHoveredActor && LastHoveredActor->Implements()) + { + IInteractionInterface::Execute_LookingAt(LastHoveredActor, GetPawn(), false); + } + + // Start looking at new actor + if (NewHovered && NewHovered->Implements()) + { + IInteractionInterface::Execute_LookingAt(NewHovered, GetPawn(), true); + } + + LastHoveredActor = NewHovered; + } + + HoveredActor = NewHovered; +} + +void AThirdPersonController::HandleLeftClick() +{ + if (IsMouseOverUI()) return; + + FHitResult Hit; + GetHitResultUnderCursor(ECC_GameTraceChannel2, false, Hit); + + AActor* ClickedActor = Hit.GetActor(); + if (!ClickedActor) return; + + // Try to select an Actor + if (SelectClickedActor(ClickedActor)) return; +} + +void AThirdPersonController::HandleRightClick() +{ + FHitResult Hit; + GetHitResultUnderCursor(ECC_GameTraceChannel2, false, Hit); + + AActor* ClickedActor = Hit.GetActor(); + if (!ClickedActor) return; + + // Issue Commands + if (ClickedActor && ClickedActor->Implements()) + { + UnitManager->IssueInteractCommand(ClickedActor, bShiftHeld); + } + else + { + UnitManager->IssueMoveCommand(Hit.Location, bShiftHeld); + } +} + + +bool AThirdPersonController::SelectClickedActor(AActor* ClickedActor) +{ + if (ABaseUnit* ClickedUnit = Cast(ClickedActor)) + { + SelectUnit(ClickedUnit, bShiftHeld); + return true; + } + + if (AZoneActor* ClickedZone = Cast(ClickedActor)) + { + SelectZone(ClickedZone, bShiftHeld); + return true; + } + + if (AModuleActor* ClickedModule = Cast(ClickedActor)) + { + SelectZone(ClickedModule->OwningZone, bShiftHeld); + return true; + } + + ClearUnitSelection(); + return false; +} + +void AThirdPersonController::SelectUnit(ABaseUnit* Unit, bool bAddToSelection) +{ + if (!Unit) return; + if (!bAddToSelection) ClearMySelection(); + if (!SelectedUnits.Contains(Unit)) + { + SelectedUnits.Add(Unit); + UnitManager->AddUnitToSquad(Unit); + } + OnSelectionChanged.Broadcast(); +} + +void AThirdPersonController::ClearUnitSelection() +{ + SelectedUnits.Empty(); + UnitManager->ClearSquad(); + OnSelectionChanged.Broadcast(); +} + +void AThirdPersonController::BoxSelect(TArray UnitsInBox) +{ + ClearUnitSelection(); + for (ABaseUnit* Unit : UnitsInBox) + { + if (IsValid(Unit)) SelectedUnits.Add(Unit); + } + OnSelectionChanged.Broadcast(); +} + +void AThirdPersonController::SelectZone(AZoneActor* Zone, bool bAddToSelection) +{ + if (!Zone) return; + if (!bAddToSelection) ClearMySelection(); + if (!SelectedZones.Contains(Zone)) SelectedZones.Add(Zone); + OnSelectionChanged.Broadcast(); +} + +void AThirdPersonController::ClearZoneSelection() +{ + SelectedZones.Empty(); + OnSelectionChanged.Broadcast(); +} + +void AThirdPersonController::ClearMySelection() +{ + ClearUnitSelection(); + ClearZoneSelection(); +} diff --git a/Source/MaybeThisTime/Private/TopDownGameMode.cpp b/Source/MaybeThisTime/Private/TopDownGameMode.cpp new file mode 100644 index 0000000..aa12dd0 --- /dev/null +++ b/Source/MaybeThisTime/Private/TopDownGameMode.cpp @@ -0,0 +1,73 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "TopDownGameMode.h" +#include "ThirdPersonController.h" +#include "BaseUnit.h" +#include "TopDownGameState.h" +#include "FactionManager.h" +#include "PlayerUnit.h" +#include "UnitManagerComponent.h" + +ABaseUnit* ATopDownGameMode::SpawnUnit(TSubclassOf UnitClass, FTransform SpawnTransform, FName FactionID) +{ + if (!UnitClass) return nullptr; + + FActorSpawnParameters Params; + Params.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn; + + ABaseUnit* Unit = GetWorld()->SpawnActor(UnitClass, SpawnTransform, Params); + + if (!Unit) return nullptr; + + if (!FactionID.IsNone()) Unit->PrimaryFaction = FactionID; + + // Register with GameState + ATopDownGameState* CurrentGameState = GetGameState(); + if (CurrentGameState) CurrentGameState->RegisterUnit(Unit); + + return Unit; +} + +void ATopDownGameMode::BeginPlay() +{ + Super::BeginPlay(); + +} + +void ATopDownGameMode::PostLogin(APlayerController* NewPlayer) +{ + Super::PostLogin(NewPlayer); + + ATopDownGameState* GS = GetGameState(); + AThirdPersonController* PC = Cast(NewPlayer); + if (!GS || !GS->FactionManager || !PC) return; + + // Create a unique faction for this player + FFactionData PlayerFaction; + PlayerFaction.FactionID = FName(*FString::Printf(TEXT("Player_%d"), GS->FactionManager->Factions.Num())); + PlayerFaction.DisplayName = FText::FromString("Player Faction"); + PlayerFaction.FactionType = EFactionType::PlayerFaction; + PlayerFaction.FactionColor = FLinearColor::Blue; + PlayerFaction.RelationsTo.Add(FFactionRelation{ FactionID::Feral, -100 }); + GS->FactionManager->RegisterFaction(PlayerFaction); + + // Store faction ID on the controller + PC->PlayerFactionID = PlayerFaction.FactionID; + + // Spawn PlayerUnit near the controller's pawn + FVector SpawnLocation = PC->GetPawn() ? PC->GetPawn()->GetActorLocation() : FVector::ZeroVector; + FTransform SpawnTransform(FRotator::ZeroRotator, SpawnLocation); + + ABaseUnit* SpawnedUnit = SpawnUnit(DefaultPlayerUnitClass, SpawnTransform, PlayerFaction.FactionID); + APlayerUnit* PlayerUnit = Cast(SpawnedUnit); + + if (PlayerUnit) + { + PC->PlayerUnit = PlayerUnit; + PC->UnitManager->AddUnitToSquad(PlayerUnit); + PlayerUnit->DisplayName = FText::FromString("Player"); + } + + GS->OnWorldStateChanged.Broadcast(); +} diff --git a/Source/MaybeThisTime/Private/TopDownGameState.cpp b/Source/MaybeThisTime/Private/TopDownGameState.cpp new file mode 100644 index 0000000..c1cc4c8 --- /dev/null +++ b/Source/MaybeThisTime/Private/TopDownGameState.cpp @@ -0,0 +1,194 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "TopDownGameState.h" +#include "FactionManager.h" +#include "Net/UnrealNetwork.h" +#include "BaseUnit.h" +#include "ZoneActor.h" +#include "ThirdPersonController.h" + +ATopDownGameState::ATopDownGameState() +{ + FactionManager = CreateDefaultSubobject(TEXT("FactionManager")); +} + +void ATopDownGameState::BroadcastWorldStateChanged() +{ + OnWorldStateChanged.Broadcast(); + if (HasAuthority()) + { + WorldStateVersion++; + } +} + +void ATopDownGameState::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + OnWorldStateChanged.Clear(); +} + +void ATopDownGameState::BeginPlay() +{ + Super::BeginPlay(); + + if (!HasAuthority()) return; // only server runs the timer + + GetWorldTimerManager().SetTimer( + GameTickTimerHandle, + this, + &ATopDownGameState::OnGameTick, + RealSecondsPerGameHour, + true // loop + ); + +} + +void ATopDownGameState::OnRep_GameTime() +{ + // Clients update their UI when time replicates + OnGameTimeChanged.Broadcast(GameHour, GameDay); +} + +void ATopDownGameState::OnRep_WorldStateVersion() +{ + OnWorldStateChanged.Broadcast(); +} + +void ATopDownGameState::TickAllUnits(float GameHoursDelta) +{ + for (ABaseUnit* Unit : AllUnits) + { + if (!IsValid(Unit)) continue; + TickUnitNeeds(Unit, GameHoursDelta); + } +} + +void ATopDownGameState::TickUnitNeeds(ABaseUnit* Unit, float GameHoursDelta) +{ + UAbilitySystemComponent* ASC = Unit->GetAbilitySystemComponent(); + if (!ASC) return; + + const UBaseAttributeSet* AS = ASC->GetSet(); + if (!AS) return; + + +} + +AZoneActor* ATopDownGameState::GetZoneAtLocation(FVector Location) const +{ + for (AZoneActor* Zone : AllZones) + { + if (IsValid(Zone) && Zone->IsLocationInsideZone(Location)) + { + return Zone; + } + } + return nullptr; +} + +FText ATopDownGameState::GetFormattedTime() const +{ + int32 Hour = FMath::FloorToInt(GameHour); + int32 Minute = FMath::FloorToInt((GameHour - Hour) * 60.f); + return FText::FromString(FString::Printf(TEXT("%02d:%02d"), Hour, Minute)); +} + +bool ATopDownGameState::IsNightTime() const +{ + return GameHour < 6.f || GameHour >= 20.f; +} + +void ATopDownGameState::RegisterUnit(ABaseUnit* Unit) +{ + if (!Unit || AllUnits.Contains(Unit)) return; + AllUnits.Add(Unit); + + OnWorldStateChanged.Broadcast(); + WorldStateVersion++; +} + +void ATopDownGameState::UnregisterUnit(ABaseUnit* Unit) +{ + AllUnits.Remove(Unit); + + OnWorldStateChanged.Broadcast(); + WorldStateVersion++; +} + +void ATopDownGameState::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + DOREPLIFETIME(ATopDownGameState, GameHour); + DOREPLIFETIME(ATopDownGameState, GameDay); + DOREPLIFETIME(ATopDownGameState, AllUnits); + DOREPLIFETIME(ATopDownGameState, AllZones); + DOREPLIFETIME(ATopDownGameState, WorldStateVersion); +} + +void ATopDownGameState::OnGameTick() +{ + UE_LOG(LogTemp, Warning, TEXT("GameTick Hour %f"), GameHour); + GameHour += 1.f; + if (GameHour >= 24.f) { GameHour = 0.f; GameDay++; } + OnGameTimeChanged.Broadcast(GameHour, GameDay); + + // Tick zones first (they supply units) + for (AZoneActor* Zone : AllZones) + { + if (IsValid(Zone)) Zone->TickZone(1.f); + } + + // Then tick unit needs (consumes from own inventory if zone didn't supply) + TickAllUnits(1.f); + + if (FactionManager) FactionManager->EvaluateFactionNeeds(); +} + +void ATopDownGameState::RegisterZone(AZoneActor* Zone) +{ + if (!Zone || AllZones.Contains(Zone)) return; + AllZones.Add(Zone); + + OnWorldStateChanged.Broadcast(); + WorldStateVersion++; +} + +void ATopDownGameState::UnregisterZone(AZoneActor* Zone) +{ + AllZones.Remove(Zone); + + OnWorldStateChanged.Broadcast(); + WorldStateVersion++; +} + +TArray ATopDownGameState::GetAllFactions() const +{ + if (!FactionManager) return {}; + return FactionManager->Factions; +} + +float ATopDownGameState::GetPlayerMoney() const +{ + AThirdPersonController* PC = Cast(GetWorld()->GetFirstPlayerController()); + if (!PC || !FactionManager) return 0.f; + + FFactionData* Faction = FactionManager->GetFaction(PC->PlayerFactionID); + return Faction ? Faction->Money : 0.f; +} + +TArray ATopDownGameState::GetZonesForFaction(FName FactionID) const +{ + return AllZones.FilterByPredicate([FactionID](const AZoneActor* Zone) + { + return IsValid(Zone) && Zone->OwningFaction == FactionID; + }); +} + +TArray ATopDownGameState::GetUnitsForFaction(FName FactionID) const +{ + return AllUnits.FilterByPredicate([FactionID](const ABaseUnit* Unit) + { + return IsValid(Unit) && Unit->PrimaryFaction == FactionID; + }); +} \ No newline at end of file diff --git a/Source/MaybeThisTime/Private/UnitManagerComponent.cpp b/Source/MaybeThisTime/Private/UnitManagerComponent.cpp new file mode 100644 index 0000000..4649335 --- /dev/null +++ b/Source/MaybeThisTime/Private/UnitManagerComponent.cpp @@ -0,0 +1,95 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "UnitManagerComponent.h" +#include "BaseUnit.h" +#include "BaseCommands.h" +#include "Commands/CommandComponent.h" + +UUnitManagerComponent::UUnitManagerComponent() +{ + PrimaryComponentTick.bCanEverTick = false; + + +} + +ABaseUnit* UUnitManagerComponent::GetFreeUnit() +{ + for (ABaseUnit* Unit : Squad) + { + if (!Unit->CommandComponent->IsExecutingCommad()) return Unit; + } + + return nullptr; +} + +void UUnitManagerComponent::IssueCommandToUnit(UBaseCommand* Command, ABaseUnit* Unit) +{ + if (!Command || !Unit) return; + + Unit->CommandComponent->GiveCommand(Command); +} + +void UUnitManagerComponent::IssueCommandToUnits(UBaseCommand* Command, TArray Units) +{ + if (!Command) return; + for (ABaseUnit* Unit : Units) + { + if (!Unit) return; + Unit->CommandComponent->GiveCommand(Command); + } +} + +void UUnitManagerComponent::IssueCommandToSquad(UBaseCommand* Command) +{ + if (!Command) return; + for (ABaseUnit* Unit : Squad) + { + if (!Unit) return; + Unit->CommandComponent->GiveCommand(Command); + } +} + +void UUnitManagerComponent::IssueInteractCommand(AActor* TargetActor, bool bQueue) +{ + ABaseUnit* Unit = GetFreeUnit(); + if (!Unit) return; + + UInteractCommand* Command = NewObject(Unit); + Command->TargetActor = TargetActor; + Unit->CommandComponent->GiveCommand(Command, bQueue); +} + +void UUnitManagerComponent::IssueMoveCommand(FVector Location, bool bQueue) +{ + for (ABaseUnit* Unit : Squad) + { + if (!Unit) return; + UMoveToCommand* Command = NewObject(Unit); + Command->Destination = Location; + Unit->CommandComponent->GiveCommand(Command, bQueue); + } +} + +void UUnitManagerComponent::AddUnitToSquad(ABaseUnit* Unit) +{ + if (!Unit || Squad.Contains(Unit)) return; + Squad.Add(Unit); +} + +void UUnitManagerComponent::RemoveUnitFromSquad(ABaseUnit* Unit) +{ + if (!Unit || !Squad.Contains(Unit)) return; + Squad.Remove(Unit); +} + +void UUnitManagerComponent::ClearSquad() +{ + Squad.Empty(); +} + +TArray UUnitManagerComponent::GetSquad() +{ + return Squad; +} + diff --git a/Source/MaybeThisTime/Private/ZoneActor.cpp b/Source/MaybeThisTime/Private/ZoneActor.cpp new file mode 100644 index 0000000..4f6544c --- /dev/null +++ b/Source/MaybeThisTime/Private/ZoneActor.cpp @@ -0,0 +1,300 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "ZoneActor.h" +#include "Components/SphereComponent.h" +#include "InventoryComponent.h" +#include "ModuleActor.h" +#include "TopDownGameState.h" +#include "FactionManager.h" +#include "Net/UnrealNetwork.h" +#include "BaseUnit.h" + +AZoneActor::AZoneActor() +{ + bReplicates = true; + PrimaryActorTick.bCanEverTick = false; // GameState drives ticking + + // Use sphere component as the zone volume - invisible at runtime + ZoneVolume = CreateDefaultSubobject(TEXT("ZoneVolume")); + ZoneVolume->SetSphereRadius(Radius); + ZoneVolume->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + ZoneVolume->SetCollisionResponseToAllChannels(ECR_Ignore); + ZoneVolume->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + ZoneVolume->SetVisibility(false); + ZoneVolume->SetHiddenInGame(true); + RootComponent = ZoneVolume; + + ZoneStorage = CreateDefaultSubobject(TEXT("ZoneStorage")); + ZoneStorage->SetIsReplicated(true); + + // Zones get much larger storage than units + ZoneStorage->SetMaxCapacity(10000.f); +} + +void AZoneActor::BeginPlay() +{ + Super::BeginPlay(); + if (!HasAuthority()) return; + + // Generate unique zone ID if not set + if (ZoneID.IsNone()) + { + ZoneID = FName(*FString::Printf(TEXT("Zone_%s"), + *FGuid::NewGuid().ToString().Left(8))); + } + + // Debug draw zone boundary + DrawDebugCylinder( + GetWorld(), + GetActorLocation() - FVector(0, 0, 100), + GetActorLocation() + FVector(0, 0, 100), + Radius, + 32, + FColor::Green, + true, // persistent + -1.f, + 0, + 5.f + ); + + // Register with GameState + if (ATopDownGameState* GS = GetWorld()->GetGameState()) + { + GS->RegisterZone(this); + GS->BroadcastWorldStateChanged(); + } +} + +void AZoneActor::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + if (ATopDownGameState* GS = GetWorld()->GetGameState()) + { + GS->UnregisterZone(this); + } +} + +void AZoneActor::GetLifetimeReplicatedProps( + TArray& OutLifetimeProps) const +{ + Super::GetLifetimeReplicatedProps(OutLifetimeProps); + DOREPLIFETIME(AZoneActor, ZoneID); + DOREPLIFETIME(AZoneActor, ZoneName); + DOREPLIFETIME(AZoneActor, OwningFaction); + DOREPLIFETIME(AZoneActor, Radius); + DOREPLIFETIME(AZoneActor, Modules); + DOREPLIFETIME(AZoneActor, FactionInfluences); +} + +bool AZoneActor::IsLocationInsideZone(FVector Location) const +{ + float DistXY = FVector2D::Distance( + FVector2D(GetActorLocation()), + FVector2D(Location)); + return DistXY <= Radius; +} + +void AZoneActor::SetRadius(float NewRadius) +{ + if (!HasAuthority()) return; + Radius = FMath::Clamp(NewRadius, 100.f, 50000.f); + UpdateVolumeSize(); +} + +void AZoneActor::UpdateVolumeSize() +{ + if (USphereComponent* Sphere = Cast(ZoneVolume)) + { + Sphere->SetSphereRadius(Radius); + } +} + +void AZoneActor::OnRep_Radius() +{ + UpdateVolumeSize(); +} + +void AZoneActor::SetOwningFaction(FName NewFaction) +{ + if (!HasAuthority()) return; + OwningFaction = NewFaction; + OnZoneChanged.Broadcast(ZoneID); +} + +void AZoneActor::ModifyInfluence(FName FactionID, float Delta) +{ + if (!HasAuthority()) return; + + FFactionInfluence* Found = FactionInfluences.FindByPredicate( + [FactionID](const FFactionInfluence& F) + { + return F.FactionID == FactionID; + }); + + if (Found) + { + Found->Influence = FMath::Clamp(Found->Influence + Delta, 0.f, 100.f); + } + else + { + FFactionInfluence NewInfluence; + NewInfluence.FactionID = FactionID; + NewInfluence.Influence = FMath::Clamp(Delta, 0.f, 100.f); + FactionInfluences.Add(NewInfluence); + } + + // Check if ownership should change + FName Dominant = GetDominantFaction(); + if (Dominant != OwningFaction && !Dominant.IsNone()) + { + SetOwningFaction(Dominant); + } + + OnZoneChanged.Broadcast(ZoneID); +} + +FName AZoneActor::GetDominantFaction() const +{ + FName Dominant; + float Highest = 0.f; + for (const FFactionInfluence& Influence : FactionInfluences) + { + if (Influence.Influence > Highest) + { + Highest = Influence.Influence; + Dominant = Influence.FactionID; + } + } + return Dominant; +} + +bool AZoneActor::CanFactionBuildHere(FName FactionID, float Reputation) const +{ + // Owning faction can always build + if (FactionID == OwningFaction) return true; + + // No owner - anyone can build + if (OwningFaction.IsNone()) return true; + + // Other factions need reputation threshold + // TODO: make threshold configurable per zone + const float ReputationThreshold = 50.f; + return Reputation >= ReputationThreshold; +} + +void AZoneActor::RegisterModule(AModuleActor* Module) +{ + if (!Module || Modules.Contains(Module)) return; + Modules.Add(Module); + OnZoneChanged.Broadcast(ZoneID); +} + +void AZoneActor::UnregisterModule(AModuleActor* Module) +{ + Modules.Remove(Module); + OnZoneChanged.Broadcast(ZoneID); +} + +// Called by GameState each game hour +void AZoneActor::TickZone(float GameHoursDelta) +{ + if (!HasAuthority()) return; + TickModuleProduction(GameHoursDelta); + TickZoneInfluence(GameHoursDelta); + SupplyUnitsInZone(GameHoursDelta); +} + +void AZoneActor::TickModuleProduction(float GameHoursDelta) +{ + UE_LOG(LogTemp, Warning, TEXT("Zone %s ticking %d modules"), + *ZoneID.ToString(), Modules.Num()); + for (AModuleActor* Module : Modules) + { + if (!IsValid(Module)) continue; + Module->TickProduction(GameHoursDelta, ZoneStorage); + } +} + +void AZoneActor::TickZoneInfluence(float GameHoursDelta) +{ + // Owning faction passively gains influence over time + if (!OwningFaction.IsNone()) + { + ModifyInfluence(OwningFaction, 1.f * GameHoursDelta); + } + + // All other factions slowly lose influence if they have no presence + // TODO: factor in military units in zone +} + +void AZoneActor::SupplyUnitsInZone(float GameHoursDelta) +{ + // Find all units inside this zone and supply their upkeep from zone storage + // This replaces the GameState consuming from unit inventory directly + if (!ZoneStorage) return; + + TArray OverlappingActors; + ZoneVolume->GetOverlappingActors(OverlappingActors, ABaseUnit::StaticClass()); + + for (AActor* Actor : OverlappingActors) + { + ABaseUnit* Unit = Cast(Actor); + if (!Unit) continue; + // ToDo + } +} + +float AZoneActor::GetPriceForFaction(FName ResourceID, FName FactionID, float Reputation) const +{ + const FResourcePrice* Price = ResourcePrices.FindByPredicate( + [ResourceID](const FResourcePrice& P) + { + return P.ResourceID == ResourceID; + }); + + if (!Price) return 0.f; // free if no price set + + // Map reputation -100 to 100 -> price multiplier 2.0 to 0.5 + float Multiplier = FMath::GetMappedRangeValueClamped( + FVector2D(-100.f, 100.f), + FVector2D(2.f, 0.5f), + Reputation + ); + + return Price->BasePrice * Multiplier; +} + +void AZoneActor::OnRep_ZoneData() +{ + OnZoneChanged.Broadcast(ZoneID); +} + +bool AZoneActor::CanFactionUseResources(FName FactionID, float Reputation) const +{ + // Owning faction always has access + if (FactionID == OwningFaction) return true; + + // No owner - open to all + if (OwningFaction.IsNone()) return true; + + // Others need minimum reputation + // Hostile factions can't use resources + return Reputation >= -25.f; // above hostile threshold +} + +UInventoryComponent* AZoneActor::GetInventoryComponent_Implementation() const +{ + return ZoneStorage; +} + +EOutlinerStatus AZoneActor::GetOutlinerStatus() const +{ + if (Modules.Num() == 0) return EOutlinerStatus::Warning; + // Check if any modules are critical + for (AModuleActor* Module : Modules) + { + if (IsValid(Module) && Module->ModuleState == EModuleState::Damaged) + return EOutlinerStatus::Critical; + } + return EOutlinerStatus::OK; +} \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/AModuleActor.h b/Source/MaybeThisTime/Public/AModuleActor.h new file mode 100644 index 0000000..bbb4f75 --- /dev/null +++ b/Source/MaybeThisTime/Public/AModuleActor.h @@ -0,0 +1,26 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "AModuleActor.generated.h" + +UCLASS() +class MAYBETHISTIME_API AAModuleActor : public AActor +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + AAModuleActor(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + +}; diff --git a/Source/MaybeThisTime/Public/BaseAttributeSet.h b/Source/MaybeThisTime/Public/BaseAttributeSet.h new file mode 100644 index 0000000..0dad4d3 --- /dev/null +++ b/Source/MaybeThisTime/Public/BaseAttributeSet.h @@ -0,0 +1,170 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "AttributeSet.h" +#include "AbilitySystemComponent.h" +#include "BaseAttributeSet.generated.h" + +/** + * + */ +UCLASS() +class MAYBETHISTIME_API UBaseAttributeSet : public UAttributeSet +{ + GENERATED_BODY() + +protected: + + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_MaxHealth) FGameplayAttributeData MaxHealth; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_Health) FGameplayAttributeData Health; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_HealthRegen) FGameplayAttributeData HealthRegen; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_MaxStamina) FGameplayAttributeData MaxStamina; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_Stamina) FGameplayAttributeData Stamina; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_StaminaRegen) FGameplayAttributeData StaminaRegen; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_MaxMana) FGameplayAttributeData MaxMana; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_Mana) FGameplayAttributeData Mana; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_ManaRegen) FGameplayAttributeData ManaRegen; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_Armor) FGameplayAttributeData Armor; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_ElementalArmor) FGameplayAttributeData ElementalArmor; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_CritChance) FGameplayAttributeData CritChance; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_CritaDamage) FGameplayAttributeData CritaDamage; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_MoveSpeed) FGameplayAttributeData MoveSpeed; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_SprintSpeedMultiplier) FGameplayAttributeData SprintSpeedMultiplier; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_SneakSpeedMultiplier) FGameplayAttributeData SneakSpeedMultiplier; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_SneakDmgMultiplier) FGameplayAttributeData SneakDmgMultiplier; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_WeakSpotDmgMultiplier) FGameplayAttributeData WeakSpotDmgMultiplier; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_MaxSatiety) FGameplayAttributeData MaxSatiety; + UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_Satiety) FGameplayAttributeData Satiety; + +public: + + virtual void PreAttributeChange(const FGameplayAttribute& Attribute, float& NewValue) override; + virtual void PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue) override; + virtual void PostGameplayEffectExecute( const FGameplayEffectModCallbackData& Data) override; + + virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + + UFUNCTION() virtual void OnRep_MaxHealth(const FGameplayAttributeData& OldMaxHealth); + UFUNCTION() virtual void OnRep_Health(const FGameplayAttributeData& OldHealth); + UFUNCTION() virtual void OnRep_HealthRegen(const FGameplayAttributeData& OldHealthRegen); + UFUNCTION() virtual void OnRep_MaxStamina(const FGameplayAttributeData& OldMaxStamina); + UFUNCTION() virtual void OnRep_Stamina(const FGameplayAttributeData& OldStamina); + UFUNCTION() virtual void OnRep_StaminaRegen(const FGameplayAttributeData& OldStaminaRegen); + UFUNCTION() virtual void OnRep_MaxMana(const FGameplayAttributeData& OldMaxMana); + UFUNCTION() virtual void OnRep_Mana(const FGameplayAttributeData& OldMana); + UFUNCTION() virtual void OnRep_ManaRegen(const FGameplayAttributeData& OldManaRegen); + UFUNCTION() virtual void OnRep_Armor(const FGameplayAttributeData& OldArmor); + UFUNCTION() virtual void OnRep_ElementalArmor(const FGameplayAttributeData& OldElementalArmor); + UFUNCTION() virtual void OnRep_CritChance(const FGameplayAttributeData& OldCritChance); + UFUNCTION() virtual void OnRep_CritaDamage(const FGameplayAttributeData& OldCritaDamage); + UFUNCTION() virtual void OnRep_MoveSpeed(const FGameplayAttributeData& OldMoveSpeed); + UFUNCTION() virtual void OnRep_SprintSpeedMultiplier(const FGameplayAttributeData& OldSprintSpeedMultiplier); + UFUNCTION() virtual void OnRep_SneakSpeedMultiplier(const FGameplayAttributeData& OldSneakSpeedMultiplier); + UFUNCTION() virtual void OnRep_SneakDmgMultiplier(const FGameplayAttributeData& OldSneakDmgMultiplier); + UFUNCTION() virtual void OnRep_WeakSpotDmgMultiplier(const FGameplayAttributeData& OldWeakSpotDmgMultiplier); + UFUNCTION() virtual void OnRep_MaxSatiety(const FGameplayAttributeData& OldMaxSatiety); + UFUNCTION() virtual void OnRep_Satiety(const FGameplayAttributeData& OldSatiety); + + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, MaxHealth); + GAMEPLAYATTRIBUTE_VALUE_GETTER(MaxHealth); + GAMEPLAYATTRIBUTE_VALUE_SETTER(MaxHealth); + GAMEPLAYATTRIBUTE_VALUE_INITTER(MaxHealth); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, Health); + GAMEPLAYATTRIBUTE_VALUE_GETTER(Health); + GAMEPLAYATTRIBUTE_VALUE_SETTER(Health); + GAMEPLAYATTRIBUTE_VALUE_INITTER(Health); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, MaxStamina); + GAMEPLAYATTRIBUTE_VALUE_GETTER(MaxStamina); + GAMEPLAYATTRIBUTE_VALUE_SETTER(MaxStamina); + GAMEPLAYATTRIBUTE_VALUE_INITTER(MaxStamina); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, Stamina); + GAMEPLAYATTRIBUTE_VALUE_GETTER(Stamina); + GAMEPLAYATTRIBUTE_VALUE_SETTER(Stamina); + GAMEPLAYATTRIBUTE_VALUE_INITTER(Stamina); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, MaxMana); + GAMEPLAYATTRIBUTE_VALUE_GETTER(MaxMana); + GAMEPLAYATTRIBUTE_VALUE_SETTER(MaxMana); + GAMEPLAYATTRIBUTE_VALUE_INITTER(MaxMana); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, Mana); + GAMEPLAYATTRIBUTE_VALUE_GETTER(Mana); + GAMEPLAYATTRIBUTE_VALUE_SETTER(Mana); + GAMEPLAYATTRIBUTE_VALUE_INITTER(Mana); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, Armor); + GAMEPLAYATTRIBUTE_VALUE_GETTER(Armor); + GAMEPLAYATTRIBUTE_VALUE_SETTER(Armor); + GAMEPLAYATTRIBUTE_VALUE_INITTER(Armor); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, ElementalArmor); + GAMEPLAYATTRIBUTE_VALUE_GETTER(ElementalArmor); + GAMEPLAYATTRIBUTE_VALUE_SETTER(ElementalArmor); + GAMEPLAYATTRIBUTE_VALUE_INITTER(ElementalArmor); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, CritChance); + GAMEPLAYATTRIBUTE_VALUE_GETTER(CritChance); + GAMEPLAYATTRIBUTE_VALUE_SETTER(CritChance); + GAMEPLAYATTRIBUTE_VALUE_INITTER(CritChance); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, CritaDamage); + GAMEPLAYATTRIBUTE_VALUE_GETTER(CritaDamage); + GAMEPLAYATTRIBUTE_VALUE_SETTER(CritaDamage); + GAMEPLAYATTRIBUTE_VALUE_INITTER(CritaDamage); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, MoveSpeed); + GAMEPLAYATTRIBUTE_VALUE_GETTER(MoveSpeed); + GAMEPLAYATTRIBUTE_VALUE_SETTER(MoveSpeed); + GAMEPLAYATTRIBUTE_VALUE_INITTER(MoveSpeed); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, SprintSpeedMultiplier); + GAMEPLAYATTRIBUTE_VALUE_GETTER(SprintSpeedMultiplier); + GAMEPLAYATTRIBUTE_VALUE_SETTER(SprintSpeedMultiplier); + GAMEPLAYATTRIBUTE_VALUE_INITTER(SprintSpeedMultiplier); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, SneakSpeedMultiplier); + GAMEPLAYATTRIBUTE_VALUE_GETTER(SneakSpeedMultiplier); + GAMEPLAYATTRIBUTE_VALUE_SETTER(SneakSpeedMultiplier); + GAMEPLAYATTRIBUTE_VALUE_INITTER(SneakSpeedMultiplier); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, HealthRegen); + GAMEPLAYATTRIBUTE_VALUE_GETTER(HealthRegen); + GAMEPLAYATTRIBUTE_VALUE_SETTER(HealthRegen); + GAMEPLAYATTRIBUTE_VALUE_INITTER(HealthRegen); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, StaminaRegen); + GAMEPLAYATTRIBUTE_VALUE_GETTER(StaminaRegen); + GAMEPLAYATTRIBUTE_VALUE_SETTER(StaminaRegen); + GAMEPLAYATTRIBUTE_VALUE_INITTER(StaminaRegen); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, ManaRegen); + GAMEPLAYATTRIBUTE_VALUE_GETTER(ManaRegen); + GAMEPLAYATTRIBUTE_VALUE_SETTER(ManaRegen); + GAMEPLAYATTRIBUTE_VALUE_INITTER(ManaRegen); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, SneakDmgMultiplier); + GAMEPLAYATTRIBUTE_VALUE_GETTER(SneakDmgMultiplier); + GAMEPLAYATTRIBUTE_VALUE_SETTER(SneakDmgMultiplier); + GAMEPLAYATTRIBUTE_VALUE_INITTER(SneakDmgMultiplier); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, WeakSpotDmgMultiplier); + GAMEPLAYATTRIBUTE_VALUE_GETTER(WeakSpotDmgMultiplier); + GAMEPLAYATTRIBUTE_VALUE_SETTER(WeakSpotDmgMultiplier); + GAMEPLAYATTRIBUTE_VALUE_INITTER(WeakSpotDmgMultiplier); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, MaxSatiety); + GAMEPLAYATTRIBUTE_VALUE_GETTER(MaxSatiety); + GAMEPLAYATTRIBUTE_VALUE_SETTER(MaxSatiety); + GAMEPLAYATTRIBUTE_VALUE_INITTER(MaxSatiety); + + GAMEPLAYATTRIBUTE_PROPERTY_GETTER(UBaseAttributeSet, Satiety); + GAMEPLAYATTRIBUTE_VALUE_GETTER(Satiety); + GAMEPLAYATTRIBUTE_VALUE_SETTER(Satiety); + GAMEPLAYATTRIBUTE_VALUE_INITTER(Satiety); +}; diff --git a/Source/MaybeThisTime/Public/BaseCharacter.h b/Source/MaybeThisTime/Public/BaseCharacter.h new file mode 100644 index 0000000..a459018 --- /dev/null +++ b/Source/MaybeThisTime/Public/BaseCharacter.h @@ -0,0 +1,68 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Character.h" +#include "BaseAttributeSet.h" +#include "AbilitySystemInterface.h" +#include "ItemActor.h" +#include "InventoryComponent.h" +#include "BaseCharacter.generated.h" + +UCLASS(BlueprintType) +class MAYBETHISTIME_API ABaseCharacter : public ACharacter, public IAbilitySystemInterface, public IInteractionInterface +{ + GENERATED_BODY() + +public: + // Sets default values for this character's properties + ABaseCharacter(); + + + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + // Called to bind functionality to input + virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; + + //~ Begin IAbilitySystemInterface + /** Returns our Ability System Component. */ + virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override; + //~ End IAbilitySystemInterface + + /** Ability System Component. Required to use Gameplay Attributes and Gameplay Abilities. */ + UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Abilities") + UAbilitySystemComponent* AbilitySystemComponent; + + /** Sample Attribute Set. */ + UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly) + const UBaseAttributeSet* AttributeSet; + + UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Abilities") + UInventoryComponent* InventoryComponent; + + + //UFUNCTION(BlueprintCallable) + UFUNCTION(BlueprintCallable, Server, Reliable) + void TryPickup(AItemActor* ItemActor); + + UPROPERTY(BlueprintReadWrite) + AActor* LookedAtActor = nullptr; + + UFUNCTION(BlueprintCallable) + void InteractionLineTrace(); + + UFUNCTION(BlueprintCallable, Server, Reliable) + void InteractWithInteractable(AActor* TargetActor); + + UPROPERTY(BlueprintReadWrite) + int32 InteractionDistance = 500; +}; + diff --git a/Source/MaybeThisTime/Public/BaseCommand.h b/Source/MaybeThisTime/Public/BaseCommand.h new file mode 100644 index 0000000..48fa4e7 --- /dev/null +++ b/Source/MaybeThisTime/Public/BaseCommand.h @@ -0,0 +1,35 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/Object.h" +#include "BaseCommand.generated.h" + +/** + * + */ +UCLASS(Abstract, BlueprintType) +class MAYBETHISTIME_API UBaseCommand : public UObject +{ + GENERATED_BODY() + +public: + + UFUNCTION(BlueprintNativeEvent) void Execute(); + UFUNCTION(BlueprintNativeEvent) void Interrupt(); + + UPROPERTY(BlueprintReadOnly) class ABaseUnit* Owner; + + // Broadcasts true if succeeded, false if failed + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCommandFinished, bool, bSuccess); + UPROPERTY(BlueprintAssignable) FOnCommandFinished OnCommandFinished; + +protected: + // Subclasses call this when done + void Complete(bool bSuccess) + { + OnCommandFinished.Broadcast(bSuccess); + } +}; + diff --git a/Source/MaybeThisTime/Public/BaseCommands.h b/Source/MaybeThisTime/Public/BaseCommands.h new file mode 100644 index 0000000..c37a2ee --- /dev/null +++ b/Source/MaybeThisTime/Public/BaseCommands.h @@ -0,0 +1,54 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "BaseCommand.h" +#include "AIController.h" +#include "Navigation/PathFollowingComponent.h" +#include "BaseCommands.generated.h" + +class AActor; + +UCLASS() +class UMoveToCommand : public UBaseCommand +{ + GENERATED_BODY() + +public: + UPROPERTY() FVector Destination; + UPROPERTY() float AcceptanceRadius = 50.f; // how close = "arrived" + + virtual void Execute_Implementation() override; + virtual void Interrupt_Implementation() override; + +private: + UPROPERTY() AAIController* AIController; + + UFUNCTION() void OnMoveCompleted(FAIRequestID RequestID, EPathFollowingResult::Type Result); +}; + + + +UCLASS() +class UInteractCommand : public UBaseCommand +{ + GENERATED_BODY() + + +public: + + UPROPERTY() AActor* TargetActor; + UPROPERTY() int32 InteractionRange = 150; + + virtual void Execute_Implementation() override; + virtual void Interrupt_Implementation() override; + + +private: + UPROPERTY() UMoveToCommand* SubMoveCommand; + + UFUNCTION() void DoInteract(); + UFUNCTION() void OnMoveFinished(bool bSuccess); + +}; \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/BaseUnit.h b/Source/MaybeThisTime/Public/BaseUnit.h new file mode 100644 index 0000000..6b9c044 --- /dev/null +++ b/Source/MaybeThisTime/Public/BaseUnit.h @@ -0,0 +1,48 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Character.h" +#include "BaseAttributeSet.h" +#include "AbilitySystemInterface.h" +#include "InventoryComponent.h" +#include "BaseCommand.h" +#include "InventoryInterface.h" +#include "OutlinerTypes.h" +#include "InteractionInterface.h" +#include "BaseUnit.generated.h" + +class UCommandComponent; + +UCLASS() +class MAYBETHISTIME_API ABaseUnit : public ACharacter, public IAbilitySystemInterface, public IInteractionInterface, public IInventoryInterface +{ + GENERATED_BODY() + +public: + // Sets default values for this character's properties + ABaseUnit(); + + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override; + void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + + UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Abilities") UCommandComponent* CommandComponent; + UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Abilities") UAbilitySystemComponent* AbilitySystemComponent; + UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Abilities") UBaseAttributeSet* AttributeSet; + UPROPERTY(EditDefaultsOnly) TArray> PassiveUpkeepEffects; + UPROPERTY(Replicated, EditAnywhere, BlueprintReadWrite) FName PrimaryFaction; + UPROPERTY(Replicated, EditAnywhere, BlueprintReadWrite) FText DisplayName; + + // Inventory + UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Abilities") UInventoryComponent* InventoryComponent; + virtual UInventoryComponent* GetInventoryComponent_Implementation() const override; + + // HUD + UFUNCTION(BlueprintCallable, BlueprintPure) virtual EOutlinerStatus GetOutlinerStatus() const; + + +protected: + virtual void BeginPlay() override; +}; diff --git a/Source/MaybeThisTime/Public/BaseUnitAIController.h b/Source/MaybeThisTime/Public/BaseUnitAIController.h new file mode 100644 index 0000000..646fed4 --- /dev/null +++ b/Source/MaybeThisTime/Public/BaseUnitAIController.h @@ -0,0 +1,17 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "AIController.h" +#include "BaseUnitAIController.generated.h" + +/** + * + */ +UCLASS() +class MAYBETHISTIME_API ABaseUnitAIController : public AAIController +{ + GENERATED_BODY() + +}; diff --git a/Source/MaybeThisTime/Public/Commands/CommandComponent.h b/Source/MaybeThisTime/Public/Commands/CommandComponent.h new file mode 100644 index 0000000..ea128a3 --- /dev/null +++ b/Source/MaybeThisTime/Public/Commands/CommandComponent.h @@ -0,0 +1,45 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/ActorComponent.h" +#include "CommandComponent.generated.h" + +class UBaseCommand; +class ABaseUnit; + +UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) +class MAYBETHISTIME_API UCommandComponent : public UActorComponent +{ + GENERATED_BODY() + +protected: + // Called when the game starts + virtual void BeginPlay() override; + +public: + // Sets default values for this component's properties + UCommandComponent(); + + ABaseUnit* OwnerUnit; + + UFUNCTION(BlueprintCallable) void GiveCommand(UBaseCommand* NewCommand, bool bQueue = false); + UFUNCTION(BlueprintCallable) void ExecuteNextCommand(bool bInterrupt = true); + UFUNCTION(BlueprintCallable) void InterruptCurrentCommand(); + UFUNCTION(BlueprintCallable) void ClearCommandQueue(); + UFUNCTION(BlueprintCallable) void RemoveCommandFromQueue(UBaseCommand* CommandToRemove); + UFUNCTION(BlueprintCallable) void ExecuteCommand(UBaseCommand* Command); + UFUNCTION(BlueprintCallable) void CommandFinished(bool bSuccess); + UFUNCTION(BlueprintCallable, BlueprintPure) const TArray GetUnitCommandQueue(); + + UFUNCTION(BlueprintCallable, BlueprintPure) bool IsExecutingCommad() const; + + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnCommandQueueChanged); + UPROPERTY(BlueprintAssignable) FOnCommandQueueChanged OnCommandQueueChanged; + +private: + UPROPERTY() TArray CommandQueue; + + +}; diff --git a/Source/MaybeThisTime/Public/FactionManager.h b/Source/MaybeThisTime/Public/FactionManager.h new file mode 100644 index 0000000..2925eec --- /dev/null +++ b/Source/MaybeThisTime/Public/FactionManager.h @@ -0,0 +1,159 @@ +// FactionManager.h +#pragma once +#include "CoreMinimal.h" +#include "Components/ActorComponent.h" +#include "FactionManager.generated.h" + +// Relation thresholds +#define FACTION_HOSTILE_THRESHOLD -25.f +#define FACTION_NEUTRAL_THRESHOLD 25.f +#define FACTION_FRIENDLY_THRESHOLD 50.f +#define FACTION_ALLIED_THRESHOLD 75.f + +// Hardcoded starting faction IDs +namespace FactionID +{ + const FName Wanderer = "Wanderer"; + const FName Feral = "Feral"; + const FName Wildlife = "Wildlife"; + // Add more as needed +} + +UENUM(BlueprintType) +enum class EFactionType : uint8 +{ + PlayerFaction, // player controlled + Civilized, // organized NPC human faction + Hostile, // mindless, attacks everything + Bandit, // attacks weak, avoids strong + Wanderer, // no allegiance + Wildlife // neutral unless provoked +}; + +UENUM(BlueprintType) +enum class ERelationState : uint8 +{ + Allied, + Friendly, + Neutral, + Hostile +}; + +USTRUCT(BlueprintType) +struct FConsumptionRate +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere) FName ItemID; + UPROPERTY(EditAnywhere) float AmountPerHour = 1.f; + UPROPERTY(EditAnywhere) bool bPassive = true; +}; + +USTRUCT(BlueprintType) +struct FFactionNeed +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere) FName NeedID; + UPROPERTY(EditAnywhere) float Threshold = 100.f; + UPROPERTY() float Urgency = 0.f; +}; + +USTRUCT(BlueprintType) +struct FFactionRelation +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere) + FName TargetFactionID; + + UPROPERTY(EditAnywhere) + float Relation = 0.f; +}; + +USTRUCT(BlueprintType) +struct FFactionData +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadOnly) FName FactionID; + UPROPERTY(EditAnywhere, BlueprintReadOnly) FText DisplayName; + UPROPERTY(EditAnywhere, BlueprintReadOnly) FLinearColor FactionColor = FLinearColor::White; + UPROPERTY(EditAnywhere, BlueprintReadOnly) EFactionType FactionType = EFactionType::Wanderer; + UPROPERTY(EditAnywhere, BlueprintReadOnly) TArray RelationsTo; + UPROPERTY(EditAnywhere, BlueprintReadOnly) TArray Needs; + UPROPERTY(EditAnywhere, BlueprintReadOnly) float Money = 10000000.f; + + UPROPERTY(EditAnywhere) bool bInfiniteMoney = true; + + float GetRelationTo(FName OtherFaction) const + { + const FFactionRelation* Found = RelationsTo.FindByPredicate([OtherFaction](const FFactionRelation& R) { return R.TargetFactionID == OtherFaction; }); + return Found ? Found->Relation : 0.f; + } + + ERelationState GetRelationStateTo(FName OtherFaction) const + { + float Relation = GetRelationTo(OtherFaction); + if (Relation >= FACTION_ALLIED_THRESHOLD) return ERelationState::Allied; + if (Relation >= FACTION_FRIENDLY_THRESHOLD) return ERelationState::Friendly; + if (Relation >= FACTION_NEUTRAL_THRESHOLD) return ERelationState::Neutral; + return ERelationState::Hostile; + } + + float& FindOrAddRelationTo(FName Faction) + { + FFactionRelation* Found = RelationsTo.FindByPredicate([Faction](const FFactionRelation& R) { return R.TargetFactionID == Faction; }); + if (!Found) + { + RelationsTo.Add(FFactionRelation{ Faction , 0}); + return RelationsTo.Last().Relation; + } + + return Found->Relation; + } +}; + +UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) +class MAYBETHISTIME_API UFactionManager : public UActorComponent +{ + GENERATED_BODY() +public: + UFactionManager(); + + virtual void BeginPlay() override; + virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + + + UPROPERTY(ReplicatedUsing = OnRep_Factions, BlueprintReadOnly) TArray Factions; // All factions + + + UFUNCTION(BlueprintCallable) void RegisterFaction(FFactionData NewFaction); // Faction Registration + + FFactionData* GetFaction(FName FactionID); + const FFactionData* GetFaction(FName FactionID) const; + + UFUNCTION(BlueprintCallable, BlueprintPure) FFactionData GetFactionCopy(FName FactionID) const; + UFUNCTION(BlueprintCallable, BlueprintPure) bool FactionExists(FName FactionID) const; + + // --- Relations --- + UFUNCTION(BlueprintCallable, BlueprintPure) float GetRelation(FName FactionA, FName FactionB) const; + UFUNCTION(BlueprintCallable, BlueprintPure) ERelationState GetRelationState(FName FactionA, FName FactionB) const; + UFUNCTION(BlueprintCallable) void ModifyRelation(FName FactionA, FName FactionB, float Delta); + + UFUNCTION(BlueprintCallable, BlueprintPure) bool AreHostile(FName FactionA, FName FactionB) const; + UFUNCTION(BlueprintCallable, BlueprintPure) bool AreAllied(FName FactionA, FName FactionB) const; + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnFactionChanged, FName, FactionID); + UPROPERTY(BlueprintAssignable) FOnFactionChanged OnFactionChanged; + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOnRelationChanged, FName, FactionA, FName, FactionB, float, NewRelation); + UPROPERTY(BlueprintAssignable) FOnRelationChanged OnRelationChanged; + + void EvaluateFactionNeeds(); + +private: + void InitializeDefaultFactions(); + + UFUNCTION() void OnRep_Factions(); +}; \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/InteractionInterface.h b/Source/MaybeThisTime/Public/InteractionInterface.h new file mode 100644 index 0000000..e83f3d5 --- /dev/null +++ b/Source/MaybeThisTime/Public/InteractionInterface.h @@ -0,0 +1,29 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "UObject/Interface.h" +#include "InteractionInterface.generated.h" +/** + * + */ +UINTERFACE(MinimalAPI, Blueprintable) +class UInteractionInterface : public UInterface +{ + GENERATED_BODY() + +}; + +class MAYBETHISTIME_API IInteractionInterface +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintNativeEvent, BlueprintCallable) + void Interact(AActor* Interactor); + + UFUNCTION(BlueprintNativeEvent, BlueprintCallable) + void LookingAt(AActor* Interactor, bool IsLooking); +}; \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/InventoryComponent.h b/Source/MaybeThisTime/Public/InventoryComponent.h new file mode 100644 index 0000000..24e8990 --- /dev/null +++ b/Source/MaybeThisTime/Public/InventoryComponent.h @@ -0,0 +1,96 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/ActorComponent.h" +#include "ItemObject.h" +#include + +#include "ItemData.h" +#include "InventoryComponent.generated.h" + + +UENUM(BlueprintType) +enum class EAddItemResult : uint8 +{ + FullyAdded, + PartiallyAdded, + Failed, + Switched +}; + +UENUM(BlueprintType) +enum class ESortType : uint8 +{ + Alpabeticaly, + Weight, + Amount, + Type, + None +}; + +UCLASS(BlueprintType, ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) +class MAYBETHISTIME_API UInventoryComponent : public UActorComponent +{ + GENERATED_BODY() + +public: + // Sets default values for this component's properties + UInventoryComponent(); + +protected: + // Called when the game starts + virtual void BeginPlay() override; + UPROPERTY(VisibleAnywhere, BlueprintReadWrite, ReplicatedUsing = OnRep_ItemList) TArray ItemList; + UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Replicated) int32 InventorySize = 32; + UPROPERTY(VisibleAnywhere, BlueprintReadWrite) TMap EquipedItemMap; + + UPROPERTY(EditAnywhere) float MaxCapacity = 1000.f; + UPROPERTY(Replicated) float CurrentWeight = 0.f; + UPROPERTY(Replicated) TArray Resources; + + const int32 DropDistance = 200; +public: + + // Add resource, returns overflow + float AddResource(FItemData& ItemData); + + // Remove resource, returns false if not enough + bool ConsumeResource(FName ResourceID, float Amount); + + float GetResource(FName ResourceID) const; + float GetFreeCapacity() const { return MaxCapacity - CurrentWeight; } + + UFUNCTION() + void OnRep_ItemList(); + + void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + + // Event dispatcher + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnInventoryChanged); + UPROPERTY(BlueprintAssignable, Category = "Inventory") FOnInventoryChanged OnInventoryChanged; + + UFUNCTION(BlueprintCallable, BlueprintPure) const FItemData& GetItemAt(int32 SlotIndex) const; + UFUNCTION(BlueprintCallable, BlueprintPure) const TArray GetAllItems() const; + UFUNCTION(BlueprintCallable, BlueprintPure) const TArray FindItemsByID(FName ItemID) const; + UFUNCTION(BlueprintCallable) EAddItemResult TryAddItem(FItemData NewItem, FItemData& OutRemainingItem); + UFUNCTION(BlueprintCallable) EAddItemResult AddItemAt(FItemData NewItem, int32 SlotIndex, FItemData& OutRemainingItem, bool AllowSwitch = false, bool AllowEmptySlots = true); + UFUNCTION(BlueprintCallable) void SetItemAt(FItemData NewItem, int32 SlotIndex); + UFUNCTION(BlueprintCallable) void RemoveItemAt(int32 SlotIndex); + UFUNCTION(BlueprintCallable) bool GetFirstFreeSlot(int32& SlotIndex) const; + UFUNCTION(BlueprintCallable) void SetInventorySize(int32 NewInventorySize); + UFUNCTION(BlueprintCallable) int32 GetInventorySize() const; + UFUNCTION(BlueprintCallable, Server, Reliable) void DropItem(FItemData ItemToDrop, const FTransform& SpawnTransform); + UFUNCTION(BlueprintCallable, Server, Reliable) void DropItemData(FItemData ItemToDrop); + UFUNCTION(BlueprintCallable, Server, Reliable) void DropItemAtSlot(int32 SlotIndex); + FTransform GetDropTransform() const; + UFUNCTION(BlueprintCallable, BlueprintPure) bool ContainsItem(FName ItemID, int32 Amount = 1) const; + UFUNCTION(BlueprintCallable, BlueprintPure) bool ContainsItems(const TMap& RequiredItems) const; + UFUNCTION(BlueprintCallable) bool RemoveItem(FName ItemID, int32 Amount = 1); + UFUNCTION(BlueprintCallable) bool RemoveItems(const TMap& RequiredItems); + UFUNCTION(BlueprintCallable) int32 GetItemAmount(FName ID) const; + UFUNCTION(BlueprintCallable) void Sort(ESortType SortType); + + UFUNCTION(BlueprintCallable, Server, Reliable) void SetMaxCapacity(float NewMaxCapacity); +}; diff --git a/Source/MaybeThisTime/Public/InventoryInterface.h b/Source/MaybeThisTime/Public/InventoryInterface.h new file mode 100644 index 0000000..be5d7ff --- /dev/null +++ b/Source/MaybeThisTime/Public/InventoryInterface.h @@ -0,0 +1,26 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/ObjectMacros.h" +#include "UObject/Interface.h" +#include "InventoryInterface.generated.h" + +class UInventoryComponent; + +UINTERFACE(MinimalAPI, Blueprintable) +class UInventoryInterface : public UInterface +{ + GENERATED_BODY() + +}; + +class MAYBETHISTIME_API IInventoryInterface +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintNativeEvent, BlueprintCallable) + UInventoryComponent* GetInventoryComponent() const; +}; \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/ItemActor.h b/Source/MaybeThisTime/Public/ItemActor.h new file mode 100644 index 0000000..19d8a15 --- /dev/null +++ b/Source/MaybeThisTime/Public/ItemActor.h @@ -0,0 +1,43 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "InteractionInterface.h" +#include "ItemData.h" +#include "ItemActor.generated.h" + +UCLASS(BlueprintType) +class MAYBETHISTIME_API AItemActor : public AActor, public IInteractionInterface +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + AItemActor(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + virtual void Interact_Implementation(AActor* Interactor) override; + virtual void LookingAt_Implementation(AActor* Interactor, bool IsLooking) override; + void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + virtual void Destroyed() override; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_ItemData, Category = "Item", meta = (ExposeOnSpawn = "true")) + FItemData ItemData; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Item") + UStaticMeshComponent* MeshComponent; + + FItemData GetItemData() const; + + void SetItemObject(FItemData NewItem); + + UFUNCTION() + void OnRep_ItemData(); + +}; diff --git a/Source/MaybeThisTime/Public/ItemData.h b/Source/MaybeThisTime/Public/ItemData.h new file mode 100644 index 0000000..291ff7c --- /dev/null +++ b/Source/MaybeThisTime/Public/ItemData.h @@ -0,0 +1,86 @@ +#pragma once +#include "CoreMinimal.h" + +#include "MyGameplayTags.h" +#include "ItemDefinition.h" +#include "ItemData.generated.h" + +USTRUCT(BlueprintType) +struct FItemData +{ + GENERATED_BODY() + + UPROPERTY(BlueprintReadWrite, EditAnywhere) + TObjectPtr Definition = nullptr; + + UPROPERTY(BlueprintReadWrite, EditAnywhere) + int32 CurrentStackSize = 1; + + UPROPERTY(BlueprintReadWrite, EditAnywhere) + float CurrentDurability = 1.0f; + + bool IsValid() const { return Definition != nullptr; } + + bool HasTag(FGameplayTag Tag) const + { + return Definition && Definition->Tags.HasTag(Tag); + } + + int32 AddToStack(int32 Value) + { + if (!HasTag(Item_Flag_Stackable)) { CurrentStackSize = 1; return Value; } + int32 NewTotal = CurrentStackSize + Value; + CurrentStackSize = FMath::Min(NewTotal, Definition->MaxStackSize); + return FMath::Max(NewTotal - Definition->MaxStackSize, 0); + } + + float AddToDurability(float Value) + { + if (!HasTag(Item_Flag_Durable)) { CurrentDurability = 1; return Value; } + float NewTotal = CurrentDurability + Value; + CurrentDurability = FMath::Min(NewTotal, Definition->MaxDurability); + return FMath::Max(NewTotal - Definition->MaxDurability, 0.f); + } + + int32 SetStack(int32 NewValue) + { + if (!HasTag(Item_Flag_Stackable)) { CurrentStackSize = 1; return NewValue; } + int32 Clamped = FMath::Clamp(NewValue, 0, Definition->MaxStackSize); + CurrentStackSize = Clamped; + return FMath::Max(NewValue - Clamped, 0); + } + + float SetDurability(float NewValue) + { + if (!HasTag(Item_Flag_Durable)) { CurrentDurability = 1.f; return NewValue; } + float Clamped = FMath::Clamp(NewValue, 0.f, Definition->MaxDurability); + CurrentDurability = Clamped; + return FMath::Max(NewValue - Clamped, 0.f); + } + + void SetItemDefinition(UItemDefinition* NewDefinition) + { + if (!NewDefinition) return; + Definition = NewDefinition; + } + + TArray> GetGrantedEffects() const + { + return Definition ? Definition->GrantedEffects : TArray>{}; + } + + TArray> GetGrantedAbility() const + { + return Definition ? Definition->GrantedAbility : TArray>{}; + } + + // Equality operator needed for replication delta serialization + bool operator==(const FItemData& Other) const + { + return Definition == Other.Definition && + CurrentStackSize == Other.CurrentStackSize && + CurrentDurability == Other.CurrentDurability; + } + + bool operator!=(const FItemData& Other) const { return !(*this == Other); } +}; \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/ItemDefinition.h b/Source/MaybeThisTime/Public/ItemDefinition.h new file mode 100644 index 0000000..186cc54 --- /dev/null +++ b/Source/MaybeThisTime/Public/ItemDefinition.h @@ -0,0 +1,71 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Engine/DataAsset.h" +#include "GameplayTagContainer.h" +#include "GameplayEffect.h" +#include "Abilities/GameplayAbility.h" +#include "ItemDefinition.generated.h" + + +class AItemActor; + +USTRUCT(BlueprintType) +struct FItemRegistryRow : public FTableRowBase +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadOnly) UItemDefinition* Definition = nullptr; +}; + +UCLASS(BlueprintType) +class MAYBETHISTIME_API UItemDefinition : public UPrimaryDataAsset +{ + GENERATED_BODY() + +public: + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + FName ID; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + FText Name; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + FText Description ; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + FGameplayTagContainer Tags; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + int32 MaxStackSize = 1; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + float MaxDurability = 1.0f; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + float WeightPerUnit = 0.1f; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + UTexture2D* Icon; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + TArray> GrantedEffects; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + TArray> GrantedAbility; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + TObjectPtr StaticMesh; + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + TObjectPtr SkeletalMesh; + + UPROPERTY(EditDefaultsOnly) + TSubclassOf ItemActorClass; + + UPROPERTY(EditAnywhere) + bool bIsBulkResource = true; +}; diff --git a/Source/MaybeThisTime/Public/ItemObject.h b/Source/MaybeThisTime/Public/ItemObject.h new file mode 100644 index 0000000..6d13edd --- /dev/null +++ b/Source/MaybeThisTime/Public/ItemObject.h @@ -0,0 +1,58 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "ItemDefinition.h" +#include "ItemObject.generated.h" + +/** + + */ +UCLASS(BlueprintType) +class MAYBETHISTIME_API UItemObject : public UObject +{ + GENERATED_BODY() + +public: + UItemObject(); + ~UItemObject(); + + virtual bool IsSupportedForNetworking() const override { return true; } + virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + + + UPROPERTY(BlueprintReadWrite) + UItemDefinition* Definition; + + UPROPERTY(BlueprintReadWrite) + int32 CurrentStackSize = 1; + + UPROPERTY(BlueprintReadWrite) + float CurrentDurability = 1.0f; + + UFUNCTION(BlueprintCallable, BlueprintPure) + bool HasTag(FGameplayTag Tag) const; + + UFUNCTION(BlueprintCallable) + int32 AddToStack(int32 Value); + + UFUNCTION(BlueprintCallable) + float AddToDurability(float Value); + + UFUNCTION(BlueprintCallable) + int32 SetStack(int32 NewValue); + + UFUNCTION(BlueprintCallable) + float SetDurability(float NewValue); + + UFUNCTION(BlueprintCallable) + void SetItemDefinition(UItemDefinition* NewDefinition); + + UFUNCTION(BlueprintCallable, BlueprintPure) + TArray> GetGrantedEffects() const; + + UFUNCTION(BlueprintCallable, BlueprintPure) + TArray> GetGrantedAbility() const; + +}; diff --git a/Source/MaybeThisTime/Public/ItemRegistry.h b/Source/MaybeThisTime/Public/ItemRegistry.h new file mode 100644 index 0000000..4515dc2 --- /dev/null +++ b/Source/MaybeThisTime/Public/ItemRegistry.h @@ -0,0 +1,35 @@ +// ItemRegistry.h +#pragma once +#include "CoreMinimal.h" +#include "Subsystems/GameInstanceSubsystem.h" +#include "ItemDefinition.h" +#include "ItemRegistry.generated.h" + +UCLASS() +class MAYBETHISTIME_API UItemRegistry : public UGameInstanceSubsystem +{ + GENERATED_BODY() +public: + virtual void Initialize(FSubsystemCollectionBase& Collection) override; + + // Set this in your GameInstance Blueprint or config + UPROPERTY(EditAnywhere, BlueprintReadOnly) + TSoftObjectPtr ItemDataTable; + + UFUNCTION(BlueprintCallable, BlueprintPure) + UItemDefinition* GetDefinition(FName ItemID) const; + + UFUNCTION(BlueprintCallable, BlueprintPure) + bool IsValidItem(FName ItemID) const; + + // Get all registered item IDs + UFUNCTION(BlueprintCallable, BlueprintPure) + TArray GetAllItemIDs() const; + +private: + // Cached loaded table + UPROPERTY() + UDataTable* LoadedTable = nullptr; + + void LoadTable(); +}; \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/ModuleActor.h b/Source/MaybeThisTime/Public/ModuleActor.h new file mode 100644 index 0000000..3bcd077 --- /dev/null +++ b/Source/MaybeThisTime/Public/ModuleActor.h @@ -0,0 +1,95 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "ModuleDefinition.h" +#include "OutlinerTypes.h" +#include "ModuleActor.generated.h" + +class UInventoryComponent; +class AZoneActor; + +UENUM(BlueprintType) +enum class EModuleState : uint8 +{ + UnderConstruction, // ghost/scaffold phase + Active, // working normally + Inactive, // built but not working (no workers, no power etc) + Damaged, // needs repair + Destroyed +}; + +DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnModuleStateChanged, EModuleState, NewState); + +UCLASS() +class MAYBETHISTIME_API AModuleActor : public AActor +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + AModuleActor(); + + virtual void BeginPlay() override; + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + + // --- Definition --- + UPROPERTY(ReplicatedUsing = OnRep_Definition, EditAnywhere, BlueprintReadOnly) UModuleDefinition* Definition; + + // --- State --- + UPROPERTY(ReplicatedUsing = OnRep_State, BlueprintReadOnly) EModuleState ModuleState = EModuleState::UnderConstruction; + UPROPERTY(Replicated, BlueprintReadOnly) float ConstructionProgress = 0.f; // 0-1 + UFUNCTION(BlueprintCallable, BlueprintPure) EOutlinerStatus GetOutlinerStatus() const; + + // --- Zone --- + UPROPERTY(Replicated, BlueprintReadOnly, Category = "Zone") AZoneActor* OwningZone; + UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "Zone") AZoneActor* DefaultZone; + + void AddResourceToZone(UInventoryComponent* ZoneStorage, FName ResourceID, float Amount); + // --- Workers --- + // Units assigned specifically to this module + UPROPERTY(Replicated, BlueprintReadOnly) TArray AssignedWorkers; + + // --- Delegates --- + UPROPERTY(BlueprintAssignable) FOnModuleStateChanged OnModuleStateChanged; + + // --- Construction --- + UFUNCTION(BlueprintCallable) bool CanAffordConstruction(UInventoryComponent* PayingInventory) const; + UFUNCTION(BlueprintCallable) bool StartConstruction(AZoneActor* Zone, UInventoryComponent* PayingInventory); + + // Called by ZoneActor each game hour + void TickProduction(float GameHoursDelta, UInventoryComponent* ZoneStorage); + + // --- Workers --- + UFUNCTION(BlueprintCallable) bool AssignWorker(ABaseUnit* Unit); + UFUNCTION(BlueprintCallable) void RemoveWorker(ABaseUnit* Unit); + UFUNCTION(BlueprintCallable, BlueprintPure) int32 GetWorkerCount() const { return AssignedWorkers.Num(); } + UFUNCTION(BlueprintCallable, BlueprintPure) bool IsWorking() const { return ModuleState == EModuleState::Active; } + + // --- Placement --- + UFUNCTION(BlueprintCallable, BlueprintPure) bool CanBePlacedAt(FVector Location, AZoneActor* Zone) const; + + // Called on clients when definition replicates - sets up visuals + UFUNCTION(BlueprintNativeEvent) void OnDefinitionLoaded(); + + // Called on clients when state changes - swap ghost/real mesh etc + UFUNCTION(BlueprintNativeEvent) void OnStateChanged(EModuleState NewState); + +protected: + void UpdateWorkingState(); + void TickConstruction(float GameHoursDelta); + void TickActiveProduction(float GameHoursDelta, UInventoryComponent* ZoneStorage); + + UFUNCTION() void OnRep_Definition(); + UFUNCTION() void OnRep_State(); + +private: + + // Testing only + UFUNCTION(BlueprintCallable) + void ForceCompleteConstruction(AZoneActor* Zone); + +}; diff --git a/Source/MaybeThisTime/Public/ModuleDefinition.h b/Source/MaybeThisTime/Public/ModuleDefinition.h new file mode 100644 index 0000000..f544e69 --- /dev/null +++ b/Source/MaybeThisTime/Public/ModuleDefinition.h @@ -0,0 +1,85 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Engine/DataAsset.h" +#include "ModuleDefinition.generated.h" + +/** + * + */ + +UENUM(BlueprintType) +enum class EZoneModuleType : uint8 +{ + Storage, + Production, + Medical, + Defensive, + Housing, + Infrastructure +}; + +USTRUCT(BlueprintType) +struct FModuleResourceRate +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadWrite) FName ResourceID; + UPROPERTY(EditAnywhere, BlueprintReadWrite) float AmountPerHour = 1.f; + // If true needs workers to function, false = runs automatically + UPROPERTY(EditAnywhere, BlueprintReadWrite) bool bRequiresWorkers = false; +}; + +USTRUCT(BlueprintType) +struct FModuleCost +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadWrite) FName ResourceID; + UPROPERTY(EditAnywhere, BlueprintReadWrite) float Amount = 0.f; +}; + +class AModuleActor; + +UCLASS(BlueprintType) +class MAYBETHISTIME_API UModuleDefinition : public UPrimaryDataAsset +{ + GENERATED_BODY() +public: + // --- Identity --- + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Identity") FName ModuleID; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Identity") FText DisplayName; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Identity") FText Description; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Identity") EZoneModuleType ZoneModuleType; + + // --- Visuals --- + // The Blueprint actor class that represents this module in the world + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Visuals") TSubclassOf ModuleActorClass; + + // Ghost/scaffold mesh shown during construction + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Visuals") TSubclassOf ConstructionActorClass; + + // --- Placement --- + // Radius this module occupies (for overlap checks) + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Placement") float PlacementRadius = 200.f; + + // Minimum reputation required to build this module in a zone + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Placement") float RequiredReputation = 0.f; + + // --- Construction --- + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Construction") float ConstructionTimeHours = 2.f; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Construction") TArray ConstructionCost; + + // --- Workers --- + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Workers") int32 MaxWorkers = 0; // 0 = no workers needed + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Workers") int32 MinWorkersToOperate = 0; // below this = not working + + // --- Production / Consumption --- + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Economy") TArray ProducedResources; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Economy") TArray ConsumedResources; + + // --- Storage (for storage modules) --- + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Storage") float AddedStorageCapacity = 0.f; +}; \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/MyGameplayTags.h b/Source/MaybeThisTime/Public/MyGameplayTags.h new file mode 100644 index 0000000..76103f6 --- /dev/null +++ b/Source/MaybeThisTime/Public/MyGameplayTags.h @@ -0,0 +1,45 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "NativeGameplayTags.h" +#include "CoreMinimal.h" + +/** + * + */ + +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Flag_Stackable); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Flag_Quest); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Flag_Consumeable); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Flag_Durable); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Flag_Resource); + +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Belt); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Hands); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Head); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Legs); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Torso); + +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Weapon_Ranged); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Weapon_Melee); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Weapon_Melee_TwoHanded); +UE_DECLARE_GAMEPLAY_TAG_EXTERN(Item_Type_Weapon_Melee_OneHanded); + + +/* + +3 x 25 marker +2 x 25 dude +5 - 6 x 32 flameers +5 x 32 jumpers +5 x 38 terminators +6 x 38 inner circle +10 x 38 termintator with sword an mace +1 x 48 captain in terminator armor +1 x 48 azazel +1 x 68 big boy +1 x 98 rawr +1 x 16cm x 11cm tonk + +*/ \ No newline at end of file diff --git a/Source/MaybeThisTime/Public/OutlinerTypes.h b/Source/MaybeThisTime/Public/OutlinerTypes.h new file mode 100644 index 0000000..55e0e3a --- /dev/null +++ b/Source/MaybeThisTime/Public/OutlinerTypes.h @@ -0,0 +1,16 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" + +UENUM(BlueprintType) +enum class EOutlinerStatus : uint8 +{ + OK, // green - working normally + Warning, // yellow - needs attention (low resources, no workers) + Critical, // red - not working, under attack, starving + Inactive, // grey - built but idle + Construction, // blue - being built + Player +}; diff --git a/Source/MaybeThisTime/Public/PlaceableItemActor.h b/Source/MaybeThisTime/Public/PlaceableItemActor.h new file mode 100644 index 0000000..1434f8b --- /dev/null +++ b/Source/MaybeThisTime/Public/PlaceableItemActor.h @@ -0,0 +1,30 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "ItemActor.h" +#include "PlaceableItemActor.generated.h" + +/** + * + */ +UCLASS(BlueprintType) +class MAYBETHISTIME_API APlaceableItemActor : public AItemActor +{ + GENERATED_BODY() + +public: + + virtual void BeginPlay() override; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + TObjectPtr DefaultDefinition; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + int32 DefaultStackSize = 1; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + float DefaultDurability = 1.f; + +}; diff --git a/Source/MaybeThisTime/Public/PlayerUnit.h b/Source/MaybeThisTime/Public/PlayerUnit.h new file mode 100644 index 0000000..6e0c69b --- /dev/null +++ b/Source/MaybeThisTime/Public/PlayerUnit.h @@ -0,0 +1,21 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "BaseUnit.h" +#include "PlayerUnit.generated.h" + +/** + * + */ +UCLASS() +class MAYBETHISTIME_API APlayerUnit : public ABaseUnit +{ + GENERATED_BODY() + +public: + + EOutlinerStatus GetOutlinerStatus() const override; + +}; diff --git a/Source/MaybeThisTime/Public/ThirdPersonCharacter.h b/Source/MaybeThisTime/Public/ThirdPersonCharacter.h new file mode 100644 index 0000000..27bc5d4 --- /dev/null +++ b/Source/MaybeThisTime/Public/ThirdPersonCharacter.h @@ -0,0 +1,29 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Character.h" +#include "ThirdPersonCharacter.generated.h" + +UCLASS() +class MAYBETHISTIME_API AThirdPersonCharacter : public ACharacter +{ + GENERATED_BODY() + +public: + // Sets default values for this character's properties + AThirdPersonCharacter(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + // Called to bind functionality to input + virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; + +}; diff --git a/Source/MaybeThisTime/Public/ThirdPersonController.h b/Source/MaybeThisTime/Public/ThirdPersonController.h new file mode 100644 index 0000000..e27589a --- /dev/null +++ b/Source/MaybeThisTime/Public/ThirdPersonController.h @@ -0,0 +1,66 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Controller.h" +#include "GameFramework/PlayerController.h" +#include "ThirdPersonController.generated.h" + +class APlayerUnit; +class UUnitManagerComponent; +class AZoneActor; + +UCLASS() +class MAYBETHISTIME_API AThirdPersonController : public APlayerController +{ + GENERATED_BODY() + + +public: + AThirdPersonController(); + + UPROPERTY(VisibleAnywhere, BlueprintReadWrite) UUnitManagerComponent* UnitManager; + UPROPERTY(Replicated, BlueprintReadOnly) FName PlayerFactionID; + + UPROPERTY(BlueprintReadWrite) bool bShiftHeld; + + // Units + UPROPERTY(Replicated, BlueprintReadOnly) APlayerUnit* PlayerUnit; + UFUNCTION(BlueprintCallable, BlueprintPure) APlayerUnit* GetPlayerUnit() const { return PlayerUnit; } + + // Selection + UPROPERTY(BlueprintReadOnly) TArray SelectedUnits; + UFUNCTION(BlueprintCallable) void SelectUnit(ABaseUnit* Unit, bool bAddToSelection = false); + UFUNCTION(BlueprintCallable) void ClearUnitSelection(); + UFUNCTION(BlueprintCallable) void BoxSelect(TArray UnitsInBox); + + UPROPERTY(BlueprintReadOnly) TArray SelectedZones; + UFUNCTION(BlueprintCallable) void SelectZone(AZoneActor* Zone, bool bAddToSelection = false); + UFUNCTION(BlueprintCallable) void ClearZoneSelection(); + + UFUNCTION(BlueprintCallable) void ClearMySelection(); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnSelectionChanged); // Delegate so UI knows when selection changes + UPROPERTY(BlueprintAssignable) FOnSelectionChanged OnSelectionChanged; + + UFUNCTION(BlueprintCallable, BlueprintPure) TArray GetOwnedZones() const; + UFUNCTION(BlueprintCallable) bool SelectClickedActor(AActor* ClickedActor); + + // Currently hovered interactable + UPROPERTY() AActor* HoveredActor; + UFUNCTION(BlueprintCallable) void HandleHover(); + UFUNCTION(BlueprintCallable) void HandleLeftClick(); + UFUNCTION(BlueprintCallable) void HandleRightClick(); + + + // Replication + void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; +protected: + virtual void BeginPlay() override; + virtual void Tick(float DeltaTime) override; + +private: + UPROPERTY() AActor* LastHoveredActor; + bool IsMouseOverUI() const; +}; diff --git a/Source/MaybeThisTime/Public/TopDownGameMode.h b/Source/MaybeThisTime/Public/TopDownGameMode.h new file mode 100644 index 0000000..b717a13 --- /dev/null +++ b/Source/MaybeThisTime/Public/TopDownGameMode.h @@ -0,0 +1,29 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/GameMode.h" +#include "TopDownGameMode.generated.h" + +class ABaseUnit; +class APlayerUnit; +/** + * + */ +UCLASS() +class MAYBETHISTIME_API ATopDownGameMode : public AGameMode +{ + GENERATED_BODY() + +public: + UPROPERTY(EditDefaultsOnly, Category = "Units") TSubclassOf DefaultPlayerUnitClass; + + UFUNCTION(BlueprintCallable) ABaseUnit* SpawnUnit( TSubclassOf UnitClass, FTransform SpawnTransform, FName FactionID = NAME_None); + + + + virtual void BeginPlay() override; + + void PostLogin(APlayerController* NewPlayer) override; +}; diff --git a/Source/MaybeThisTime/Public/TopDownGameState.h b/Source/MaybeThisTime/Public/TopDownGameState.h new file mode 100644 index 0000000..037c3c5 --- /dev/null +++ b/Source/MaybeThisTime/Public/TopDownGameState.h @@ -0,0 +1,80 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/GameState.h" +#include "TopDownGameState.generated.h" + +class UFactionManager; +class ABaseUnit; +class AZoneActor; + + + + +UCLASS() +class MAYBETHISTIME_API ATopDownGameState : public AGameState +{ + GENERATED_BODY() + + ATopDownGameState(); +public: + UPROPERTY(VisibleAnywhere, BlueprintReadOnly) + UFactionManager* FactionManager; + + // Current game time + UPROPERTY(ReplicatedUsing = OnRep_GameTime) float GameHour = 8.f; // start at 8am + UPROPERTY(ReplicatedUsing = OnRep_GameTime) int32 GameDay = 1; + UPROPERTY(EditDefaultsOnly) float RealSecondsPerGameHour = 5.f; + + UFUNCTION(BlueprintCallable, BlueprintPure) FText GetFormattedTime() const; + UFUNCTION(BlueprintCallable, BlueprintPure) bool IsNightTime() const; + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnGameTimeChanged, float, NewHour, int32, NewDay); + UPROPERTY(BlueprintAssignable) FOnGameTimeChanged OnGameTimeChanged; + + // Units + UPROPERTY(Replicated, BlueprintReadOnly) TArray AllUnits; + + void RegisterUnit(ABaseUnit* Unit); + void UnregisterUnit(ABaseUnit* Unit); + + void TickAllUnits(float GameHoursDelta); + void TickUnitNeeds(ABaseUnit* Unit, float GameHoursDelta); + + UFUNCTION(BlueprintCallable, BlueprintPure) TArray GetUnitsForFaction(FName FactionID) const; + + // Zones + UPROPERTY(Replicated, BlueprintReadOnly) TArray AllZones; + + void RegisterZone(AZoneActor* Zone); + void UnregisterZone(AZoneActor* Zone); + + AZoneActor* GetZoneAtLocation(FVector Location) const; + UFUNCTION(BlueprintCallable, BlueprintPure) TArray GetZonesForFaction(FName FactionID) const; + + // Factions + UFUNCTION(BlueprintCallable, BlueprintPure) TArray GetAllFactions() const; + UFUNCTION(BlueprintCallable, BlueprintPure) float GetPlayerMoney() const; + + // Delegate so outliner knows when to refresh + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnWorldStateChanged); + UPROPERTY(BlueprintAssignable, BlueprintCallable) FOnWorldStateChanged OnWorldStateChanged; + UFUNCTION(BlueprintCallable) void BroadcastWorldStateChanged(); + + void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + +protected: + virtual void BeginPlay() override; + virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + +private: + FTimerHandle GameTickTimerHandle; + + UFUNCTION() void OnGameTick(); // fires every RealSecondsPerGameHour + UFUNCTION() void OnRep_GameTime(); + UFUNCTION() void OnRep_WorldStateVersion(); + + UPROPERTY(ReplicatedUsing = OnRep_WorldStateVersion) int32 WorldStateVersion = 0; +}; diff --git a/Source/MaybeThisTime/Public/UnitManagerComponent.h b/Source/MaybeThisTime/Public/UnitManagerComponent.h new file mode 100644 index 0000000..e540f40 --- /dev/null +++ b/Source/MaybeThisTime/Public/UnitManagerComponent.h @@ -0,0 +1,35 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/ActorComponent.h" +#include "UnitManagerComponent.generated.h" + + +class ABaseUnit; +class UBaseCommand; + +UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) +class MAYBETHISTIME_API UUnitManagerComponent : public UActorComponent +{ + GENERATED_BODY() + +public: + UUnitManagerComponent(); + UPROPERTY(BlueprintReadOnly) TArray Squad; + + // Issue commands to Units + UFUNCTION(BlueprintCallable, BlueprintPure) ABaseUnit* GetFreeUnit(); + UFUNCTION(BlueprintCallable) void IssueCommandToUnit(UBaseCommand* Command, ABaseUnit* Unit); + UFUNCTION(BlueprintCallable) void IssueCommandToUnits(UBaseCommand* Command, TArray Units); + UFUNCTION(BlueprintCallable) void IssueCommandToSquad(UBaseCommand* Command); + UFUNCTION(BlueprintCallable) void IssueInteractCommand(AActor* TargetActor, bool bQueue = false); + UFUNCTION(BlueprintCallable) void IssueMoveCommand(FVector Location, bool bQueue = false); + + // Change squad + UFUNCTION(BlueprintCallable) void AddUnitToSquad(ABaseUnit* Unit); + UFUNCTION(BlueprintCallable) void RemoveUnitFromSquad(ABaseUnit* Unit); + UFUNCTION(BlueprintCallable) void ClearSquad(); + UFUNCTION(BlueprintCallable, BlueprintPure) TArray GetSquad(); +}; diff --git a/Source/MaybeThisTime/Public/ZoneActor.h b/Source/MaybeThisTime/Public/ZoneActor.h new file mode 100644 index 0000000..74724df --- /dev/null +++ b/Source/MaybeThisTime/Public/ZoneActor.h @@ -0,0 +1,130 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "InventoryInterface.h" +#include "OutlinerTypes.h" +#include "ZoneActor.generated.h" + +class AModuleActor; +class UInventoryComponent; +class USphereComponent; + +USTRUCT(BlueprintType) +struct FFactionInfluence +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadWrite) FName FactionID; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) float Influence = 0.f; +}; + +UENUM(BlueprintType) +enum class EBuildPermission : uint8 +{ + Denied, + Allowed, + AllowedWithReputation +}; + +USTRUCT(BlueprintType) +struct FResourcePrice +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere) + FName ResourceID; + + UPROPERTY(EditAnywhere) + float BasePrice = 1.f; // price per unit at neutral reputation +}; + +UCLASS() +class MAYBETHISTIME_API AZoneActor : public AActor, public IInventoryInterface +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + AZoneActor(); + + virtual void BeginPlay() override; + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; + + UPROPERTY(Replicated, BlueprintReadOnly) + float ZoneAccount = 10000.f; + + UPROPERTY(EditAnywhere, BlueprintReadOnly) + bool bInfiniteZoneMoney = true; // for now + + // --- Identity --- + UPROPERTY(ReplicatedUsing = OnRep_ZoneData, EditAnywhere, BlueprintReadOnly) FName ZoneID; + UPROPERTY(ReplicatedUsing = OnRep_ZoneData, EditAnywhere, BlueprintReadOnly) FText ZoneName; + UPROPERTY(ReplicatedUsing = OnRep_ZoneData, EditAnywhere, BlueprintReadOnly) FName OwningFaction; + + UFUNCTION(BlueprintCallable, BlueprintPure) EOutlinerStatus GetOutlinerStatus() const; + + // --- Geometry --- + UPROPERTY(ReplicatedUsing = OnRep_Radius, EditAnywhere, BlueprintReadOnly) float Radius = 2000.f; // unreal units + UPROPERTY(VisibleAnywhere, BlueprintReadOnly) USphereComponent* ZoneVolume; + + + // --- Modules --- + UPROPERTY(Replicated, BlueprintReadWrite) TArray Modules; + + // --- Storage --- + UPROPERTY(VisibleAnywhere, BlueprintReadOnly) UInventoryComponent* ZoneStorage; + + // --- Influence --- + UPROPERTY(ReplicatedUsing = OnRep_ZoneData, BlueprintReadOnly) TArray FactionInfluences; + + // --- Delegates --- + // Delegate for UI/AI to react to faction changes + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnZoneChanged, FName, ZoneID); + UPROPERTY(BlueprintAssignable) FOnZoneChanged OnZoneChanged; + + // --- Module management --- + UFUNCTION(BlueprintCallable) bool CanFactionBuildHere(FName FactionID, float Reputation) const; + UFUNCTION(BlueprintCallable) void RegisterModule(AModuleActor* Module); + UFUNCTION(BlueprintCallable) void UnregisterModule(AModuleActor* Module); + UFUNCTION(BlueprintCallable) bool IsLocationInsideZone(FVector Location) const; + + // --- Radius --- + UFUNCTION(BlueprintCallable) void SetRadius(float NewRadius); + + // --- Ownership --- + UFUNCTION(BlueprintCallable) void SetOwningFaction(FName NewFaction); + UFUNCTION(BlueprintCallable) void ModifyInfluence(FName FactionID, float Delta); + + FName GetDominantFaction() const; + + // --- Tick (called by GameState) --- + void TickZone(float GameHoursDelta); + + UPROPERTY(EditAnywhere, BlueprintReadOnly) TArray ResourcePrices; + + // Price scales with reputation - better standing = cheaper + float GetPriceForFaction(FName ResourceID, FName FactionID, float Reputation) const; + + bool CanFactionUseResources(FName FactionID, float Reputation) const; + + virtual UInventoryComponent* GetInventoryComponent_Implementation() const override; + +private: + UFUNCTION() + void OnRep_ZoneData(); + + UFUNCTION() + void OnRep_Radius(); + + void UpdateVolumeSize(); + void TickModuleProduction(float GameHoursDelta); + void TickZoneInfluence(float GameHoursDelta); + void SupplyUnitsInZone(float GameHoursDelta); + + +}; diff --git a/Source/MaybeThisTimeEditor.Target.cs b/Source/MaybeThisTimeEditor.Target.cs new file mode 100644 index 0000000..9a04cbc --- /dev/null +++ b/Source/MaybeThisTimeEditor.Target.cs @@ -0,0 +1,15 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class MaybeThisTimeEditorTarget : TargetRules +{ + public MaybeThisTimeEditorTarget(TargetInfo Target) : base(Target) + { + Type = TargetType.Editor; + DefaultBuildSettings = BuildSettingsVersion.V7; + + ExtraModuleNames.AddRange( new string[] { "MaybeThisTime" } ); + } +}