diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/discord-ij.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/discord-ij.xml
new file mode 100644
index 00000000..b2c4e3f1
--- /dev/null
+++ b/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/discord-ij.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/vcs.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/vcs.xml
new file mode 100644
index 00000000..6c0b8635
--- /dev/null
+++ b/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/.gitignore b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/.gitignore
new file mode 100644
index 00000000..f4076847
--- /dev/null
+++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/projectSettingsUpdater.xml
+/contentModel.xml
+/.idea.EndlessVendetta.iml
+/modules.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/encodings.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/encodings.xml
new file mode 100644
index 00000000..df87cf95
--- /dev/null
+++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/indexLayout.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/indexLayout.xml
new file mode 100644
index 00000000..7b08163c
--- /dev/null
+++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/vcs.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/vcs.xml
new file mode 100644
index 00000000..6c0b8635
--- /dev/null
+++ b/EndlessVendetta/.idea/.idea.EndlessVendetta/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EndlessVendetta/Config/DefaultEditor.ini b/EndlessVendetta/Config/DefaultEditor.ini
index 58552fae..e7314343 100644
--- a/EndlessVendetta/Config/DefaultEditor.ini
+++ b/EndlessVendetta/Config/DefaultEditor.ini
@@ -5,4 +5,7 @@ SimpleMapName=/Game/FirstPerson/Maps/FirstPersonExampleMap
bAllowClassAndBlueprintPinMatching=true
bReplaceBlueprintWithClass= true
bDontLoadBlueprintOutsideEditor= true
-bBlueprintIsNotBlueprintType= true
\ No newline at end of file
+bBlueprintIsNotBlueprintType= true
+
+[/Script/AdvancedPreviewScene.SharedProfiles]
+
diff --git a/EndlessVendetta/Config/DefaultEditorPerProjectUserSettings.ini b/EndlessVendetta/Config/DefaultEditorPerProjectUserSettings.ini
index 220a5519..094343ea 100644
--- a/EndlessVendetta/Config/DefaultEditorPerProjectUserSettings.ini
+++ b/EndlessVendetta/Config/DefaultEditorPerProjectUserSettings.ini
@@ -1,2 +1,196 @@
[ContentBrowser]
-ContentBrowserTab1.SelectedPaths=/Game/FirstPerson
\ No newline at end of file
+ContentBrowserTab1.SelectedPaths=/Game/FirstPerson
+
+[/Script/UnrealEd.LevelEditorPlaySettings]
+PlayFromHerePlayerStartClassName=/Script/Engine.PlayerStartPIE
+GameGetsMouseControl=False
+UseMouseForTouch=False
+ShowMouseControlLabel=True
+MouseControlLabelPosition=LabelAnchorMode_TopLeft
+ViewportGetsHMDControl=False
+ShouldMinimizeEditorOnVRPIE=True
+bShouldMinimizeEditorOnNonVRPIE=False
+bEmulateStereo=False
+AutoRecompileBlueprints=True
+EnableGameSound=True
+SoloAudioInFirstPIEClient=False
+EnablePIEEnterAndExitSounds=False
+PlayInEditorSoundQualityLevel=0
+bUseNonRealtimeAudioDevice=False
+bOnlyLoadVisibleLevelsInPIE=False
+bPreferToStreamLevelsInPIE=False
+bPromoteOutputLogWarningsDuringPIE=False
+NewWindowWidth=1280
+NewWindowHeight=720
+NewWindowPosition=(X=-1,Y=-1)
+CenterNewWindow=False
+PIEAlwaysOnTop=False
+DisableStandaloneSound=False
+AdditionalLaunchParameters=
+BuildGameBeforeLaunch=PlayOnBuild_Default
+LaunchConfiguration=LaunchConfig_Default
+PackFilesForLaunch=NoPak
+bAutoCompileBlueprintsOnLaunch=True
+bLaunchSeparateServer=False
+PlayNetMode=PIE_Standalone
+RunUnderOneProcess=True
+PlayNetDedicated=False
+PlayNumberOfClients=1
+PrimaryPIEClientIndex=0
+ServerPort=17777
+ClientWindowWidth=640
+AutoConnectToServer=True
+RouteGamepadToSecondWindow=False
+CreateAudioDeviceForEveryPlayer=False
+ClientWindowHeight=480
+ServerMapNameOverride=
+AdditionalServerGameOptions=
+AdditionalLaunchOptions=
+bShowServerDebugDrawingByDefault=True
+ServerDebugDrawingColorTintStrength=0.000000
+ServerDebugDrawingColorTint=(R=0.000000,G=0.000000,B=0.000000,A=1.000000)
+AdditionalServerLaunchParameters=
+ServerFixedFPS=0
+NetworkEmulationSettings=(bIsNetworkEmulationEnabled=False,EmulationTarget=Server,CurrentProfile="Custom",OutPackets=(MinLatency=0,MaxLatency=0,PacketLossPercentage=0),InPackets=(MinLatency=0,MaxLatency=0,PacketLossPercentage=0))
+LastSize=(X=0,Y=0)
+LastExecutedLaunchDevice=Windows@MARCELSPC
+LastExecutedLaunchName=MARCELSPC
+LastExecutedLaunchModeType=LaunchMode_OnDevice
+LastExecutedPlayModeLocation=PlayLocation_DefaultPlayerStart
+LastExecutedPlayModeType=PlayMode_InViewPort
+LastExecutedPIEPreviewDevice=
+-LaptopScreenResolutions=(Description="Apple MacBook Air 11",Width=1366,Height=768,AspectRatio="16:9",bCanSwapAspectRatio=true)
+-LaptopScreenResolutions=(Description="Apple MacBook Air 13\"",Width=1440,Height=900,AspectRatio="16:10",bCanSwapAspectRatio=true)
+-LaptopScreenResolutions=(Description="Apple MacBook Pro 13\"",Width=1280,Height=800,AspectRatio="16:10",bCanSwapAspectRatio=true)
+-LaptopScreenResolutions=(Description="Apple MacBook Pro 13\" (Retina)",Width=2560,Height=1600,AspectRatio="16:10",bCanSwapAspectRatio=true)
+-LaptopScreenResolutions=(Description="Apple MacBook Pro 15\"",Width=1440,Height=900,AspectRatio="16:10",bCanSwapAspectRatio=true)
+-LaptopScreenResolutions=(Description="Apple MacBook Pro 15\" (Retina)",Width=2880,Height=1800,AspectRatio="16:10",bCanSwapAspectRatio=true)
+-LaptopScreenResolutions=(Description="Generic 14-15.6\" Notebook",Width=1366,Height=768,AspectRatio="16:9",bCanSwapAspectRatio=true)
++LaptopScreenResolutions=(Description="Apple MacBook Air 11",Width=1366,Height=768,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="")
++LaptopScreenResolutions=(Description="Apple MacBook Air 13\"",Width=1440,Height=900,AspectRatio="16:10",bCanSwapAspectRatio=True,ProfileName="")
++LaptopScreenResolutions=(Description="Apple MacBook Pro 13\"",Width=1280,Height=800,AspectRatio="16:10",bCanSwapAspectRatio=True,ProfileName="")
++LaptopScreenResolutions=(Description="Apple MacBook Pro 13\" (Retina)",Width=2560,Height=1600,AspectRatio="16:10",bCanSwapAspectRatio=True,ProfileName="")
++LaptopScreenResolutions=(Description="Apple MacBook Pro 15\"",Width=1440,Height=900,AspectRatio="16:10",bCanSwapAspectRatio=True,ProfileName="")
++LaptopScreenResolutions=(Description="Apple MacBook Pro 15\" (Retina)",Width=2880,Height=1800,AspectRatio="16:10",bCanSwapAspectRatio=True,ProfileName="")
++LaptopScreenResolutions=(Description="Generic 14-15.6\" Notebook",Width=1366,Height=768,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="")
+-MonitorScreenResolutions=(Description="19\" monitor",Width=1440,Height=900,AspectRatio="16:10",bCanSwapAspectRatio=true)
+-MonitorScreenResolutions=(Description="20\" monitor",Width=1600,Height=900,AspectRatio="16:9",bCanSwapAspectRatio=true)
+-MonitorScreenResolutions=(Description="22\" monitor",Width=1680,Height=1050,AspectRatio="16:10",bCanSwapAspectRatio=true)
+-MonitorScreenResolutions=(Description="21.5-24\" monitor",Width=1920,Height=1080,AspectRatio="16:9",bCanSwapAspectRatio=true)
+-MonitorScreenResolutions=(Description="27\" monitor",Width=2560,Height=1440,AspectRatio="16:9",bCanSwapAspectRatio=true)
++MonitorScreenResolutions=(Description="19\" monitor",Width=1440,Height=900,AspectRatio="16:10",bCanSwapAspectRatio=True,ProfileName="")
++MonitorScreenResolutions=(Description="20\" monitor",Width=1600,Height=900,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="")
++MonitorScreenResolutions=(Description="22\" monitor",Width=1680,Height=1050,AspectRatio="16:10",bCanSwapAspectRatio=True,ProfileName="")
++MonitorScreenResolutions=(Description="21.5-24\" monitor",Width=1920,Height=1080,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="")
++MonitorScreenResolutions=(Description="27\" monitor",Width=2560,Height=1440,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="")
+-PhoneScreenResolutions=(Description="Apple iPhone 5S",Width=320,Height=568,AspectRatio="~16:9",bCanSwapAspectRatio=true,ProfileName="iPhone5S")
+-PhoneScreenResolutions=(Description="Apple iPhone 6",Width=375,Height=667,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhone6")
+-PhoneScreenResolutions=(Description="Apple iPhone 6+",Width=414,Height=736,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhone6Plus")
+-PhoneScreenResolutions=(Description="Apple iPhone 6S",Width=375,Height=667,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhone6S")
+-PhoneScreenResolutions=(Description="Apple iPhone 6S+",Width=414,Height=736,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhone6SPlus")
+-PhoneScreenResolutions=(Description="Apple iPhone 7",Width=375,Height=667,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhone7")
+-PhoneScreenResolutions=(Description="Apple iPhone 7+",Width=414,Height=736,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhone7Plus")
+-PhoneScreenResolutions=(Description="Apple iPhone 8",Width=375,Height=667,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhone8")
+-PhoneScreenResolutions=(Description="Apple iPhone 8+",Width=414,Height=736,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhone8Plus")
+-PhoneScreenResolutions=(Description="Apple iPhone X",Width=375,Height=812,AspectRatio="19.5:9",bCanSwapAspectRatio=true,ProfileName="iPhoneX")
+-PhoneScreenResolutions=(Description="Apple iPhone XS",Width=375,Height=812,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhoneXS")
+-PhoneScreenResolutions=(Description="Apple iPhone XS Max",Width=414,Height=896,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhoneXSMax")
+-PhoneScreenResolutions=(Description="Apple iPhone XR",Width=414,Height=896,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="iPhoneXR")
+-PhoneScreenResolutions=(Description="HTC One",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_High")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S4",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_Low")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S6",Width=1440,Height=2560,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_Mali_T7xx")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S7",Width=1440,Height=2560,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_High")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S8 (Mali)",Width=1080,Height=2220,AspectRatio="18.5:9",bCanSwapAspectRatio=true,ProfileName="Android_Mali_G71")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S8 (Adreno)",Width=1080,Height=2220,AspectRatio="18.5:9",bCanSwapAspectRatio=true,ProfileName="Android_Adreno5xx")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S9 (Mali)",Width=1440,Height=2960,AspectRatio="18.5:9",bCanSwapAspectRatio=true,ProfileName="Android_High")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S9 (Adreno)",Width=1440,Height=2960,AspectRatio="18.5:9",bCanSwapAspectRatio=true,ProfileName="Android_High")
+-PhoneScreenResolutions=(Description="Samsung Galaxy Note 9 (Mali)",Width=1440,Height=2960,AspectRatio="18.5:9",bCanSwapAspectRatio=true,ProfileName="Android_High")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S10 (Adreno)",Width=1440,Height=3040,AspectRatio="19:9",bCanSwapAspectRatio=true,ProfileName="Android_Adreno6xx")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S10 (Mali)",Width=1440,Height=3040,AspectRatio="19:9",bCanSwapAspectRatio=true,ProfileName="Android_Mali_G76")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S10e (Adreno)",Width=1080,Height=2280,AspectRatio="19:9",bCanSwapAspectRatio=true,ProfileName="Android_Adreno6xx")
+-PhoneScreenResolutions=(Description="Samsung Galaxy S10e (Mali)",Width=1080,Height=2280,AspectRatio="19:9",bCanSwapAspectRatio=true,ProfileName="Android_Mali_G76")
+-PhoneScreenResolutions=(Description="Google Pixel",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_Mid")
+-PhoneScreenResolutions=(Description="Google Pixel XL",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_Mid")
+-PhoneScreenResolutions=(Description="Google Pixel 2",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_Mid")
+-PhoneScreenResolutions=(Description="Google Pixel 2 XL",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_Mid")
+-PhoneScreenResolutions=(Description="Google Pixel 3",Width=1080,Height=2160,AspectRatio="18:9",bCanSwapAspectRatio=true,ProfileName="Android_Mid")
+-PhoneScreenResolutions=(Description="Google Pixel 3 XL",Width=1440,Height=2960,AspectRatio="18.5:9",bCanSwapAspectRatio=true,ProfileName="Android_Mid")
+-PhoneScreenResolutions=(Description="Razer Phone",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=true,ProfileName="Android_Mid")
++PhoneScreenResolutions=(Description="Apple iPhone 5S",Width=320,Height=568,AspectRatio="~16:9",bCanSwapAspectRatio=True,ProfileName="iPhone5S")
++PhoneScreenResolutions=(Description="Apple iPhone 6",Width=375,Height=667,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhone6")
++PhoneScreenResolutions=(Description="Apple iPhone 6+",Width=414,Height=736,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhone6Plus")
++PhoneScreenResolutions=(Description="Apple iPhone 6S",Width=375,Height=667,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhone6S")
++PhoneScreenResolutions=(Description="Apple iPhone 6S+",Width=414,Height=736,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhone6SPlus")
++PhoneScreenResolutions=(Description="Apple iPhone 7",Width=375,Height=667,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhone7")
++PhoneScreenResolutions=(Description="Apple iPhone 7+",Width=414,Height=736,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhone7Plus")
++PhoneScreenResolutions=(Description="Apple iPhone 8",Width=375,Height=667,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhone8")
++PhoneScreenResolutions=(Description="Apple iPhone 8+",Width=414,Height=736,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhone8Plus")
++PhoneScreenResolutions=(Description="Apple iPhone X",Width=375,Height=812,AspectRatio="19.5:9",bCanSwapAspectRatio=True,ProfileName="iPhoneX")
++PhoneScreenResolutions=(Description="Apple iPhone XS",Width=375,Height=812,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhoneXS")
++PhoneScreenResolutions=(Description="Apple iPhone XS Max",Width=414,Height=896,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhoneXSMax")
++PhoneScreenResolutions=(Description="Apple iPhone XR",Width=414,Height=896,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="iPhoneXR")
++PhoneScreenResolutions=(Description="HTC One",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_High")
++PhoneScreenResolutions=(Description="Samsung Galaxy S4",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_Low")
++PhoneScreenResolutions=(Description="Samsung Galaxy S6",Width=1440,Height=2560,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_Mali_T7xx")
++PhoneScreenResolutions=(Description="Samsung Galaxy S7",Width=1440,Height=2560,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_High")
++PhoneScreenResolutions=(Description="Samsung Galaxy S8 (Mali)",Width=1080,Height=2220,AspectRatio="18.5:9",bCanSwapAspectRatio=True,ProfileName="Android_Mali_G71")
++PhoneScreenResolutions=(Description="Samsung Galaxy S8 (Adreno)",Width=1080,Height=2220,AspectRatio="18.5:9",bCanSwapAspectRatio=True,ProfileName="Android_Adreno5xx")
++PhoneScreenResolutions=(Description="Samsung Galaxy S9 (Mali)",Width=1440,Height=2960,AspectRatio="18.5:9",bCanSwapAspectRatio=True,ProfileName="Android_High")
++PhoneScreenResolutions=(Description="Samsung Galaxy S9 (Adreno)",Width=1440,Height=2960,AspectRatio="18.5:9",bCanSwapAspectRatio=True,ProfileName="Android_High")
++PhoneScreenResolutions=(Description="Samsung Galaxy Note 9 (Mali)",Width=1440,Height=2960,AspectRatio="18.5:9",bCanSwapAspectRatio=True,ProfileName="Android_High")
++PhoneScreenResolutions=(Description="Samsung Galaxy S10 (Adreno)",Width=1440,Height=3040,AspectRatio="19:9",bCanSwapAspectRatio=True,ProfileName="Android_Adreno6xx")
++PhoneScreenResolutions=(Description="Samsung Galaxy S10 (Mali)",Width=1440,Height=3040,AspectRatio="19:9",bCanSwapAspectRatio=True,ProfileName="Android_Mali_G76")
++PhoneScreenResolutions=(Description="Samsung Galaxy S10e (Adreno)",Width=1080,Height=2280,AspectRatio="19:9",bCanSwapAspectRatio=True,ProfileName="Android_Adreno6xx")
++PhoneScreenResolutions=(Description="Samsung Galaxy S10e (Mali)",Width=1080,Height=2280,AspectRatio="19:9",bCanSwapAspectRatio=True,ProfileName="Android_Mali_G76")
++PhoneScreenResolutions=(Description="Google Pixel",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_Mid")
++PhoneScreenResolutions=(Description="Google Pixel XL",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_Mid")
++PhoneScreenResolutions=(Description="Google Pixel 2",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_Mid")
++PhoneScreenResolutions=(Description="Google Pixel 2 XL",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_Mid")
++PhoneScreenResolutions=(Description="Google Pixel 3",Width=1080,Height=2160,AspectRatio="18:9",bCanSwapAspectRatio=True,ProfileName="Android_Mid")
++PhoneScreenResolutions=(Description="Google Pixel 3 XL",Width=1440,Height=2960,AspectRatio="18.5:9",bCanSwapAspectRatio=True,ProfileName="Android_Mid")
++PhoneScreenResolutions=(Description="Razer Phone",Width=1080,Height=1920,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="Android_Mid")
+-TabletScreenResolutions=(Description="iPad Pro 12.9-inch (3rd gen.)",Width=1024,Height=1366,AspectRatio="~3:4",bCanSwapAspectRatio=true,ProfileName="iPadPro3_129")
+-TabletScreenResolutions=(Description="iPad Pro 12.9-inch (2nd gen.)",Width=1024,Height=1366,AspectRatio="~3:4",bCanSwapAspectRatio=true,ProfileName="iPadPro2_129")
+-TabletScreenResolutions=(Description="iPad Pro 11-inch",Width=834,Height=1194,AspectRatio="5:7",bCanSwapAspectRatio=true,ProfileName="iPadPro11")
+-TabletScreenResolutions=(Description="iPad Pro 10.5-inch",Width=834,Height=1112,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPadPro105")
+-TabletScreenResolutions=(Description="iPad Pro 12.9-inch",Width=1024,Height=1366,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPadPro129")
+-TabletScreenResolutions=(Description="iPad Pro 9.7-inch",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPadPro97")
+-TabletScreenResolutions=(Description="iPad (6th gen.)",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPad6")
+-TabletScreenResolutions=(Description="iPad (5th gen.)",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPad5")
+-TabletScreenResolutions=(Description="iPad Air 3",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPadAir3")
+-TabletScreenResolutions=(Description="iPad Air 2",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPadAir2")
+-TabletScreenResolutions=(Description="iPad Mini 5",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPadMini5")
+-TabletScreenResolutions=(Description="iPad Mini 4",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=true,ProfileName="iPadMini4")
+-TabletScreenResolutions=(Description="LG G Pad X 8.0",Width=768,Height=1366,AspectRatio="9:16",bCanSwapAspectRatio=true)
+-TabletScreenResolutions=(Description="Asus Zenpad 3s 10",Width=768,Height=1366,AspectRatio="9:16",bCanSwapAspectRatio=true)
+-TabletScreenResolutions=(Description="Huawei MediaPad M3",Width=768,Height=1366,AspectRatio="9:16",bCanSwapAspectRatio=true)
+-TabletScreenResolutions=(Description="Microsoft Surface RT",Width=768,Height=1366,AspectRatio="9:16",bCanSwapAspectRatio=true)
+-TabletScreenResolutions=(Description="Microsoft Surface Pro",Width=1080,Height=1920,AspectRatio="9:16",bCanSwapAspectRatio=true)
++TabletScreenResolutions=(Description="iPad Pro 12.9-inch (3rd gen.)",Width=1024,Height=1366,AspectRatio="~3:4",bCanSwapAspectRatio=True,ProfileName="iPadPro3_129")
++TabletScreenResolutions=(Description="iPad Pro 12.9-inch (2nd gen.)",Width=1024,Height=1366,AspectRatio="~3:4",bCanSwapAspectRatio=True,ProfileName="iPadPro2_129")
++TabletScreenResolutions=(Description="iPad Pro 11-inch",Width=834,Height=1194,AspectRatio="5:7",bCanSwapAspectRatio=True,ProfileName="iPadPro11")
++TabletScreenResolutions=(Description="iPad Pro 10.5-inch",Width=834,Height=1112,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPadPro105")
++TabletScreenResolutions=(Description="iPad Pro 12.9-inch",Width=1024,Height=1366,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPadPro129")
++TabletScreenResolutions=(Description="iPad Pro 9.7-inch",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPadPro97")
++TabletScreenResolutions=(Description="iPad (6th gen.)",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPad6")
++TabletScreenResolutions=(Description="iPad (5th gen.)",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPad5")
++TabletScreenResolutions=(Description="iPad Air 3",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPadAir3")
++TabletScreenResolutions=(Description="iPad Air 2",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPadAir2")
++TabletScreenResolutions=(Description="iPad Mini 5",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPadMini5")
++TabletScreenResolutions=(Description="iPad Mini 4",Width=768,Height=1024,AspectRatio="3:4",bCanSwapAspectRatio=True,ProfileName="iPadMini4")
++TabletScreenResolutions=(Description="LG G Pad X 8.0",Width=768,Height=1366,AspectRatio="9:16",bCanSwapAspectRatio=True,ProfileName="")
++TabletScreenResolutions=(Description="Asus Zenpad 3s 10",Width=768,Height=1366,AspectRatio="9:16",bCanSwapAspectRatio=True,ProfileName="")
++TabletScreenResolutions=(Description="Huawei MediaPad M3",Width=768,Height=1366,AspectRatio="9:16",bCanSwapAspectRatio=True,ProfileName="")
++TabletScreenResolutions=(Description="Microsoft Surface RT",Width=768,Height=1366,AspectRatio="9:16",bCanSwapAspectRatio=True,ProfileName="")
++TabletScreenResolutions=(Description="Microsoft Surface Pro",Width=1080,Height=1920,AspectRatio="9:16",bCanSwapAspectRatio=True,ProfileName="")
+-TelevisionScreenResolutions=(Description="720p (HDTV, Blu-ray)",Width=1280,Height=720,AspectRatio="16:9",bCanSwapAspectRatio=true)
+-TelevisionScreenResolutions=(Description="1080i, 1080p (HDTV, Blu-ray)",Width=1920,Height=1080,AspectRatio="16:9",bCanSwapAspectRatio=true)
+-TelevisionScreenResolutions=(Description="4K Ultra HD",Width=3840,Height=2160,AspectRatio="16:9",bCanSwapAspectRatio=true)
+-TelevisionScreenResolutions=(Description="4K Digital Cinema",Width=4096,Height=2160,AspectRatio="1.90:1",bCanSwapAspectRatio=true)
++TelevisionScreenResolutions=(Description="720p (HDTV, Blu-ray)",Width=1280,Height=720,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="")
++TelevisionScreenResolutions=(Description="1080i, 1080p (HDTV, Blu-ray)",Width=1920,Height=1080,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="")
++TelevisionScreenResolutions=(Description="4K Ultra HD",Width=3840,Height=2160,AspectRatio="16:9",bCanSwapAspectRatio=True,ProfileName="")
++TelevisionScreenResolutions=(Description="4K Digital Cinema",Width=4096,Height=2160,AspectRatio="1.90:1",bCanSwapAspectRatio=True,ProfileName="")
+DeviceToEmulate=
+PIESafeZoneOverride=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000)
+
diff --git a/EndlessVendetta/Config/DefaultEngine.ini b/EndlessVendetta/Config/DefaultEngine.ini
index b419691f..280d5d43 100644
--- a/EndlessVendetta/Config/DefaultEngine.ini
+++ b/EndlessVendetta/Config/DefaultEngine.ini
@@ -4,16 +4,18 @@
+EditProfiles=(Name="Trigger",CustomResponses=((Channel=Projectile, Response=ECR_Ignore)))
[/Script/EngineSettings.GameMapsSettings]
-EditorStartupMap=/Game/FirstPerson/Maps/FirstPersonMap.FirstPersonMap
+EditorStartupMap=/Game/FirstPerson/Maps/GunMechanicTester.GunMechanicTester
LocalMapOptions=
-TransitionMap=
+TransitionMap=None
bUseSplitscreen=True
TwoPlayerSplitscreenLayout=Horizontal
ThreePlayerSplitscreenLayout=FavorTop
+FourPlayerSplitscreenLayout=Grid
+bOffsetPlayerGamepadIds=False
GameInstanceClass=/Script/Engine.GameInstance
-GameDefaultMap=/Game/FirstPerson/Maps/FirstPersonMap.FirstPersonMap
-ServerDefaultMap=/Engine/Maps/Entry
-GlobalDefaultGameMode=/Script/EndlessVendetta.EndlessVendettaGameMode
+GameDefaultMap=/Game/FirstPerson/Maps/GunMechanicTester.GunMechanicTester
+ServerDefaultMap=/Engine/Maps/Entry.Entry
+GlobalDefaultGameMode=/Game/FirstPerson/GunMechanicWorld.GunMechanicWorld_C
GlobalDefaultServerGameMode=None
[/Script/Engine.RendererSettings]
@@ -23,9 +25,8 @@ r.DynamicGlobalIlluminationMethod=1
r.Mobile.EnableNoPrecomputedLightingCSMShader=1
r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True
r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=true
-
-
r.Shadow.Virtual.Enable=1
+r.DefaultFeature.AutoExposure=False
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
@@ -56,8 +57,6 @@ CompressionQualityModifier=1.000000
AutoStreamingThreshold=0.000000
SoundCueCookQualityIndex=-1
-
-
[/Script/HardwareTargeting.HardwareTargetingSettings]
TargetedHardwareClass=Desktop
AppliedTargetedHardwareClass=Desktop
@@ -67,6 +66,8 @@ AppliedDefaultGraphicsPerformance=Maximum
[/Script/Engine.Engine]
+ActiveGameNameRedirects=(OldGameName="TP_FirstPerson",NewGameName="/Script/EndlessVendetta")
+ActiveGameNameRedirects=(OldGameName="/Script/TP_FirstPerson",NewGameName="/Script/EndlessVendetta")
++ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPerson",NewGameName="/Script/EndlessVendetta")
++ActiveGameNameRedirects=(OldGameName="TP_ThirdPerson",NewGameName="/Script/EndlessVendetta")
+ActiveClassRedirects=(OldClassName="TP_FirstPersonProjectile",NewClassName="EndlessVendettaProjectile")
+ActiveClassRedirects=(OldClassName="TP_FirstPersonGameMode",NewClassName="EndlessVendettaGameMode")
+ActiveClassRedirects=(OldClassName="TP_FirstPersonCharacter",NewClassName="EndlessVendettaCharacter")
@@ -85,3 +86,11 @@ ConnectionType=USBOnly
bUseManualIPAddress=False
ManualIPAddress=
+
+[CoreRedirects]
++PropertyRedirects=(OldName="/Script/EndlessVendetta.BaseWeaponClass.player",NewName="/Script/EndlessVendetta.BaseWeaponClass.playerInWorld")
+
+[/Script/NavigationSystem.RecastNavMesh]
+AgentMaxStepHeight=73.434059
+AgentMaxSlope=64.648003
+
diff --git a/EndlessVendetta/Config/DefaultInput.ini b/EndlessVendetta/Config/DefaultInput.ini
index 1bf5f902..aec1fc5c 100644
--- a/EndlessVendetta/Config/DefaultInput.ini
+++ b/EndlessVendetta/Config/DefaultInput.ini
@@ -93,6 +93,7 @@ bEnableLegacyInputScales=True
bEnableMotionControls=True
bFilterInputByPlatformUser=False
bShouldFlushPressedKeysOnViewportFocusLost=True
+bEnableDynamicComponentInputBinding=True
bAlwaysShowTouchInterface=False
bShowConsoleOnFourFingerTap=True
bEnableGestureRecognizer=False
@@ -101,6 +102,18 @@ DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown
DefaultViewportMouseLockMode=LockOnCapture
FOVScale=0.011110
DoubleClickTime=0.200000
++ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Gamepad_FaceButton_Bottom)
++ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar)
++AxisMappings=(AxisName="Look Up / Down Gamepad",Scale=1.000000,Key=Gamepad_RightY)
++AxisMappings=(AxisName="Look Up / Down Mouse",Scale=-1.000000,Key=MouseY)
++AxisMappings=(AxisName="Move Forward / Backward",Scale=1.000000,Key=Gamepad_LeftY)
++AxisMappings=(AxisName="Move Forward / Backward",Scale=-1.000000,Key=S)
++AxisMappings=(AxisName="Move Forward / Backward",Scale=1.000000,Key=W)
++AxisMappings=(AxisName="Move Right / Left",Scale=-1.000000,Key=A)
++AxisMappings=(AxisName="Move Right / Left",Scale=1.000000,Key=D)
++AxisMappings=(AxisName="Move Right / Left",Scale=1.000000,Key=Gamepad_LeftX)
++AxisMappings=(AxisName="Turn Right / Left Gamepad",Scale=1.000000,Key=Gamepad_RightX)
++AxisMappings=(AxisName="Turn Right / Left Mouse",Scale=1.000000,Key=MouseX)
DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput
DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks
diff --git a/EndlessVendetta/Content/AI/Companion/Generic/BB_GenericCompanion.uasset b/EndlessVendetta/Content/AI/Companion/Generic/BB_GenericCompanion.uasset
new file mode 100644
index 00000000..13d036c4
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Companion/Generic/BB_GenericCompanion.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:20197ccd89d5871cd395eac1941f9d29344e76e457d5ebd1200fd271f2ced360
+size 2627
diff --git a/EndlessVendetta/Content/AI/Companion/Generic/BT_GenericCompanion.uasset b/EndlessVendetta/Content/AI/Companion/Generic/BT_GenericCompanion.uasset
new file mode 100644
index 00000000..6fb83025
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Companion/Generic/BT_GenericCompanion.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a51c6e09ee9b960ab6f095ef348e94881cf58c2594520303790718cdbd2b12d
+size 10480
diff --git a/EndlessVendetta/Content/AI/Companion/Generic/CompanionCharacter.uasset b/EndlessVendetta/Content/AI/Companion/Generic/CompanionCharacter.uasset
new file mode 100644
index 00000000..756cb54f
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Companion/Generic/CompanionCharacter.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81819e2798f36f0fba8aa19cc63f66025941404eef5b0bab1cce20b9fc9bc63e
+size 33153
diff --git a/EndlessVendetta/Content/AI/Companion/Generic/EQS_FindCoverNearPlayer.uasset b/EndlessVendetta/Content/AI/Companion/Generic/EQS_FindCoverNearPlayer.uasset
new file mode 100644
index 00000000..6f4e7c66
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Companion/Generic/EQS_FindCoverNearPlayer.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7b6be5f989ea63aac50260d68dd846abb7a4a421a8d3fa81d193204c6514c68
+size 24886
diff --git a/EndlessVendetta/Content/AI/EQSB_Enemy.uasset b/EndlessVendetta/Content/AI/EQSB_Enemy.uasset
new file mode 100644
index 00000000..39744dd3
--- /dev/null
+++ b/EndlessVendetta/Content/AI/EQSB_Enemy.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9fafb5ea724311d8a706eb8f12493e004ab343735895a80be1811e2caa95f64
+size 18966
diff --git a/EndlessVendetta/Content/AI/EQSB_Player.uasset b/EndlessVendetta/Content/AI/EQSB_Player.uasset
new file mode 100644
index 00000000..65abdba4
--- /dev/null
+++ b/EndlessVendetta/Content/AI/EQSB_Player.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92ebb9e1566806ef68b6d274fa0a1ebd629b71d24c87c36024db0720213cdc8b
+size 17638
diff --git a/EndlessVendetta/Content/AI/EQS_Test.uasset b/EndlessVendetta/Content/AI/EQS_Test.uasset
new file mode 100644
index 00000000..d6184a2f
--- /dev/null
+++ b/EndlessVendetta/Content/AI/EQS_Test.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d7fcae1638292db5530edb7c1a864ecfedc45f339b8bbf85f86a78754f1ac4a
+size 24150
diff --git a/EndlessVendetta/Content/AI/Enemy/Basic/BB_BasicEnemy.uasset b/EndlessVendetta/Content/AI/Enemy/Basic/BB_BasicEnemy.uasset
new file mode 100644
index 00000000..6d6bc456
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Enemy/Basic/BB_BasicEnemy.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1aff4919ba640ff5f41aabd18e3f45977e9d63d434f7e93cdab5d84b3b7df8f6
+size 6288
diff --git a/EndlessVendetta/Content/AI/Enemy/Basic/BP_AIControlHub.uasset b/EndlessVendetta/Content/AI/Enemy/Basic/BP_AIControlHub.uasset
new file mode 100644
index 00000000..22898b43
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Enemy/Basic/BP_AIControlHub.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef50faf065f81655d520a752397bdbba2865e4c96e537947d4cdd3c78508f1e6
+size 21271
diff --git a/EndlessVendetta/Content/AI/Enemy/Basic/BP_BasicEnemyCharacter.uasset b/EndlessVendetta/Content/AI/Enemy/Basic/BP_BasicEnemyCharacter.uasset
new file mode 100644
index 00000000..88e46b73
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Enemy/Basic/BP_BasicEnemyCharacter.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2b2bbd7cc7db7f928c1490a0409ceb2240b78bfb1374d0ef5483f941bd4301b
+size 34405
diff --git a/EndlessVendetta/Content/AI/Enemy/Basic/BP_PatrolPath.uasset b/EndlessVendetta/Content/AI/Enemy/Basic/BP_PatrolPath.uasset
new file mode 100644
index 00000000..6f508524
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Enemy/Basic/BP_PatrolPath.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:29562c22635b352e858f43519d92020839358b09afd4a5138f4eba660bd10143
+size 23184
diff --git a/EndlessVendetta/Content/AI/Enemy/Basic/BT_BasicEnemy.uasset b/EndlessVendetta/Content/AI/Enemy/Basic/BT_BasicEnemy.uasset
new file mode 100644
index 00000000..45c0d2a1
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Enemy/Basic/BT_BasicEnemy.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b818b3645e40ca126811ffdc0a3d59b41fec38fc50f493cf9a7f9b78aa41554e
+size 60604
diff --git a/EndlessVendetta/Content/AI/Enemy/Basic/EQS_EnemyFindCover.uasset b/EndlessVendetta/Content/AI/Enemy/Basic/EQS_EnemyFindCover.uasset
new file mode 100644
index 00000000..ae3f1455
--- /dev/null
+++ b/EndlessVendetta/Content/AI/Enemy/Basic/EQS_EnemyFindCover.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e53cfdf2c62f71a8e9cf4533df7a333c33ddec1b9b830b7c85434c2dad50b3c
+size 11760
diff --git a/EndlessVendetta/Content/BountySystem/BountyDirector.uasset b/EndlessVendetta/Content/BountySystem/BountyDirector.uasset
new file mode 100644
index 00000000..864d575c
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/BountyDirector.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8364b58c763904adb7b727800d9e1d2de027a9793f82db94c34cfa3ef32be588
+size 43410
diff --git a/EndlessVendetta/Content/BountySystem/CC_ReturnToShip.uasset b/EndlessVendetta/Content/BountySystem/CC_ReturnToShip.uasset
new file mode 100644
index 00000000..9fce0370
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/CC_ReturnToShip.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7cad648008fd70041f5bf4f160cffa927427c047f41469065e52f61f4fbc5ac
+size 22256
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/BC_TestBounty1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/BC_TestBounty1.uasset
new file mode 100644
index 00000000..6235ec12
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/BC_TestBounty1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd50cc9532eeeff9ce7cb812e9e03c28b92860a7793f37f4f39b9a061a0a075a
+size 27020
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_1.uasset
new file mode 100644
index 00000000..a63f7b7c
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8c2b9772377d7c970c6e0b27eb1c7e70859df8ecc6e37d8e76d6700c63aa93d
+size 39590
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_2.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_2.uasset
new file mode 100644
index 00000000..9750c92a
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1236ba19a7d2c62dcc1607f3e73db7b8cb67f0fbcc84d34ff603ca98807050f
+size 39541
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_3.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_3.uasset
new file mode 100644
index 00000000..e06e3641
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/Checkpoints/CC_Test1_3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd19115cde54422bb8a86f8de553f1e9de27982bde4fd798eaa08290459f9c1e
+size 39540
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/Checkpoints/CC_SideTest1_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/Checkpoints/CC_SideTest1_1.uasset
new file mode 100644
index 00000000..8ed2eabd
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/Checkpoints/CC_SideTest1_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2d30e5ffdcb69db19e7d829035a0ebd1e73cac5fd1b10300e081a7bb67d4a92
+size 39477
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/Checkpoints/CC_SideTest1_Replacement_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/Checkpoints/CC_SideTest1_Replacement_1.uasset
new file mode 100644
index 00000000..72155b25
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/Checkpoints/CC_SideTest1_Replacement_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:14eaef3239f5095b66728601fa95223c30fd67cc9bf4c52b055734aac60a7388
+size 39708
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/SB_TestSideBounty1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/SB_TestSideBounty1.uasset
new file mode 100644
index 00000000..8d8f5cc2
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty1/SB_TestSideBounty1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e13db15ea111f6efb21a5777152b8a4a6a34c5af4aa592b73b6fe7d0b9f0a9c
+size 27169
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/Checkpoints/CC_SideTest2_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/Checkpoints/CC_SideTest2_1.uasset
new file mode 100644
index 00000000..1f9e13bf
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/Checkpoints/CC_SideTest2_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a87f05fe6854ed82a5db66b2c07fbb381be0d153e5abba8a486f408b2e004b27
+size 39387
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/Checkpoints/CC_SideTest2_2.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/Checkpoints/CC_SideTest2_2.uasset
new file mode 100644
index 00000000..d8e02fed
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/Checkpoints/CC_SideTest2_2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3cf8bab0d0b5317a555098d30d7d4864b800c47b81dcd522cc64fc142153ac3e
+size 39564
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/SB_TestSideBounty_2.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/SB_TestSideBounty_2.uasset
new file mode 100644
index 00000000..a04d5636
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty1/SideBounties/TestSideBounty2/SB_TestSideBounty_2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:646e508a4884b73eaac398d4061f707f16b12a4eccd28bee398496050b16aa9e
+size 27303
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/BC_TestBounty2.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/BC_TestBounty2.uasset
new file mode 100644
index 00000000..885ca38f
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/BC_TestBounty2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42dfa3a8b7f8c66bbdf4f9875672f9efc2501e7aee9e28f0dfbd72a1259b0493
+size 22778
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/SB_SideTest2_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/SB_SideTest2_1.uasset
new file mode 100644
index 00000000..abd1ec8f
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/SB_SideTest2_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2190aa3998c9523b02ee9f4e31c6baa8797c220bf1f0a024a05110034ac4ef1b
+size 23037
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/checkpoints/CC_Replacement_SideTest2_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/checkpoints/CC_Replacement_SideTest2_1.uasset
new file mode 100644
index 00000000..ede79440
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/checkpoints/CC_Replacement_SideTest2_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:62aabf7b119ce98c1b24d02b5e1f16040b79d1777b6971d344aae896481b93a9
+size 39556
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/checkpoints/CC_SideTest2_First.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/checkpoints/CC_SideTest2_First.uasset
new file mode 100644
index 00000000..a83ba390
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/SideBounties/checkpoints/CC_SideTest2_First.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f92ca0a9deafc5e5cad2efc032ff4c6f96ffcfaeeab24074e6dd2cffcdfb765d
+size 39558
diff --git a/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/checkpoints/CC_Test2_1.uasset b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/checkpoints/CC_Test2_1.uasset
new file mode 100644
index 00000000..ec736e3e
--- /dev/null
+++ b/EndlessVendetta/Content/BountySystem/TestBounties/Test_Bounty2/checkpoints/CC_Test2_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea139267d19360db4dadf77cd0e2684922997ddaec704ff427b261a38051cfab
+size 39284
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Animations/Jog_Fwd.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Animations/Jog_Fwd.uasset
new file mode 100644
index 00000000..b915e8e3
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Animations/Jog_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81b4dd2a00331ba3086ce06a8673667359183399c5fb1ab924060e2c84720691
+size 203111
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_Latex_Black.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_Latex_Black.uasset
new file mode 100644
index 00000000..4d2cc648
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_Latex_Black.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa87ecdbb722402bdb4decef1a53487d6b74789076cb7aa51a4521553f478a89
+size 13710
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige.uasset
new file mode 100644
index 00000000..26c98f45
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b544f3c62bdc242ceb673eb94a30a1bb881ea3b126d849e8e969ea6b30c25772
+size 10382
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige_Logo.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige_Logo.uasset
new file mode 100644
index 00000000..71812b72
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige_Logo.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff2747888cb753414087d94c0aaa824e88aae93ca25584419a1ace2de31bb048
+size 11197
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_SoftMetal.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_SoftMetal.uasset
new file mode 100644
index 00000000..3fbbe601
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/Layers/ML_SoftMetal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28ffa6db34aa484d7f36d872c88b5628a5a9aff7279c1e0d819fb20fe29459ed
+size 14647
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_Body.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_Body.uasset
new file mode 100644
index 00000000..ab712a1e
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_Body.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4042ac871e2df59386ec9b28ce4c8436753e92ba1e0c69b8ba1b75220a386e96
+size 28440
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_ChestLogo.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_ChestLogo.uasset
new file mode 100644
index 00000000..86a96e3a
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_ChestLogo.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03e96660ce9ddd947d06b73332cc5e3ce76339f937d2cd7ef5396e20a1bdd968
+size 11162
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin.uasset
new file mode 100644
index 00000000..f5959314
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:add4a29562eefee1f38203b6377e56cdb62ad5f109776e845d05e4050552926c
+size 5583495
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_PhysicsAsset.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_PhysicsAsset.uasset
new file mode 100644
index 00000000..063f9350
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_PhysicsAsset.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c8e0bf4f4a7a8702be683d64e382e0994d56a24f6ef94a0e13d0d3504df9e490
+size 46446
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_Skeleton.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_Skeleton.uasset
new file mode 100644
index 00000000..5ee88a5f
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_Skeleton.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44ad784e4e3635f78abc34c3f266522218994b20714ddda144bbcbaa5972c4ed
+size 22962
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/IK_UE4_Mannequin.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/IK_UE4_Mannequin.uasset
new file mode 100644
index 00000000..80b681c2
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/IK_UE4_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce8694572ad9b6bf3f7b4bfb00f12aba5d5253d65389475ebcc8f9d8d43c37b2
+size 68924
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/RTG_UE4Manny_UE5Manny.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/RTG_UE4Manny_UE5Manny.uasset
new file mode 100644
index 00000000..4c60e88d
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/RTG_UE4Manny_UE5Manny.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:592717cabe08dd57e5ee625c860879be13a18932f8654fe73ee0bbaee063caf6
+size 23985
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/RTG_UE5Manny_UE4Manny.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/RTG_UE5Manny_UE4Manny.uasset
new file mode 100644
index 00000000..11f762ef
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Rigs/RTG_UE5Manny_UE4Manny.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b34deb079185dedefe04151a3c824a6981b25e12c65f89e7bcd120c68d0f7cac
+size 19357
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01.uasset
new file mode 100644
index 00000000..0909fde5
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf805e02f583024a7f5a40f4b2a249809ce711a46de5c84bcd74609b73fed351
+size 395400
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01_N.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01_N.uasset
new file mode 100644
index 00000000..7eceba11
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:582564da5dbbe8e30e6d65babae05ff22edce4a0bc8833f95180b505f0837447
+size 404289
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_D.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_D.uasset
new file mode 100644
index 00000000..e18a52aa
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64a3293fbe4df89c9040bc8d5e9cc6cebc945715ca1c8dc62a7682acc526a524
+size 429026
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_N.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_N.uasset
new file mode 100644
index 00000000..e9845353
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c84157238dd3d148b4f51e44a46f82d5dfd714beaa67c4c9c2998bdc7ec3365
+size 358524
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin_MAT_MASKA.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin_MAT_MASKA.uasset
new file mode 100644
index 00000000..5e4c2a3a
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin_MAT_MASKA.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec1d27963fc08f75eeee585f78d96ffbd8727bfe86c7c1fe0e7e2a2dd57d5a26
+size 211489
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin__normals.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin__normals.uasset
new file mode 100644
index 00000000..8fd335bb
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin__normals.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:354c99110df3d84a5cf4bb01de49d994a5c674c9788bd4b5fc779bf3030c54cf
+size 5427488
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UELogo_Mask.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UELogo_Mask.uasset
new file mode 100644
index 00000000..6c32cbeb
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UELogo_Mask.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a6f7d178353537343355bd9e8021951aac860c189c1393f57777df90c720466a
+size 41868
diff --git a/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UELogo_N_TGA.uasset b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UELogo_N_TGA.uasset
new file mode 100644
index 00000000..3236d1f5
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequin_UE4/Textures/T_UELogo_N_TGA.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a30f20159eb0e91b89c5f36aa9e6699b4c1a2af7328296c3fd77c392e10b2c7
+size 56343
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/ABP_Manny.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/ABP_Manny.uasset
new file mode 100644
index 00000000..9e5b15dc
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/ABP_Manny.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:698ad59b091eadff740a7ed78bb18cfad875fa3143d2ae614e0317d5e9680a79
+size 368180
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/ABP_Quinn.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/ABP_Quinn.uasset
new file mode 100644
index 00000000..ae1cbadb
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/ABP_Quinn.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd84317778ba8ee13b7addf2bd11988a07c38cffbebb129562a25785e5215abb
+size 39313
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset
new file mode 100644
index 00000000..c1625d56
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:17534cfadb0ecbfec9556f6b116d3cc4276b2d8ea5b451062ba3919c5ce24a6c
+size 8993
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset
new file mode 100644
index 00000000..391c2456
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:732b4cb73137a34d510f774b0ab63934bf2ee5532b0333d401fa450f88e44010
+size 698209
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Idle.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Idle.uasset
new file mode 100644
index 00000000..00049a8b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Idle.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3d03e57ab6829b8f60cf19ba1ee5e0ac82e37e5429427edaad472fb473f71d1c
+size 897634
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Jump.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Jump.uasset
new file mode 100644
index 00000000..360bd01b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Jump.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:771ad470861e3bec955b22c889d2b9acb844a6ae91565b0e647c7adace39878b
+size 290962
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Land.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Land.uasset
new file mode 100644
index 00000000..f5e0d2cf
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Land.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24f34cf736992c09b7502185c3d71ef1c79278fb558dacc91fa494ecfe452fe5
+size 300335
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset
new file mode 100644
index 00000000..84ca0780
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aff51ddb72b98d9cd2f4c1351f132dfcfde83d905f4f37d1f35b793b26c95b96
+size 293237
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_T_Pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_T_Pose.uasset
new file mode 100644
index 00000000..16d22893
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_T_Pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b7e4d1ff30352e296f446e77eed841ad7d5344430c5f7141fd09aad7e0af2c3
+size 30458
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset
new file mode 100644
index 00000000..5e734eb1
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:226e6affa1682ddf630a2e7759bc8b08dae033490a0449400af18a97941440c4
+size 382783
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset
new file mode 100644
index 00000000..18e06808
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:55a005cf4d673d8fcef1b93e2be270b8c47a8a82b7cbf895a915d27710d4a40b
+size 609238
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset
new file mode 100644
index 00000000..83e9ffb9
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6974eb2d3d4f246d91f0cfea6b4400aed38c722b67dc9ca8c15c9bc4a14e193
+size 9025
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset
new file mode 100644
index 00000000..56a8a863
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98c6ee27d23ad13b69cd51e466058ff8f75e55ec69ab78911d43eb2d54151022
+size 919278
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset
new file mode 100644
index 00000000..a022266f
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:069b7d70641be0a4f2c0d9f0cb4662c796da0f2969c6f1297ae3e22dd3479026
+size 431040
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset b/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset
new file mode 100644
index 00000000..a334b558
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a277d4a34033b8e5b336eace9857a4abf1f255a2a4687fa1709b5a5a464ea137
+size 449906
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset
new file mode 100644
index 00000000..33b7e4d0
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5564d59ac367f94d06d6eafc8eafbc1144eec525ebcaf0bd20c3effd400bcf8b
+size 4812
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset
new file mode 100644
index 00000000..b66dfadb
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32f26545999f01c55f8900c2d491d4cb39f3c545b061225deee2c8b70e760b70
+size 6306
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset
new file mode 100644
index 00000000..fbe47aaf
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1248c9176bcd4693cab74b63249bd9f0434758dda1c4f4b5c53da5e2a2b91ec2
+size 32183
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset
new file mode 100644
index 00000000..96a2e85d
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1f542fd354f8ff82fb685318e3665da4e9a9207add267de9ce6cf8779b5e147
+size 56603
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset
new file mode 100644
index 00000000..2c791171
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:242a332a47b300d429e94147a7ffd38ed09b5c2467dede5e90525494af7c5e18
+size 13437
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset
new file mode 100644
index 00000000..4c76d434
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2492fbdc6d6af64af264159aeab1b4ed6fc859e2adbd1be4aef59dd8221c7d49
+size 21590
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset
new file mode 100644
index 00000000..8027144f
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e6b0c28b5f10768f406776c4fc9d853eb915efdcff8e79465e96aff8c11872b
+size 24853
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset
new file mode 100644
index 00000000..b486efd6
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc66db2c2b3f8f37191aad8bc59bbdecda0a19a03a995c602df3b2d8cb3f19e9
+size 19667
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset
new file mode 100644
index 00000000..7f69c8ab
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46e73fecdb44bdf4bbbd661ee36798f7956f76360594023cb51b96f92ca4c01c
+size 25230
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Materials/M_Mannequin.uasset b/EndlessVendetta/Content/Characters/Mannequins/Materials/M_Mannequin.uasset
new file mode 100644
index 00000000..8c4ba136
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Materials/M_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c19c44d3a63f9975bb2e777d37d44341cf24907674c36cca79c558383406f0d5
+size 83079
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset b/EndlessVendetta/Content/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset
new file mode 100644
index 00000000..b342d7b2
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ae6203ccee7839e886951796d05315fe1dd9b9aa44c8a60a9525d5ccd905d5b6
+size 18996
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Manny.uasset b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Manny.uasset
new file mode 100644
index 00000000..9f1f7d25
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Manny.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f1df1a6b3db170cd80f14c40653fbc9a692af00f7abd575872d9cd8a707e05c6
+size 34534883
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset
new file mode 100644
index 00000000..efc750c9
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc39b456f2700d3f7aa0dfa99432424c78464b723a143bdf337dcc96867aaab9
+size 18527372
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Quinn.uasset b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Quinn.uasset
new file mode 100644
index 00000000..113ac4e3
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Quinn.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0fdd468262ff66fd30eb55f7bac167063959e5d9dbfa36abf853a5d77616a59
+size 36495654
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset
new file mode 100644
index 00000000..0a0d0d11
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01031c54550174f0a09f13787b128229316afa699302577044e13b6c71d830ed
+size 19371553
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset
new file mode 100644
index 00000000..e864a47a
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:777b2aa0a679b5d326814440204787ff0ba56b4ad9477a407b24d689155b050c
+size 160872
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset
new file mode 100644
index 00000000..dd58011c
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f58d1ac6047ec45bf31bec1071a5afc0e9dde9d50849bd8e74ca1c4271495c8
+size 463451
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset
new file mode 100644
index 00000000..2bb81b55
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2f57ba4350e61b3a5fac6cff45c3d21b81d0ab289765dac797b150b8bac98f34
+size 463249
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset
new file mode 100644
index 00000000..f9c827a9
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:968ba2fa8bf2bca36556b5623b895b9ac9db162f9c2936acda0b0504239543b4
+size 580522
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset
new file mode 100644
index 00000000..f58f7655
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d6092d8eb4a158e99568dffe0f036a5310b03d5a917e3b58529c7d5fd4088ce
+size 16036573
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset
new file mode 100644
index 00000000..98e02048
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d1abd304377e26c3c7e5a3b7488c522b118cc62ba0f574e9a63ec2e6ca22ac6
+size 2267523
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/IK_Mannequin.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/IK_Mannequin.uasset
new file mode 100644
index 00000000..c35c1aba
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/IK_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:edd623de3bde5afa06348d226eb98ba4f7d66c962ad7c93b4d25feef5de4b124
+size 143479
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset
new file mode 100644
index 00000000..72b36116
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0b163ae42f4717b12d4a9ab0c6b9da218e2d0d64e891b508e81586ac2a3adee
+size 289285
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset
new file mode 100644
index 00000000..3c14e35b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec42316c0d0e642867721ab1ac8b58452ee537c9dde5e4d4389d745ccc44e9a6
+size 141452
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset
new file mode 100644
index 00000000..44ba84b0
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26f5c00f4b1a7000505a233e217aa55c5e32b0473128b7cb96f34051dc330da5
+size 207430
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset
new file mode 100644
index 00000000..bd39dac7
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:afe97fa82d46c150d56573b1d1c3d59fbac288f498c3de5fecedd8ac64c2263a
+size 141462
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset
new file mode 100644
index 00000000..13f26224
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fb5783ac00efbfb039007568246d1ac33d36da09eec69e3cf0d01e1f96d13fe
+size 207430
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset
new file mode 100644
index 00000000..31710ace
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b4292d4d3cc8c3a23c0d2ea80461f9c05379a22e97c94094a1c4e342e6f0fa9
+size 141484
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset
new file mode 100644
index 00000000..18cd5507
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56c0e188c3d854c92956755b9c89b8cb6cdb75f1bc4aac655f0d5f6524fb8160
+size 205732
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset
new file mode 100644
index 00000000..d7cc7354
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9263821d96862a7121442b54bcaff72775c4758fb2218747bd3540207aa0fecd
+size 141486
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset
new file mode 100644
index 00000000..8fe32e58
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:20d21639ca1cd7876ba408a4e6603f66d3d4c9a65d2bbf7c76b59f28e4d020e3
+size 206334
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset
new file mode 100644
index 00000000..46f2b70a
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5d2ef5f757409ad457660e4388272646155d5bcdfecc4705b85b41d338835c6
+size 129460
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset
new file mode 100644
index 00000000..e022eeda
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b0c29406e6b6a8074edb2b2d1107d62972059ccae5c0bfe3dc6d99d932f00ed
+size 132176
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset
new file mode 100644
index 00000000..b347990b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f872db9323bc78b01d91dea5e406cfa348ef10aeed5b9e66a97ddc87b58704e
+size 129462
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset
new file mode 100644
index 00000000..f35a3146
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0313dfda857c8a37ae26a104bee21803eb49acc138a18fd7a6864320d025ef40
+size 132176
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset
new file mode 100644
index 00000000..b2d1b800
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ad7d36e92954cf783be7be2c7ce8e2e6b3b4376645985a6a772b5890977c381
+size 135460
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset
new file mode 100644
index 00000000..05550aaa
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a1d40437f02274fec5ff3cad47fa3e1cb2997db9397507823c299f0749e1c5f0
+size 169206
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset
new file mode 100644
index 00000000..64537c2b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e52609e89b719e493df4ed2a196996db3c4dfff4b20a83f68a747099f31827c9
+size 135462
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset
new file mode 100644
index 00000000..0cd5c370
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9b7b4ce565d7c55919dfeea6b785e2704cba7cc2ca8ad786145739a7eac36bc
+size 169206
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset
new file mode 100644
index 00000000..3653416b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a1761fa57b6504be33ac4c346839446698f20fcc8942a36574ae579e99d6311b
+size 203916
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset
new file mode 100644
index 00000000..9009fa14
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a75265541e206479aabe98ede22dad0ae72aedd9b43fa8c33741422f4c5ec38
+size 361644
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset
new file mode 100644
index 00000000..68f69cbf
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7bad38ef33364282ad783d13ff05ac64235fbd94f735f7970aa690f302927139
+size 165486
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset
new file mode 100644
index 00000000..ad01a2d9
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02a9cb1c077531f9bc0acd2f5868d25d42e7f1edaf21d29b0a89a67f277bb2d2
+size 361644
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset
new file mode 100644
index 00000000..6abd3af2
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46328ac897d55c35ed2c5f7d28443c963b6e4ed348adaf74980b1b7e64514975
+size 195468
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset
new file mode 100644
index 00000000..30332d0b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac1fba41bdc8d3832f26bee507b7f83d2e51051cae58ecbea0a1e73f3d1e8198
+size 557972
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset
new file mode 100644
index 00000000..a18ad76e
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b17348bde6d9bd17838698331f08c1babf8a120aab05553ddcbf658cef3d6caf
+size 195470
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset
new file mode 100644
index 00000000..c673e13f
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3bd106c4cf63362f741611edf562149e7d928c4e12a5debac2a27265bc315775
+size 557972
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset
new file mode 100644
index 00000000..e4c5ebe7
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:59995bd0fd055a0c29809abcec8ab593a4cfb517a8c52d09b56870ad46a6a431
+size 207486
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset
new file mode 100644
index 00000000..91540fe4
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b56619a8bff783926b5bc17770f90ca5b6dae18cfce0cfde29c69db26df8c968
+size 641633
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset
new file mode 100644
index 00000000..cef74d71
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:55a49a9b5f1d55df4733f651d7110c677fff421e8ccf317a7b5604d46380df9c
+size 207488
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset
new file mode 100644
index 00000000..00174b75
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed2b9dab16c319539175975f14ed906f2e442ebb3705a0f1bfb932b8b2752eec
+size 630195
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset
new file mode 100644
index 00000000..41247fa5
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:315c606d481e66842161f6d640843049c1bb8fad801817cdc01b5347459fe663
+size 190030
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset
new file mode 100644
index 00000000..7c0c6644
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ee7e7490da8bc5da27bee03d313475c546418b9aa15186cc1e342ac314d1599
+size 245188
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset
new file mode 100644
index 00000000..54c61deb
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46a6c2f1c8b50afe1849072f062ead508a2f570682f1b21b2e85334776c5f315
+size 228099
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset
new file mode 100644
index 00000000..c7c29305
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eaf41bdfdbbcde2f668b07dd932baac1b5517312d04d75b77dce1e82272b31b4
+size 245269
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset
new file mode 100644
index 00000000..89f006aa
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:def1eceb6484991a242bd5bd4bf2c9c1b857861ff5b981ee916a23d4db023b4b
+size 222063
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset
new file mode 100644
index 00000000..da6c387c
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2225dbb5778c1529862086865e86272e574cc993ac0a48cb1c0cc28fafb27c1
+size 205936
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset
new file mode 100644
index 00000000..3fc197f5
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97a0673daaa10512b94608a6ff11d82914e0812760b75ea7e86c3b43c0b4c97b
+size 183734
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset
new file mode 100644
index 00000000..7c90b800
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aba097887d167f4b9277338de16c7feb689882acb393b32a0ac176d27f62e2b8
+size 205980
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset
new file mode 100644
index 00000000..500df25c
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6995c1603c3553af502c2ef04f6fb685d9183f0668266c6562f16238e08f80fb
+size 171708
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset
new file mode 100644
index 00000000..16a952aa
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98e401355f6f5bdba83fc2e84ecd9d7e5128f1d6f0c585f368b9d971da58273c
+size 132123
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset
new file mode 100644
index 00000000..b79204b7
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91500b65453319b136c33e0b3edb161adf1030a5c3c30c8602390f1725af65b3
+size 171710
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset
new file mode 100644
index 00000000..a1b9497d
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4af5fd34572deb49a2335651c0a311e4db80ed2394c6c1ad633735fa1cf5e44
+size 132123
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset
new file mode 100644
index 00000000..30a8ffb1
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b0b0e92c4297c40bf94f63ccebd938acc49fc4b1ce45f1680fa533c5ea923cc
+size 177708
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset
new file mode 100644
index 00000000..01c81058
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7c66da3c6a7b2801d9ada447fff4a2593a4b6054a178141f1eae26e21e4b3a7
+size 169153
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset
new file mode 100644
index 00000000..635dce77
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6128ed9b666f06dde9df5e3d647aff8994b07ad1b4b36fedf693726d63ce138
+size 158608
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset
new file mode 100644
index 00000000..622cc1b4
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:973ad5984394de84cfbe2dd3021f7f64f8c4c2e85b6573866382df76c0d9d2f3
+size 169153
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset
new file mode 100644
index 00000000..5a95d707
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ecd03a972b3109a14840c924efe7d5f6b486ad3e7764773d33eacfb8032bea64
+size 194631
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset
new file mode 100644
index 00000000..f2c2239e
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:106aa8dc6d3493474f24e4d3240212c3c24428249d5f09f078c65d0372cc3d4d
+size 399529
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset
new file mode 100644
index 00000000..d830514c
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:93be05fdf4241bdc152877416175f804bd2e1976d7588919192316bd7b21e936
+size 194633
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset
new file mode 100644
index 00000000..a9791658
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:610877f087e4e77eba703036159d4abc95b52a1f196b7a317da97963e7477455
+size 399529
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset
new file mode 100644
index 00000000..d39f2031
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ae59b67795d102845bd680e15d74a9b70688315a0ca489232f56cc9005de5597
+size 218614
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset
new file mode 100644
index 00000000..591b42b9
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:04d95febf97f6a4d406c53efc6551eb20b378c8a91fef18c151b92a8b3df1abb
+size 557618
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset
new file mode 100644
index 00000000..0062c43c
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b808aa71712168bf1905b91a238f152347579523c2eeec52401b67bf6de6ad27
+size 218616
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset
new file mode 100644
index 00000000..49e65e6b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:76f65a5466dd4cd84abd48bef6245bb84930f7b8efff23807a88d4b23df3c1b3
+size 557618
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset
new file mode 100644
index 00000000..81727ce1
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1de49cf76ee2b6e93936cad3a1ace2bb849e3cd84a24bb84e566abde3a035758
+size 206632
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset
new file mode 100644
index 00000000..782027a6
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d72952cdf9066cd84e1e5ea11cc2f6a754b0e79f8f037e1f2c8fc8c86ddb408f
+size 485440
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset
new file mode 100644
index 00000000..a756ff3b
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d1fd8bad84e7c6c45884137870261dc78789def4c72683b3775790722d1894d
+size 206634
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset
new file mode 100644
index 00000000..ed588fcc
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee8b8e737a19894faf44176bcd5aca3405b3a1879eeea792ebdb0c534691cf1c
+size 488450
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Rigs/RTG_Mannequin.uasset b/EndlessVendetta/Content/Characters/Mannequins/Rigs/RTG_Mannequin.uasset
new file mode 100644
index 00000000..88c8cd29
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Rigs/RTG_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:710754e06ca383f6333958aea11321463736f5ffe6b1f82dfcf79896e2a5228b
+size 23721
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset
new file mode 100644
index 00000000..110ab264
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac817a2d33aa0cd0a8695b9fba9a925a1c71cfbe6de32986a51e6acb1ca598c0
+size 3612605
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset
new file mode 100644
index 00000000..0875d1de
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8036d465bf677ee48f2c45bb50911cbd085a3d5208959e0b70377bb8d9bc26a6
+size 18514168
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset
new file mode 100644
index 00000000..83b1a1f5
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3502ef8e4e68f4968b52510cf1fbf2fc0ccc1eb8d7c1e1afeb350d650c2e8ab
+size 10271972
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset
new file mode 100644
index 00000000..eb17abe4
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc929bd4eb67ba8610069c601709062d142cca925eedc40c89a940037650b524
+size 5740376
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset
new file mode 100644
index 00000000..f3414989
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b54209191bfa9dc3c8e195661e0d7807a24f039a3010d54f04e984f63669881c
+size 11038184
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset
new file mode 100644
index 00000000..6168d144
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b90b6df5b96b505495be378ecb268a17640ba88b40cfe5b0fc764aac26a07c40
+size 7198251
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset
new file mode 100644
index 00000000..ed6ba96d
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:251a25a1ac777fddadd2845c84edca5b4ce15b749e9f46d8169c001b9be9c4ea
+size 1357770
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset
new file mode 100644
index 00000000..66c12c4f
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:51d2a2a0683e0c5654d4c5c724e8360c83e4ffe5181ae740872ca3fc0533e85a
+size 8341381
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset
new file mode 100644
index 00000000..779cd912
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0361a08e270d688814e73adf503937c3012771b0a939f839a06f7c6c8d5269c3
+size 21139527
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset
new file mode 100644
index 00000000..acd53f15
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:651eac4091121b27a09f3b13110ec307e9bd815f9a6e573618d051c24387de46
+size 13144043
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset
new file mode 100644
index 00000000..4c97af82
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42864bd62f0f0d9510453038ff284cc1c1fc09630af8da0cb496e0563a2ffacb
+size 9033544
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset
new file mode 100644
index 00000000..264d3731
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb66b07e8c8621bf361a9d18f97c668677e51164b5892c2577c94703531482e8
+size 13677610
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset
new file mode 100644
index 00000000..709611b0
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:790e9d4e061af061c727d118634801c4834b46e119dd1917ffe5d18f6601d53f
+size 7269335
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset
new file mode 100644
index 00000000..fd9ae9fe
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:187e5fb0047bcc653c7a6e014c49e3d6582e955a3c034579cfb756c80b68dc53
+size 2153790
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset
new file mode 100644
index 00000000..cd4420a3
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:267382e5ca6dcb468e63545e09778b0e16dbd7652cb6d735b487cff1990e809f
+size 16108599
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset
new file mode 100644
index 00000000..a9ba5478
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:792f234ebadad1dc45153c9b1987326d3a4da485d88cf8b1234e3395f5165070
+size 4711156
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset
new file mode 100644
index 00000000..d692b9fc
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e765500d0458a2b4612541ae714281afc376b1d4758403017eb1ca6bc6892de9
+size 11656141
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset
new file mode 100644
index 00000000..2c453f37
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8266e8da977f915cbd75329eb02feee571f92067ee749b45099c290519bf20b
+size 5217676
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset
new file mode 100644
index 00000000..552a695a
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57d9b50418e742ee22fc67783d9db3afb5027c3ef943753e4137742a692b4e01
+size 1104627
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset
new file mode 100644
index 00000000..044d1f5f
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5583b02c8b943d60f91f5d9bb59466c9fb1ab3aa811d599c54a20f2a19661b2
+size 5834834
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset
new file mode 100644
index 00000000..de237dd6
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2134af63f2d5037e8fcab8e4f50593d62c731f4a8af43bdbd7c2613debea0cbb
+size 12399926
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset
new file mode 100644
index 00000000..d47e6fdf
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa063b2ea5c44fbc95b17b6a6c093c39a6bbbee1082137c42cbf23b311c75cef
+size 19706883
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset
new file mode 100644
index 00000000..779799d9
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40f579c2a83087c90b7f36744a15798194e9ecbe7c6560d0da2903653ed17723
+size 6732524
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset
new file mode 100644
index 00000000..282d0b60
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98195f96efbfcf97ddf05c69f2f04388a5e5aefa22d2c9d771f37b22aba8fc2a
+size 13169771
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset
new file mode 100644
index 00000000..be613344
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:637241dcbbff574ea1032881f60ddb007ce4a33a61864c6b0d3b3b7aa392d0d9
+size 5217676
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset
new file mode 100644
index 00000000..9b9edc4f
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bcb445b1af4f07ce1b59ab3c8c25af3da7eb1f9c019559b0fd9172c31f38fa5f
+size 1758494
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset
new file mode 100644
index 00000000..977a24f8
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53b15563df73f76b904d67eec1f7f7ad3c27166bdb1aa21d99c7f9eec0116d60
+size 6901973
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset
new file mode 100644
index 00000000..717049b2
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fe4e287b727a2b1d18f26557d1569111eda715219f8c73bd96cb74ff87c2cb8c
+size 13427858
diff --git a/EndlessVendetta/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset b/EndlessVendetta/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset
new file mode 100644
index 00000000..51bc9085
--- /dev/null
+++ b/EndlessVendetta/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0571397248a1f4acc7607d1e53676cbb154e3c9c8a19d570915d76b70caaf99c
+size 69960
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/ABP_Manny.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/ABP_Manny.uasset
new file mode 100644
index 00000000..06510ed2
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/ABP_Manny.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eeacdc8b0f92b8e16dd2cf4ed7e919feadf650736072c9efd4f5f77499eb62d9
+size 377396
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/ABP_Quinn.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/ABP_Quinn.uasset
new file mode 100644
index 00000000..301842c6
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/ABP_Quinn.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e423711c22cbb84b4249a04385d8f5c398a5e9c5d237516ff0db3a8dccefc96
+size 39372
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset
new file mode 100644
index 00000000..73c543f1
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2acc29c41680b4c399ffacd3299289c2e98f6770c099f55495218754a8390d2a
+size 8851
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset
new file mode 100644
index 00000000..8979d182
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dcaaea03f57149cff7cd81e7e7f598e85e252378b0d84202824c63055ea7fc26
+size 616720
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Idle.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Idle.uasset
new file mode 100644
index 00000000..8ffff7be
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Idle.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a315ff6ecf54d4e1abe6600072267a2a20cb83e990d2ee91fa1fad63fa3c25e0
+size 838022
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Jump.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Jump.uasset
new file mode 100644
index 00000000..924ae4fc
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Jump.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4bfd7488afe83d1d50faae6b6c281c4889f739ea6b4bfc7fbfbcb9e1c399ed75
+size 209468
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Land.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Land.uasset
new file mode 100644
index 00000000..42e11bb3
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Land.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05de3888c5a29ab643f74adf4d588a72b1ee547520c049520e3c90b9cd91bc2f
+size 210231
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset
new file mode 100644
index 00000000..70eb9d5f
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:779b8f8fd668b9b3ac255796b5eb505b38582a5f3a6a14d21015746c427f5203
+size 233628
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset
new file mode 100644
index 00000000..01750427
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b554f588731ccc2ab91017696d6edc189e8d905f3bd1658aa0bbb52fb56d9f2a
+size 323175
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset
new file mode 100644
index 00000000..10d9e0aa
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5b75829aa4fa7d1400ab98858ae3ff499c7473bb12487e9e58c853e500ebc90
+size 565708
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset
new file mode 100644
index 00000000..34e0bb3c
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1842726ff2d091261376cfb631645e1f6e676edc7c8332d6edc6bbf8b4306ab7
+size 8891
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset
new file mode 100644
index 00000000..cc05e290
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aed5bfcce6e424c3fde1fe69bbb2a5b4406b78109ed9818e2f0de85096f5d883
+size 869685
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset
new file mode 100644
index 00000000..3793707b
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ef6b3b0d8435fa4aa92bbf22317e265446ddcab34f2596258f4316a8f52f275
+size 381450
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset
new file mode 100644
index 00000000..b65637cb
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68fae0ca27a7cffec957a549bdd37e0637162981b41de6018b720de4201ec5de
+size 400317
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset
new file mode 100644
index 00000000..ca441994
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:923f69a89ca9a3c34e2dcb3b0be8fdeb180f0d5f5781c2f5aed93591434df0d4
+size 4654
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset
new file mode 100644
index 00000000..98a22005
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2db73d6d14a4bfe11d2aefec2a6ed72dbceaa7fc658de55a7ce1037aaa2da15
+size 6118
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset
new file mode 100644
index 00000000..d6efab0e
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0461c5e62fb008d178b4a23172511cdfb3f2f29d3201dedbae3014e979ac3a53
+size 31748
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset
new file mode 100644
index 00000000..50716752
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43c4cf35c7e847de2ee6e93c086e18c2163a9b09e095b170a3b8e66941aa689c
+size 55701
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset
new file mode 100644
index 00000000..3e526b8c
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8e8d8f5cdab9bd468ad3731719000cbd72134a64aed69bd6a2349241b6c08ef8
+size 13422
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset
new file mode 100644
index 00000000..bb3aa5e4
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a854b2354341c525668b120e3fdfc356d58d51a3297394ee471ae8b14a9a1bf0
+size 21243
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset
new file mode 100644
index 00000000..128b32dc
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b651ac85f23b43b1751155bb479766d66ae1db4bfdd1b191d1c6526988d003fe
+size 24277
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset
new file mode 100644
index 00000000..76c30741
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cae533968c2178e476733efcd12b1d7d03b9cdd8ca50bd0f90da77ad3edd3ab5
+size 19288
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset
new file mode 100644
index 00000000..82cfe40b
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64032da0d5072a3c4447f603c63a1ffb33990cfdc69573d0817c9c02f717919a
+size 24636
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/M_Mannequin.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/M_Mannequin.uasset
new file mode 100644
index 00000000..982d1365
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Materials/M_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10d06ca935972621ab0699abd560d3a31343dba40248d21cede0704b31bc735c
+size 83055
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset
new file mode 100644
index 00000000..76e83de3
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1832b78f81bbe3c7cbc648c7c25b0af352605e25c35f7de5b8ece4668d57ef0
+size 18631
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Manny.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Manny.uasset
new file mode 100644
index 00000000..97ff8bac
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Manny.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2563c3549a2e563431c27c7c082960b18a53b503299ce6b92c61460436290879
+size 34534206
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset
new file mode 100644
index 00000000..8d9a50e4
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:830f40a8cd84a39637256dee341382ec0e91968cfb44db724bfed2f91af1c775
+size 18526672
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Quinn.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Quinn.uasset
new file mode 100644
index 00000000..6fdb30df
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Quinn.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:63f14e9f8aac7d52b18078b8d50648c9957cedd09007c225a8f3e8776cd68265
+size 36495213
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset
new file mode 100644
index 00000000..fe094e23
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:048c0ae462fb0dffc00b29b554070db7e7246a9369e2a00931ec5729c1ad7312
+size 19371051
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SK_Mannequin.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SK_Mannequin.uasset
new file mode 100644
index 00000000..8ce47365
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Meshes/SK_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:215ed40ad2c8290531cf50ead108221d2aa6af461636a98cf891e63775446616
+size 119087
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset
new file mode 100644
index 00000000..78071b7c
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:592779e91fc8ed09e4d2e71852ff4af108050e37d3a82b0f5b300c7712ff2966
+size 462272
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset
new file mode 100644
index 00000000..644a100d
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c51c2993e09be99e3480af0ce30ac7d4f5299e3cb1ea95deeff583789794353
+size 462170
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_BasicBiped.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_BasicBiped.uasset
new file mode 100644
index 00000000..61dbe44b
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_BasicBiped.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e370a6ffd00112b7f6189e99703b5920f09664f686733de528c485126356fa19
+size 4168573
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset
new file mode 100644
index 00000000..18f1fb5d
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e30a862ca99af96f3d0877538c5140c9e2b989df252d52468eabdb872ec45cc
+size 590359
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset
new file mode 100644
index 00000000..55fd98be
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46c93ec5db984971aaa40cc7e63ecd07f415bce492403bedfaecb755b415ef53
+size 16002462
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset
new file mode 100644
index 00000000..65fc2cf2
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5aec7fd100ef8687ac4cf56996eb22de4d6833e7361b7c61b31685e94e7d6796
+size 2335736
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/IK_Mannequin.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/IK_Mannequin.uasset
new file mode 100644
index 00000000..f50d2d95
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/IK_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3cab1d297286a5bc0e62b5c3dd86af3f178e7c8f4710e4dc1203868894b3e132
+size 143134
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/PA_Mannequin.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/PA_Mannequin.uasset
new file mode 100644
index 00000000..987b2548
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/PA_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d082d00558bf6ea9284f65623cee82f4f9a823adf2883b0ca7172352e8916fc6
+size 63662
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset
new file mode 100644
index 00000000..92e00056
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b59f701e426315cadfd16453f1445cab8f23caca24bed38e77e0a26031f18101
+size 64816
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset
new file mode 100644
index 00000000..8f8c5f06
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebe608a1bb96251dc4aa098caefeb3c7aac17c5f952383950e29a744ae62b18e
+size 207223
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset
new file mode 100644
index 00000000..87a69787
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf6059f576b4cc9ccd78a90eed7cf3cd6ae1d2bbd51be46ee313e3584e75833c
+size 64826
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset
new file mode 100644
index 00000000..050dafb1
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b350e80733131422cfa702d41f3df2ce96e00d2afb441d2fb5d746014504380
+size 207223
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset
new file mode 100644
index 00000000..55d25794
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b37dfd7dba3014752915db44545ee334eeda25409a738b99ded3b2074fccbfcb
+size 64852
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset
new file mode 100644
index 00000000..39f87a29
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:790016bfdb567b8200e0cd84f76d6f11a831e057054d7dcf8374b30d79a3df5b
+size 205529
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset
new file mode 100644
index 00000000..532b46c2
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bd400f5be56c758ff5394dbb683c5169d0848b0ba9d09f9e6c272e3bf3f10ab5
+size 64854
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset
new file mode 100644
index 00000000..b8d0058f
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb0713e0451b39d49c5cdac5cd1ee4f9154bfd1423098cf4195686df3c4d20d8
+size 206131
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset
new file mode 100644
index 00000000..cab49123
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5f150d98767071f4bcd28bdfde1685fee9d40aa1d5d82434c518d40ad6b3b30
+size 52824
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset
new file mode 100644
index 00000000..af8531d0
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:142101f70f42f02f41199706477b99874c75bcefd0f277fbdea47ba7de193741
+size 131969
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset
new file mode 100644
index 00000000..a653463e
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40b46c0ef3ddba150b14bc4c3263e515300ebc72dd88419c9e027334e3c6082d
+size 52826
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset
new file mode 100644
index 00000000..5d3c11c4
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:df08784aa1c599d205e05ba57d9348381e6db5f74d2332e3449f62df981d2bda
+size 131969
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset
new file mode 100644
index 00000000..d3043a5f
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:112cb9ce37a704413410f4996e4a3ee04b54b27a08e023e6ad3939b16b422552
+size 58824
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset
new file mode 100644
index 00000000..b887852a
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:27f7d9ff395a01d762166107f3c8fb43b9862b0785750e185e25fa1dd86ce29c
+size 168999
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset
new file mode 100644
index 00000000..46de699f
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b1b2777419bfc49e444bf34c4ec6bb1427b8bb829c92ccfcf0f979e2dd90ddd7
+size 58826
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset
new file mode 100644
index 00000000..6aba1f00
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6f73d48f424e90b916123b37783fbe47b568e53ffbbf16bfc3599978f3e7badd
+size 168999
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset
new file mode 100644
index 00000000..f98cb1c6
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69ccff3cc8a6ed58eff6463be1f8d5290f3fde12b91e72ffd5c93a852bc177ee
+size 127276
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset
new file mode 100644
index 00000000..f8b77ff9
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b7caf543c0b38805f75fd1406e26520a1124b2c1ca3aa81792ae5c897d20741
+size 361441
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset
new file mode 100644
index 00000000..55866a7e
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32d442c2f889f74f96be4a678e84f4ddfbda7a6231bfcf073d8259c9257079c8
+size 88854
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset
new file mode 100644
index 00000000..4c001f2b
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:327e6b5cb9d426c10f21ea1e5e2f6004761016a0e11361aed240a8a493f35dbc
+size 361441
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset
new file mode 100644
index 00000000..a8234112
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:153a9f670d5612852b3bdfb1e5911dd3ba13f00a53e01c004cd6c0625a4e25cd
+size 118833
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset
new file mode 100644
index 00000000..fc5710d4
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24ee80de174ae79555219f1eb7a12d5cbaabac6b42fae59421dd8192e754be55
+size 557766
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset
new file mode 100644
index 00000000..2e838034
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e61e506bc006d9db0ba4a0469b48984dd9ca90cb4caf89db100ff7b43cbbbd00
+size 118835
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset
new file mode 100644
index 00000000..f08619af
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c02f07aa3e4f0a0229508f410901cbc56c18adc334d51e4ab58b11b039b150e2
+size 557766
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset
new file mode 100644
index 00000000..dde86b2e
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:16c364d55b05f67bbffb4ed23cc5d0333fe5611c82380a74aed7e11371a32d1d
+size 130854
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset
new file mode 100644
index 00000000..6c78a0dc
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:747e14c6054a2c809011c3aac243f4438bd929183d6b24dc05c827c6599eec04
+size 641430
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset
new file mode 100644
index 00000000..e9dc936a
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:922fddcf4264b66d389f61b7c5e5effcef2aca70f48c98d41fec4514a250cc2c
+size 130856
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset
new file mode 100644
index 00000000..a5e78588
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:de4cec17652b3232f12905381e0fb3085486b47f8c169d8988dc1573aa98ab99
+size 629992
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset
new file mode 100644
index 00000000..309aed01
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9d1e68764a3e6438bf344c38faff188298708652d54a14bf16e4c6d42f16ee13
+size 71463
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset
new file mode 100644
index 00000000..d635f868
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:df7fddc20d642dfee60ee24b42b7cdfb8181ef77b63590173c227bedb37c996e
+size 244960
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset
new file mode 100644
index 00000000..b860ce2f
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34ea78c58adb22c006f9030cbc238c1f22fa3060857de5ce75374dc694cd0bb6
+size 109521
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset
new file mode 100644
index 00000000..0f1c58ba
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:baeebcaeab8371ac6d2c113396d402bc7ce4d0279d9ac47ba70a870bfcf7e2ff
+size 245041
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset
new file mode 100644
index 00000000..8b1c8220
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb3cb479595daad83cbd3f700bddaa0f7cf3a5173a6b470ba03ff22cf7b63a9d
+size 103489
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset
new file mode 100644
index 00000000..619dca36
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a2ee7b5868b5af8dc3dc0441986980bc3a72db7f9989798d08c0ee43b41c728
+size 205712
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset
new file mode 100644
index 00000000..568122ff
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be091ffa3cd99911432a60807d3df1a1790dbd9c5f311274eee61df93221a8a2
+size 65171
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset
new file mode 100644
index 00000000..7a436416
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6cbf50e59d7484b0e5e96e2d76c2a152d960804778599f60273f3bc07b27a22
+size 205813
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset
new file mode 100644
index 00000000..67fa2677
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1c2166fca7cd0381f733bee6c0f93697fb4a01aa24be032fcff672d31a4518b
+size 53141
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset
new file mode 100644
index 00000000..53474c50
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf437126561ca844185fab690f3f52b5102768f78c9dbf6090e7c07778f95685
+size 131952
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset
new file mode 100644
index 00000000..70ad1394
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9b384a47ef153f631d9ef77d5074e97fd608d17932f82eba5b896072be8634d
+size 53143
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset
new file mode 100644
index 00000000..417f3946
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac044481c0edcc833e959a64fc0d1185d1c07d9abd95674f7861b9e81868c202
+size 131952
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset
new file mode 100644
index 00000000..ec3be71f
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:35d5a7296f4b2f06506bc1804a0f8a1b5acd6b277450a8f16c66667a1a5ce79d
+size 59141
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset
new file mode 100644
index 00000000..8f46f2f5
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8bb2a9106bfe27f7edc51a421346adeb114bc03e3d28b02e11680a7afac5e87
+size 168982
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset
new file mode 100644
index 00000000..68b24613
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf604470532fda86259c302e289344845dec4534a587a08d90ccd471a6d5015a
+size 59143
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset
new file mode 100644
index 00000000..dec28731
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b74a369ae02fcba33cc58eb0adea2b9e75aa23f765e90153d7431544b2ab62ed
+size 168982
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset
new file mode 100644
index 00000000..09e63c52
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9811d92c228fcc359c7ea4a8edd75654250872b2d53afafb15ce5b544e4e4b4
+size 95170
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset
new file mode 100644
index 00000000..ddfe6f8b
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:df72c191c2ca9520e199904e02662a18703a6a6a1932b460ec4ab87875581932
+size 399362
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset
new file mode 100644
index 00000000..27d5a7ca
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4afc263c634f34988b35d831c31797a2b5caf793d18b2c9ced7463d87a67432
+size 95172
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset
new file mode 100644
index 00000000..f8388f33
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a1aca955ce2d3f39ecc3f99ba4e84ff15efa2c739aca482bed9c832f8974a16
+size 399362
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset
new file mode 100644
index 00000000..57c4da95
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:80291d670ebbf2bf83e00b8eb5cf778bdcce65c69e6d5ded19de0735f259e725
+size 119150
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset
new file mode 100644
index 00000000..bfc7a63e
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f02da143850cb1e7530144714de054cadf0360af342779ce7dde8e6c702b39f5
+size 557448
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset
new file mode 100644
index 00000000..791b5783
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5290046e20673b247d12f49b09dfc6345fc9c3ed94d69d4c27eb36939224af44
+size 119152
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset
new file mode 100644
index 00000000..9b1dd61f
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d64cf78ef6c012d5a5473681f2e30958ed9b9e316a1ae5c067fdcfd4bab2dff
+size 557448
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset
new file mode 100644
index 00000000..1de13a5d
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44579e38e5daa8cdf0ea5e91e5615c559a4ff49af59e219813a73f70fe3669aa
+size 107171
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset
new file mode 100644
index 00000000..4411b7e9
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b8395312c3806b120b145e0f12d121470cdbd3cd5f20920b6a57ff7b3768faa5
+size 485273
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset
new file mode 100644
index 00000000..697794ab
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57abcd99441bf8add532a089ed4e4d84f0d9a4cde364a7fbb257a93a4360abec
+size 107173
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset
new file mode 100644
index 00000000..38e3461b
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef3cf53ba9d8e6cd365bbaf0872feeed031fb8df636e5ad98a371e70909e75c9
+size 488283
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/RTG_Mannequin.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/RTG_Mannequin.uasset
new file mode 100644
index 00000000..d35d1f94
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Rigs/RTG_Mannequin.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7ec102df7e53ef4385079d0cae403bb9c3e666b0a04bf32b1148563083de5f76
+size 13589
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset
new file mode 100644
index 00000000..4f63c941
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9d6193987025eb29f967d5ccb5b7901b4381e5c10e415db41c176ea4572ef11
+size 3612394
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset
new file mode 100644
index 00000000..cc3a87eb
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:afe938a994f15b8fe1e0342e614635923745e83907b73dfaf9e622c963a53dad
+size 18513946
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset
new file mode 100644
index 00000000..b87cea11
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c0ec57bdad72c7ed955916bc3046c68b30952ee6f03b2a85ec227fede620b362
+size 10271764
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset
new file mode 100644
index 00000000..54ae2e0e
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19c9590688726f55ab28ec7af40adc894c445eda255b7799c06a3351a8fd5dcf
+size 5740132
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset
new file mode 100644
index 00000000..4fc7f16e
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f853e5fe06fd03309769cd2dd656e56ece60ef917d53178cdbd55c8832aeb0b0
+size 11037967
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset
new file mode 100644
index 00000000..5bc356d7
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b03f66c9332142ba3ced19ddc37cf332794c045e2d43a7bb676c4a4b06e36061
+size 7198028
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset
new file mode 100644
index 00000000..4dee7ebb
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82a54cc8769089d8d874e4dee8978893d454dc3e91672c701233e3765bb6039f
+size 1357549
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset
new file mode 100644
index 00000000..9ad1a156
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ded416115c3f655485bcb55362ea06fbe8f47440d4be9b3fd7ed88ba7546c57
+size 8341170
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset
new file mode 100644
index 00000000..fbeb06b4
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:321087605f95eb2e4842e14a50c6103b9068a57a6243e2d0fa873686684baad0
+size 21139305
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset
new file mode 100644
index 00000000..434d166f
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:176ddc8fedd7f83cf83f50834db2bd66a5d9242a40e2caec5be50dd2f70dd830
+size 13143835
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset
new file mode 100644
index 00000000..66be3576
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8b6209275181a583ecf7cc09fddfbd572bd84cf0d1c4fb37d6a83cec57d783e
+size 9033300
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset
new file mode 100644
index 00000000..6c01dcd3
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4231e9852bad86777fc300d63dbaa79d39f02e05f014894e0b2d04cef1f8a3e0
+size 13677393
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset
new file mode 100644
index 00000000..054a64a5
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:766a04e3601e2f7a05e6a98a8ebcc686bbca8bcaacc03291f869068c40cf44cd
+size 7269112
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset
new file mode 100644
index 00000000..bba8ece2
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebbf4022a70efdc480e3880867d3a772ca2f13577514eb6b5cd9175ecc8b7ac2
+size 2153569
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset
new file mode 100644
index 00000000..dc1695f8
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9b2dbe21cd947d3615eba6478966f3521b05d09211e0628184134bfd906e21f
+size 16108379
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset
new file mode 100644
index 00000000..f2d4d67c
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd16576a92ac50a81a69f0fc1c4fee4f5a671d819f698639479a41dffcc6045e
+size 4710914
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset
new file mode 100644
index 00000000..f44f47dc
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b8e783361011ce33b9dea10f1bdd8f915b12efb3d3ace5c5b6d5049e7f404f9
+size 11655926
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset
new file mode 100644
index 00000000..330656e7
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb239cf13f6e7761a95442749a7a68d44bbb075e9dd965277107313eb8e5b290
+size 5217455
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset
new file mode 100644
index 00000000..8cfa1129
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:faed00de843abcb013d3b59b9ff4025a7792c970c61e08d360a46a4549ba9b21
+size 1104408
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset
new file mode 100644
index 00000000..62a520a6
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a609a98d50bac5143c9421774ce99e737b7aec6afcc762e2674751cf1367254f
+size 5834622
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset
new file mode 100644
index 00000000..e9c1f2f9
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c59546202439d76750e5b2dc5ce16638e5ba8a105d23e952d947be51cf397ee
+size 12399718
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset
new file mode 100644
index 00000000..512284a0
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9e566088ab415b4ab1fbf674880372d4f1dabf66b91fd26df0f4ab109203224
+size 19706663
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset
new file mode 100644
index 00000000..e08d9438
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5941d417ca6312003935cd4ea0b88b8192207ba1e88b3feb924e633f0080a6a9
+size 6732282
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset
new file mode 100644
index 00000000..d387ee1a
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:79fadb22034452a17bc381ce845347c94f4cdb069f6e5d70a3caa2e50450aec7
+size 13169556
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset
new file mode 100644
index 00000000..946ce264
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fdce23eac905d8bef79eeb463d1b5885b1f7fe94626f261a8544050eec81149
+size 5217455
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset
new file mode 100644
index 00000000..a9a702e2
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f6a39df9d091562417420c2ae5f23a490ef085f51445599f708aa74b989a4fbb
+size 1758275
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset
new file mode 100644
index 00000000..d16e6bed
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:509bca88dce73baa774f45ee2e5a336928db2b6a5aa3f473ed05dfe1edf7fdc3
+size 6901761
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset
new file mode 100644
index 00000000..fecab4c9
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9ddc71bc1851c3e8657d0093d8a8b451c7e25ed143c43e77a9c246a453c646c7
+size 13427650
diff --git a/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset
new file mode 100644
index 00000000..1b633b61
--- /dev/null
+++ b/EndlessVendetta/Content/ControlRig/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a99d47f554511c79553803721702bf58f71e5c56553f1dde948aeeabb226e90
+size 69737
diff --git a/EndlessVendetta/Content/FPWeapon/Materials/M_FPGunPistol.uasset b/EndlessVendetta/Content/FPWeapon/Materials/M_FPGunPistol.uasset
new file mode 100644
index 00000000..1872dca9
--- /dev/null
+++ b/EndlessVendetta/Content/FPWeapon/Materials/M_FPGunPistol.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:abb955fc6a17250b071cde3d7a9c1403826533ff48906851ff00c5205df1607d
+size 30077
diff --git a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset
index 69ba91c0..c6396a47 100644
--- a/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset
+++ b/EndlessVendetta/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:eec8c05a75e7932e3834cbc1cd1b112f29171212b871fa1552f458ceb1b65948
-size 8000
+oid sha256:f9c7063e48c0b3c23194a6a2fc3625da96d20bbd92fece19210001cf0cac8964
+size 8568
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset
index 701e0537..9b6693d3 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bedfc53528df762af9be906a8707ddff7568baf324a5d7df56d6bdfe1575ee3d
-size 23020
+oid sha256:fe0a5a1725c7cd65051a510027a14301f6b776fe1a1935d0fb55558f829ee90b
+size 42620
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_PickUp_Rifle.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_PickUp_Rifle.uasset
index c40095d8..a8f825b9 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_PickUp_Rifle.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_PickUp_Rifle.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:91c5ce4a3278b69b5104cd1d2972be90b80fc199098202556009b1d28b52fe38
-size 32842
+oid sha256:118d852be72576a513c2a8c719e1d94450907a5dc00f27dd98914deb48a18c09
+size 21604
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset
new file mode 100644
index 00000000..534c1e9e
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:215d949e3ea1df83d937e0387115975c9c3e14077a879a6f834831241c154f18
+size 39178
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset
new file mode 100644
index 00000000..e3885a88
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1de9565906296c664bb7dd6b3f700d135fa5244e1f625f9f792eba15a9880ae8
+size 48226
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset
new file mode 100644
index 00000000..cc04228d
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4358c8520e164b973fae2ae1a18307f0eb691ecfd94b433cbda1052b8b2751fa
+size 7209
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Images/crosshair.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Images/crosshair.uasset
new file mode 100644
index 00000000..aeb09d75
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Images/crosshair.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:110eea3093bb784d7c237753fcd6f029cc8d3b388991f886a9752d6960195e14
+size 12511
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Images/fadenkreuz-transparent-crosshair-slayer-god-hates-us-all-album-cover-11562902578sasayvkjg8.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Images/fadenkreuz-transparent-crosshair-slayer-god-hates-us-all-album-cover-11562902578sasayvkjg8.uasset
new file mode 100644
index 00000000..2caf2972
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Images/fadenkreuz-transparent-crosshair-slayer-god-hates-us-all-album-cover-11562902578sasayvkjg8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:df1398829f499b8a95bd2a912851aa613d1b26519496f1bc38a58db91c2a7730
+size 62044
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset
new file mode 100644
index 00000000..75a10fe3
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:246a8220f9708873776922ca6683ec085b4447eecd1efd89fd0572c94b9d5956
+size 49471
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset
new file mode 100644
index 00000000..6e0e13d4
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d593d68d5b9a9fc58b1b7ecc44936b84e361aaa1762ab04c5924e36bfd45bee9
+size 61494
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WeaonRecoil/AssaultRecoilPattern.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WeaonRecoil/AssaultRecoilPattern.uasset
new file mode 100644
index 00000000..e0afe7ed
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WeaonRecoil/AssaultRecoilPattern.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:136afa1f1b4d7d302c0824edcbaeff1061de8ca41532af1ff390294a8baeda7a
+size 2033
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset
new file mode 100644
index 00000000..b36651a3
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f29a879021fde175da0f45dcffaa1e4b4765574bb429977dc552cd51b2ad899a
+size 24819
diff --git a/EndlessVendetta/Content/FirstPerson/GunMechanicWorld.uasset b/EndlessVendetta/Content/FirstPerson/GunMechanicWorld.uasset
new file mode 100644
index 00000000..551d8f69
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/GunMechanicWorld.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50316ead250bb810a80831ade33e194f2de7ccb433dc172e5217540998e2854e
+size 19098
diff --git a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Combat.uasset b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Combat.uasset
new file mode 100644
index 00000000..0562b346
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Combat.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00f4ed84367ee429face15faba364bc15ee2d562096d2f845a3a3a6deb69dc3d
+size 1360
diff --git a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Crouch.uasset b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Crouch.uasset
new file mode 100644
index 00000000..9572838e
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Crouch.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89e10b0349f4813e2c47bd905ee012e34d04b54d8e793ab70c6f813652b06cc9
+size 1360
diff --git a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_EquipPrimaryWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_EquipPrimaryWeapon.uasset
new file mode 100644
index 00000000..62f17b30
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_EquipPrimaryWeapon.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e8920145a0a5f7ac0f10a98d15f35f28926503ff5d3ea093c79a07688b92bfdf
+size 1707
diff --git a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_EquipSecondaryWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_EquipSecondaryWeapon.uasset
new file mode 100644
index 00000000..3c045634
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_EquipSecondaryWeapon.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f05f0bf87ed32cb40eac24d420dc279e2e808df4358300d3f3b839530267584
+size 1717
diff --git a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_GunAimIn.uasset b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_GunAimIn.uasset
new file mode 100644
index 00000000..e3118a9f
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_GunAimIn.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b9f2db74a440d4cbe20066719467311b6d43de3676027ec2162fc39a2c7ac85
+size 1370
diff --git a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Recon.uasset b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Recon.uasset
new file mode 100644
index 00000000..aa886642
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Recon.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc86691c4b8b22416ce275bedd78c738d4b9ee2ddcb59ea7c130933c15a290dd
+size 1355
diff --git a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Reload.uasset b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Reload.uasset
new file mode 100644
index 00000000..5ed3f2f9
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Reload.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85ff514d76166f7c202ee64b678abe6314dcc24d3d662883b53edb7608ea2bfe
+size 1647
diff --git a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Shoot.uasset b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Shoot.uasset
index 108736e1..0186b774 100644
--- a/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Shoot.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Input/Actions/IA_Shoot.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e1d44dcf8506d3f89055e8f440e10943ff7f436e1bc5ec345c2a79069e2327d4
-size 1598
+oid sha256:d92be41146c90185585f7a2de5a18d31a688d2cc8dfb22b24b9a7a92dbfd1ce1
+size 1355
diff --git a/EndlessVendetta/Content/FirstPerson/Input/IMC_Default.uasset b/EndlessVendetta/Content/FirstPerson/Input/IMC_Default.uasset
index 81354aec..2bc21ec7 100644
--- a/EndlessVendetta/Content/FirstPerson/Input/IMC_Default.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Input/IMC_Default.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6faeeff3129efe33b48bd11297efb307a7bbcc6c98d6fc8da4742c0759a7e2ea
-size 12793
+oid sha256:e84853e2ab5cb8653ef3686fdd8ce458fbadd1261807bdc73feb5212015290ce
+size 17496
diff --git a/EndlessVendetta/Content/FirstPerson/Input/IMC_Weapons.uasset b/EndlessVendetta/Content/FirstPerson/Input/IMC_Weapons.uasset
index e1400043..0f7cd254 100644
--- a/EndlessVendetta/Content/FirstPerson/Input/IMC_Weapons.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Input/IMC_Weapons.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cbc3f6b581c994996d42e89d377343eb9699442117748a71f9ead311d203992b
+oid sha256:24bf0d5a1ecce706cf33ff99e0ba7c1e0601dea5433ffd1f61732d522c9f4488
size 4115
diff --git a/EndlessVendetta/Content/FirstPerson/Maps/FirstPersonMap.umap b/EndlessVendetta/Content/FirstPerson/Maps/FirstPersonMap.umap
index 18ab88e2..54eb07cc 100644
--- a/EndlessVendetta/Content/FirstPerson/Maps/FirstPersonMap.umap
+++ b/EndlessVendetta/Content/FirstPerson/Maps/FirstPersonMap.umap
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:50dc7643805f79735dcfd5446b36ff8ddea8adeda4b88438744192186c26f707
-size 19238
+oid sha256:89c980519d00e643fc39c075bf791f256c5cbedde3f1714c9b8dc549b66f747d
+size 19936
diff --git a/EndlessVendetta/Content/FirstPerson/Maps/GunMechanicTester.umap b/EndlessVendetta/Content/FirstPerson/Maps/GunMechanicTester.umap
new file mode 100644
index 00000000..9b60a76e
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Maps/GunMechanicTester.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:317895349b964df99a6a8316ea5f4664ebf4127af8e56f543893d36cc49afbfe
+size 19651
diff --git a/EndlessVendetta/Content/FirstPersonArms/Animations/FirstPerson_AnimBP.uasset b/EndlessVendetta/Content/FirstPersonArms/Animations/FirstPerson_AnimBP.uasset
index c514eab5..44d21afa 100644
--- a/EndlessVendetta/Content/FirstPersonArms/Animations/FirstPerson_AnimBP.uasset
+++ b/EndlessVendetta/Content/FirstPersonArms/Animations/FirstPerson_AnimBP.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:175427d440d7f510cbbfa4630c82a677a83348f3b3b5cc555e09a7b03cf2e4ee
-size 473991
+oid sha256:bd95413d072ec5535444d09946cfb0ec3f4f6392ff5712e60fa521c845b23cdc
+size 478510
diff --git a/EndlessVendetta/Content/Gadgets/BP_DeadEnemy.uasset b/EndlessVendetta/Content/Gadgets/BP_DeadEnemy.uasset
new file mode 100644
index 00000000..934ef0f7
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/BP_DeadEnemy.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45e0a403f0bfb807fb6b6b3fe987c02e2f1f79af908507e8071a0c6259d64ed1
+size 28624
diff --git a/EndlessVendetta/Content/Gadgets/BP_GadgetTestEnemy.uasset b/EndlessVendetta/Content/Gadgets/BP_GadgetTestEnemy.uasset
new file mode 100644
index 00000000..48b9b41e
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/BP_GadgetTestEnemy.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a3c55e1fa7f6cecc3cf312e04498d0b8d9bfdfaac710b43392a61dfd34399fd
+size 29209
diff --git a/EndlessVendetta/Content/Gadgets/BP_Grenade.uasset b/EndlessVendetta/Content/Gadgets/BP_Grenade.uasset
new file mode 100644
index 00000000..b1f7c397
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/BP_Grenade.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0973ba2e3915d82c77975bb8899e2edebcca3eac00001b2d43dc28e63c7070a0
+size 48239
diff --git a/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/BP_OM_Explosive.uasset b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/BP_OM_Explosive.uasset
new file mode 100644
index 00000000..7a2cb36f
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/BP_OM_Explosive.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0294c0bf210acc1dbff59e7259400d9dd1c0f2a6674c2a130a5a24dd7e8d6c9d
+size 49878
diff --git a/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset
new file mode 100644
index 00000000..918f8800
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/CG_OverloadModule.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54c29d51176ad4d6f3709487c680854c3f65197fd77c3fdf909aacebf0012925
+size 109955
diff --git a/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/WBP_OM_ScreenWidget.uasset b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/WBP_OM_ScreenWidget.uasset
new file mode 100644
index 00000000..f48c5af0
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/CombatGadgets/OverloadModule/WBP_OM_ScreenWidget.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2ca74a9a4b471019294bae3731c5b9d96eedd3ef09a2c877a7b0966457437f6c
+size 260939
diff --git a/EndlessVendetta/Content/Gadgets/GM_GadgetManager.uasset b/EndlessVendetta/Content/Gadgets/GM_GadgetManager.uasset
new file mode 100644
index 00000000..53e55580
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/GM_GadgetManager.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f89312e222f9d5b588d790390162f6293435c25439f77609ac1ecb532f103499
+size 22674
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/BP_RingingPhone.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/BP_RingingPhone.uasset
new file mode 100644
index 00000000..c2168845
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/BP_RingingPhone.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b98c1ddcdd17636cb29a010217910419c7674894cef53127e723f4298fb714d
+size 47866
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset
new file mode 100644
index 00000000..0ed980f6
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/RG_RingModule.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5d874ac6c73fe2ee1d7f1024877b2f448df3daf631d5dafbf4e23804549fa652
+size 108456
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_1.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_1.uasset
new file mode 100644
index 00000000..e6ba3ca4
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d35033628bd5db17cb99027efbab8c2dd473e5388fb32d34558e11e7f338c73d
+size 3852614
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_2.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_2.uasset
new file mode 100644
index 00000000..ec55125b
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ea010e84dc996169f39e921770477b79303bccf4bb40972f258106064245e6e
+size 3386251
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_4.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_4.uasset
new file mode 100644
index 00000000..93fcaa59
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8386a474ed43859781c4a531ccb1236ba402a03b4f1927ed7b5d5079f1980661
+size 3390670
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset
new file mode 100644
index 00000000..d69e0e6a
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00265bc01e803ae78c9486a50cdb2fe60b93de0d265a599dec052b079cc724c8
+size 4272
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_2.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_2.uasset
new file mode 100644
index 00000000..a81042d9
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8b96750f088380206ae1d2efbe770b4257e226e91e25931200a75e0816087dc
+size 4272
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_4.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_4.uasset
new file mode 100644
index 00000000..526aa997
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingTone_Cue_4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:324f88c110dc7f51d064e81abab62461b423fa3fd69926a9e5c7a03d34e143e3
+size 4272
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingtone_3.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingtone_3.uasset
new file mode 100644
index 00000000..50d48159
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingtone_3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81979a2046a7663ac4f084d2824198b887b891f2dfb2d497ba58ebf5bf89d166
+size 4030169
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingtone_Cue_3.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingtone_Cue_3.uasset
new file mode 100644
index 00000000..6d4ddfdd
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/Ringtones/TempRingtone_Cue_3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7858b2bb4d57c53a0fa054ba19bda0f09e8c7b6bb797785be5c0e91a3ab9cb41
+size 4272
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/WBP_RM_ScreenWidget.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/WBP_RM_ScreenWidget.uasset
new file mode 100644
index 00000000..747ddfc3
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/RingModule/WBP_RM_ScreenWidget.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ffd72773986cdacf62029cebebc6b25f8a581d0270358c303b8a968c6bfd23da
+size 254397
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/BP_Ping.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/BP_Ping.uasset
new file mode 100644
index 00000000..4b2eeb98
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/BP_Ping.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d550ef5403fa8eb4429aa8a02bf20ee8861165cdfec6f86783634750e14c7ad2
+size 64620
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/PingImage.png b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/PingImage.png
new file mode 100644
index 00000000..6e12b0fe
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/PingImage.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e0e7b01c20546d33776b7e9ab7b48c2e81a79c07558f92ed0ef035ad729cd2a
+size 66320
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/PingImage.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/PingImage.uasset
new file mode 100644
index 00000000..60b1fbff
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/PingImage.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71d15ce6872f9185621eabe6eb24774f8014dfddbc4e89e6c6961f662d269445
+size 74727
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/WBP_Ping.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/WBP_Ping.uasset
new file mode 100644
index 00000000..18281d37
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Ping/WBP_Ping.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11ba552af3b2c39dcfae07749f63f56e4f87b1bcc38306d9a7f51d037e20e5d5
+size 54205
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset
new file mode 100644
index 00000000..f0c43d86
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/RG_VisionLink.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f40722ce6381c0b65978b90489e162c36b1335524162d4b112fe22a6d382fc24
+size 108529
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/VisionLinkViewPortBG.png b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/VisionLinkViewPortBG.png
new file mode 100644
index 00000000..66c7ba77
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/VisionLinkViewPortBG.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:527675573f05b7640baddcab7340a398e3daa8a170ef6b43d0e8ce4b22594c1c
+size 60971
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/VisionLinkViewPortBG.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/VisionLinkViewPortBG.uasset
new file mode 100644
index 00000000..8db47e99
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/VisionLinkViewPortBG.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:67d9f11bc227f55da0c8ed5642e838600c464ad28dd6ff960cf8d89e3e4d2156
+size 45631
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/WBP_VisionLinkViewPort.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/WBP_VisionLinkViewPort.uasset
new file mode 100644
index 00000000..2fe7eeaa
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/Viewport/WBP_VisionLinkViewPort.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0df7d8ccd875abeaaa1f439439dc1a8dd8fb765c09cbaf506743dcfede51538
+size 199275
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WBP_VisionLinkWatchFace.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WBP_VisionLinkWatchFace.uasset
new file mode 100644
index 00000000..f4473218
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WBP_VisionLinkWatchFace.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc8393479c593c48fd8db154aa11f6ac9f5f6d5cd03ee4d93f2754556653dccb
+size 161556
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WatchFaceBGImage.png b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WatchFaceBGImage.png
new file mode 100644
index 00000000..b7f30e16
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WatchFaceBGImage.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd09031c00b4f5c7775a880706b149a33d8c6137dc79cf156722c6197791198d
+size 15063
diff --git a/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WatchFaceBGImage.uasset b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WatchFaceBGImage.uasset
new file mode 100644
index 00000000..4e03bf1b
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/ReconGadgets/VisionLink/WatchFace/WatchFaceBGImage.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9aa56bafa97642804de02c9e00f3a77e0794167d534174993b616e8761757153
+size 19863
diff --git a/EndlessVendetta/Content/Gadgets/TestGadgets/CG_ExampleCombat.uasset b/EndlessVendetta/Content/Gadgets/TestGadgets/CG_ExampleCombat.uasset
new file mode 100644
index 00000000..154f762a
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/TestGadgets/CG_ExampleCombat.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5647c792435713b3b313153fd4a9985e6f0a69adca680e12c8e309ff35ee89b9
+size 29363
diff --git a/EndlessVendetta/Content/Gadgets/TestGadgets/IA_UseGadget.uasset b/EndlessVendetta/Content/Gadgets/TestGadgets/IA_UseGadget.uasset
new file mode 100644
index 00000000..6ff56db6
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/TestGadgets/IA_UseGadget.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:612640a4303e85695119bd2552ac09775debae2b5f0e4c04317f4b7bcf45680b
+size 1363
diff --git a/EndlessVendetta/Content/Gadgets/TestGadgets/IMC_Gadget.uasset b/EndlessVendetta/Content/Gadgets/TestGadgets/IMC_Gadget.uasset
new file mode 100644
index 00000000..bab4f88c
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/TestGadgets/IMC_Gadget.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c0a91a49b1c3887fd037daaa0033990d9f49625e36b765e196d5f5765a8638a
+size 2477
diff --git a/EndlessVendetta/Content/Gadgets/TestGadgets/RC_ExampleRecon.uasset b/EndlessVendetta/Content/Gadgets/TestGadgets/RC_ExampleRecon.uasset
new file mode 100644
index 00000000..7630574b
--- /dev/null
+++ b/EndlessVendetta/Content/Gadgets/TestGadgets/RC_ExampleRecon.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d162dc461b9db3b93d49bf5d7abe2a0b1a96faba906ab9faef43bb9fed45ca5
+size 29969
diff --git a/EndlessVendetta/Content/LevelPrototyping/Materials/M_Concrete.uasset b/EndlessVendetta/Content/LevelPrototyping/Materials/M_Concrete.uasset
new file mode 100644
index 00000000..a6d654fd
--- /dev/null
+++ b/EndlessVendetta/Content/LevelPrototyping/Materials/M_Concrete.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a26f6c91b028ea155cc5336c7c3101d8601f9d6b335fb1c46760022ab78c68cd
+size 13930
diff --git a/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_BaseColor.uasset b/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_BaseColor.uasset
new file mode 100644
index 00000000..6f13c266
--- /dev/null
+++ b/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_BaseColor.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:155948427b3e16c2deef2d5c88c461b37b3ab9b046d5c85cf07a76ab99604444
+size 5030894
diff --git a/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_Normal.uasset b/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_Normal.uasset
new file mode 100644
index 00000000..f27c1fd1
--- /dev/null
+++ b/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_Normal.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cbec944bbe7edf2fa9ccc095e66f68cc6b5f9f903ba0ed1d0f22e253de3bba9f
+size 9567803
diff --git a/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_OcclusionRoughnessMetallic.uasset b/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_OcclusionRoughnessMetallic.uasset
new file mode 100644
index 00000000..c5cc8616
--- /dev/null
+++ b/EndlessVendetta/Content/LevelPrototyping/Materials/Panel_Concrete_OcclusionRoughnessMetallic.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f80a56edd87e453b6255a75e973cbd8c3fea561bda90be7b7405a4564cb84e77
+size 1217878
diff --git a/EndlessVendetta/Content/LevelPrototyping/Scenes/TutorialHit.umap b/EndlessVendetta/Content/LevelPrototyping/Scenes/TutorialHit.umap
new file mode 100644
index 00000000..7e581a43
--- /dev/null
+++ b/EndlessVendetta/Content/LevelPrototyping/Scenes/TutorialHit.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3ffb6c31ffcde26ae8a0f677a27ced553a7f10e9a7a41786f4c7a319f02205bc
+size 411380
diff --git a/EndlessVendetta/Content/Levels/BountySystemTestLevel.umap b/EndlessVendetta/Content/Levels/BountySystemTestLevel.umap
new file mode 100644
index 00000000..d3a27dd4
--- /dev/null
+++ b/EndlessVendetta/Content/Levels/BountySystemTestLevel.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:08b2531ae6806a5368e1a7a237d570a505db2ebeacac6f84152ce3d5578eb2ba
+size 19390
diff --git a/EndlessVendetta/Content/Levels/EnemyAITest.umap b/EndlessVendetta/Content/Levels/EnemyAITest.umap
new file mode 100644
index 00000000..8319bb34
--- /dev/null
+++ b/EndlessVendetta/Content/Levels/EnemyAITest.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba62070ea31cc50bd2bea8db9b7d8f66bbe89280d203f53c448605cc9f5efc14
+size 19438
diff --git a/EndlessVendetta/Content/Levels/FirstPersonMap.umap b/EndlessVendetta/Content/Levels/FirstPersonMap.umap
new file mode 100644
index 00000000..b55a585b
--- /dev/null
+++ b/EndlessVendetta/Content/Levels/FirstPersonMap.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23d2e3f9308eca1cb84f2561c48860f0c51b5e8c51a7257dff11988d2e1b5724
+size 2116
diff --git a/EndlessVendetta/Content/Levels/GadgetSystemTestLevel.umap b/EndlessVendetta/Content/Levels/GadgetSystemTestLevel.umap
new file mode 100644
index 00000000..ee781591
--- /dev/null
+++ b/EndlessVendetta/Content/Levels/GadgetSystemTestLevel.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:38cb9c3d251f43819b4908c0a95aff93c8c3185de87ef7051cf426b33797f636
+size 108254
diff --git a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset
index d7e5048f..55042f05 100644
--- a/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset
+++ b/EndlessVendetta/Content/StarterContent/Architecture/Floor_400x400.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4affdcf4a4ad958c59cf0f89fc2b9cd113305262e46a5221a577ae9b2fa83055
+oid sha256:6ea1d452feec1c72f3d7b285c4c9950418a1174f858b54d89c8afb2c8b5ef80f
size 14831
diff --git a/EndlessVendetta/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset b/EndlessVendetta/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset
new file mode 100644
index 00000000..53b74e99
--- /dev/null
+++ b/EndlessVendetta/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:77ea60d528f8dedb8a1e810e8c41b193fb6ad35a25855fe4790784e42d7f7847
+size 34232
diff --git a/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Jump.uasset b/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Jump.uasset
new file mode 100644
index 00000000..f259a9a3
--- /dev/null
+++ b/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Jump.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be70c0d8a764ac67ce853e9bf07a97332996c27bcbf49e0ffafe0c3c13711c51
+size 1307
diff --git a/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Look.uasset b/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Look.uasset
new file mode 100644
index 00000000..66b846e8
--- /dev/null
+++ b/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Look.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f31e273949de9b9798743f238b895cd422d9b14e77f73e11d993ff3527bbb735
+size 1454
diff --git a/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Move.uasset b/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Move.uasset
new file mode 100644
index 00000000..7b57d9b6
--- /dev/null
+++ b/EndlessVendetta/Content/ThirdPerson/Input/Actions/IA_Move.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8ece438a653b29d1c64011ef11d4bd05245413994ecf4ad80ef4da1694b666f
+size 1454
diff --git a/EndlessVendetta/Content/ThirdPerson/Input/IMC_Default.uasset b/EndlessVendetta/Content/ThirdPerson/Input/IMC_Default.uasset
new file mode 100644
index 00000000..2b0033cc
--- /dev/null
+++ b/EndlessVendetta/Content/ThirdPerson/Input/IMC_Default.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:658cd92edd5950a4c65ab878682bde4ee787adf1b0d1c3d529fc9f43bcfe0830
+size 12793
diff --git a/EndlessVendetta/Content/ThirdPerson/Maps/ThirdPersonMap.umap b/EndlessVendetta/Content/ThirdPerson/Maps/ThirdPersonMap.umap
new file mode 100644
index 00000000..29ccb762
--- /dev/null
+++ b/EndlessVendetta/Content/ThirdPerson/Maps/ThirdPersonMap.umap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea0979f98e1f73562e66dd20db6bbfef467cf1a2d7da7d9111ea81fab98ff211
+size 18857
diff --git a/EndlessVendetta/Content/UI/UI_Material_SeeThroughWalls.uasset b/EndlessVendetta/Content/UI/UI_Material_SeeThroughWalls.uasset
new file mode 100644
index 00000000..06d1c788
--- /dev/null
+++ b/EndlessVendetta/Content/UI/UI_Material_SeeThroughWalls.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3439980aab6831afe77137df063f00b63258da0e3ba5c3c8b84a00e86c48bbf9
+size 15025
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/OW/M2M9BG6AWDJW3UNODUVGA2.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/OW/M2M9BG6AWDJW3UNODUVGA2.uasset
new file mode 100644
index 00000000..d2ed851f
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/OW/M2M9BG6AWDJW3UNODUVGA2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e389d4fdd420c3db3068711fe04fd3fa8d65bdb13895ef085fc9deb499078797
+size 5288
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/EL/ZUCMIANGP54V86XN0JR5Y6.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/EL/ZUCMIANGP54V86XN0JR5Y6.uasset
new file mode 100644
index 00000000..a5caac61
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/EL/ZUCMIANGP54V86XN0JR5Y6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce6567235fd97e70957e706942ac503a48630467d721fee98bbfa4eb26a8b294
+size 27307
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/KO/5NABXAV1RIRN3HX2KXBHV8.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/KO/5NABXAV1RIRN3HX2KXBHV8.uasset
new file mode 100644
index 00000000..ee2444db
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/KO/5NABXAV1RIRN3HX2KXBHV8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ea76fc172df362aee30e4018ebac61f97f005f127b25e628b6befb851e332c6
+size 10457
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/25/17SUOAG1ZXCXS8NCT6BX1J.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/25/17SUOAG1ZXCXS8NCT6BX1J.uasset
new file mode 100644
index 00000000..7c8720d9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/25/17SUOAG1ZXCXS8NCT6BX1J.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:772087796135600b11d143dec0c8996663a3f6185c09c7d50e09e235b06a8ff4
+size 4791
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/GK/2Y8SXHNN2DD2HWUFT5W8WJ.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/GK/2Y8SXHNN2DD2HWUFT5W8WJ.uasset
new file mode 100644
index 00000000..eefd8c77
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/GK/2Y8SXHNN2DD2HWUFT5W8WJ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db94b82619e2d3184e577effce11d85cd85c4085e59d3aed9dc9223f33bc0c24
+size 4502
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/IZ/XQW4EUO3VZ41RD1M86T11D.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/IZ/XQW4EUO3VZ41RD1M86T11D.uasset
new file mode 100644
index 00000000..061cd85a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/IZ/XQW4EUO3VZ41RD1M86T11D.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28ffaa0dfb2279028ea95ca7fe6117646211631961efb80ea958393a8595b96d
+size 4791
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/X0/A8AJ030WDFS3UX0CDW7NQT.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/X0/A8AJ030WDFS3UX0CDW7NQT.uasset
new file mode 100644
index 00000000..3dbc6545
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/0/X0/A8AJ030WDFS3UX0CDW7NQT.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91f151f31ecf16ac36949ff0dc58e7978690b14334ab19dcf8027e38c6e8c393
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/CZ/T22L35O6ZL5DC7H1KAS12V.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/CZ/T22L35O6ZL5DC7H1KAS12V.uasset
new file mode 100644
index 00000000..728f0e59
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/CZ/T22L35O6ZL5DC7H1KAS12V.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0ec1b5b73477f139a5d856e771bd2f669107ac5ff461949b66e592da9e07d37
+size 5290
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/EX/M4NUWNTSMSB30D92R0JNVH.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/EX/M4NUWNTSMSB30D92R0JNVH.uasset
new file mode 100644
index 00000000..572e71f7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/EX/M4NUWNTSMSB30D92R0JNVH.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:29caa0da6bdd9417b18be98e65a66216d98444b61dbf953eb500de819c3bd79d
+size 4614
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/ZI/R1ZA0YHAVRKP938ICPJNTS.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/ZI/R1ZA0YHAVRKP938ICPJNTS.uasset
new file mode 100644
index 00000000..bffedc24
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/1/ZI/R1ZA0YHAVRKP938ICPJNTS.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff14ad93ec55ab54346e62619514158d4678cfee8c6a4209e442121fa6c526aa
+size 4729
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/2/OY/NWUJZZF3O1FRAXABLHEC7A.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/2/OY/NWUJZZF3O1FRAXABLHEC7A.uasset
new file mode 100644
index 00000000..d0b38dd7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/2/OY/NWUJZZF3O1FRAXABLHEC7A.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d048f3006b00b67988036379aac8d53857a86cca76875ec474ad9514e9d7ec46
+size 4862
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/2/ZT/CS7AJMMD9W67X2ZP1JTMDY.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/2/ZT/CS7AJMMD9W67X2ZP1JTMDY.uasset
new file mode 100644
index 00000000..c2d59190
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/2/ZT/CS7AJMMD9W67X2ZP1JTMDY.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb1e64afb18b4af3a116d28b4fe40b5d323f39e7ab3980a45fbd8116187653dd
+size 4789
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/3/2S/VMP9PWZPQHZL0PQ6M3P46T.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/3/2S/VMP9PWZPQHZL0PQ6M3P46T.uasset
new file mode 100644
index 00000000..ca4f715d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/3/2S/VMP9PWZPQHZL0PQ6M3P46T.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0daaff5f052e6904f6480a0b8a098dda84245d0938e2eb34681cbe0553a0943d
+size 4863
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/MA/A156FPMZYSJI32UUV5KAUD.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/MA/A156FPMZYSJI32UUV5KAUD.uasset
new file mode 100644
index 00000000..48cde451
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/MA/A156FPMZYSJI32UUV5KAUD.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d0762dbc6e2e881d2d49b47d833c54c27bb49f133f658f8165d92ce4646e333
+size 4729
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/O7/Y27SOAR2KGMJHHHD7QG9W3.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/O7/Y27SOAR2KGMJHHHD7QG9W3.uasset
new file mode 100644
index 00000000..a6d592c0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/O7/Y27SOAR2KGMJHHHD7QG9W3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa2295694fced0a5cc7b080338a5b2ce91a4ebb5d4890316be1f97634f9c4672
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/P4/6UW1DVWYFFIZTMUG9V8YCE.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/P4/6UW1DVWYFFIZTMUG9V8YCE.uasset
new file mode 100644
index 00000000..bfcc37b3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/P4/6UW1DVWYFFIZTMUG9V8YCE.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bdef15fb4b4c6e554d6f589a302f9d7fc94fa89f737d6fc5bd0ba7b8655944a6
+size 4669
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/SX/ZQBKEDB8JW6BYC09LYGEGM.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/SX/ZQBKEDB8JW6BYC09LYGEGM.uasset
new file mode 100644
index 00000000..6c063ebf
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/SX/ZQBKEDB8JW6BYC09LYGEGM.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3001b834af86196fa34a8a49bdfb1fd0312e4d98adec67150ff821172326b029
+size 4614
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/WG/SUVM1JZ0PVCC7SNBKLONYJ.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/WG/SUVM1JZ0PVCC7SNBKLONYJ.uasset
new file mode 100644
index 00000000..1561f0ea
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/WG/SUVM1JZ0PVCC7SNBKLONYJ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02796000b6265968a6b8ffae771f4812693ee26f02eeec837b542009bd1322da
+size 3667
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/YT/5VDYD721E8OB69DHUVNW4O.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/YT/5VDYD721E8OB69DHUVNW4O.uasset
new file mode 100644
index 00000000..613ed0c9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/4/YT/5VDYD721E8OB69DHUVNW4O.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6473828270e4cab01ef58d338bac0f29fd17a9799240829a0a7a8105829db28d
+size 4863
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/66/WQ2W64S04PNZLE92TJRS11.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/66/WQ2W64S04PNZLE92TJRS11.uasset
new file mode 100644
index 00000000..bf328d07
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/66/WQ2W64S04PNZLE92TJRS11.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c0a6632bc47ea3532b227a9c73be3abf44ba8c13524f182a86eac6206d0b1b9
+size 4615
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/AC/1Z9VIJ2JRVY0MQQ44OF11V.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/AC/1Z9VIJ2JRVY0MQQ44OF11V.uasset
new file mode 100644
index 00000000..45dca1c2
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/AC/1Z9VIJ2JRVY0MQQ44OF11V.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db8a881ef81bbe3d2523d1342e2c6167330c82c631a73da2e5ebf14d4b947924
+size 4731
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/C2/79BVTOH23GR8N0SWG6GWWW.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/C2/79BVTOH23GR8N0SWG6GWWW.uasset
new file mode 100644
index 00000000..ecca0351
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/C2/79BVTOH23GR8N0SWG6GWWW.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:328fd51d3c7fefdbdda511f05cb29f849da14631cab1e07a5d7da3c01450ba25
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/DI/05W7546RV25UV9MUAZJUW8.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/DI/05W7546RV25UV9MUAZJUW8.uasset
new file mode 100644
index 00000000..e6f47978
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/DI/05W7546RV25UV9MUAZJUW8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c8a526d758028a5796590075ec8f3a3547fa1bd7e534d09ce96ef1bc39f4e4b
+size 4789
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/XV/QS5R65LII0DY9AY8BZX62U.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/XV/QS5R65LII0DY9AY8BZX62U.uasset
new file mode 100644
index 00000000..7bba47a9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/5/XV/QS5R65LII0DY9AY8BZX62U.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b48a16b8b6333b89850703fc602a5e9559b70797977af0fe3aaa71884c7ca0ed
+size 4728
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/0M/M2D0X7GYI4FK051TQ36XEU.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/0M/M2D0X7GYI4FK051TQ36XEU.uasset
new file mode 100644
index 00000000..57b5b2f9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/0M/M2D0X7GYI4FK051TQ36XEU.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:604f2b1a4e7d98e8ebb0cbd3ca6d77a6330db9af1f245c4c30dd157f4184eca8
+size 4863
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/1X/M9YEJR335ZC5O8CL7YMOHP.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/1X/M9YEJR335ZC5O8CL7YMOHP.uasset
new file mode 100644
index 00000000..eb164855
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/1X/M9YEJR335ZC5O8CL7YMOHP.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ad254157b98fa2f4b255e4b553c078efbf6e1bd2f3e4bff473c79b774ff91a4
+size 4789
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/2C/Q7P1X4BLFUTW8VRW3P7RIB.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/2C/Q7P1X4BLFUTW8VRW3P7RIB.uasset
new file mode 100644
index 00000000..0eb7832b
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/2C/Q7P1X4BLFUTW8VRW3P7RIB.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c4c589fbdfb25dbacfef760367c2290c24030b1ebbdebd9700f3df55e1ea630
+size 4791
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/TX/BTC9S0W28D5I25IOL56715.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/TX/BTC9S0W28D5I25IOL56715.uasset
new file mode 100644
index 00000000..fa64ab8e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/TX/BTC9S0W28D5I25IOL56715.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:39162e6e995a0f6846b1a806d1fa532ddc0af51fc910ab83b5c988fc591f91ff
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/XS/WL0ZK548OH4TTOZX0S761Y.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/XS/WL0ZK548OH4TTOZX0S761Y.uasset
new file mode 100644
index 00000000..d321c2d9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/XS/WL0ZK548OH4TTOZX0S761Y.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9573fa0ad445694cf7b7cd8da62fe41785b828dc0285a311d019238c537731e9
+size 4896
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/YZ/8IO3NK6CAJNBOCZAR2BZPG.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/YZ/8IO3NK6CAJNBOCZAR2BZPG.uasset
new file mode 100644
index 00000000..5c2307a8
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/6/YZ/8IO3NK6CAJNBOCZAR2BZPG.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a87ed8f1f5fe8a44a98efa0ebe6035b2ca4b3d18b2b31385bf26ac82454b56af
+size 4789
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/7/B5/TD7932XGOMQQH3EN17E3ZB.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/7/B5/TD7932XGOMQQH3EN17E3ZB.uasset
new file mode 100644
index 00000000..6352cf1a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/7/B5/TD7932XGOMQQH3EN17E3ZB.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a588b9debbb5cb4b0993f0a2c70154f1b3a64ef5f3e30bf098654b99b6d6c912
+size 4617
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/7/BL/5QFMPQA4LA59B0C1K7VEUO.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/7/BL/5QFMPQA4LA59B0C1K7VEUO.uasset
new file mode 100644
index 00000000..fba7167a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/7/BL/5QFMPQA4LA59B0C1K7VEUO.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:04956fe8b0d34aedf19481f08808a9511672cecf78fff03a25286afb6d9e0989
+size 3673
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/GE/SFWEJY7HPPETIYTKPNF2PM.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/GE/SFWEJY7HPPETIYTKPNF2PM.uasset
new file mode 100644
index 00000000..d4ccc8e7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/GE/SFWEJY7HPPETIYTKPNF2PM.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d088e9ded09de57825efd00a1dfd9dfcf70ecf41bf52cfbb22e6a6923a61eb8f
+size 4612
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/HC/5I57CIXRPQ6ES1G8NUV4AG.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/HC/5I57CIXRPQ6ES1G8NUV4AG.uasset
new file mode 100644
index 00000000..fa5251b8
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/HC/5I57CIXRPQ6ES1G8NUV4AG.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e2042529db332f272a83fb75c975b0b746a93b65b7c59ebec1322a6a6a4a6f3
+size 3882
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/I6/GW76OI4EC3GFQC5NOD09UZ.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/I6/GW76OI4EC3GFQC5NOD09UZ.uasset
new file mode 100644
index 00000000..e1a57512
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/I6/GW76OI4EC3GFQC5NOD09UZ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8236b7774ea3bc2df89973ae76d388c267a477e2bc429be2b6251abd3f256eb
+size 3653
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/IZ/57UNOHSEA89PDKIFF498WP.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/IZ/57UNOHSEA89PDKIFF498WP.uasset
new file mode 100644
index 00000000..6537afc1
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/IZ/57UNOHSEA89PDKIFF498WP.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:195d6b5599f369be818715ee9736c4f93b34d51b5a275454ed4bb2c6dff4d984
+size 4789
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/OE/2U43UZHFR9OAOPQP4TQBB4.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/OE/2U43UZHFR9OAOPQP4TQBB4.uasset
new file mode 100644
index 00000000..6de004d9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/OE/2U43UZHFR9OAOPQP4TQBB4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da4966141ff18d3a6ab047b056fbd366fae00ad0b857fb0e7e21202e5029e1d8
+size 4791
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/OX/CSW98GYLISUMWC9Q0DOGEL.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/OX/CSW98GYLISUMWC9Q0DOGEL.uasset
new file mode 100644
index 00000000..c5979f74
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/OX/CSW98GYLISUMWC9Q0DOGEL.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53266eb9f08b264b3a9db089cda463a9ebd396367e568011a16dc85004b326be
+size 4731
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/PC/IBGC4ILAFO0EI86PK0LA5R.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/PC/IBGC4ILAFO0EI86PK0LA5R.uasset
new file mode 100644
index 00000000..87df4385
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/PC/IBGC4ILAFO0EI86PK0LA5R.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44170b8a086a754d9e5fd6816b30c3d11bc1566d767a565ad45237864185512f
+size 12522
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/RL/6H17UR2CPP4I0BW6W3N1FP.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/RL/6H17UR2CPP4I0BW6W3N1FP.uasset
new file mode 100644
index 00000000..06199b95
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/8/RL/6H17UR2CPP4I0BW6W3N1FP.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3cd19f4063687eb134743c5aceef5d12d07604ddc4fcf77d1639b3e5d827b05
+size 4514
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/UY/QODPAS7H93ZRX0HZSVXGFI.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/UY/QODPAS7H93ZRX0HZSVXGFI.uasset
new file mode 100644
index 00000000..e615df1d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/UY/QODPAS7H93ZRX0HZSVXGFI.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a172d6f6a9e3e3960b61096ed6405dd64c5743d1c6bf77bda4f3644919eea40a
+size 4766
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/V0/K6EQUGOEAMS93X1F5D1MHF.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/V0/K6EQUGOEAMS93X1F5D1MHF.uasset
new file mode 100644
index 00000000..a1c6b01e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/V0/K6EQUGOEAMS93X1F5D1MHF.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9ce2aa5690a328158325c461e7a5340a842c1ca48c77a1a0910e31d070c091f4
+size 4729
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/VR/NNCUWMLACWHDW29WII4SD7.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/VR/NNCUWMLACWHDW29WII4SD7.uasset
new file mode 100644
index 00000000..6a2c1c54
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/VR/NNCUWMLACWHDW29WII4SD7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a352e5ac99d32233102874586a68a2db307013046a7f9f6c7dee3030a830be37
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/VS/DCB65WIYSZJZJOCI6WSJ9Q.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/VS/DCB65WIYSZJZJOCI6WSJ9Q.uasset
new file mode 100644
index 00000000..3af2dbba
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/VS/DCB65WIYSZJZJOCI6WSJ9Q.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc0ce36ca9b14bb6f9b4b82209d1f4195687b2a4e64e10908ba9d760d2fe8283
+size 4677
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/W0/UE1P9W899X3GCWVKMDDSGK.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/W0/UE1P9W899X3GCWVKMDDSGK.uasset
new file mode 100644
index 00000000..c44aed95
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/9/W0/UE1P9W899X3GCWVKMDDSGK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7d568d84d5ef1400bac810a93a13b9c6392d2a1daafcd89c102aaf048540025
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/A/61/IQXXIOWP1L9O63YAABFG27.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/A/61/IQXXIOWP1L9O63YAABFG27.uasset
new file mode 100644
index 00000000..b0bb4c10
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/A/61/IQXXIOWP1L9O63YAABFG27.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be3da3da4cc97d2f91b8dd035ac121485d0adc76e07ea0ef50f30837bc309462
+size 4731
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/A/S6/727VECD7OCUDIZ2GHRBJJ3.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/A/S6/727VECD7OCUDIZ2GHRBJJ3.uasset
new file mode 100644
index 00000000..043c1384
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/A/S6/727VECD7OCUDIZ2GHRBJJ3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e5f7f07c79a66cedbc507b0f685429d46d4af28e33621bbad4db575d16908384
+size 4766
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/B/LW/P5662X206J8FK010FEDYJH.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/B/LW/P5662X206J8FK010FEDYJH.uasset
new file mode 100644
index 00000000..18c91a74
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/B/LW/P5662X206J8FK010FEDYJH.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7ff30bcf6f78115ab555efca0b66c0f721e67ac028440835f4206f9c5a9aea1f
+size 4731
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/05/HA4J5CS0609L7XWM1WR2F7.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/05/HA4J5CS0609L7XWM1WR2F7.uasset
new file mode 100644
index 00000000..517d6f97
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/05/HA4J5CS0609L7XWM1WR2F7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eaa7c4a2c74573f6188bf9e4387a80b302b6fbafe128e8cb2a698a74dcdce5d5
+size 4617
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/BN/CVBE6G5FCQBP7JH4WABUQD.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/BN/CVBE6G5FCQBP7JH4WABUQD.uasset
new file mode 100644
index 00000000..00bca627
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/BN/CVBE6G5FCQBP7JH4WABUQD.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a8c8a0a9339cb5b646e24a50e6ad75ee7a1f42c2dfd9a796e6566e12cc178ad
+size 4726
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/O1/KOEM67VWDH98WGOAJBI4E2.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/O1/KOEM67VWDH98WGOAJBI4E2.uasset
new file mode 100644
index 00000000..c283936d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/C/O1/KOEM67VWDH98WGOAJBI4E2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1b06fbd6495607b48f5588b850821d47e150309705a9e1e441047fa112583ef8
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/F4/GUJDQQXQ025WJJ6RLE0SSF.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/F4/GUJDQQXQ025WJJ6RLE0SSF.uasset
new file mode 100644
index 00000000..d2305d87
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/F4/GUJDQQXQ025WJJ6RLE0SSF.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9adbfc289e3c12328c60346a2be7212627f7039f4b981bb3d1667bce98e2bb03
+size 4789
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/KR/WJ92O3G9AE40MUVIPW466O.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/KR/WJ92O3G9AE40MUVIPW466O.uasset
new file mode 100644
index 00000000..b4b5a7a0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/KR/WJ92O3G9AE40MUVIPW466O.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e65faeb7c028363dc6ea103f12f3482b8c2f7f4ac1f9c7105bdaf4bd8132283
+size 4759
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/P4/4NNEH19QJ3ARXX12O9TPD1.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/P4/4NNEH19QJ3ARXX12O9TPD1.uasset
new file mode 100644
index 00000000..3270c30a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/P4/4NNEH19QJ3ARXX12O9TPD1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:845d6f6da7e9aae85f618875158a2e29fc35eb04e0cfb40740f5ae8350d5e5da
+size 4617
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/PI/JNOQ11LVO9MVMU7H8GL3D7.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/PI/JNOQ11LVO9MVMU7H8GL3D7.uasset
new file mode 100644
index 00000000..051dd363
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/PI/JNOQ11LVO9MVMU7H8GL3D7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36141b38a7562ac85281cb7bf6ef96c2de58aabc5af2f6a7d2da1b1d1b0c78cb
+size 4726
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/V3/7KJ2D3EDU8FL3HZEPRM5FK.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/V3/7KJ2D3EDU8FL3HZEPRM5FK.uasset
new file mode 100644
index 00000000..2cb2d663
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/D/V3/7KJ2D3EDU8FL3HZEPRM5FK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da709a0f422af8d01b7b449c8033dbe4df951cc9348af4d5a63441af4bd42119
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/6M/TFDPLCSP2249C7MMH6Q6IJ.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/6M/TFDPLCSP2249C7MMH6Q6IJ.uasset
new file mode 100644
index 00000000..2c71f1c2
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/6M/TFDPLCSP2249C7MMH6Q6IJ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a862a44cdf94e3167c6363d616cee7b94db044c26e447ca7bc35917a6df3fe1e
+size 4610
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/7O/DU906LIBS2H7DIXZOXTLI5.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/7O/DU906LIBS2H7DIXZOXTLI5.uasset
new file mode 100644
index 00000000..76c533ec
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/7O/DU906LIBS2H7DIXZOXTLI5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05ffc30cc78438cf473263d6c484f94f97f171750f21993ad8ae249c92a1587c
+size 4768
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/CF/03RTKZM37AOGZ60H864CDB.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/CF/03RTKZM37AOGZ60H864CDB.uasset
new file mode 100644
index 00000000..69e94ea3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/CF/03RTKZM37AOGZ60H864CDB.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a62286ccd54254e959243a70f36f6a487c98c853ff584dbcade3709a72f393e1
+size 2470
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/F0/WXXA0FYBUVM9150G6DL079.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/F0/WXXA0FYBUVM9150G6DL079.uasset
new file mode 100644
index 00000000..fe7e2271
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/F0/WXXA0FYBUVM9150G6DL079.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2d7cae3562b1a8e70bb189432d5e5b5684f3dd4961c9203c946a0d7c2d1e883
+size 2518
diff --git a/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/I2/594QUZU1UVGU5T002GJSWF.uasset b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/I2/594QUZU1UVGU5T002GJSWF.uasset
new file mode 100644
index 00000000..e3eb69b2
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/FirstPerson/Maps/GunMechanicTester/E/I2/594QUZU1UVGU5T002GJSWF.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad1ba263bc6beb6df6704bc9dbdd290fbbdf0cc7b46534f9ca0a1982a10e302e
+size 4035
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/35/GNWDM49ITFAL99MAPU63KW.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/35/GNWDM49ITFAL99MAPU63KW.uasset
new file mode 100644
index 00000000..f3727df6
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/35/GNWDM49ITFAL99MAPU63KW.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b1e97718185deed3628398f359d1a192db85830f3c92ee0a48d5b6f72ed3aa27
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/9Q/BGN44FCVKAUBI74L0PVJFH.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/9Q/BGN44FCVKAUBI74L0PVJFH.uasset
new file mode 100644
index 00000000..2be1cdc9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/9Q/BGN44FCVKAUBI74L0PVJFH.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71b64dfa91b49a183aa417117f119b337f29d42bce45289965db69b32b76978c
+size 4596
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/N7/I6SI61JAJULQZ8KSYNC7V4.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/N7/I6SI61JAJULQZ8KSYNC7V4.uasset
new file mode 100644
index 00000000..4e23e931
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/0/N7/I6SI61JAJULQZ8KSYNC7V4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9cecec1b3f8ce3dfec6c2709e1418978cd5d719c1062ad5e37f6680e8871fe4e
+size 4775
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/1/OG/60Y1DLNNKXGJ816DWXWR4K.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/1/OG/60Y1DLNNKXGJ816DWXWR4K.uasset
new file mode 100644
index 00000000..8a4237f0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/1/OG/60Y1DLNNKXGJ816DWXWR4K.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36e178d04426aa3e95de5fe1aa9e1aca57e8251e9923add81957248992e85833
+size 4773
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/1/WB/Q6U5CZJDM49ZZNLD2B3UZ4.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/1/WB/Q6U5CZJDM49ZZNLD2B3UZ4.uasset
new file mode 100644
index 00000000..df4a45a5
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/1/WB/Q6U5CZJDM49ZZNLD2B3UZ4.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eeef04e445c50c3e53e213f3153ec535b36bc6397fa99e0bc3b0802ed820a196
+size 4498
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/0X/FHOYQRCBJ9TSY34PR9YG9K.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/0X/FHOYQRCBJ9TSY34PR9YG9K.uasset
new file mode 100644
index 00000000..ec892978
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/0X/FHOYQRCBJ9TSY34PR9YG9K.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a8341222c00795e6c7a8d378f249f3575589539229c271519348fd72d9896b7
+size 4019
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/EG/J1DWWT3IWLXFAZ4ST6V4ZS.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/EG/J1DWWT3IWLXFAZ4ST6V4ZS.uasset
new file mode 100644
index 00000000..909d830d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/EG/J1DWWT3IWLXFAZ4ST6V4ZS.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:74b0fa5e10f6d25fdcd091a4754ae28353053bb66e7f2480f5ab160846bf4be1
+size 4594
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/KW/P7HO2KS2H3F9KY2UWEMFSW.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/KW/P7HO2KS2H3F9KY2UWEMFSW.uasset
new file mode 100644
index 00000000..aa92c9a4
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/KW/P7HO2KS2H3F9KY2UWEMFSW.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5df5c017c3ae8e66034b98e7bda11c5539ace60a7b6ebca0c5d2df1e7df327f8
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/OE/7WS9WIEXMH5U64C0ZXVHDG.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/OE/7WS9WIEXMH5U64C0ZXVHDG.uasset
new file mode 100644
index 00000000..3d6f1823
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/OE/7WS9WIEXMH5U64C0ZXVHDG.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8802432593f8e5db500b17aaddd8ffa6667f8428a43921e74020a41ee792df1
+size 4775
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/U9/CEJXWHF4HZOWAJH0Z9DVXF.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/U9/CEJXWHF4HZOWAJH0Z9DVXF.uasset
new file mode 100644
index 00000000..4f82a862
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/U9/CEJXWHF4HZOWAJH0Z9DVXF.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a30219e61435d2a0b638f57ad1a724caa4ce8c5de97940443f43c630160d8b3
+size 4847
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/UJ/OE9CR46TEW4L20164ZOYX9.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/UJ/OE9CR46TEW4L20164ZOYX9.uasset
new file mode 100644
index 00000000..97ecaea3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/2/UJ/OE9CR46TEW4L20164ZOYX9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:59a498180c2d57f773d606e7cfbafce5622f5bc5769bc044c2bb205c49d7a7b0
+size 4880
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/0N/O2LCQ39RFAI1HX77K8TT52.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/0N/O2LCQ39RFAI1HX77K8TT52.uasset
new file mode 100644
index 00000000..3e4143f7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/0N/O2LCQ39RFAI1HX77K8TT52.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83620ce3f94dd5aabb7cd42c1215c3372d8b4c42b08f9229f9ceeb79344fd96c
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/4F/8S26VJON8I4V3TGO6PH8SW.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/4F/8S26VJON8I4V3TGO6PH8SW.uasset
new file mode 100644
index 00000000..5fc33af2
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/4F/8S26VJON8I4V3TGO6PH8SW.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44087fa6b7f3de690d493409baa7da7049eb85822bc6cb06b41cdb284e994359
+size 4743
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/MG/Q97N1TH047UOIJQK4OEQ5P.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/MG/Q97N1TH047UOIJQK4OEQ5P.uasset
new file mode 100644
index 00000000..5e38b19d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/MG/Q97N1TH047UOIJQK4OEQ5P.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:264292b2b52f10f2e57869e2d40f2d2fa458574d144e69142b943d8c66a0f61a
+size 4773
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/XR/86ZFQ3D80QB5U0HXZMZRGT.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/XR/86ZFQ3D80QB5U0HXZMZRGT.uasset
new file mode 100644
index 00000000..80b9f64c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/3/XR/86ZFQ3D80QB5U0HXZMZRGT.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e2d7bedbfe607cdf91529ac872ca1ba931b49221223dbce71fdd6aaf148ab02d
+size 4715
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/80/Z3VOE7HM87EM9Q66BHOTNC.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/80/Z3VOE7HM87EM9Q66BHOTNC.uasset
new file mode 100644
index 00000000..8e2c42c0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/80/Z3VOE7HM87EM9Q66BHOTNC.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49450719bb5f72be9c82cb53ac0b7ee22a0935eefc31961557398b967ae48b8e
+size 4773
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/G9/R30GSAVEHD5O8OMLN42SQH.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/G9/R30GSAVEHD5O8OMLN42SQH.uasset
new file mode 100644
index 00000000..159ef7c7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/G9/R30GSAVEHD5O8OMLN42SQH.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fa8d449239d03325948b2524a156b1fccf27c1bca0d4307cc0bef8e8a35f661
+size 4773
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/LR/K1RHQ8GO0CIBCOJ2CQ7VBC.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/LR/K1RHQ8GO0CIBCOJ2CQ7VBC.uasset
new file mode 100644
index 00000000..f91d353e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/LR/K1RHQ8GO0CIBCOJ2CQ7VBC.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a03bfafbbabd6bc905cf9ac7b04975e41a14708842800cfa5f493f6891399e2
+size 4715
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/ML/607V0BD8JKYMIZZNQFWT2P.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/ML/607V0BD8JKYMIZZNQFWT2P.uasset
new file mode 100644
index 00000000..e9541db7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/ML/607V0BD8JKYMIZZNQFWT2P.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a6ed00a7fdedef013163bc3c365e5898c483ad349d5edc918ad6f8acd6d6103
+size 4486
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/TC/55207AXCWRBDEIQMVAL73E.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/TC/55207AXCWRBDEIQMVAL73E.uasset
new file mode 100644
index 00000000..24f7e651
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/TC/55207AXCWRBDEIQMVAL73E.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3df538e65dcdfe19ea78c3737258e6af6313fe93102e1678236b347c48b71d6
+size 2502
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/Y1/CVW9DVNZATUQ7W422U0IDZ.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/Y1/CVW9DVNZATUQ7W422U0IDZ.uasset
new file mode 100644
index 00000000..b8472760
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/4/Y1/CVW9DVNZATUQ7W422U0IDZ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8c38b64a2707875c03514fb65aa2910471978ff1f57d33257880a273596834a
+size 3651
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/5/0F/NWBXM8ZFAWQ9K0C9AYA4E9.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/5/0F/NWBXM8ZFAWQ9K0C9AYA4E9.uasset
new file mode 100644
index 00000000..379b934d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/5/0F/NWBXM8ZFAWQ9K0C9AYA4E9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0513a2fdf9c45342e7156ae7e467334b779cad0408d1cdfb41b7068b07db048f
+size 4601
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/5/W2/NP5W2WCJMUV9NOZ8VBFC5X.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/5/W2/NP5W2WCJMUV9NOZ8VBFC5X.uasset
new file mode 100644
index 00000000..25dccee5
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/5/W2/NP5W2WCJMUV9NOZ8VBFC5X.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41b16314ef8a65243eb88ed7856756d019db3717683cff520b717765f6e4d2af
+size 4773
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/1E/Z18X6DQ1RLUHH8APD8MK7W.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/1E/Z18X6DQ1RLUHH8APD8MK7W.uasset
new file mode 100644
index 00000000..74674679
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/1E/Z18X6DQ1RLUHH8APD8MK7W.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5719a0f764ec0381598f793f7caf06b0e81bfe62774ee18631cc96fa03ea6dc4
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/9B/3CEIJDHVWAVHQMIEAN91R7.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/9B/3CEIJDHVWAVHQMIEAN91R7.uasset
new file mode 100644
index 00000000..bb21c666
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/9B/3CEIJDHVWAVHQMIEAN91R7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:78294ec7406cd39bc8930d0f73db1aefca736d05e6ddf7d960433cf2740dfcd5
+size 4847
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/AF/I5Q6J2LIS5W4WR5VI62AUG.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/AF/I5Q6J2LIS5W4WR5VI62AUG.uasset
new file mode 100644
index 00000000..229ef4fb
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/AF/I5Q6J2LIS5W4WR5VI62AUG.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d233615b6d9a06acd2dbe3653f5b456e1be7556ed8a62284ee23ec1c7cfd1f31
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/AK/W7ZHA42P7DRNS3O3QN8BSU.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/AK/W7ZHA42P7DRNS3O3QN8BSU.uasset
new file mode 100644
index 00000000..616c1f84
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/AK/W7ZHA42P7DRNS3O3QN8BSU.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a035b11357b9e0e22046672f13d5723a4a1c57a2d6dc701134594951a7ad2fa0
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/PD/CPMXMJW3VW3GEW6AKWR5GJ.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/PD/CPMXMJW3VW3GEW6AKWR5GJ.uasset
new file mode 100644
index 00000000..79eb40aa
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/6/PD/CPMXMJW3VW3GEW6AKWR5GJ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9520e2c292dd45a4d34d86b5bc5bbf7b74385ecd62a5408085f6d8cdd673a980
+size 4661
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/55/DJOXM0EW53J6H228XSA0N1.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/55/DJOXM0EW53J6H228XSA0N1.uasset
new file mode 100644
index 00000000..8ffd9a97
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/55/DJOXM0EW53J6H228XSA0N1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:102d2e672a9a7bb71d03b9b6a5516bf2c2e114b107104589998f760e0e22c11f
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/6H/PL136XXOA5LKR53PXV3BUN.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/6H/PL136XXOA5LKR53PXV3BUN.uasset
new file mode 100644
index 00000000..b394dfa9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/6H/PL136XXOA5LKR53PXV3BUN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40a80e94c218ce2e5aa484dd715f5b7212a4d0f76eb2544bbbd37b2e00cc3ea2
+size 4846
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/HR/WN4SY5WWOIF8QI91SK7CTH.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/HR/WN4SY5WWOIF8QI91SK7CTH.uasset
new file mode 100644
index 00000000..5f303842
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/HR/WN4SY5WWOIF8QI91SK7CTH.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:228a818727a5d46b1bceba92eb75fc0138eaddec1aed7ac710bed1efd4e1d95c
+size 2454
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/K9/0J1KOMY2RH63G5MV4DPJZ1.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/K9/0J1KOMY2RH63G5MV4DPJZ1.uasset
new file mode 100644
index 00000000..d1e79cf3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/7/K9/0J1KOMY2RH63G5MV4DPJZ1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b74d53dc3396b7bf64aec6498eeb0d2b0847bf474f51d0207dc837b7454d1aea
+size 4773
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/9I/F6ZJ66HW9CDSFFSIQKWXDI.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/9I/F6ZJ66HW9CDSFFSIQKWXDI.uasset
new file mode 100644
index 00000000..df741df0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/9I/F6ZJ66HW9CDSFFSIQKWXDI.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:76df75214f9ae0ccdfdb7fa0a947e7c60b074df3bddec657df6394504e27fa87
+size 4599
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/E9/H5X3629C3DOMFX077AZFMW.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/E9/H5X3629C3DOMFX077AZFMW.uasset
new file mode 100644
index 00000000..2ce669ec
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/E9/H5X3629C3DOMFX077AZFMW.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c13c418a6e5ef1f3fb2f2cbe7e3fc3e0dffb84f107d0febfd399d677108875da
+size 4710
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/IE/ULZSRX1AMEI6J5HUXG0SSV.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/IE/ULZSRX1AMEI6J5HUXG0SSV.uasset
new file mode 100644
index 00000000..449033ee
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/IE/ULZSRX1AMEI6J5HUXG0SSV.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9a649a73a9849dd0b38d19f50dc89ab1258982c07b784970b78d34d9100e66c
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/IM/FJ6HRZ9HXPG7XMNJXX9XE0.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/IM/FJ6HRZ9HXPG7XMNJXX9XE0.uasset
new file mode 100644
index 00000000..fd18ac04
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/IM/FJ6HRZ9HXPG7XMNJXX9XE0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a6d9636f6401f5b548255d956ca34f5c159817691951cfc805160a7403ea270
+size 4710
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/OV/F9IKRV0GCX552V3AOWFU4C.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/OV/F9IKRV0GCX552V3AOWFU4C.uasset
new file mode 100644
index 00000000..42665482
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/OV/F9IKRV0GCX552V3AOWFU4C.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d4c47a3b5b5623450b037ad152de90a2d548e5d38942ffcb61f9ba415655032
+size 4775
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/TB/7E3XSFVKXJH71BWPQK7DE7.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/TB/7E3XSFVKXJH71BWPQK7DE7.uasset
new file mode 100644
index 00000000..d161de91
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/TB/7E3XSFVKXJH71BWPQK7DE7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:851b94848f43a4cd6bad00686a04305d4fbc9b6cb68b346f7aa78bc111d8dce4
+size 3657
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/TM/XCQ9IRO5QUOT8DURISJJX0.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/TM/XCQ9IRO5QUOT8DURISJJX0.uasset
new file mode 100644
index 00000000..3590e68f
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/8/TM/XCQ9IRO5QUOT8DURISJJX0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c35efd60e7d360558b5189aa81060ef9af187ea1153c54565b3437d31df98f0
+size 4598
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/9/22/540LIYPKX7RW44ULUEHGHE.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/9/22/540LIYPKX7RW44ULUEHGHE.uasset
new file mode 100644
index 00000000..376c9810
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/9/22/540LIYPKX7RW44ULUEHGHE.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b7f296da12963ba4910485a6492c067dc454e77a28dadaff20d44d697059ae0
+size 4598
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/9/J0/NAURUIYIL4FWMCLRWUDE1X.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/9/J0/NAURUIYIL4FWMCLRWUDE1X.uasset
new file mode 100644
index 00000000..8fbae906
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/9/J0/NAURUIYIL4FWMCLRWUDE1X.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02ae5a0f6f1b670c8cd9259880fd62bed9db13b75e30109a8eea4ffe2c3bca28
+size 5371
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/A/F8/VBWZ0ZW0LJXN6633VM36TB.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/A/F8/VBWZ0ZW0LJXN6633VM36TB.uasset
new file mode 100644
index 00000000..e04c23c3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/A/F8/VBWZ0ZW0LJXN6633VM36TB.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:87c0c75e225c71ba0ea0a65874e5b863944c41e02bba7d2af2fde1a84aadc72d
+size 4712
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/A/I4/GYPPACX2Q6XUN509PQXXUB.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/A/I4/GYPPACX2Q6XUN509PQXXUB.uasset
new file mode 100644
index 00000000..f6c04b0c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/A/I4/GYPPACX2Q6XUN509PQXXUB.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6321bd12e6718e0dc77b2d83ab64ce337d9ccbae036c04ffca4440bd2151a4a8
+size 4847
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/B/99/HIHVSRNPR1359HYG9VQ4S9.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/B/99/HIHVSRNPR1359HYG9VQ4S9.uasset
new file mode 100644
index 00000000..f6552999
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/B/99/HIHVSRNPR1359HYG9VQ4S9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86824e8bff939dab04f169c970d8516dbbc8c1462b531b9d0d385e6ee646d351
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/B/M4/WDZ38E5FQFNLQ3W08AD74K.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/B/M4/WDZ38E5FQFNLQ3W08AD74K.uasset
new file mode 100644
index 00000000..4820ed56
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/B/M4/WDZ38E5FQFNLQ3W08AD74K.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10e9c8b331c7e39000e9e1be1e8497cf20e21321591f282fbb088f9c39d03291
+size 4750
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/C8/V93JCJG5GNPG3OANIVPEU2.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/C8/V93JCJG5GNPG3OANIVPEU2.uasset
new file mode 100644
index 00000000..09957a2e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/C8/V93JCJG5GNPG3OANIVPEU2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:62e247610e993dae8a228e98be8fd5d5b7d0cae3470f00274b7b4edf7c90c035
+size 4653
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/IY/1DYGNRS7MUF1969G9AKFEQ.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/IY/1DYGNRS7MUF1969G9AKFEQ.uasset
new file mode 100644
index 00000000..be7af589
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/IY/1DYGNRS7MUF1969G9AKFEQ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:426622e0d16acd8195c950af262884c25b5878785435d57188a8f0067194c447
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/N1/E7M6U3RRQJ0NKZWADRZU2F.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/N1/E7M6U3RRQJ0NKZWADRZU2F.uasset
new file mode 100644
index 00000000..a396b15f
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/N1/E7M6U3RRQJ0NKZWADRZU2F.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:04de015b0bb32939230883654ad41bf7054c369134749aeb11e98f963a1c0a09
+size 4464
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/R8/1FYI4WVBKRV7XPNB9SF85N.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/R8/1FYI4WVBKRV7XPNB9SF85N.uasset
new file mode 100644
index 00000000..2997e54c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/R8/1FYI4WVBKRV7XPNB9SF85N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b38458ec107ff72a0770fe43aeaab2f8b9f5e93c0b6ff9ae3efbca63dc251b3a
+size 4775
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/TJ/KML81PLR61JZQ25ZCRTOHM.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/TJ/KML81PLR61JZQ25ZCRTOHM.uasset
new file mode 100644
index 00000000..3c8f1a1c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/TJ/KML81PLR61JZQ25ZCRTOHM.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:825d2d3a4266fc8c9cb3caab90f332e327fb9a1d5ad4dcaecafc55cb41e30b92
+size 12506
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/X1/J1KYK53FD26XTDA5AYVCA5.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/X1/J1KYK53FD26XTDA5AYVCA5.uasset
new file mode 100644
index 00000000..a82f4d9e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/C/X1/J1KYK53FD26XTDA5AYVCA5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4e1f4dd6dad0f55fcc1c479d0cd59fcd1e2845f2276a65652e47169a636b31f5
+size 4715
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/C5/GO9F5BX1OG0G37W9TQNCJF.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/C5/GO9F5BX1OG0G37W9TQNCJF.uasset
new file mode 100644
index 00000000..2ac08f13
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/C5/GO9F5BX1OG0G37W9TQNCJF.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdb84f5781f4fd2c47400bb270d794a6d16ec858bf9af297471446d9620d75fd
+size 3637
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/JF/YGMLISQYZUYCOFWGX11BA5.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/JF/YGMLISQYZUYCOFWGX11BA5.uasset
new file mode 100644
index 00000000..ffdb22d9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/JF/YGMLISQYZUYCOFWGX11BA5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3a2799d8af52c79cbc5e178653d65bac68fde63e7fa18436ac0cbfbaffd04df
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/KB/OJ5NYYQG4LT79W8I5I6MS3.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/KB/OJ5NYYQG4LT79W8I5I6MS3.uasset
new file mode 100644
index 00000000..03b63281
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/D/KB/OJ5NYYQG4LT79W8I5I6MS3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea74791fd8856cbebbe60ca5574563dea9998ae98cf3ea204d691c99e2193d0b
+size 4750
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/13/WANY5DUXOHAN9B8VO419ZD.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/13/WANY5DUXOHAN9B8VO419ZD.uasset
new file mode 100644
index 00000000..070cfeaf
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/13/WANY5DUXOHAN9B8VO419ZD.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37a8f63c87e5e66bd83953c692b83605d10a046f85ede974f253cd50523bdab6
+size 5274
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/72/2Q6FTG9QBV70Q6RY0KMH00.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/72/2Q6FTG9QBV70Q6RY0KMH00.uasset
new file mode 100644
index 00000000..220c2524
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/72/2Q6FTG9QBV70Q6RY0KMH00.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b8255d19a25b2a422f2bc6bc5bf38f3f910b89f0701a8353d77d08d228d2c1f
+size 4752
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/C9/PUEF3SDZX6YW93741SQAXO.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/C9/PUEF3SDZX6YW93741SQAXO.uasset
new file mode 100644
index 00000000..f8cdee67
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/C9/PUEF3SDZX6YW93741SQAXO.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7f753a2468824b16930329099d1d086f24f83cd972c27c9538d6fbf1564f3473
+size 4601
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/F1/UO65QKXRP70QKOKHZSMZ1F.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/F1/UO65QKXRP70QKOKHZSMZ1F.uasset
new file mode 100644
index 00000000..40c2ae15
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/F1/UO65QKXRP70QKOKHZSMZ1F.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7952a3fc61719f0b4a6ab11a7975136e58873cd15c51ccaf3de7f55ff27af84
+size 3866
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/MX/T78JL0KEIV77Y3QP6GYB54.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/MX/T78JL0KEIV77Y3QP6GYB54.uasset
new file mode 100644
index 00000000..f1f517bc
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/MX/T78JL0KEIV77Y3QP6GYB54.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09a9cf559b65797287c43acf8f41b8a709a0c7fa18f3295c14f4a6465cf06f6a
+size 4601
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/XX/PPC77XHOJNZW9PWV5OHH00.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/XX/PPC77XHOJNZW9PWV5OHH00.uasset
new file mode 100644
index 00000000..44d364a0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/BountySystemTestLevel/E/XX/PPC77XHOJNZW9PWV5OHH00.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a7a355d2b9e10bd064b3f8d6a8e5989c3f5f61e7e601b95f418d179740baade
+size 4715
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/E1/IQFW07RTPNSMRH29XIEJ6K.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/E1/IQFW07RTPNSMRH29XIEJ6K.uasset
new file mode 100644
index 00000000..d26e7cc7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/E1/IQFW07RTPNSMRH29XIEJ6K.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0adcbba9dd12519aa193fd0cedb65bf17ec9209792a3d4bb10ddadb55a0dd098
+size 4652
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/GX/GIS7MZ67XR2J3PFEU2JQAQ.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/GX/GIS7MZ67XR2J3PFEU2JQAQ.uasset
new file mode 100644
index 00000000..9e4d412a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/GX/GIS7MZ67XR2J3PFEU2JQAQ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ecab7663f508522aa1d8e5784628eaaaf1c77eefda4fa4e60dbe23695dff5455
+size 4715
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/IX/2HJNN09VIUGECAWE7RQF7E.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/IX/2HJNN09VIUGECAWE7RQF7E.uasset
new file mode 100644
index 00000000..a2ce66a3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/IX/2HJNN09VIUGECAWE7RQF7E.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba47531b1f53d15d50cb43c9db404e2b21b884149bbd4075713987a0dc58beeb
+size 4653
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/J9/CJ0EBOCRNQM7JW268TJIYP.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/J9/CJ0EBOCRNQM7JW268TJIYP.uasset
new file mode 100644
index 00000000..85e208b0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/J9/CJ0EBOCRNQM7JW268TJIYP.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fe2005cbd7d221a5eda1099634d0e3e02b5c0670382719adffb59e9e987795eb
+size 4653
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/K8/6SR44C1CVICPSD9PDDIAZ5.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/K8/6SR44C1CVICPSD9PDDIAZ5.uasset
new file mode 100644
index 00000000..e73fc94e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/K8/6SR44C1CVICPSD9PDDIAZ5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5290040de602d01aebcef81b116f9d6453714d6af102deb8adf92f6c284b852b
+size 4655
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/LR/WD02RYJ2PYZD1AMUAN4FKJ.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/LR/WD02RYJ2PYZD1AMUAN4FKJ.uasset
new file mode 100644
index 00000000..901ac284
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/LR/WD02RYJ2PYZD1AMUAN4FKJ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac890528add1456f17ee331724e45541159a0a614a47dea926f24827587fa4d0
+size 4787
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/PE/AU0ZEVM147PGYZYETWYMEJ.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/PE/AU0ZEVM147PGYZYETWYMEJ.uasset
new file mode 100644
index 00000000..28eb2456
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/PE/AU0ZEVM147PGYZYETWYMEJ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b220824a0f633c07b1cf8893ebf96544fd86ee76a767f7f9e5400fd39acf69ba
+size 3806
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/Q7/0NC9X1M4P0178PJ62HLZBL.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/Q7/0NC9X1M4P0178PJ62HLZBL.uasset
new file mode 100644
index 00000000..5efc5748
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/0/Q7/0NC9X1M4P0178PJ62HLZBL.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4bb00ea144b9575f5353f61e24b5f59489aa91c62d3334ad313dd1d90b9e2670
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/4W/TZWKOM776CCB9T1CQESPAC.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/4W/TZWKOM776CCB9T1CQESPAC.uasset
new file mode 100644
index 00000000..4e7af2ed
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/4W/TZWKOM776CCB9T1CQESPAC.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b28b6ff61c85777d7999e63a820858db4b2a6153abfebacf97b167a91f3c13be
+size 4541
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/5S/7ID5OVJCB5CTLJKPQKIC1I.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/5S/7ID5OVJCB5CTLJKPQKIC1I.uasset
new file mode 100644
index 00000000..8d448d7e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/5S/7ID5OVJCB5CTLJKPQKIC1I.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:76a12d6a9ec9f46a665ad784c79e2e03a79bb8f35260754a576a904b4c5dd57a
+size 4534
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/6S/A9J1OJI3RV53ISSKR2J5U1.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/6S/A9J1OJI3RV53ISSKR2J5U1.uasset
new file mode 100644
index 00000000..7961b35c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/6S/A9J1OJI3RV53ISSKR2J5U1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7894b05d9639d996719cbf0ac9a30099b2454bc2522868f4c0a81aa95d4d0b39
+size 10399
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/BP/EE03SQQCZJQSEUPRGJPTP0.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/BP/EE03SQQCZJQSEUPRGJPTP0.uasset
new file mode 100644
index 00000000..e530f3e7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/BP/EE03SQQCZJQSEUPRGJPTP0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:568f2a474a475045288e1552b9be176fa4e6e7a70d1438064f049b957bfedfe8
+size 4541
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/HB/E2H2DJ0IYXZ7YPKWWFF0FG.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/HB/E2H2DJ0IYXZ7YPKWWFF0FG.uasset
new file mode 100644
index 00000000..bbaf2b0e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/HB/E2H2DJ0IYXZ7YPKWWFF0FG.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:762c0e26021fdc42c7904454f6ad9b02f872d0d017788c9fc6ffeacc9a896bce
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/MY/R1JII7B2C24B9CWJXSQ46T.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/MY/R1JII7B2C24B9CWJXSQ46T.uasset
new file mode 100644
index 00000000..2b68f8dc
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/MY/R1JII7B2C24B9CWJXSQ46T.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9545eb125107d2bb1605930ffe7af4dcb6d51bfa9b503fc829c26163149eba9
+size 4655
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/WZ/18S5NW75OTIRU2HFO79N4M.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/WZ/18S5NW75OTIRU2HFO79N4M.uasset
new file mode 100644
index 00000000..083077d1
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/1/WZ/18S5NW75OTIRU2HFO79N4M.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8cbfb594832690a4d22e750e1c9cdcf01ec3115e1f902390ad3aa83af0733887
+size 4690
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/37/1NHB75E9P7T630GL2K4WWN.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/37/1NHB75E9P7T630GL2K4WWN.uasset
new file mode 100644
index 00000000..193f240e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/37/1NHB75E9P7T630GL2K4WWN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:362a0c728d4c1a65e6bde6f6cc59d26c06e3d2341699251879d4734aaf6125fa
+size 4539
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/9H/UI6E3IHLXCVIV54810ZSUS.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/9H/UI6E3IHLXCVIV54810ZSUS.uasset
new file mode 100644
index 00000000..f32ef151
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/9H/UI6E3IHLXCVIV54810ZSUS.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9649867553b90bb4397d8c3901e403a70701d82712475b1cf554331493fe18ea
+size 3591
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/CT/39SOGBQQWQPX5XF5XSIDUZ.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/CT/39SOGBQQWQPX5XF5XSIDUZ.uasset
new file mode 100644
index 00000000..f7d69200
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/CT/39SOGBQQWQPX5XF5XSIDUZ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:760dce31c9f18576781d0678cbb982ab4c16127d61b8391d68edd31744ef2e2b
+size 5214
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/D3/R44Z9O6CLM37P3G5IX40CI.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/D3/R44Z9O6CLM37P3G5IX40CI.uasset
new file mode 100644
index 00000000..e64df1d8
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/D3/R44Z9O6CLM37P3G5IX40CI.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b13181dd37c900800b8063c1e369065d7b0164e0ebacff2a12f9161d27820dbb
+size 4787
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/GF/LRPO23YW2N7WZ21HT3ADU8.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/GF/LRPO23YW2N7WZ21HT3ADU8.uasset
new file mode 100644
index 00000000..97b71e5a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/GF/LRPO23YW2N7WZ21HT3ADU8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1157a301eaf171ced8252f794196b28001e9c2b1e37a1fd453cc4dde6ed6c87b
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/RX/YRPO3KV1HDO96HPZ66IMQI.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/RX/YRPO3KV1HDO96HPZ66IMQI.uasset
new file mode 100644
index 00000000..e503aa04
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/2/RX/YRPO3KV1HDO96HPZ66IMQI.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9af8f569b99044bcd458580d5f6b118a4e223cf17c4b8474c25cf0d01113ff29
+size 4683
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/21/OZ7HVAU40P457N2KQYO1Z5.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/21/OZ7HVAU40P457N2KQYO1Z5.uasset
new file mode 100644
index 00000000..77b37b57
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/21/OZ7HVAU40P457N2KQYO1Z5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:173bc0e598c4e789da276f6cd5083232689d81af4baa1e78ef41147b46ae19e0
+size 4538
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/7D/94E51K8PLPK43WRYXU8RL0.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/7D/94E51K8PLPK43WRYXU8RL0.uasset
new file mode 100644
index 00000000..3663e2b6
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/7D/94E51K8PLPK43WRYXU8RL0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:efdf6470ed0556e4edcc55ea713b76456005b0b0166aee0e591d048d59e519bc
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/8B/5GCK7S3AV6GJBA0IACF1XO.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/8B/5GCK7S3AV6GJBA0IACF1XO.uasset
new file mode 100644
index 00000000..d2a18605
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/8B/5GCK7S3AV6GJBA0IACF1XO.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49298a3d050dc63572fe5b0f8443a64c7e521e276c0075e7d694f07aec463dae
+size 4541
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/GB/Q8MDU4O8NVGCNQC48I9E8C.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/GB/Q8MDU4O8NVGCNQC48I9E8C.uasset
new file mode 100644
index 00000000..15cf82ea
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/GB/Q8MDU4O8NVGCNQC48I9E8C.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e308d86ccd87772a9b48f42294078386841e9af06bb1f4e358995138b6ee98d4
+size 4715
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/LK/1HYMG69QSB1R2IKKLMNVLT.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/LK/1HYMG69QSB1R2IKKLMNVLT.uasset
new file mode 100644
index 00000000..74f50cfc
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/3/LK/1HYMG69QSB1R2IKKLMNVLT.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:591eb4207c25e0a75f7eddf92f0046f7e72a0cc9ce7ea2100530a5f54e15f353
+size 4426
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/7S/M6H76KT5RYSC8FT08UOYYV.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/7S/M6H76KT5RYSC8FT08UOYYV.uasset
new file mode 100644
index 00000000..45781de8
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/7S/M6H76KT5RYSC8FT08UOYYV.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f80c49bb71351e21d6c7fd5d07ba02d4c6ecb893f078ad9fc354c411a261b391
+size 4593
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/DO/KPWW5M0TRW408IVKQNTBX7.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/DO/KPWW5M0TRW408IVKQNTBX7.uasset
new file mode 100644
index 00000000..c43294d7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/DO/KPWW5M0TRW408IVKQNTBX7.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:addf7e6a676b465357631fecd85086cb3282294dd3a60d25ec1a45c44275820b
+size 4786
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset
new file mode 100644
index 00000000..76ff7bba
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/EH/H0RJG09BGRG4TA8B6P9SKL.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3ded950368a5368f3187fcdae9b883ab92a7b57840a28a3613a0024df71d2098
+size 27121
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/NV/0O5K04NGZ280HG3EDN82BS.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/NV/0O5K04NGZ280HG3EDN82BS.uasset
new file mode 100644
index 00000000..0dfebb5c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/4/NV/0O5K04NGZ280HG3EDN82BS.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:254992fc3dab572613b2ecd197002613a0772e89822600345f9f9a724bf20770
+size 4438
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/3L/ZL9NLFPHO4RXCMXRLPZ3ST.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/3L/ZL9NLFPHO4RXCMXRLPZ3ST.uasset
new file mode 100644
index 00000000..a0e4b6ce
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/3L/ZL9NLFPHO4RXCMXRLPZ3ST.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54b0926e4be9c9b5f0c3b7857ac67678a44681551b4769b33fe7ec6e4c535261
+size 3787
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/T0/6P1LRRDLZM1EUAF0VJ2A1Z.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/T0/6P1LRRDLZM1EUAF0VJ2A1Z.uasset
new file mode 100644
index 00000000..1cd549c3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/T0/6P1LRRDLZM1EUAF0VJ2A1Z.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1fb000a8d5590b3f45db2cc93f88a1f2a0c33c1d478bb3f415ebb3dea20be866
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/VW/F67BYXWE15N6HDB8XL4DCA.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/VW/F67BYXWE15N6HDB8XL4DCA.uasset
new file mode 100644
index 00000000..09906e45
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/6/VW/F67BYXWE15N6HDB8XL4DCA.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:904e9dbfb5067e107d30cced28a7a621781ffdf8644f45aceba52a9d78264b47
+size 4413
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/5X/SGTTTEQNKAZC3W9C8ICWCD.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/5X/SGTTTEQNKAZC3W9C8ICWCD.uasset
new file mode 100644
index 00000000..f6c08eca
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/5X/SGTTTEQNKAZC3W9C8ICWCD.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:efe8687b693ae889c18ae026262399acc470a627b44b2c13ffb6c3fda05f96c7
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/ON/O0RSM3NJKRZPH0FXBF9L3S.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/ON/O0RSM3NJKRZPH0FXBF9L3S.uasset
new file mode 100644
index 00000000..7867fd94
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/ON/O0RSM3NJKRZPH0FXBF9L3S.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0dcbcd815a02baed2145105961a0ca02ecf79520c45272314ab6a87f9d46e8e1
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/VD/0FS7NIRZS2R8T57JW12AXA.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/VD/0FS7NIRZS2R8T57JW12AXA.uasset
new file mode 100644
index 00000000..65bcd19a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/7/VD/0FS7NIRZS2R8T57JW12AXA.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7213ce229e3507136525afca1c0617c8adc58c0366a73606d931cc348a10c22
+size 4820
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/7J/5M8HYAJBH6S06KBPPU5V7W.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/7J/5M8HYAJBH6S06KBPPU5V7W.uasset
new file mode 100644
index 00000000..4821f821
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/7J/5M8HYAJBH6S06KBPPU5V7W.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11f32a1fc9c265eaa142b46bb38d5a6ac78f8f236efa0c4b88bc7a3261086b41
+size 4715
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/L7/JWTIPNAQRZ09Y5NAQL5BW8.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/L7/JWTIPNAQRZ09Y5NAQL5BW8.uasset
new file mode 100644
index 00000000..d2d2b2c3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/L7/JWTIPNAQRZ09Y5NAQL5BW8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1394519fdbfca8cd57fe5d14b0c9c08b8711a01baf4dd467320a49fcd95f6096
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/PN/HJTAS89CNH6I0AR0ZCCE4H.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/PN/HJTAS89CNH6I0AR0ZCCE4H.uasset
new file mode 100644
index 00000000..1b18c190
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/8/PN/HJTAS89CNH6I0AR0ZCCE4H.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7004ea5397728a307a687eafb1f55f84a8b5dc6eb5baa7bf867e5600da2e2170
+size 4650
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/45/BRJA5VHIWN6NTS13DYDN08.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/45/BRJA5VHIWN6NTS13DYDN08.uasset
new file mode 100644
index 00000000..c5296a03
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/45/BRJA5VHIWN6NTS13DYDN08.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46f180e7d001110d9fcb9e2855269222e67b05bb4610fce087bea9ff8e6c1708
+size 4787
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/AG/M50NVM1A6DXOF9R7EHESH6.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/AG/M50NVM1A6DXOF9R7EHESH6.uasset
new file mode 100644
index 00000000..7109c790
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/AG/M50NVM1A6DXOF9R7EHESH6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fff2630cecd7cc45e10370918bc86692ef8c098fc7ffa4a6fdd8517a040bf83b
+size 4655
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/EB/XWFQGB0N0AV29HQ1RZBRTN.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/EB/XWFQGB0N0AV29HQ1RZBRTN.uasset
new file mode 100644
index 00000000..e88336ab
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/EB/XWFQGB0N0AV29HQ1RZBRTN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc4b6a4512cab5257543fa72092fa61e70347811f842a7545e5b60c94443856f
+size 3597
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/JJ/USZ2IG22JXYQ9U9L4R3O9K.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/JJ/USZ2IG22JXYQ9U9L4R3O9K.uasset
new file mode 100644
index 00000000..872903de
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/JJ/USZ2IG22JXYQ9U9L4R3O9K.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c27ca877d66f24ae8e7cd3396b7c6992c931a9e529c15c8fff36c9f49d00796
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/SL/1ABG5W1O6BMZYRRZY742RR.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/SL/1ABG5W1O6BMZYRRZY742RR.uasset
new file mode 100644
index 00000000..f39b6e36
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/SL/1ABG5W1O6BMZYRRZY742RR.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5d6e77de164077904ab242eafa07691014d6441a34ff827d9e35627448d9fe6
+size 4690
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/TM/SXQEJM0WJTDHS510NE0ARB.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/TM/SXQEJM0WJTDHS510NE0ARB.uasset
new file mode 100644
index 00000000..36704479
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/TM/SXQEJM0WJTDHS510NE0ARB.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95461b4e892c7faa9c6f4736e6f5f614e163bbe5666bc3c794aa2373be5e95b5
+size 2394
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/ZA/DT4HPQ7S67F0V9G8T1YCQI.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/ZA/DT4HPQ7S67F0V9G8T1YCQI.uasset
new file mode 100644
index 00000000..2087dece
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/9/ZA/DT4HPQ7S67F0V9G8T1YCQI.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48a4a2eba8060b4e8fc2ef7d45d2cbed7a7fc8c0e1393ed0648d96b407bbb473
+size 4601
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/48/9EYCQL9YALBI37JNE2ATIF.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/48/9EYCQL9YALBI37JNE2ATIF.uasset
new file mode 100644
index 00000000..4a8c8d12
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/48/9EYCQL9YALBI37JNE2ATIF.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a625758ead64715c1bc75534494747eaf4a13a980336cdefd6f5599307f8c37d
+size 5528
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/IY/10597N2XJ21LILF5KIZ5KL.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/IY/10597N2XJ21LILF5KIZ5KL.uasset
new file mode 100644
index 00000000..290014a2
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/IY/10597N2XJ21LILF5KIZ5KL.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57d2b691962af05ad68bcdac1425a27731afe4da3219fcddd125b7827ffa4033
+size 4715
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/ON/FV27LO60GPVLJOY7YY1WLP.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/ON/FV27LO60GPVLJOY7YY1WLP.uasset
new file mode 100644
index 00000000..8a522426
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/ON/FV27LO60GPVLJOY7YY1WLP.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc5301307680ee70a29d57f281faa21861b37bbd7cdeb71bd8c4d7f78b63c2ee
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/PF/EG3JGUPDQZSATN1FLSWJVL.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/PF/EG3JGUPDQZSATN1FLSWJVL.uasset
new file mode 100644
index 00000000..a67a17b2
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/PF/EG3JGUPDQZSATN1FLSWJVL.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9a51f8e53482ec71db4c60a9b83ba86412c2a09b64ceafec97d9eb176ac45e6
+size 3577
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/SX/4TUAQI2F98RL122DKAHM7N.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/SX/4TUAQI2F98RL122DKAHM7N.uasset
new file mode 100644
index 00000000..03ec5516
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/SX/4TUAQI2F98RL122DKAHM7N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2d83a1c4216d4e8663256c26ded9832baa8d603725e6690eba8b702e7286429
+size 2442
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/UU/P4XZ4FDZKD5IXIWK3JDDDK.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/UU/P4XZ4FDZKD5IXIWK3JDDDK.uasset
new file mode 100644
index 00000000..b279c76a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/UU/P4XZ4FDZKD5IXIWK3JDDDK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0825e2d72278674564a97acf017751f5d2ae310ad8c3a0786060fe2c538f37bd
+size 5597
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/WI/254BGPLW3CW799JAYW11ZE.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/WI/254BGPLW3CW799JAYW11ZE.uasset
new file mode 100644
index 00000000..fd44451e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/A/WI/254BGPLW3CW799JAYW11ZE.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c104ec5adca67bcbc822e379a77c64ade6e6dc0fc31f0b5ab7e8a40978dd81d3
+size 4536
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/8R/JBRRKN8XRT8V47MOSZ3XFX.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/8R/JBRRKN8XRT8V47MOSZ3XFX.uasset
new file mode 100644
index 00000000..48da1872
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/8R/JBRRKN8XRT8V47MOSZ3XFX.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb180ba7ea4720628e20e94d49e9163f003c25a2b273ecaef6cea8138ce045b0
+size 3959
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/AZ/GX8EY01G00J28SE17R0FJV.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/AZ/GX8EY01G00J28SE17R0FJV.uasset
new file mode 100644
index 00000000..70351202
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/AZ/GX8EY01G00J28SE17R0FJV.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2c317194967f57a876bdccccaac78ebf287ae236df1595de335c27d12540f94
+size 6064
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/KC/MH5IV9S2GG4KCWNMZHWKG9.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/KC/MH5IV9S2GG4KCWNMZHWKG9.uasset
new file mode 100644
index 00000000..307b01a9
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/B/KC/MH5IV9S2GG4KCWNMZHWKG9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a1bfc27ac492ac3fece03c083295664ee62db2315e3fdd9ef5d8484c9cedada
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/C/6W/LBHG7995AIEJVSD5QZYXZS.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/C/6W/LBHG7995AIEJVSD5QZYXZS.uasset
new file mode 100644
index 00000000..55d4bf60
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/C/6W/LBHG7995AIEJVSD5QZYXZS.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61472c31c9367301e40cb2d598e5bd9de8159a220d509f9638478bfb98dad958
+size 12446
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/D/JE/MPPG27DTK7Y2X2HONLOIS2.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/D/JE/MPPG27DTK7Y2X2HONLOIS2.uasset
new file mode 100644
index 00000000..040b9534
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/D/JE/MPPG27DTK7Y2X2HONLOIS2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c87a366434e64473d22935b5e9c68acb99184f76d5ed56af04200931155f47d
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/D/OV/MIML8IG26185E7HH7OUYXY.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/D/OV/MIML8IG26185E7HH7OUYXY.uasset
new file mode 100644
index 00000000..ddbda486
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/D/OV/MIML8IG26185E7HH7OUYXY.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:592670f9ea8edf0b9085636742da98af0a88a6031082f803938c48bcf73573c4
+size 5311
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/AO/6CUEZ00H5605BZ34CYJ59J.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/AO/6CUEZ00H5605BZ34CYJ59J.uasset
new file mode 100644
index 00000000..a7898461
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/AO/6CUEZ00H5605BZ34CYJ59J.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:906d272fa13dc2a25be6bf7f61780f5840940b7fb54a40b019b344aaeb94e823
+size 4713
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/CR/DRCNPPN33IO9BDIGKV8CQD.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/CR/DRCNPPN33IO9BDIGKV8CQD.uasset
new file mode 100644
index 00000000..5e9674d4
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/CR/DRCNPPN33IO9BDIGKV8CQD.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0828e21397762093d0fd8299b39a1fd593299c2f91cefdeb3e0d9bb21584f8e6
+size 4650
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/FJ/TDFYID5LIFN4RZYNHYR2L3.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/FJ/TDFYID5LIFN4RZYNHYR2L3.uasset
new file mode 100644
index 00000000..f8c46abb
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/FJ/TDFYID5LIFN4RZYNHYR2L3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e7ff25b38356d87268f402d5526e3f3bc3fff044c4365d900754ae17602c562
+size 4655
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/L4/2A3KY5I7FJ21NDC7OURASV.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/L4/2A3KY5I7FJ21NDC7OURASV.uasset
new file mode 100644
index 00000000..7052ebff
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/L4/2A3KY5I7FJ21NDC7OURASV.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed5a847025a37763ddfd4fb22f866159e46913c6647d43bb32104dedbc75e0d4
+size 4538
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/ML/NLOI6RS1TZE6573JN4LJAU.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/ML/NLOI6RS1TZE6573JN4LJAU.uasset
new file mode 100644
index 00000000..e4311471
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/ML/NLOI6RS1TZE6573JN4LJAU.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b5443b15f085029068d057876ecccfcf9252b6c9eea827f54c291ee4aa60f8ce
+size 4653
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/PL/ODMT46SVZ8BKVV6CH39RBJ.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/PL/ODMT46SVZ8BKVV6CH39RBJ.uasset
new file mode 100644
index 00000000..1a394921
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/PL/ODMT46SVZ8BKVV6CH39RBJ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a340b2dd31ca10ee57e81b5c7564c0ae38fd58042ffc4803a7358af1e4df412
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/TC/E3CXYQV6UQS02X2RRKCPDE.uasset b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/TC/E3CXYQV6UQS02X2RRKCPDE.uasset
new file mode 100644
index 00000000..99dfa0af
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/Levels/EnemyAITest/E/TC/E3CXYQV6UQS02X2RRKCPDE.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b76dde1f5ce6a46bdc8b4917fcf89fe4ff2976fb86356402dd5f33a0aec26af9
+size 4692
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/43/HYQWORMY4JDQ5X3OKZXFLC.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/43/HYQWORMY4JDQ5X3OKZXFLC.uasset
new file mode 100644
index 00000000..9714987f
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/43/HYQWORMY4JDQ5X3OKZXFLC.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b5b66a81c776d90069dce1a1f6b97fd13ebd75bed3eeecef9341b7769eb6c79b
+size 2725
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/FZ/4XWWUGWFDLX56REQRH8Z9W.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/FZ/4XWWUGWFDLX56REQRH8Z9W.uasset
new file mode 100644
index 00000000..4845d086
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/FZ/4XWWUGWFDLX56REQRH8Z9W.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb6ee8eb772326f09459ce560a30fdf856167c2d63e2d339994dfb2275f2f286
+size 4085
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/SX/SKO7AH9HKZVPN4OMFO4DV3.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/SX/SKO7AH9HKZVPN4OMFO4DV3.uasset
new file mode 100644
index 00000000..be6a8c37
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/SX/SKO7AH9HKZVPN4OMFO4DV3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41069649b9e18e8ef0fa7e499b0685d042dbefb25a4b6ff8cf05768ae9ece1a3
+size 4083
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/0G/HOAJZN9E4DDI6Y1W3JU13K.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/0G/HOAJZN9E4DDI6Y1W3JU13K.uasset
new file mode 100644
index 00000000..0b012161
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/0G/HOAJZN9E4DDI6Y1W3JU13K.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7da4960c7166070d1beb553f5830711853b68576eb6e05b3d8cb3c8eb17c412a
+size 4259
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/2J/AQ1PWWT9TBAI7AA470T014.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/2J/AQ1PWWT9TBAI7AA470T014.uasset
new file mode 100644
index 00000000..35f3245d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/2J/AQ1PWWT9TBAI7AA470T014.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d58df588f04a19b1a7e9d24baaa072479e98424635ce2ad9b04f4a21d7f170f
+size 4259
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/AZ/A7GPT109Y6ZTTJD4A7TXER.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/AZ/A7GPT109Y6ZTTJD4A7TXER.uasset
new file mode 100644
index 00000000..d12dc467
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/AZ/A7GPT109Y6ZTTJD4A7TXER.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f48da921e22f146a0e9a033494f73e7a6e0bdae23560c40541ea73e2c866210f
+size 12412
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/EJ/PGUWWHRTS59S34GKBX0OUI.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/EJ/PGUWWHRTS59S34GKBX0OUI.uasset
new file mode 100644
index 00000000..babc005b
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/EJ/PGUWWHRTS59S34GKBX0OUI.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c09ae2489999de7866bfa0bb0ac8cf702067b14771f37972551555dd042b9d6f
+size 4607
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/HF/YFYBQ72OYLHJQS0TSSXGBV.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/HF/YFYBQ72OYLHJQS0TSSXGBV.uasset
new file mode 100644
index 00000000..d881168b
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/HF/YFYBQ72OYLHJQS0TSSXGBV.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aebc1a03fc1cc275a3a085a2414b75502cde3b9b7b8e596398c4a5f945bb198b
+size 4554
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/QS/VHQF8JWOATZI5V3ZVY5YTM.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/QS/VHQF8JWOATZI5V3ZVY5YTM.uasset
new file mode 100644
index 00000000..0d4d458c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/QS/VHQF8JWOATZI5V3ZVY5YTM.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1a63a58fa0473b49ca10244c97f73cbc79689bcf463108c880c4e0d9b30c7a3
+size 4554
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/WU/NB37RT5Q32Z8MJWD8BD2SO.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/WU/NB37RT5Q32Z8MJWD8BD2SO.uasset
new file mode 100644
index 00000000..80f7706c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/WU/NB37RT5Q32Z8MJWD8BD2SO.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a9b50e79e5ef7ceed9e2d568bd7daf3741a7dc3c6504b48b12d1292f7fd3aed
+size 3746
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/2/66/0OP5U85W4H0R7CHG999ZDN.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/2/66/0OP5U85W4H0R7CHG999ZDN.uasset
new file mode 100644
index 00000000..7b3e79bd
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/2/66/0OP5U85W4H0R7CHG999ZDN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c63d31b74fb34ccd62f844218e1caea3096a9acfde112bb5edbeda02f86bd18
+size 3300
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/1V/XSFYSB2EC9Z21RQOBXZLMO.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/1V/XSFYSB2EC9Z21RQOBXZLMO.uasset
new file mode 100644
index 00000000..a072f258
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/1V/XSFYSB2EC9Z21RQOBXZLMO.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a230044fd78fb50b1f1ed54138edbaa6a634ee5f8f59004ba0e9216fde66be60
+size 4257
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/B1/9G3WNX7WIR7UKI26T9LK5O.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/B1/9G3WNX7WIR7UKI26T9LK5O.uasset
new file mode 100644
index 00000000..715d4452
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/B1/9G3WNX7WIR7UKI26T9LK5O.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:beb985fce505d8b808a4b9ce039e3f1001c7c009a00d3afc85e0b23a0054d8fa
+size 4085
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/HE/U35NZS5A9W1UXP1E3FF2GW.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/HE/U35NZS5A9W1UXP1E3FF2GW.uasset
new file mode 100644
index 00000000..dc2d3b16
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/HE/U35NZS5A9W1UXP1E3FF2GW.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97a41f6a2af00e9b8edb95a77a6320c32078d2528512cbd5b180a86c3f36c6c4
+size 3983
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/OG/KDQDMXAXZXD8VLDDU4K3JL.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/OG/KDQDMXAXZXD8VLDDU4K3JL.uasset
new file mode 100644
index 00000000..e72fa82c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/OG/KDQDMXAXZXD8VLDDU4K3JL.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f3cd06524bb4945fb0fa8402ed950f03bef10d76f50f6dd19595da24a1d130a7
+size 5015
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/P3/O43ETCZTFMLWWH1CJ941H2.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/P3/O43ETCZTFMLWWH1CJ941H2.uasset
new file mode 100644
index 00000000..54fe615b
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/P3/O43ETCZTFMLWWH1CJ941H2.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e73c6c7d4d225a7196b2c5906fb34b7dd54ffa8cbcb7504f4a008ca733d16e1
+size 4438
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/5/Q1/5IZD4L3UPM3EEODZK67MH1.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/5/Q1/5IZD4L3UPM3EEODZK67MH1.uasset
new file mode 100644
index 00000000..3d6d8a46
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/5/Q1/5IZD4L3UPM3EEODZK67MH1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:787d45c626e04e33490e0293215d4eaa384f154eec3f9b7ac9611dab25d51b75
+size 4143
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/0D/0WM78RPJCXHX477YOZXKQE.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/0D/0WM78RPJCXHX477YOZXKQE.uasset
new file mode 100644
index 00000000..e0cb5df2
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/0D/0WM78RPJCXHX477YOZXKQE.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c21918f264c05666ed09cda482d4d137a7d81cc2a67f747bf6729ae8f7059d2b
+size 4083
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/HF/9H7TKAXH9DD8KI3TIXGI2I.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/HF/9H7TKAXH9DD8KI3TIXGI2I.uasset
new file mode 100644
index 00000000..dc4d993b
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/HF/9H7TKAXH9DD8KI3TIXGI2I.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5d007cc8571f1191319d3e019324a754c466ef54fdff4a881ce2395298c905f
+size 4079
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NC/UUYHDUFQAXTRRN4RVOPIUF.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NC/UUYHDUFQAXTRRN4RVOPIUF.uasset
new file mode 100644
index 00000000..2c578d43
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NC/UUYHDUFQAXTRRN4RVOPIUF.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0bb5da121c05b7dc1da3c43e9cd7b67630d4d69e64d895adebf4584627f5bda3
+size 4107
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NP/Z9EK2TXQ1TFO26WFZHWZII.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NP/Z9EK2TXQ1TFO26WFZHWZII.uasset
new file mode 100644
index 00000000..623f50b7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/NP/Z9EK2TXQ1TFO26WFZHWZII.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:596d164a9c149af87b384d8132b74583aae4fa5b9fb6ff1fe5100efe48fc8689
+size 3364
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/UV/1C6W14EIHMXOXXB657JYKB.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/UV/1C6W14EIHMXOXXB657JYKB.uasset
new file mode 100644
index 00000000..76ed28a8
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/UV/1C6W14EIHMXOXXB657JYKB.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ae7576eee89d8def30e67ac4590f2349cdb26a1488f1d62670ba643a6aec883
+size 4199
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/7Y/C94R5C0R01QSL2SVHUG3KD.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/7Y/C94R5C0R01QSL2SVHUG3KD.uasset
new file mode 100644
index 00000000..9f8be96f
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/7Y/C94R5C0R01QSL2SVHUG3KD.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7eeb2d5c32c92dde7da650f1c0e28b0318fdb2ec320eec6b38ec56e273e00c82
+size 4257
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/H9/GITN2HJQNERMM41FAE68W0.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/H9/GITN2HJQNERMM41FAE68W0.uasset
new file mode 100644
index 00000000..dba34de3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/H9/GITN2HJQNERMM41FAE68W0.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d526e85dd6b00ae1e550a509dd21dc308b3bef198300938e7f3d49540704386a
+size 3601
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/P1/NN84RP20JNUCL0SHI5W2B8.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/P1/NN84RP20JNUCL0SHI5W2B8.uasset
new file mode 100644
index 00000000..3ab3b857
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/P1/NN84RP20JNUCL0SHI5W2B8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad7ce57ee4db04d8b34862228a9a8eb0520a9a2016e982df5374e04e81041e85
+size 4137
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/21/WWYX44RDCCS98492P9K9O3.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/21/WWYX44RDCCS98492P9K9O3.uasset
new file mode 100644
index 00000000..51f82820
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/21/WWYX44RDCCS98492P9K9O3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2cc9b152cf0171f0da0147e7e2b1a45a7da803b8585fe0300d795a2bc98843ff
+size 4083
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/6I/RU1L28PS820IOVH625A0DA.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/6I/RU1L28PS820IOVH625A0DA.uasset
new file mode 100644
index 00000000..f4b8136d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/6I/RU1L28PS820IOVH625A0DA.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad08de5d7e928d08da67e868030cb76230874a9380200f27575dbc6fdc918ebe
+size 4259
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/CI/KST702KSCRZWYV56G3VJBD.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/CI/KST702KSCRZWYV56G3VJBD.uasset
new file mode 100644
index 00000000..356a28da
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/CI/KST702KSCRZWYV56G3VJBD.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13c37cf7da8e54d5a9c733a209b3d84484e3c29a4a81e87f13f5520a51907770
+size 4195
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/MO/72II2GSLK9VS0ULW9SACWH.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/MO/72II2GSLK9VS0ULW9SACWH.uasset
new file mode 100644
index 00000000..39f15c7c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/9/MO/72II2GSLK9VS0ULW9SACWH.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d9ae3c360d130eb5f2824b2235dd3bee7b61c649bd1e3056914b25f63f072d6
+size 4081
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/BW/M7Z5RX3O7568TBJFK5R76I.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/BW/M7Z5RX3O7568TBJFK5R76I.uasset
new file mode 100644
index 00000000..0cad9208
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/BW/M7Z5RX3O7568TBJFK5R76I.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3d9785c14f57af40b7b2ea05a60a6dc5703e8ab9848ab980b0b7673c90524d0e
+size 4197
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/IO/07IVU4EY14FMETPGTJULEO.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/IO/07IVU4EY14FMETPGTJULEO.uasset
new file mode 100644
index 00000000..038c6450
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/A/IO/07IVU4EY14FMETPGTJULEO.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd01191dd97eddc4dd58042d38cf81bdbe6a2c7a7fb325c7ad5a72a8bf2a2601
+size 4145
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/CJ/ZQ5BFL59YGMQUT9ZD7CAHJ.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/CJ/ZQ5BFL59YGMQUT9ZD7CAHJ.uasset
new file mode 100644
index 00000000..183534ff
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/CJ/ZQ5BFL59YGMQUT9ZD7CAHJ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d36d6d378261d895fd200239df3a51f71d91878886963f5b9c71c72c7afe1f4
+size 4083
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/KW/9YH18EUCJFK5CZXL6H3W3R.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/KW/9YH18EUCJFK5CZXL6H3W3R.uasset
new file mode 100644
index 00000000..22f568e7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/B/KW/9YH18EUCJFK5CZXL6H3W3R.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fa993398f6b05dbdafe6d8cfa0444a8b1da501c3b103983d567b2d0c471ed98
+size 3378
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/C/0I/VIQQWOEJKSKV1EK1XGX3EY.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/C/0I/VIQQWOEJKSKV1EK1XGX3EY.uasset
new file mode 100644
index 00000000..798876f2
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/C/0I/VIQQWOEJKSKV1EK1XGX3EY.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97556c67bcf00ebc8dc99200fb036e5ef9d2a7ba1c866932c30de63602eb6612
+size 4195
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/DE/SWSI13675DVYIZ0N4NF7Y3.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/DE/SWSI13675DVYIZ0N4NF7Y3.uasset
new file mode 100644
index 00000000..7f8018a7
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/DE/SWSI13675DVYIZ0N4NF7Y3.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:155efc55358d86b7b7017b683862030b83481f5dbb4551c9d759694bb112232b
+size 4064
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/MM/5416TNIX8GKJW3B714Y6WF.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/MM/5416TNIX8GKJW3B714Y6WF.uasset
new file mode 100644
index 00000000..b4aebb1b
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/MM/5416TNIX8GKJW3B714Y6WF.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da81cbbe66fd8cc93c6015adbdaf10d79d417f2102d586d230b9434415c50f6a
+size 4257
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/OI/BVNTLHAPOPDXURSVGR63ME.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/OI/BVNTLHAPOPDXURSVGR63ME.uasset
new file mode 100644
index 00000000..f9092d49
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/OI/BVNTLHAPOPDXURSVGR63ME.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1acced0dca47586b090ac74dc77bc38d083f07e68ae10fde10cb860c2befe25e
+size 4257
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/SY/Z4CTQ4LG3YV10EKPD0UE8Q.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/SY/Z4CTQ4LG3YV10EKPD0UE8Q.uasset
new file mode 100644
index 00000000..d1220c4a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/SY/Z4CTQ4LG3YV10EKPD0UE8Q.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90adcdc364f7f30c5538c5bf8596bea4f66c70068f90990210fc986aeb2ef5ea
+size 849
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/VL/KUT2U1MQ1ND9CXN070OTDM.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/VL/KUT2U1MQ1ND9CXN070OTDM.uasset
new file mode 100644
index 00000000..c7ae24e8
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/VL/KUT2U1MQ1ND9CXN070OTDM.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b251c0f1d34e124a9c75c2efcb3c74fabcfdf5871b15a68d18df63e89c322fb5
+size 4085
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/FR/LBG6LPN5JCL3FMVSI2CK6R.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/FR/LBG6LPN5JCL3FMVSI2CK6R.uasset
new file mode 100644
index 00000000..7da1ffd0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/FR/LBG6LPN5JCL3FMVSI2CK6R.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6cbaaaa9a10138be4952b22394cd3107901561e24650e05851f7f327326cc7b
+size 2580
diff --git a/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/T8/46ZIBNTTDDR3AOR2XC9VO6.uasset b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/T8/46ZIBNTTDDR3AOR2XC9VO6.uasset
new file mode 100644
index 00000000..9bb947b3
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/T8/46ZIBNTTDDR3AOR2XC9VO6.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a82e69dbef197b40a16ea06a6b44aff09f7d81ec7c0de80ef77aa7ca47b9197
+size 4197
diff --git a/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/0/37/3XN21XBZV427UIXTUT8H9W.uasset b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/0/37/3XN21XBZV427UIXTUT8H9W.uasset
new file mode 100644
index 00000000..85889a04
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/0/37/3XN21XBZV427UIXTUT8H9W.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1504fa2b263e776ab8e1a9fb5108fe45893a98c120f686e960491515ca912f74
+size 2286
diff --git a/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/1/KK/5N51OQ0EA6OYJSFQZZMEN8.uasset b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/1/KK/5N51OQ0EA6OYJSFQZZMEN8.uasset
new file mode 100644
index 00000000..0a5dae60
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/1/KK/5N51OQ0EA6OYJSFQZZMEN8.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cb7cc553e0aabffceddc6ce3cfa95e4f49672cac565d60a3f7055324a3ff160
+size 2290
diff --git a/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/3/PO/7NO7RHQONSP3PXZM34SO4K.uasset b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/3/PO/7NO7RHQONSP3PXZM34SO4K.uasset
new file mode 100644
index 00000000..7369763e
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/3/PO/7NO7RHQONSP3PXZM34SO4K.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e7a188a39e6e8a9d36bca995ff417b8068850986a95262e5d8d8df143855c6b
+size 2298
diff --git a/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/4/0M/WY2357UKBHUI8P5RHRK2DZ.uasset b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/4/0M/WY2357UKBHUI8P5RHRK2DZ.uasset
new file mode 100644
index 00000000..e44f8133
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/4/0M/WY2357UKBHUI8P5RHRK2DZ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40b8a99a5f17375390374165be7325c0c7b41d0733228f3c0ad031410f5bf6c5
+size 2284
diff --git a/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/4/CY/PA7VG9UZWHLZTEZL7VUBI9.uasset b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/4/CY/PA7VG9UZWHLZTEZL7VUBI9.uasset
new file mode 100644
index 00000000..20deb822
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/4/CY/PA7VG9UZWHLZTEZL7VUBI9.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8682a7fae586f4559213c1b7911028aba67b9e307197049e1065ee2d6eb92aba
+size 2284
diff --git a/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/5/YT/BWXH8AQGEZZOD1E6ZNPXSC.uasset b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/5/YT/BWXH8AQGEZZOD1E6ZNPXSC.uasset
new file mode 100644
index 00000000..783f8418
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/5/YT/BWXH8AQGEZZOD1E6ZNPXSC.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:100ee8544e63be62122c3a7bd70a2d860a522384f77f13712dfe55e3e72971d8
+size 2286
diff --git a/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/7/8N/ZRFPBTO989XQKP7T5RS7KK.uasset b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/7/8N/ZRFPBTO989XQKP7T5RS7KK.uasset
new file mode 100644
index 00000000..d6ee501c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/7/8N/ZRFPBTO989XQKP7T5RS7KK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:74973ca24943e6b3c1f032eebf19fbe885ff4bd80c55c19b6b32392c8176baf5
+size 2284
diff --git a/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/D/KZ/6W87MJLX6NJ5XR8ELXDNYK.uasset b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/D/KZ/6W87MJLX6NJ5XR8ELXDNYK.uasset
new file mode 100644
index 00000000..ebfd6ce4
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/FirstPerson/Maps/GunMechanicTester/D/KZ/6W87MJLX6NJ5XR8ELXDNYK.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00adfd4b0eba1f7ae121b2d50b5022b23fdd698d6d8014eea3bc725d676737e5
+size 2284
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/0/TQ/3ACFHBDWFABKU596RXRO53.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/0/TQ/3ACFHBDWFABKU596RXRO53.uasset
new file mode 100644
index 00000000..0f60fc68
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/0/TQ/3ACFHBDWFABKU596RXRO53.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d5d4d254a7f11e0a82a85632804ab80103b7a94485e8f6764cc8a71dfbb7cf2
+size 2356
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/1/30/W9Z34RUFOXLO8DC8TGLS52.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/1/30/W9Z34RUFOXLO8DC8TGLS52.uasset
new file mode 100644
index 00000000..6d951b32
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/1/30/W9Z34RUFOXLO8DC8TGLS52.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0cf023f6d69a487faf937e406d8ad0571784576efef2732d587cfd7b0fbc06b0
+size 2356
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/3/VN/8BVAC6SV0C7HY7NQZUMR3A.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/3/VN/8BVAC6SV0C7HY7NQZUMR3A.uasset
new file mode 100644
index 00000000..b0300fc8
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/3/VN/8BVAC6SV0C7HY7NQZUMR3A.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:762ed00b866ef1c1c08482a322e6ee4b34869ed2c489d9c3ee5a5a54b594f03e
+size 2358
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/3/X0/UIXBS52CP92S41MZVNKQ5N.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/3/X0/UIXBS52CP92S41MZVNKQ5N.uasset
new file mode 100644
index 00000000..611bccd6
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/3/X0/UIXBS52CP92S41MZVNKQ5N.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7feb47b555948d4b652cbf2844eb4d6a6de101610e116a17a9bc211132970104
+size 2270
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/4/O7/YR3DRO0R6AREA4XTW0JVGN.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/4/O7/YR3DRO0R6AREA4XTW0JVGN.uasset
new file mode 100644
index 00000000..9611b21c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/4/O7/YR3DRO0R6AREA4XTW0JVGN.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:747d3daaa877de9903dddbbce38df48b4d7791c4a19f94a0b40dbabd9ae613a2
+size 2356
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/4/OR/RK9JDE40KKJZQWFMFL26I5.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/4/OR/RK9JDE40KKJZQWFMFL26I5.uasset
new file mode 100644
index 00000000..2bd727dc
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/4/OR/RK9JDE40KKJZQWFMFL26I5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10215e56b02b528b6db32375c7ad77f3ec95c2b1b96d37fee7f3cae687c10a6b
+size 2356
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/5/3P/SF481C8C6IO4CAHI6873XE.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/5/3P/SF481C8C6IO4CAHI6873XE.uasset
new file mode 100644
index 00000000..2ba42637
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/5/3P/SF481C8C6IO4CAHI6873XE.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f0332abd88de716a1f9a7d2aa75f2a0106e6e05ac04b8752f2bf7ef1f07ac88
+size 2362
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/7/IO/6Y51GE24EVFOHXCG615BY1.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/7/IO/6Y51GE24EVFOHXCG615BY1.uasset
new file mode 100644
index 00000000..d66c978d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/7/IO/6Y51GE24EVFOHXCG615BY1.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10bc3f7b244305eec4fac0ce6ea3798cc21689af65664c8e0dc1e8b22e47a123
+size 2370
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/D/WD/LGTPJJO55ED5H60IZ3025H.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/D/WD/LGTPJJO55ED5H60IZ3025H.uasset
new file mode 100644
index 00000000..12762e0c
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/BountySystemTestLevel/D/WD/LGTPJJO55ED5H60IZ3025H.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebb4ae789fd6106278e299904384cfd060a5e59110a0a4091ea77b4b50b81976
+size 2358
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/3/IN/ZX0DKIDX2JX3JZ5AHZ358H.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/3/IN/ZX0DKIDX2JX3JZ5AHZ358H.uasset
new file mode 100644
index 00000000..8bc88b22
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/3/IN/ZX0DKIDX2JX3JZ5AHZ358H.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90f3861f162a74e62d9638a7bf157726f95488a9b7e87aa5955cdaa81767de3b
+size 2186
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/5/ED/F43HQFUB7DXKRU5ZNLN2HL.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/5/ED/F43HQFUB7DXKRU5ZNLN2HL.uasset
new file mode 100644
index 00000000..b26e8770
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/5/ED/F43HQFUB7DXKRU5ZNLN2HL.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64fdade231bc37c873e650f913074ceecc4b5621ee952f20bdd17ddd3533f3fa
+size 2200
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/6/JT/KDT0MAGCOXR70VASIZOKMP.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/6/JT/KDT0MAGCOXR70VASIZOKMP.uasset
new file mode 100644
index 00000000..0f6ff441
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/6/JT/KDT0MAGCOXR70VASIZOKMP.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f7fdb0a5971a633719b2967432504edf6409cdca147a1c11b4049d6dd5f4e7c
+size 2186
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/7/0J/97389JWAHOKRK9742IJNUD.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/7/0J/97389JWAHOKRK9742IJNUD.uasset
new file mode 100644
index 00000000..829b8f15
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/7/0J/97389JWAHOKRK9742IJNUD.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee9c5ac0277bfd791d343120790ab822d742ec64658dbc0ec02a88a1156b7217
+size 2188
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/7/6G/DU9OC4U9R64TY369G0N48F.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/7/6G/DU9OC4U9R64TY369G0N48F.uasset
new file mode 100644
index 00000000..94b8cb09
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/7/6G/DU9OC4U9R64TY369G0N48F.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:99a25acee5c7712ce29bf79274241157a841d8395b4861f048bd9d72508bb87b
+size 2186
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/A/OF/DMAUKRJ7ZVQKZ15OGILSN5.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/A/OF/DMAUKRJ7ZVQKZ15OGILSN5.uasset
new file mode 100644
index 00000000..e67ed7f0
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/A/OF/DMAUKRJ7ZVQKZ15OGILSN5.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9477e753ec6e98c3ac912e3e03ceae0e9b453adb2bf5d0ab2ac0b15de1740c1
+size 2188
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/C/4M/6DZ06BS46GV23GYW6TYVSW.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/C/4M/6DZ06BS46GV23GYW6TYVSW.uasset
new file mode 100644
index 00000000..093a7b9d
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/C/4M/6DZ06BS46GV23GYW6TYVSW.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57c903a6b521f7b86ec75f8a63d8eab9aceabca2a45d5e06dc8b81fbf4c745f7
+size 2192
diff --git a/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/E/KK/K83LURWABW69BW7GEPNTMB.uasset b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/E/KK/K83LURWABW69BW7GEPNTMB.uasset
new file mode 100644
index 00000000..3dac1372
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/Levels/EnemyAITest/E/KK/K83LURWABW69BW7GEPNTMB.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ba7aff1929eb1391d4be9aa86c03d2b2eebdf17ccb29b755a0618675ce05df3
+size 2186
diff --git a/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/3/DH/JQTP3L9HHXRN8IUHATI906.uasset b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/3/DH/JQTP3L9HHXRN8IUHATI906.uasset
new file mode 100644
index 00000000..8a4c9e5f
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/3/DH/JQTP3L9HHXRN8IUHATI906.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8502666e004c0b5c35154b7464b441013c705eed34c3ea749f17c36c96558cf7
+size 2011
diff --git a/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/4/4A/NCNZF2U4ZTZ8XZJNF86FNT.uasset b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/4/4A/NCNZF2U4ZTZ8XZJNF86FNT.uasset
new file mode 100644
index 00000000..e425d263
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/4/4A/NCNZF2U4ZTZ8XZJNF86FNT.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fd467498618623173886f91ea74e8e2a647fb4eb05887dfb71b36602364b49b
+size 2009
diff --git a/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/8/05/U8OLLG133BEQMR58UPHM3P.uasset b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/8/05/U8OLLG133BEQMR58UPHM3P.uasset
new file mode 100644
index 00000000..464a93c4
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/8/05/U8OLLG133BEQMR58UPHM3P.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce6528560be9a7d4a162f899701bf0117c3aebce4a53ca8b1a4974070bde602b
+size 2009
diff --git a/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/A/KP/VZTB4WP3P1L1F1WL9R6XLZ.uasset b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/A/KP/VZTB4WP3P1L1F1WL9R6XLZ.uasset
new file mode 100644
index 00000000..bececfa8
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/A/KP/VZTB4WP3P1L1F1WL9R6XLZ.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03f8cff85345b9cd9307106f09dc44109abea9c061343ceac9ad9e118e377132
+size 2015
diff --git a/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/B/AN/0Z4D0BFPHEXAYK76DY0WLL.uasset b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/B/AN/0Z4D0BFPHEXAYK76DY0WLL.uasset
new file mode 100644
index 00000000..f51dfcca
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/B/AN/0Z4D0BFPHEXAYK76DY0WLL.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf3a8b0b3a498efe6e49e4c5dae12833aefdd9bf87663ee35f6a210e847588b1
+size 2009
diff --git a/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/D/13/KQB15WT334LUGWVAUX80XH.uasset b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/D/13/KQB15WT334LUGWVAUX80XH.uasset
new file mode 100644
index 00000000..790c306a
--- /dev/null
+++ b/EndlessVendetta/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/D/13/KQB15WT334LUGWVAUX80XH.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d98ab61e02eafe51722506d3a0382ad21976f47e2290f539607fb3ba9d71038d
+size 2011
diff --git a/EndlessVendetta/EndlessVendetta.uproject b/EndlessVendetta/EndlessVendetta.uproject
index 02d42dff..8aea7a6c 100644
--- a/EndlessVendetta/EndlessVendetta.uproject
+++ b/EndlessVendetta/EndlessVendetta.uproject
@@ -7,7 +7,11 @@
{
"Name": "EndlessVendetta",
"Type": "Runtime",
- "LoadingPhase": "Default"
+ "LoadingPhase": "Default",
+ "AdditionalDependencies": [
+ "Engine",
+ "AIModule"
+ ]
}
],
"Plugins": [
diff --git a/EndlessVendetta/Platforms/HoloLens/Config/HoloLensEngine.ini b/EndlessVendetta/Platforms/HoloLens/Config/HoloLensEngine.ini
new file mode 100644
index 00000000..d5ebb91b
--- /dev/null
+++ b/EndlessVendetta/Platforms/HoloLens/Config/HoloLensEngine.ini
@@ -0,0 +1,32 @@
+
+
+[/Script/HoloLensPlatformEditor.HoloLensTargetSettings]
+bBuildForEmulation=False
+bBuildForDevice=True
+bUseNameForLogo=True
+bBuildForRetailWindowsStore=False
+bAutoIncrementVersion=False
+bShouldCreateAppInstaller=False
+AppInstallerInstallationURL=
+HoursBetweenUpdateChecks=0
+bEnablePIXProfiling=False
+TileBackgroundColor=(B=64,G=0,R=0,A=255)
+SplashScreenBackgroundColor=(B=64,G=0,R=0,A=255)
++PerCultureResources=(CultureId="",Strings=(PackageDisplayName="",PublisherDisplayName="",PackageDescription="",ApplicationDisplayName="",ApplicationDescription=""),Images=())
+TargetDeviceFamily=Windows.Holographic
+MinimumPlatformVersion=
+MaximumPlatformVersionTested=10.0.18362.0
+MaxTrianglesPerCubicMeter=500.000000
+SpatialMeshingVolumeSize=20.000000
+CompilerVersion=Default
+Windows10SDKVersion=10.0.18362.0
++CapabilityList=internetClientServer
++CapabilityList=privateNetworkClientServer
++Uap2CapabilityList=spatialPerception
+bSetDefaultCapabilities=False
+SpatializationPlugin=
+SourceDataOverridePlugin=
+ReverbPlugin=
+OcclusionPlugin=
+SoundCueCookQualityIndex=-1
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.cpp
new file mode 100644
index 00000000..8e976d0a
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.cpp
@@ -0,0 +1,100 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "AICharacter.h"
+
+#include "AI_EnemyController.h"
+#include "Components/CapsuleComponent.h"
+#include "Engine/DamageEvents.h"
+#include "GameFramework/CharacterMovementComponent.h"
+#include "Perception/AIPerceptionStimuliSourceComponent.h"
+#include "Perception/AISense_Sight.h"
+#include "BehaviorTree/BlackboardComponent.h"
+#include "Blueprint/AIBlueprintHelperLibrary.h"
+
+
+// Sets default values
+AAICharacter::AAICharacter()
+{
+ // 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;
+ SetupStimuliSourceComponent();
+}
+
+// Called when the game starts or when spawned
+void AAICharacter::BeginPlay()
+{
+ Super::BeginPlay();
+
+}
+
+// Called every frame
+void AAICharacter::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+}
+
+// Called to bind functionality to input
+void AAICharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
+{
+ Super::SetupPlayerInputComponent(PlayerInputComponent);
+}
+
+UBehaviorTree* AAICharacter::GetBehaviorTree() const
+{
+ return BehaviorTree;
+}
+
+float AAICharacter::TakeDamage(const float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)
+{
+ CurrentHealth -= DamageAmount;
+ if (CurrentHealth <= 0)
+ {
+ if (!IsValid(this)) return 0.0f;
+ CurrentHealth = 0;
+ UE_LOG(LogTemp, Display, TEXT("%s is dead"), *CharacterName.ToString());
+
+ /*const AAI_EnemyController* AIController = Cast(GetController());
+ AIController->GetBrainComponent()->StopLogic(" is dead");*/
+ this->Tags.Add(FName("Dead"));
+ //Ragdoll
+ DetachFromControllerPendingDestroy();
+ UCapsuleComponent* CapsuleComp = GetCapsuleComponent();
+ CapsuleComp->SetCollisionEnabled(ECollisionEnabled::NoCollision);
+ CapsuleComp->SetCollisionResponseToAllChannels(ECR_Ignore);
+
+ GetMesh()->SetCollisionProfileName(TEXT("Ragdoll"));
+ SetActorEnableCollision(true);
+
+ GetMesh()->SetAllBodiesSimulatePhysics(true);
+ GetMesh()->SetSimulatePhysics(true);
+ GetMesh()->WakeAllRigidBodies();
+ GetMesh()->bBlendPhysics = true;
+
+ if (UCharacterMovementComponent* CharacterComp = Cast(GetMovementComponent()))
+ {
+ CharacterComp->StopMovementImmediately();
+ CharacterComp->DisableMovement();
+ CharacterComp->SetComponentTickEnabled(false);
+ }
+
+ SetLifeSpan(30.0f);
+ }
+ return Super::TakeDamage(DamageAmount, DamageEvent, EventInstigator, DamageCauser);
+}
+
+APatrolPath* AAICharacter::GetPatrolPath() const
+{
+ return PatrolPath;
+}
+
+void AAICharacter::SetupStimuliSourceComponent()
+{
+ StimuliSourceComponent = CreateDefaultSubobject(TEXT("Stimuli Source Component"));
+ if (IsValid(StimuliSourceComponent))
+ {
+ StimuliSourceComponent->RegisterForSense(TSubclassOf());
+ StimuliSourceComponent->RegisterWithPerceptionSystem();
+ }
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.h b/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.h
new file mode 100644
index 00000000..44bbd309
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.h
@@ -0,0 +1,60 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "PatrolPath.h"
+#include "BehaviorTree/BehaviorTree.h"
+#include "GameFramework/Character.h"
+#include "AICharacter.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API AAICharacter : public ACharacter
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this character's properties
+ AAICharacter();
+
+ UPROPERTY(EditDefaultsOnly, Category = "Stats")
+ float CurrentHealth = 100.0f;
+ UPROPERTY(EditDefaultsOnly, Category = "Stats")
+ float MaxHealth = 100.0f;
+ UPROPERTY(EditDefaultsOnly, Category = "Stats")
+ float DefaultHealth = 100.0f;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Profile")
+ FName CharacterName = "AI Character";
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+ UPROPERTY()
+ class UAIPerceptionStimuliSourceComponent* StimuliSourceComponent;
+ void SetupStimuliSourceComponent();
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ // Called to bind functionality to input
+ virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
+
+ UFUNCTION(BlueprintCallable, Category = "AI")
+ UBehaviorTree* GetBehaviorTree() const;
+
+ UFUNCTION(BlueprintCallable, Category = "Damage Control")
+ virtual float TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override;
+
+ UFUNCTION()
+ APatrolPath* GetPatrolPath() const;
+
+private:
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ UBehaviorTree* BehaviorTree;
+
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ APatrolPath* PatrolPath;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AIControlHub.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/AIControlHub.cpp
new file mode 100644
index 00000000..75f4a7f1
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/AIControlHub.cpp
@@ -0,0 +1,76 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "AIControlHub.h"
+
+#include "EnemyCharacter.h"
+
+
+// Sets default values
+AAIControlHub::AAIControlHub()
+{
+ // 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 AAIControlHub::BeginPlay()
+{
+ Super::BeginPlay();
+
+ for (AEnemyCharacter* EnemyActor : EnemyActors)
+ {
+ EnemyActor->SubscribeToGroupAIEvents(this);
+ }
+}
+
+// Called every frame
+void AAIControlHub::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+}
+
+void AAIControlHub::IncreaseAlertLevel()
+{
+ AlertLevel = FMath::Clamp(AlertLevel + 1, 0, 3);
+ OnAlertLevelChanged();
+}
+
+void AAIControlHub::DecreaseAlertLevel()
+{
+ AlertLevel = FMath::Clamp(AlertLevel - 1, 0, 3);
+ OnAlertLevelChanged();
+}
+
+void AAIControlHub::SetAlertLevel(int NewAlertLevel)
+{
+ AlertLevel = FMath::Clamp(NewAlertLevel, 0, 3);
+ OnAlertLevelChanged();
+}
+
+int AAIControlHub::GetAlertLevel() const
+{
+ return AlertLevel;
+}
+
+void AAIControlHub::OnAlertLevelChanged()
+{
+ AlertLevelEvent.Broadcast(AlertLevel);
+ if (AlertLevel == 2)
+ {
+ SetPlayerLastKnownLocation();
+ HuntPlayerEvent.Broadcast(PlayerLastKnownLocation);
+ }
+}
+
+void AAIControlHub::SetPlayerLastKnownLocation(FVector Location)
+{
+ if (Location == FVector(0, 0, 0))
+ {
+ PlayerLastKnownLocation = GetWorld()->GetFirstPlayerController()->GetPawn()->GetActorLocation();
+ }
+ else
+ {
+ PlayerLastKnownLocation = Location;
+ }
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AIControlHub.h b/EndlessVendetta/Source/EndlessVendetta/AI/AIControlHub.h
new file mode 100644
index 00000000..d75b7fd6
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/AIControlHub.h
@@ -0,0 +1,47 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "EnemyCharacter.h"
+#include "GameFramework/Actor.h"
+#include "AIControlHub.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API AAIControlHub : public AActor
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this actor's properties
+ AAIControlHub();
+
+ DECLARE_EVENT_OneParam(AAIControlHub, FAlertLevelEvent, int);
+ FAlertLevelEvent AlertLevelEvent;
+ DECLARE_EVENT_OneParam(AAIControlHub, FHuntPlayer, FVector);
+ FHuntPlayer HuntPlayerEvent;
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ void IncreaseAlertLevel();
+ void DecreaseAlertLevel();
+ void SetAlertLevel(int NewAlertLevel);
+ int GetAlertLevel() const;
+ void OnAlertLevelChanged();
+ void SetPlayerLastKnownLocation(FVector Location = FVector(0, 0, 0));
+
+private:
+ int AlertLevel = 0;
+
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ TArray EnemyActors;
+
+ UPROPERTY()
+ FVector PlayerLastKnownLocation;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AI_CompanionController.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/AI_CompanionController.cpp
new file mode 100644
index 00000000..5ca23fe3
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/AI_CompanionController.cpp
@@ -0,0 +1,85 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "AI_CompanionController.h"
+
+#include "AI_EnemyController.h"
+#include "CompanionCharacter.h"
+#include "EndlessVendetta/EndlessVendettaCharacter.h"
+#include "Perception/AIPerceptionComponent.h"
+#include "Perception/AISenseConfig_Sight.h"
+
+
+AAI_CompanionController::AAI_CompanionController(FObjectInitializer const& ObjectInitializer)
+{
+ // 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;
+ AAIController::SetGenericTeamId(FGenericTeamId(0));
+ SetupPerceptionSystem();
+}
+
+// Called when the game starts or when spawned
+void AAI_CompanionController::BeginPlay()
+{
+ Super::BeginPlay();
+}
+
+void AAI_CompanionController::OnPossess(APawn* InPawn)
+{
+ Super::OnPossess(InPawn);
+ if (const ACompanionCharacter* CompanionCharacter = Cast(InPawn))
+ {
+ if (UBehaviorTree* const BehaviorTree = CompanionCharacter->GetBehaviorTree())
+ {
+ UBlackboardComponent* TempBlackboardPtr;
+ UseBlackboard(BehaviorTree->BlackboardAsset, TempBlackboardPtr);
+ Blackboard = TempBlackboardPtr;
+ RunBehaviorTree(BehaviorTree);
+ }
+ }
+}
+
+// Called every frame
+void AAI_CompanionController::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+}
+
+void AAI_CompanionController::SetupPerceptionSystem()
+{
+ SightConfig = CreateDefaultSubobject(TEXT("Sight Config"));
+ if (IsValid(SightConfig))
+ {
+ SetPerceptionComponent(*CreateDefaultSubobject(TEXT("Perception Component")));
+ SightConfig->SightRadius = 2000.0f;
+ SightConfig->LoseSightRadius = 2100.0f;
+ SightConfig->PeripheralVisionAngleDegrees = 70.0f;
+ SightConfig->SetMaxAge(20.0f);
+ SightConfig->AutoSuccessRangeFromLastSeenLocation = 520.0f;
+ SightConfig->DetectionByAffiliation.bDetectEnemies = true;
+ SightConfig->DetectionByAffiliation.bDetectFriendlies = true;
+ SightConfig->DetectionByAffiliation.bDetectNeutrals = true;
+ GetPerceptionComponent()->SetDominantSense(*SightConfig->GetSenseImplementation());
+ GetPerceptionComponent()->OnTargetPerceptionUpdated.AddDynamic(this, &AAI_CompanionController::OnTargetPerceptionUpdated);
+ GetPerceptionComponent()->ConfigureSense(*SightConfig);
+ }
+}
+
+void AAI_CompanionController::OnTargetPerceptionUpdated(AActor* Actor, FAIStimulus const Stimulus)
+{
+ if (AEndlessVendettaCharacter* const PlayerCharacter = Cast(Actor))
+ {
+ // if (Stimulus.WasSuccessfullySensed())
+ // {
+ // GetBlackboardComponent()->SetValueAsObject("TargetPlayer", Actor);
+ // GetBlackboardComponent()->SetValueAsVector("TargetLocation", Stimulus.StimulusLocation);
+ // GetBlackboardComponent()->SetValueAsBool("CanSeePlayer", true);
+ // }
+ // else
+ // {
+ // GetBlackboardComponent()->ClearValue("TargetActor");
+ // GetBlackboardComponent()->ClearValue("TargetLocation");
+ // GetBlackboardComponent()->SetValueAsBool("CanSeePlayer", false);
+ // }
+ }
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AI_CompanionController.h b/EndlessVendetta/Source/EndlessVendetta/AI/AI_CompanionController.h
new file mode 100644
index 00000000..3fb57dc2
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/AI_CompanionController.h
@@ -0,0 +1,36 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "AIController.h"
+#include "AI_CompanionController.generated.h"
+
+struct FAIStimulus;
+
+UCLASS()
+class ENDLESSVENDETTA_API AAI_CompanionController : public AAIController
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this actor's properties
+ explicit AAI_CompanionController(FObjectInitializer const& ObjectInitializer);
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+ virtual void OnPossess(APawn* InPawn) override;
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+private:
+ class UAISenseConfig_Sight* SightConfig;
+ void SetupPerceptionSystem();
+
+ UFUNCTION()
+ void OnTargetPerceptionUpdated(AActor* Actor, FAIStimulus const Stimulus);
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AI_EnemyController.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/AI_EnemyController.cpp
new file mode 100644
index 00000000..3f343fa2
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/AI_EnemyController.cpp
@@ -0,0 +1,114 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "AI_EnemyController.h"
+
+#include "EnemyCharacter.h"
+#include "BehaviorTree/BlackboardComponent.h"
+#include "EndlessVendetta/EndlessVendettaCharacter.h"
+#include "Perception/AIPerceptionComponent.h"
+#include "Perception/AISenseConfig_Hearing.h"
+#include "Perception/AISenseConfig_Sight.h"
+
+
+// Sets default values
+AAI_EnemyController::AAI_EnemyController(FObjectInitializer const& ObjectInitializer)
+{
+ // 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;
+ AAIController::SetGenericTeamId(FGenericTeamId(1));
+ SetupPerceptionSystem();
+}
+
+// Called when the game starts or when spawned
+void AAI_EnemyController::BeginPlay()
+{
+ Super::BeginPlay();
+}
+
+void AAI_EnemyController::OnPossess(APawn* InPawn)
+{
+ Super::OnPossess(InPawn);
+ if (const AEnemyCharacter* EnemyCharacter = Cast(InPawn))
+ {
+ if (UBehaviorTree* const BehaviorTree = EnemyCharacter->GetBehaviorTree())
+ {
+ UBlackboardComponent* TempBlackboardPtr;
+ UseBlackboard(BehaviorTree->BlackboardAsset, TempBlackboardPtr);
+ Blackboard = TempBlackboardPtr;
+ if (IsValid(EnemyCharacter->GetPatrolPath()))
+ {
+ Blackboard->SetValueAsBool("IsPatroling", true);
+ }
+ else
+ {
+ Blackboard->SetValueAsBool("IsPatroling", false);
+ }
+ RunBehaviorTree(BehaviorTree);
+ }
+ }
+}
+
+// Called every frame
+void AAI_EnemyController::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+ if (GetBlackboardComponent()->GetValueAsBool("CanSeePlayer"))
+ {
+ GetBlackboardComponent()->SetValueAsVector("TargetLocation", GetWorld()->GetFirstPlayerController()->GetPawn()->GetActorLocation());
+ }
+}
+
+void AAI_EnemyController::SetupPerceptionSystem()
+{
+ SightConfig = CreateDefaultSubobject(TEXT("Sight Config"));
+ SightConfig->SightRadius = 2000.0f;
+ SightConfig->LoseSightRadius = 2100.0f;
+ SightConfig->PeripheralVisionAngleDegrees = 70.0f;
+ SightConfig->SetMaxAge(20.0f);
+ SightConfig->AutoSuccessRangeFromLastSeenLocation = 520.0f;
+ SightConfig->DetectionByAffiliation.bDetectEnemies = true;
+ SightConfig->DetectionByAffiliation.bDetectFriendlies = true;
+ SightConfig->DetectionByAffiliation.bDetectNeutrals = true;
+
+ HearingConfig = CreateDefaultSubobject(TEXT("Hearing Config"));
+ HearingConfig->HearingRange = 2000.0f;
+ HearingConfig->DetectionByAffiliation.bDetectEnemies = true;
+ HearingConfig->DetectionByAffiliation.bDetectFriendlies = true;
+ HearingConfig->DetectionByAffiliation.bDetectNeutrals = true;
+
+ if (!IsValid(SightConfig)) return;
+ if (!IsValid(HearingConfig)) return;
+
+ SetPerceptionComponent(*CreateDefaultSubobject(TEXT("Perception Component")));
+ GetPerceptionComponent()->SetDominantSense(*SightConfig->GetSenseImplementation());
+ GetPerceptionComponent()->OnTargetPerceptionUpdated.AddDynamic(this, &AAI_EnemyController::OnTargetPerceptionUpdated);
+ GetPerceptionComponent()->ConfigureSense(*SightConfig);
+ GetPerceptionComponent()->ConfigureSense(*HearingConfig);
+}
+
+void AAI_EnemyController::OnTargetPerceptionUpdated(AActor* Actor, FAIStimulus const Stimulus)
+{
+ if (AEndlessVendettaCharacter* const PlayerCharacter = Cast(Actor))
+ {
+ if (Stimulus.WasSuccessfullySensed() && Stimulus.Type == SightConfig->GetSenseID())
+ {
+ GetBlackboardComponent()->SetValueAsObject("TargetPlayer", Actor);
+ GetBlackboardComponent()->SetValueAsVector("TargetLocation", Stimulus.StimulusLocation);
+ GetBlackboardComponent()->SetValueAsBool("CanSeePlayer", true);
+ }
+ else if (!Stimulus.WasSuccessfullySensed() && Stimulus.Type == SightConfig->GetSenseID())
+ {
+ GetBlackboardComponent()->ClearValue("TargetActor");
+ GetBlackboardComponent()->ClearValue("TargetLocation");
+ GetBlackboardComponent()->SetValueAsBool("CanSeePlayer", false);
+ }
+
+ if (Stimulus.WasSuccessfullySensed() && Stimulus.Type == HearingConfig->GetSenseID())
+ {
+ GetBlackboardComponent()->SetValueAsObject("TargetPlayer", Actor);
+ GetBlackboardComponent()->SetValueAsVector("InvestigationLocation", Stimulus.StimulusLocation);
+ GetBlackboardComponent()->SetValueAsBool("IsInvestigating", true);
+ }
+ }
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AI_EnemyController.h b/EndlessVendetta/Source/EndlessVendetta/AI/AI_EnemyController.h
new file mode 100644
index 00000000..ae91c3f4
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/AI_EnemyController.h
@@ -0,0 +1,37 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "AIController.h"
+#include "Perception/AIPerceptionTypes.h"
+#include "AI_EnemyController.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API AAI_EnemyController : public AAIController
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this actor's properties
+ explicit AAI_EnemyController(FObjectInitializer const& ObjectInitializer);
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+ virtual void OnPossess(APawn* InPawn) override;
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+private:
+ UPROPERTY()
+ class UAISenseConfig_Sight* SightConfig;
+ UPROPERTY()
+ class UAISenseConfig_Hearing* HearingConfig;
+ void SetupPerceptionSystem();
+
+ UFUNCTION()
+ void OnTargetPerceptionUpdated(AActor* Actor, FAIStimulus const Stimulus);
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/CompanionCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/CompanionCharacter.cpp
new file mode 100644
index 00000000..197ba5d5
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/CompanionCharacter.cpp
@@ -0,0 +1,25 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "CompanionCharacter.h"
+
+
+// Sets default values
+ACompanionCharacter::ACompanionCharacter()
+{
+ // 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 ACompanionCharacter::BeginPlay()
+{
+ Super::BeginPlay();
+ CharacterName = "Companion";
+}
+
+// Called every frame
+void ACompanionCharacter::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/CompanionCharacter.h b/EndlessVendetta/Source/EndlessVendetta/AI/CompanionCharacter.h
new file mode 100644
index 00000000..a9c0aa23
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/CompanionCharacter.h
@@ -0,0 +1,27 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "AICharacter.h"
+#include "BehaviorTree/BehaviorTree.h"
+#include "GameFramework/Character.h"
+#include "CompanionCharacter.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API ACompanionCharacter : public AAICharacter
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this character's properties
+ ACompanionCharacter();
+
+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/EndlessVendetta/Source/EndlessVendetta/AI/EnemyCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/EnemyCharacter.cpp
new file mode 100644
index 00000000..aa84cb9b
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/EnemyCharacter.cpp
@@ -0,0 +1,54 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "EnemyCharacter.h"
+
+#include "AIControlHub.h"
+#include "AIController.h"
+#include "BehaviorTree/BlackboardComponent.h"
+
+
+class UAISense_Sight;
+// Sets default values
+AEnemyCharacter::AEnemyCharacter()
+{
+ // 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 AEnemyCharacter::BeginPlay()
+{
+ Super::BeginPlay();
+ CharacterName = "Enemy";
+}
+
+// Called every frame
+void AEnemyCharacter::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+}
+
+void AEnemyCharacter::SubscribeToGroupAIEvents(AAIControlHub* ControlHub)
+{
+ DelegatedControlHub = ControlHub;
+ AlertLevelDelegateHandle = ControlHub->AlertLevelEvent.AddUObject(this, &AEnemyCharacter::SetAlertLevel);
+ HuntPlayerDelegateHandle = ControlHub->HuntPlayerEvent.AddUObject(this, &AEnemyCharacter::HuntPlayer);
+}
+
+void AEnemyCharacter::SetAlertLevel(const int NewAlertLevel) const
+{
+ Cast(GetController())->GetBlackboardComponent()->SetValueAsInt("AlertLevel", NewAlertLevel);
+}
+
+void AEnemyCharacter::SetLocalAlertLevel(int NewAlertLevel) const
+{
+ if (!IsValid(DelegatedControlHub)) return;
+ DelegatedControlHub->SetAlertLevel(NewAlertLevel);
+}
+
+void AEnemyCharacter::HuntPlayer(FVector PlayerLastKnownLocation)
+{
+ SetAlertLevel(2);
+ Cast(GetController())->GetBlackboardComponent()->SetValueAsVector("LastKnownLocation", PlayerLastKnownLocation);
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/EnemyCharacter.h b/EndlessVendetta/Source/EndlessVendetta/AI/EnemyCharacter.h
new file mode 100644
index 00000000..6d3deab7
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/EnemyCharacter.h
@@ -0,0 +1,36 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "AICharacter.h"
+#include "BehaviorTree/BehaviorTree.h"
+#include "GameFramework/Character.h"
+#include "EnemyCharacter.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API AEnemyCharacter : public AAICharacter
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this character's properties
+ AEnemyCharacter();
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+ class AAIControlHub* DelegatedControlHub;
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+ void SubscribeToGroupAIEvents(class AAIControlHub* ControlHub);
+ void SetLocalAlertLevel(int NewAlertLevel) const;
+
+private:
+ FDelegateHandle AlertLevelDelegateHandle;
+ FDelegateHandle HuntPlayerDelegateHandle;
+ void SetAlertLevel(int NewAlertLevel) const;
+ void HuntPlayer(FVector PlayerLastKnowLocation);
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/PatrolPath.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/PatrolPath.cpp
new file mode 100644
index 00000000..18c7f07a
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/PatrolPath.cpp
@@ -0,0 +1,22 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "PatrolPath.h"
+
+
+// Sets default values
+APatrolPath::APatrolPath()
+{
+ // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
+ PrimaryActorTick.bCanEverTick = false;
+}
+
+FVector APatrolPath::GetPatrolPoint(int const Index) const
+{
+ return PatrolPoint[Index];
+}
+
+int APatrolPath::Num() const
+{
+ return PatrolPoint.Num();
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/PatrolPath.h b/EndlessVendetta/Source/EndlessVendetta/AI/PatrolPath.h
new file mode 100644
index 00000000..f9236526
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/PatrolPath.h
@@ -0,0 +1,24 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Actor.h"
+#include "PatrolPath.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API APatrolPath : public AActor
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this actor's properties
+ APatrolPath();
+
+ FVector GetPatrolPoint(int const Index) const;
+ int Num() const;
+
+private:
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (MakeEditWidget = "true", AllowPrivateAccess = "true"))
+ TArray PatrolPoint;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Services/BTService_ChangeSpeed.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Services/BTService_ChangeSpeed.cpp
new file mode 100644
index 00000000..1ae661ba
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Services/BTService_ChangeSpeed.cpp
@@ -0,0 +1,26 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTService_ChangeSpeed.h"
+
+#include "EndlessVendetta/AI/AI_EnemyController.h"
+#include "EndlessVendetta/AI/EnemyCharacter.h"
+#include "GameFramework/CharacterMovementComponent.h"
+
+UBTService_ChangeSpeed::UBTService_ChangeSpeed()
+{
+ bNotifyBecomeRelevant = true;
+ NodeName = TEXT("Change Speed");
+}
+
+void UBTService_ChangeSpeed::OnBecomeRelevant(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ Super::OnBecomeRelevant(OwnerComp, NodeMemory);
+ if (const AAI_EnemyController* const EnemyController = Cast(OwnerComp.GetAIOwner()))
+ {
+ if (const AEnemyCharacter* const EnemyCharacter = Cast(EnemyController->GetPawn()))
+ {
+ EnemyCharacter->GetCharacterMovement()->MaxWalkSpeed = Speed;
+ }
+ }
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Services/BTService_ChangeSpeed.h b/EndlessVendetta/Source/EndlessVendetta/AI/Services/BTService_ChangeSpeed.h
new file mode 100644
index 00000000..9d8fff7e
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Services/BTService_ChangeSpeed.h
@@ -0,0 +1,23 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Services/BTService_BlackboardBase.h"
+#include "BTService_ChangeSpeed.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTService_ChangeSpeed : public UBTService_BlackboardBase
+{
+ GENERATED_BODY()
+
+ UBTService_ChangeSpeed();
+ virtual void OnBecomeRelevant(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+
+private:
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ float Speed = 600.0f;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp
new file mode 100644
index 00000000..d7371066
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.cpp
@@ -0,0 +1,29 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTTask_AttackPlayer.h"
+
+#include "EndlessVendetta/AI/AI_EnemyController.h"
+#include "BehaviorTree/BlackboardComponent.h"
+
+UBTTask_AttackPlayer::UBTTask_AttackPlayer(FObjectInitializer const& ObjectInitializer)
+{
+ NodeName = TEXT("Attack Player");
+}
+
+EBTNodeResult::Type UBTTask_AttackPlayer::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ if (const AAI_EnemyController* const AIController = Cast(OwnerComp.GetAIOwner()))
+ {
+ if (const UBlackboardComponent* const Blackboard = OwnerComp.GetBlackboardComponent())
+ {
+ FVector const Origin = AIController->GetPawn()->GetActorLocation();
+ FVector const PlayerLocation = Blackboard->GetValueAsVector("TargetLocation");
+ DrawDebugLine(GetWorld(), Origin, PlayerLocation, FColor::Green, false, 1.f, 0, 1.f);
+
+ FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
+ return EBTNodeResult::Succeeded;
+ }
+ }
+ return EBTNodeResult::Failed;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.h b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.h
new file mode 100644
index 00000000..bc228d3d
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_AttackPlayer.h
@@ -0,0 +1,19 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Tasks/BTTask_BlackboardBase.h"
+#include "BTTask_AttackPlayer.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTTask_AttackPlayer : public UBTTask_BlackboardBase
+{
+ GENERATED_BODY()
+public:
+ explicit UBTTask_AttackPlayer(FObjectInitializer const& ObjectInitializer);
+ virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindCover.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindCover.cpp
new file mode 100644
index 00000000..af60b35c
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindCover.cpp
@@ -0,0 +1,14 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTTask_FindCover.h"
+
+UBTTask_FindCover::UBTTask_FindCover(FObjectInitializer const& ObjectInitializer)
+{
+ NodeName = TEXT("Find Vaild Cover");
+}
+
+EBTNodeResult::Type UBTTask_FindCover::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ return EBTNodeResult::Failed;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindCover.h b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindCover.h
new file mode 100644
index 00000000..8c1fa208
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindCover.h
@@ -0,0 +1,23 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Tasks/BTTask_BlackboardBase.h"
+#include "BTTask_FindCover.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTTask_FindCover : public UBTTask_BlackboardBase
+{
+ GENERATED_BODY()
+public:
+ explicit UBTTask_FindCover(FObjectInitializer const& ObjectInitializer);
+ virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+
+private:
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ float SearchRadius = 1000.f;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPathPoint.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPathPoint.cpp
new file mode 100644
index 00000000..1643c153
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPathPoint.cpp
@@ -0,0 +1,34 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTTask_FindPathPoint.h"
+
+#include "BehaviorTree/BlackboardComponent.h"
+#include "EndlessVendetta/AI/AI_EnemyController.h"
+#include "EndlessVendetta/AI/EnemyCharacter.h"
+
+UBTTask_FindPathPoint::UBTTask_FindPathPoint(FObjectInitializer const& ObjectInitializer)
+{
+ NodeName = TEXT("Find Path Point");
+}
+
+EBTNodeResult::Type UBTTask_FindPathPoint::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ if (const AAI_EnemyController* const AIEnemyController = Cast(OwnerComp.GetAIOwner()))
+ {
+ if (UBlackboardComponent* const BlackboardComponent = OwnerComp.GetBlackboardComponent())
+ {
+ int const Index = BlackboardComponent->GetValueAsInt(GetSelectedBlackboardKey());
+ if (const AEnemyCharacter* const EnemyCharacter = Cast(AIEnemyController->GetPawn()))
+ {
+ FVector const RelativePatrolPoint = EnemyCharacter->GetPatrolPath()->GetPatrolPoint(Index);
+ FVector const GlobalPointLocation = EnemyCharacter->GetPatrolPath()->GetActorTransform().TransformPosition(RelativePatrolPoint);
+ BlackboardComponent->SetValueAsVector(PatrolPathVectorKey.SelectedKeyName, GlobalPointLocation);
+
+ FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
+ return EBTNodeResult::Succeeded;
+ }
+ }
+ }
+ return EBTNodeResult::Failed;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPathPoint.h b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPathPoint.h
new file mode 100644
index 00000000..e329006a
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPathPoint.h
@@ -0,0 +1,24 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Tasks/BTTask_BlackboardBase.h"
+#include "BTTask_FindPathPoint.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTTask_FindPathPoint : public UBTTask_BlackboardBase
+{
+ GENERATED_BODY()
+
+public:
+ explicit UBTTask_FindPathPoint(FObjectInitializer const& ObjectInitializer);
+ virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+
+private:
+ UPROPERTY(EditAnywhere, Category = "Blackboard", meta=(AllowPrivateAccess = "true"))
+ FBlackboardKeySelector PatrolPathVectorKey;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPlayerLocation.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPlayerLocation.cpp
new file mode 100644
index 00000000..7607af23
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPlayerLocation.cpp
@@ -0,0 +1,39 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTTask_FindPlayerLocation.h"
+
+#include "NavigationSystem.h"
+#include "BehaviorTree/BlackboardComponent.h"
+#include "GameFramework/Character.h"
+
+UBTTask_FindPlayerLocation::UBTTask_FindPlayerLocation(FObjectInitializer const& ObjectInitializer)
+{
+ NodeName = TEXT("Find Player Location");
+}
+
+EBTNodeResult::Type UBTTask_FindPlayerLocation::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ if (const ACharacter* const Player = Cast(GetWorld()->GetFirstPlayerController()->GetPawn()))
+ {
+ if (UBlackboardComponent* const Blackboard = OwnerComp.GetBlackboardComponent())
+ {
+ if (SearchRandom)
+ {
+ FVector const Origin = Player->GetActorLocation();
+ const UNavigationSystemV1* const NavSystem = UNavigationSystemV1::GetCurrent(GetWorld());
+ if (FNavLocation RandomLocation; NavSystem->GetRandomPointInNavigableRadius(Origin, SearchRadius, RandomLocation))
+ {
+ Blackboard->SetValueAsVector(GetSelectedBlackboardKey(), RandomLocation.Location);
+ }
+ }
+ else
+ {
+ Blackboard->SetValueAsVector(GetSelectedBlackboardKey(), Player->GetActorLocation());
+ }
+ FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
+ return EBTNodeResult::Succeeded;
+ }
+ }
+ return EBTNodeResult::Failed;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPlayerLocation.h b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPlayerLocation.h
new file mode 100644
index 00000000..6161bd90
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindPlayerLocation.h
@@ -0,0 +1,27 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Tasks/BTTask_BlackboardBase.h"
+#include "BTTask_FindPlayerLocation.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTTask_FindPlayerLocation : public UBTTask_BlackboardBase
+{
+ GENERATED_BODY()
+
+public:
+ explicit UBTTask_FindPlayerLocation(FObjectInitializer const& ObjectInitializer);
+ virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+
+private:
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ float SearchRadius = 150.f;
+
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ bool SearchRandom = false;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindRandomLocation.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindRandomLocation.cpp
new file mode 100644
index 00000000..af11c428
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindRandomLocation.cpp
@@ -0,0 +1,32 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTTask_FindRandomLocation.h"
+
+#include "EndlessVendetta/AI/AI_EnemyController.h"
+#include "NavigationSystem.h"
+#include "BehaviorTree/BlackboardComponent.h"
+
+UBTTask_FindRandomLocation::UBTTask_FindRandomLocation(FObjectInitializer const& ObjectInitializer)
+{
+ NodeName = TEXT("Find Random Location");
+}
+
+EBTNodeResult::Type UBTTask_FindRandomLocation::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ if (const AAI_EnemyController* const AIController = Cast(OwnerComp.GetAIOwner()))
+ {
+ if (UBlackboardComponent* const Blackboard = OwnerComp.GetBlackboardComponent())
+ {
+ FVector const Origin = AIController->GetPawn()->GetActorLocation();
+ const UNavigationSystemV1* const NavSystem = UNavigationSystemV1::GetCurrent(GetWorld());
+ if (FNavLocation RandomLocation; NavSystem->GetRandomPointInNavigableRadius(Origin, SearchRadius, RandomLocation))
+ {
+ Blackboard->SetValueAsVector(GetSelectedBlackboardKey(), RandomLocation.Location);
+ FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
+ return EBTNodeResult::Succeeded;
+ }
+ }
+ }
+ return EBTNodeResult::Failed;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindRandomLocation.h b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindRandomLocation.h
new file mode 100644
index 00000000..e3b5df85
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_FindRandomLocation.h
@@ -0,0 +1,24 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Tasks/BTTask_BlackboardBase.h"
+#include "BTTask_FindRandomLocation.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTTask_FindRandomLocation : public UBTTask_BlackboardBase
+{
+ GENERATED_BODY()
+
+public:
+ explicit UBTTask_FindRandomLocation(FObjectInitializer const& ObjectInitializer);
+ virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+
+private:
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ float SearchRadius = 1000.f;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_IncrementPathIndex.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_IncrementPathIndex.cpp
new file mode 100644
index 00000000..cfc7b788
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_IncrementPathIndex.cpp
@@ -0,0 +1,47 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTTask_IncrementPathIndex.h"
+
+#include "BehaviorTree/BlackboardComponent.h"
+#include "EndlessVendetta/AI/AI_EnemyController.h"
+#include "EndlessVendetta/AI/EnemyCharacter.h"
+
+UBTTask_IncrementPathIndex::UBTTask_IncrementPathIndex(FObjectInitializer const& ObjectInitializer)
+{
+ NodeName = TEXT("Increment Path Index");
+}
+
+EBTNodeResult::Type UBTTask_IncrementPathIndex::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ if (AAI_EnemyController* const EnemyController = Cast(OwnerComp.GetOwner()))
+ {
+ if (AEnemyCharacter* const EnemyCharacter = Cast(EnemyController->GetPawn()))
+ {
+ if (UBlackboardComponent* const BlackboardComponent = OwnerComp.GetBlackboardComponent())
+ {
+ int const NumberOfPoints = EnemyCharacter->GetPatrolPath()->Num();
+ int const MinIndex = 0;
+ int const MaxIndex = NumberOfPoints - 1;
+ int CurrentIndex = BlackboardComponent->GetValueAsInt(GetSelectedBlackboardKey());
+
+ if (bBiDirectional)
+ {
+ if (CurrentIndex >= MaxIndex && DirectionType == Forward)
+ {
+ DirectionType = Backward;
+ }
+ else if (CurrentIndex == MinIndex && DirectionType == Backward)
+ {
+ DirectionType = Forward;
+ }
+ }
+ BlackboardComponent->SetValueAsInt(GetSelectedBlackboardKey(), (DirectionType == Forward ? ++CurrentIndex : --CurrentIndex) % NumberOfPoints);
+
+ FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
+ return EBTNodeResult::Succeeded;
+ }
+ }
+ }
+ return EBTNodeResult::Failed;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_IncrementPathIndex.h b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_IncrementPathIndex.h
new file mode 100644
index 00000000..0f9c3442
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_IncrementPathIndex.h
@@ -0,0 +1,32 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Tasks/BTTask_BlackboardBase.h"
+#include "BTTask_IncrementPathIndex.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTTask_IncrementPathIndex : public UBTTask_BlackboardBase
+{
+ GENERATED_BODY()
+
+public:
+ explicit UBTTask_IncrementPathIndex(FObjectInitializer const& ObjectInitializer);
+ virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+
+private:
+ enum EPathFollowType
+ {
+ Forward,
+ Backward
+ };
+
+ EPathFollowType DirectionType = Forward;
+
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ bool bBiDirectional = false;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_SetLocalAlertLevel.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_SetLocalAlertLevel.cpp
new file mode 100644
index 00000000..3cd9990b
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_SetLocalAlertLevel.cpp
@@ -0,0 +1,26 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTTask_SetLocalAlertLevel.h"
+#include "EndlessVendetta/AI/AI_EnemyController.h"
+#include "EndlessVendetta/AI/EnemyCharacter.h"
+
+UBTTask_SetLocalAlertLevel::UBTTask_SetLocalAlertLevel()
+{
+ NodeName = "Set Local Alert Level";
+}
+
+EBTNodeResult::Type UBTTask_SetLocalAlertLevel::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ if (const AAI_EnemyController* const AIEnemyController = Cast(OwnerComp.GetAIOwner()))
+ {
+ if (const AEnemyCharacter* const EnemyCharacter = Cast(AIEnemyController->GetPawn()))
+ {
+ EnemyCharacter->SetLocalAlertLevel(AlertLevel);
+
+ FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
+ return EBTNodeResult::Succeeded;
+ }
+ }
+ return EBTNodeResult::Failed;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_SetLocalAlertLevel.h b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_SetLocalAlertLevel.h
new file mode 100644
index 00000000..770472ed
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_SetLocalAlertLevel.h
@@ -0,0 +1,24 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Tasks/BTTask_BlackboardBase.h"
+#include "BTTask_SetLocalAlertLevel.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTTask_SetLocalAlertLevel : public UBTTask_BlackboardBase
+{
+ GENERATED_BODY()
+
+public:
+ UBTTask_SetLocalAlertLevel();
+ virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+
+private:
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AI", meta = (AllowPrivateAccess = "true"))
+ int AlertLevel = 0;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_StopInvestigating.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_StopInvestigating.cpp
new file mode 100644
index 00000000..8e5cd367
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_StopInvestigating.cpp
@@ -0,0 +1,27 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BTTask_StopInvestigating.h"
+
+#include "BehaviorTree/BlackboardComponent.h"
+#include "EndlessVendetta/AI/AI_EnemyController.h"
+#include "EndlessVendetta/AI/EnemyCharacter.h"
+
+UBTTask_StopInvestigating::UBTTask_StopInvestigating()
+{
+ NodeName = TEXT("Stop Investigating");
+}
+
+EBTNodeResult::Type UBTTask_StopInvestigating::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
+{
+ if (AAI_EnemyController* const EnemyController = Cast(OwnerComp.GetOwner()))
+ {
+ if (UBlackboardComponent* const BlackboardComponent = OwnerComp.GetBlackboardComponent())
+ {
+ BlackboardComponent->ClearValue(GetSelectedBlackboardKey());
+ FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
+ return EBTNodeResult::Succeeded;
+ }
+ }
+ return EBTNodeResult::Failed;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_StopInvestigating.h b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_StopInvestigating.h
new file mode 100644
index 00000000..ff6f37d6
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/AI/Tasks/BTTask_StopInvestigating.h
@@ -0,0 +1,20 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BehaviorTree/Tasks/BTTask_BlackboardBase.h"
+#include "BTTask_StopInvestigating.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UBTTask_StopInvestigating : public UBTTask_BlackboardBase
+{
+ GENERATED_BODY()
+
+public:
+ UBTTask_StopInvestigating();
+ virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp
new file mode 100644
index 00000000..ae8fbd8d
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.cpp
@@ -0,0 +1,130 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BountyClass.h"
+
+// Sets default values
+ABountyClass::ABountyClass()
+{
+ // 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;
+
+}
+
+void ABountyClass::BeginPlay()
+{
+ Super::BeginPlay();
+
+ SpawnCheckpoints();
+
+}
+
+void ABountyClass::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+
+void ABountyClass::SpawnCheckpoints()
+{
+ // Spawn all checkpoints associated with this bounty and store them in order
+ FActorSpawnParameters SpawnParameters;
+ SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
+
+ for(TSubclassOf CheckpointClass : CheckpointsToSpawn)
+ {
+ if (CheckpointClass == nullptr)
+ {
+ // An unassigned checkpoint class can lead to undefined behaviour, hence the fatal log
+ UE_LOG(LogTemp, Fatal, TEXT("A checkpoint class wasn't set for %s"), *BountyTitle);
+ return;
+ }
+
+ FVector Loc = CheckpointClass.GetDefaultObject()->GetCheckpointSpawnTransform().GetLocation();
+ FRotator Rot = CheckpointClass.GetDefaultObject()->GetCheckpointSpawnTransform().GetRotation().Rotator();
+ ACheckpointClass* SpawnedCheckpoint = Cast(GetWorld()->SpawnActor(CheckpointClass, Loc, Rot, SpawnParameters));
+ BountyCheckpoints.Add(SpawnedCheckpoint);
+ }
+
+ // Activate the first checkpoint and listen for its completion
+ BountyCheckpoints[0]->Active = true;
+ BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint);
+}
+
+void ABountyClass::IncrementBountyCheckpoint()
+{
+ // Broadcast that the first Checkpoint has been completed so that side bounties can be destroyed
+ if (!BountyStarted)
+ {
+ BountyStarted = true;
+ CompletedFirstCheckpoint.Broadcast();
+ }
+
+ // Bounty Completion Condition
+ if (BountyCheckpoints.Num() <= MinCPsRequiredForCompletion)
+ {
+ Completed = true;
+ BountyCheckpoints[0]->Active = false;
+ BountyCheckpoints[0]->Destroy();
+ BountyCheckpoints.RemoveAt(0);
+ UE_LOG(LogTemp, Warning, TEXT(" You've Completed the Bounty!! Well done"));
+ return;
+ }
+
+ if (BountyCheckpoints[0] == nullptr)
+ {
+ UE_LOG(LogTemp, Fatal, TEXT("Missing checkpoint in bounty checkpoints, could've failed to spawn or cast"));
+ return;
+ }
+
+ // Destroy Actor and Shrink Array
+ BountyCheckpoints[0]->Active = false;
+ BountyCheckpoints[0]->Destroy();
+ BountyCheckpoints.RemoveAt(0);
+
+ // Set the new checkpoint in pos 0 to be active and listen for it's completion
+ BountyCheckpoints[0]->Active = true;
+ BountyCheckpoints[0]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint);
+
+}
+
+void ABountyClass::CollectRewards_Implementation()
+{
+ UE_LOG(LogTemp, Warning, TEXT("The player has gained $%d for completing the bounty!"), RewardMoney);
+}
+
+void ABountyClass::UpdateBountyCheckpoints(TMap> ReplacementCheckpoints)
+{
+ if (ReplacementCheckpoints.IsEmpty())
+ {
+ UE_LOG(LogTemp, Warning, TEXT("No Replacement Steps found"));
+ return;
+ }
+
+ FActorSpawnParameters SpawnParameters;
+ SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
+
+ for (auto ReplacementCheckpoint : ReplacementCheckpoints)
+ {
+ BountyCheckpoints[ReplacementCheckpoint.Key]->Destroy();
+ ReplacementCheckpointClass = ReplacementCheckpoint.Value;
+
+ FVector Loc = ReplacementCheckpointClass.GetDefaultObject()->GetCheckpointSpawnTransform().GetLocation();
+ FRotator Rot = ReplacementCheckpointClass.GetDefaultObject()->GetCheckpointSpawnTransform().GetRotation().Rotator();
+ ACheckpointClass* SpawnedCheckpoint = Cast(GetWorld()->SpawnActor(ReplacementCheckpoint.Value, Loc, Rot, SpawnParameters));
+
+ if (SpawnedCheckpoint == nullptr)
+ {
+ UE_LOG(LogTemp, Fatal, TEXT("The new checkpoint hasn't spawned in properly or can't be cast to"));
+ return;
+ }
+
+ BountyCheckpoints[ReplacementCheckpoint.Key] = SpawnedCheckpoint;
+ if (ReplacementCheckpoint.Key == 0)
+ {
+ BountyCheckpoints[ReplacementCheckpoint.Key]->Active = true;
+ BountyCheckpoints[ReplacementCheckpoint.Key]->CompletedCheckpoint.AddDynamic(this, &ABountyClass::IncrementBountyCheckpoint);
+ }
+ }
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h
new file mode 100644
index 00000000..4f65bae9
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyClass.h
@@ -0,0 +1,142 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "CheckpointClass.h"
+#include "GameFramework/Actor.h"
+#include "BountyClass.generated.h"
+
+DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCompletedFirstCheckpoint);
+
+UCLASS()
+class ENDLESSVENDETTA_API ABountyClass : public AActor
+{
+ GENERATED_BODY()
+
+ // Used to temp store value of incoming replacement checkpoint class
+ TSubclassOf ReplacementCheckpointClass;
+
+ bool BountyStarted = false;
+
+protected:
+ // ------- Properties Set in Editor --------------
+ UPROPERTY(EditDefaultsOnly, Category = "Bounty")
+ TArray> CheckpointsToSpawn;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Bounty")
+ int RewardMoney = 0;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Bounty")
+ FString BountyTitle;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Bounty")
+ FString BountyDesc;
+ // -----------------------------------------------
+
+ bool Completed = false;
+
+ /**
+ * Default is 2 as final step in most Bounties is to return to ship,
+ * which can't be completed. Change to 1 if that's not the case.
+ */
+ int MinCPsRequiredForCompletion = 2;
+
+ // Spawned in Checkpoints for this Bounty
+ TArray BountyCheckpoints;
+
+ // Spawns and stores this Bounties Checkpoints in order
+ void SpawnCheckpoints();
+
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+
+public:
+ // Broadcast when first checkpoint from this bounty is completed
+ FCompletedFirstCheckpoint CompletedFirstCheckpoint;
+
+ // ------ Getters for Bounty and Checkpoint Properties ------
+ bool IsCompleted()
+ {
+ return Completed;
+ }
+
+ FString GetBountyTitle()
+ {
+ return BountyTitle;
+ }
+
+ FString GetBountyDesc()
+ {
+ return BountyDesc;
+ }
+
+ FVector GetCheckpointLocation()
+ {
+ if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr)
+ {
+ return FVector(0, 0, 0);
+ }
+
+ return BountyCheckpoints[0]->GetCheckpointSpawnTransform().GetLocation();
+ }
+
+ FVector GetActiveWaypointLocation()
+ {
+ if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr)
+ {
+ return FVector(0, 0, 0);
+ }
+
+ return BountyCheckpoints[0]->GetWaypointLoc();
+ }
+
+ UTexture2D* GetActiveWaypointIcon()
+ {
+ if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr)
+ {
+ return nullptr;
+ }
+
+ return BountyCheckpoints[0]->GetWaypointIcon();
+ }
+
+ FString GetCheckpointDescription()
+ {
+ if (BountyCheckpoints.IsEmpty() || BountyCheckpoints[0] == nullptr)
+ {
+ return FString("No more Bounty checkpoints, check BountyClass.h GetCheckpointDescription()");
+ }
+
+ return BountyCheckpoints[0]->GetCheckpointDesc();
+ }
+ // ----------------------------------------------------------
+
+ // Sets default values for this actor's properties
+ ABountyClass();
+
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ // Called when a checkpoint is completed, handles moving onto next checkpoint and discarding the old one
+ UFUNCTION()
+ virtual void IncrementBountyCheckpoint();
+
+ // Collect Money in C++, any other special reward will be implemented in BP if neccessary
+ UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
+ void CollectRewards();
+
+ void DestroyReturnToShipStep()
+ {
+ if (BountyCheckpoints.Num() > 1)
+ {
+ UE_LOG(LogTemp, Warning, TEXT("Didn't Destroy final step as more than one steps still left in Bounty"));
+ }
+
+ BountyCheckpoints[0]->Destroy();
+ }
+
+ // Called by Bounty Director, replaces specified checkpoints to alter Bounty when player completes a side bounty
+ void UpdateBountyCheckpoints(TMap> ReplacementCheckpoints);
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.cpp
new file mode 100644
index 00000000..7cf44c2a
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.cpp
@@ -0,0 +1,152 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BountyDirector.h"
+
+#include "Components/ArrowComponent.h"
+
+// Sets default values
+ABountyDirector::ABountyDirector()
+{
+ // 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 every frame
+void ABountyDirector::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+// Called when the game starts or when spawned
+void ABountyDirector::BeginPlay()
+{
+ Super::BeginPlay();
+
+ PlayerChar = Cast(GetWorld()->GetFirstPlayerController()->GetCharacter());
+ if (!IsValid(PlayerChar)) UE_LOG(LogTemp, Fatal, TEXT("Players Character isn't being loaded in BeginPlay() in BountyDirector"));
+
+ // Setup a component for bounties to attach to on the player
+ for (UActorComponent* ActorComp : PlayerChar->GetComponentsByTag(UArrowComponent::StaticClass(), FName("Bounty")))
+ {
+ BountyAttachmentPoint = Cast(ActorComp);
+ if (!IsValid(BountyAttachmentPoint)) UE_LOG(LogTemp, Fatal, TEXT("There's no Bounty Attachment UArrowComponent on Players Char "));
+ break;
+ }
+
+ // Setup up starting Side Bounty indexes
+ for (int Index = 0; Index < 3; Index++)
+ {
+ CurrentSideBountyIndexes.Add(Index);
+ }
+
+ ActiveSideBounties.SetNum(3);
+ SpawnBountyAndItsSideBounties();
+ UpdateBountyDisplay();
+}
+
+void ABountyDirector::SpawnBountyAndItsSideBounties()
+{
+ UE_LOG(LogTemp, Warning, TEXT("Spawning Bounty..."));
+
+ if (BountyClassArray.IsEmpty()) return;
+ if (!IsValid(BountyClassArray[CurrentBountyIndex])) UE_LOG(LogTemp, Fatal, TEXT("Missing Bounty at Index: %d"), CurrentBountyIndex);
+
+ // Spawn Main Bounty which the current bounty index is pointing to
+ FActorSpawnParameters SpawnParams;
+ SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
+
+ AActor* BountyActor = GetWorld()->SpawnActor(BountyClassArray[CurrentBountyIndex], PlayerChar->GetActorLocation(), PlayerChar->GetActorRotation(), SpawnParams);
+ const FAttachmentTransformRules AttachmentTransformRules(EAttachmentRule::SnapToTarget, true);
+ BountyActor->AttachToComponent(BountyAttachmentPoint, AttachmentTransformRules);
+
+ ActiveBounty = Cast(BountyActor);
+ if (!IsValid(ActiveBounty)) UE_LOG(LogTemp, Fatal, TEXT("Failed to Cast to Bounty class"));
+
+ // WHEN MARCEL STOPS PLAYING WITH THE CHARACTER, ADD THIS BOUNTY TO PLAYERS ARRAY OF ACTIVE BOUNTIES!!!!!
+ ActiveBounty->CompletedFirstCheckpoint.AddDynamic(this, &ABountyDirector::DestroyActiveSideBounties);
+
+ // Spawn in Side Bounties which are linked to the Main Bounty
+ int ActiveSideBountyIndex = 0;
+ for (int CurrentSideBountyIndex : CurrentSideBountyIndexes)
+ {
+ if (SideBountyClassArray.Num() <= CurrentSideBountyIndex || !IsValid(SideBountyClassArray[CurrentSideBountyIndex])) continue;
+
+ AActor* SideBountyActor = GetWorld()->SpawnActor(SideBountyClassArray[CurrentSideBountyIndex], PlayerChar->GetActorLocation(), PlayerChar->GetActorRotation(), SpawnParams);
+ ASideBountyClass* SideBounty = Cast(SideBountyActor);
+ SideBounty->AttachToComponent(BountyAttachmentPoint, AttachmentTransformRules);
+
+ ActiveSideBounties[ActiveSideBountyIndex] = SideBounty;
+ SideBounty->ActiveSBC_Index = ActiveSideBountyIndex;
+ ActiveSideBounties[ActiveSideBountyIndex]->CompletedSideBounty.AddDynamic(this, &ABountyDirector::SideBountyCompleted);
+ // ONCE AGAIN WHEN MARCEL STOPS PLAYING WITH THE CHARACTER, ADD THIS SIDE BOUNTY TO PLAYERS ARRAY OF ACTIVE BOUNTIES!!!!!
+ ActiveSideBountyIndex++;
+ }
+}
+
+void ABountyDirector::UpdateBountyProgression()
+{
+ if (!IsValid(ActiveBounty)) return;
+
+ if (ActiveBounty->IsCompleted()) FinishActiveBounty();
+}
+
+void ABountyDirector::FinishActiveBounty()
+{
+ ActiveBounty->CollectRewards();
+
+ // Destroy old Bounties
+ ActiveBounty->DestroyReturnToShipStep();
+ ActiveBounty->Destroy();
+ DestroyActiveSideBounties();
+
+ // Increment Main and Side Bounty Indexes
+ CurrentBountyIndex++;
+ for (int i = 0; i < 3; i++)
+ {
+ CurrentSideBountyIndexes[i] += 3;
+ }
+
+ // Game Completion Check
+ if (CurrentBountyIndex >= BountyClassArray.Num())
+ {
+ UE_LOG(LogTemp, Warning, TEXT("Finished all bounties currently available in the game :)"));
+ ActiveBounty = nullptr;
+ UpdateBountyDisplay();
+ return;
+ }
+
+ SpawnBountyAndItsSideBounties();
+ UpdateBountyDisplay();
+}
+
+void ABountyDirector::DestroyActiveSideBounties()
+{
+ for (ASideBountyClass* SideBounty : ActiveSideBounties)
+ {
+ if (!IsValid(SideBounty)) continue;
+
+ // WHEN MARCEL STOPS PLAYING WITH PLAYERS CHARACTER, REMOVE THIS SIDE BOUNTY FROM ACTIVE BOUNTIES
+
+ SideBounty->DestroyCheckpoints();
+ SideBounty->Destroy();
+ }
+
+ UpdateBountyDisplay();
+}
+
+void ABountyDirector::SideBountyCompleted(int SideBountyIndex)
+{
+ UE_LOG(LogTemp,Warning,TEXT("Updating Main Bounties Checkpoints"));
+ ActiveBounty->UpdateBountyCheckpoints(ActiveSideBounties[SideBountyIndex]->GetReplacementCheckpoints());
+
+ // WHEN MARCEL STOPS PLAYING WITH PLAYER CHAR, REMOVE THIS SIDE BOUNTY FROM ACTIVE BOUNTIES
+ ActiveSideBounties[SideBountyIndex]->CollectRewards();
+ ActiveSideBounties[SideBountyIndex]->DestroyCheckpoints();
+ ActiveSideBounties[SideBountyIndex]->Destroy();
+
+ UpdateBountyDisplay();
+}
+
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h
new file mode 100644
index 00000000..c5c67311
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/BountyDirector.h
@@ -0,0 +1,98 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BountyClass.h"
+#include "SideBountyClass.h"
+#include "EndlessVendetta/EndlessVendettaCharacter.h"
+#include "GameFramework/Actor.h"
+#include "BountyDirector.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API ABountyDirector : public AActor
+{
+ GENERATED_BODY()
+
+ AEndlessVendettaCharacter* PlayerChar;
+
+ // Scene Component Used to Attach Bounties to
+ UArrowComponent* BountyAttachmentPoint;
+
+ // Ordered Array of Main Bounties
+ UPROPERTY(EditDefaultsOnly, Category = "Bounty")
+ TArray> BountyClassArray;
+
+ // Ordered Array of Side Bounties, in three's
+ UPROPERTY(EditDefaultsOnly, Category = "Bounty")
+ TArray> SideBountyClassArray;
+
+ int CurrentBountyIndex = 0;
+
+ TArray CurrentSideBountyIndexes;
+
+ UPROPERTY(VisibleAnywhere, Category = "Bounty")
+ ABountyClass* ActiveBounty;
+
+ UPROPERTY(VisibleAnywhere, Category = "Bounty")
+ TArray ActiveSideBounties;
+
+ // Checks if completed the bounty, and moves onto the next if so
+ UFUNCTION(BlueprintCallable, Category = "Bounty")
+ void UpdateBountyProgression();
+
+ void SpawnBountyAndItsSideBounties();
+
+ // Collect reward for current Bounty and prepare for the next
+ void FinishActiveBounty();
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+ /** Blueprint implemented function called from c++, handles aesthetic changes to bounty display
+ based on data from ActiveBC and ActiveSBC */
+ UFUNCTION(BlueprintImplementableEvent, Category = "bounty")
+ void UpdateBountyDisplay();
+
+ // Ran when a Side Bounty is completed and wants to update the active bounties checkpoints
+ UFUNCTION()
+ void SideBountyCompleted(int SideBountyIndex);
+
+ UFUNCTION()
+ void DestroyActiveSideBounties();
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ // Sets default values for this actor's properties
+ ABountyDirector();
+
+ // ------ Getters ------
+ UFUNCTION(BlueprintCallable, Category = "Bounty")
+ FString GetBountyTitle()
+ {
+ return !IsValid(ActiveBounty) ? FString("N/A") : ActiveBounty->GetBountyTitle();
+ }
+
+ UFUNCTION(BlueprintCallable, Category = "Bounty")
+ FString GetBountyDescription()
+ {
+ return !IsValid(ActiveBounty) ? FString("N/A") : ActiveBounty->GetBountyDesc();
+ }
+
+ UFUNCTION(BlueprintCallable, Category = "Bounty")
+ FString GetSideBountyTitle(int SideBountyIndex)
+ {
+ return (SideBountyIndex > 2 || SideBountyIndex < 0 || !IsValid(ActiveSideBounties[SideBountyIndex])) ? FString("N/A") : ActiveSideBounties[SideBountyIndex]->GetBountyTitle();
+ }
+
+ UFUNCTION(BlueprintCallable, Category = "Bounty")
+ FString GetSideBountyDescription(int SideBountyIndex)
+ {
+ return (SideBountyIndex > 2 || SideBountyIndex < 0 || !IsValid(ActiveSideBounties[SideBountyIndex])) ? FString("N/A") : ActiveSideBounties[SideBountyIndex]->GetBountyDesc();
+ }
+
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp
new file mode 100644
index 00000000..630725e4
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.cpp
@@ -0,0 +1,27 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "CheckpointClass.h"
+
+// Sets default values
+ACheckpointClass::ACheckpointClass()
+{
+ // 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 ACheckpointClass::BeginPlay()
+{
+ Super::BeginPlay();
+
+}
+
+// Called every frame
+void ACheckpointClass::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h
new file mode 100644
index 00000000..6991181a
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h
@@ -0,0 +1,71 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Actor.h"
+#include "CheckpointClass.generated.h"
+
+DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCompletedCheckpoint);
+
+UCLASS()
+class ENDLESSVENDETTA_API ACheckpointClass : public AActor
+{
+ GENERATED_BODY()
+
+ // ------ Properties set from Editor ------
+ UPROPERTY(EditDefaultsOnly, Category = "Checkpoint")
+ FString CheckpointDescription;
+ UPROPERTY(EditDefaultsOnly, Category = "Checkpoint")
+ FVector WaypointLoc;
+ UPROPERTY(EditDefaultsOnly, Category = "Checkpoint")
+ UTexture2D* WaypointIcon;
+ UPROPERTY(EditDefaultsOnly, Category = "Checkpoint")
+ FTransform CheckpointSpawnTransform;
+ // ----------------------------------------
+
+ UFUNCTION(BlueprintCallable, Category = "Checkpoint")
+ void BroadcastCompletion()
+ {
+ UE_LOG(LogTemp, Warning, TEXT("Completed Checkpoint"));
+ CompletedCheckpoint.Broadcast();
+ }
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+public:
+ FCompletedCheckpoint CompletedCheckpoint;
+
+ UPROPERTY(BlueprintReadOnly, Category = "Checkpoint")
+ bool Active = false;
+
+ // ------ Getters for CP Properties ------
+ FString GetCheckpointDesc()
+ {
+ return CheckpointDescription;
+ }
+ FVector GetWaypointLoc()
+ {
+ return WaypointLoc;
+ }
+ UTexture2D* GetWaypointIcon()
+ {
+ return WaypointIcon;
+ }
+ FTransform GetCheckpointSpawnTransform()
+ {
+ return CheckpointSpawnTransform;
+ }
+ // ---------------------------------------
+
+ // Sets default values for this actor's properties
+ ACheckpointClass();
+
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp b/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp
new file mode 100644
index 00000000..7d63f3ba
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.cpp
@@ -0,0 +1,36 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "SideBountyClass.h"
+
+void ASideBountyClass::BeginPlay()
+{
+ Super::BeginPlay();
+
+ MinCPsRequiredForCompletion = 1;
+}
+
+void ASideBountyClass::IncrementBountyCheckpoint()
+{
+ Super::IncrementBountyCheckpoint();
+
+ if (Completed)
+ {
+
+ CompletedSideBounty.Broadcast(ActiveSBC_Index);
+ }
+}
+
+void ASideBountyClass::DestroyCheckpoints()
+{
+ for (int i = 0; i < BountyCheckpoints.Num(); i++)
+ {
+ if (BountyCheckpoints[i] == nullptr)
+ {
+ continue;
+ }
+
+ BountyCheckpoints[i]->Destroy();
+ }
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.h
new file mode 100644
index 00000000..9c0dd1e2
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/SideBountyClass.h
@@ -0,0 +1,35 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BountyClass.h"
+#include "SideBountyClass.generated.h"
+
+DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FCompletedSideBounty, int, SB_Index);
+
+UCLASS()
+class ENDLESSVENDETTA_API ASideBountyClass : public ABountyClass
+{
+ GENERATED_BODY()
+
+ UPROPERTY(EditDefaultsOnly, Category = "Side Bounty")
+ TMap> ReplacementCheckpoints;
+
+protected:
+ virtual void BeginPlay() override;
+
+public:
+ FCompletedSideBounty CompletedSideBounty;
+
+ int ActiveSBC_Index;
+
+ TMap> GetReplacementCheckpoints()
+ {
+ return ReplacementCheckpoints;
+ }
+
+ virtual void IncrementBountyCheckpoint() override;
+
+ void DestroyCheckpoints();
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs b/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs
index 55a052ca..3149aa96 100644
--- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs
+++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendetta.Build.cs
@@ -8,6 +8,10 @@ public class EndlessVendetta : ModuleRules
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
- PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "EnhancedInput" });
+ PublicDependencyModuleNames.AddRange(new string[]
+ {
+ "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "EnhancedInput", "AIModule",
+ "GameplayTasks", "NavigationSystem", "UMG", "Slate", "SlateCore", "Niagara", "NiagaraCore", "NiagaraShader"
+ });
}
-}
+}
\ No newline at end of file
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp
index 59310e24..d27bdc42 100644
--- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp
+++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp
@@ -1,12 +1,14 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#include "EndlessVendettaCharacter.h"
-#include "EndlessVendettaProjectile.h"
#include "Animation/AnimInstance.h"
#include "Camera/CameraComponent.h"
#include "Components/CapsuleComponent.h"
#include "EnhancedInputComponent.h"
#include "EnhancedInputSubsystems.h"
+#include "AI/EnemyCharacter.h"
+#include "GameFramework/CharacterMovementComponent.h"
+#include "Kismet/GameplayStatics.h"
//////////////////////////////////////////////////////////////////////////
@@ -16,10 +18,12 @@ AEndlessVendettaCharacter::AEndlessVendettaCharacter()
{
// Character doesnt have a rifle at start
bHasRifle = false;
-
+
+ //Enable Crouching
+ GetCharacterMovement()->GetNavAgentPropertiesRef().bCanCrouch = true;
// Set size for collision capsule
GetCapsuleComponent()->InitCapsuleSize(55.f, 96.0f);
-
+
// Create a CameraComponent
FirstPersonCameraComponent = CreateDefaultSubobject(TEXT("FirstPersonCamera"));
FirstPersonCameraComponent->SetupAttachment(GetCapsuleComponent());
@@ -34,7 +38,6 @@ AEndlessVendettaCharacter::AEndlessVendettaCharacter()
Mesh1P->CastShadow = false;
//Mesh1P->SetRelativeRotation(FRotator(0.9f, -19.19f, 5.2f));
Mesh1P->SetRelativeLocation(FVector(-30.f, 0.f, -150.f));
-
}
void AEndlessVendettaCharacter::BeginPlay()
@@ -50,7 +53,16 @@ void AEndlessVendettaCharacter::BeginPlay()
Subsystem->AddMappingContext(DefaultMappingContext, 0);
}
}
-
+ AActor* GadgetManagerActor = GetWorld()->SpawnActor(GadgetManagerClass, GetActorLocation(), GetActorRotation());
+ GadgetManager = Cast(GadgetManagerActor);
+ FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true);
+ GadgetManagerActor->AttachToComponent(GetRootComponent(), AttachmentRules);
+ for (UActorComponent* PlayersCamera : GetComponentsByTag(UCameraComponent::StaticClass(), FName("PlayersCamera")))
+ {
+ UE_LOG(LogTemp, Warning, TEXT("An actor component with PlayersCamera tag has been found"));
+ GadgetManager->SpawnGadgets(Cast(PlayersCamera));
+ break;
+ }
}
//////////////////////////////////////////////////////////////////////////// Input
@@ -69,6 +81,234 @@ void AEndlessVendettaCharacter::SetupPlayerInputComponent(class UInputComponent*
//Looking
EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::Look);
+
+ // Gadget Toggling
+ EnhancedInputComponent->BindAction(ReconAction, ETriggerEvent::Started, this, &AEndlessVendettaCharacter::ToggleRecon);
+ EnhancedInputComponent->BindAction(CombatAction, ETriggerEvent::Started, this, &AEndlessVendettaCharacter::ToggleCombat);
+
+ //Weapon Switching
+ EnhancedInputComponent->BindAction(EquipPrimaryWeapon, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::EquipPrimary);
+ EnhancedInputComponent->BindAction(EquipSecondaryWeapon, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::EquipSecondary);
+
+ //Weapon Shooting
+ EnhancedInputComponent->BindAction(TapShootAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::FireCaller);
+ EnhancedInputComponent->BindAction(TapShootAction, ETriggerEvent::Completed, this, &AEndlessVendettaCharacter::StopFire);
+ EnhancedInputComponent->BindAction(GunAimInAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::GunRightClick);
+ EnhancedInputComponent->BindAction(GunAimInAction, ETriggerEvent::Completed, this, &AEndlessVendettaCharacter::StopGunRightClick);
+
+ //Weapon Reloading
+ EnhancedInputComponent->BindAction(GunReloadAction, ETriggerEvent::Triggered, this, &AEndlessVendettaCharacter::GunReload);
+
+ //Crouching
+ EnhancedInputComponent->BindAction(CrouchAction, ETriggerEvent::Started, this, &AEndlessVendettaCharacter::SetCrouch);
+ EnhancedInputComponent->BindAction(CrouchAction, ETriggerEvent::Completed, this, &AEndlessVendettaCharacter::SetUnCrouch);
+ }
+}
+
+void AEndlessVendettaCharacter::SetCrouch()
+{
+ Crouch();
+}
+
+void AEndlessVendettaCharacter::SetUnCrouch()
+{
+ UnCrouch();
+}
+
+float AEndlessVendettaCharacter::TakeDamage(const float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)
+{
+ CurrentHealth -= DamageAmount;
+ if (CurrentHealth <= 0)
+ {
+ CurrentHealth = 0;
+ UE_LOG(LogTemp, Warning, TEXT("Player is dead"));
+ }
+
+ return Super::TakeDamage(DamageAmount, DamageEvent, EventInstigator, DamageCauser);
+}
+
+void AEndlessVendettaCharacter::ToggleRecon()
+{
+ if (IsValid(PrimaryWeapon)) EquipPrimary();
+ if (IsValid(SecondaryWeapon)) EquipSecondary();
+
+ if (GadgetManager->IsReconEquipped())
+ {
+ GadgetManager->TryToUnequipRecon();
+ return;
+ }
+
+ if (GadgetManager->IsCombatEquipped() && !GadgetManager->TryToUnequipCombat())
+ {
+ // Do nothing if combat is equipped and can't be unequipped at this moment
+ return;
+ }
+
+ GadgetManager->EquipRecon();
+}
+
+void AEndlessVendettaCharacter::ToggleCombat()
+{
+ if (IsValid(PrimaryWeapon)) EquipPrimary();
+ if (IsValid(SecondaryWeapon)) EquipSecondary();
+
+ if (GadgetManager->IsCombatEquipped())
+ {
+ GadgetManager->TryToUnequipCombat();
+ return;
+ }
+
+ if (GadgetManager->IsReconEquipped() && !GadgetManager->TryToUnequipRecon())
+ {
+ // Do nothing if recon is equipped and can't be unequipped at the moment
+ return;
+ }
+
+ GadgetManager->EquipCombat();
+}
+
+
+//When 1 is pressed it calls EquipPrimary
+void AEndlessVendettaCharacter::EquipPrimary()
+{
+ if (IsValid(PrimaryWeapon))
+ {
+ PrimaryWeapon->Destroy();
+ this->GetFirstPersonCameraComponent()->SetFieldOfView(90);
+ PrimaryWeapon = nullptr;
+ bHasRifle = false;
+ return;
+ }
+
+ if (IsValid(SecondaryWeapon)) EquipSecondary();
+
+ if (GadgetManager->IsReconEquipped() && !GadgetManager->TryToUnequipRecon()) return;
+ if (GadgetManager->IsCombatEquipped() && !GadgetManager->TryToUnequipCombat()) return;
+
+
+ FActorSpawnParameters spawnParams;
+ spawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
+ FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true);
+
+ bHasRifle = true;
+ //Creating a new actor object called PrimaryWeapon that is based off primaryweaponClass
+ AActor* PrimaryWeaponActor = GetWorld()->SpawnActor(PrimaryWeaponClass, spawnParams);
+ PrimaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint"));
+ //Changing PrimaryWeaponActor to ABaseWeaponClass type instead of actor and storing it into PrimaryWeapon which is a ABaseClass Object
+ //We do this because we need to check if PrimaryWeapon is equipped and we want primaryweapon to be ABaseWeapon type and not a generic AActor
+ PrimaryWeapon = Cast(PrimaryWeaponActor);
+
+}
+
+void AEndlessVendettaCharacter::EquipSecondary()
+{
+ if (IsValid(SecondaryWeapon))
+ {
+ SecondaryWeapon->Destroy();
+ this->GetFirstPersonCameraComponent()->SetFieldOfView(90);
+ SecondaryWeapon = nullptr;
+ bHasRifle = false;
+ return;
+ }
+
+ if (IsValid(PrimaryWeapon)) EquipPrimary();
+
+ if (GadgetManager->IsReconEquipped() && !GadgetManager->TryToUnequipRecon()) return;
+ if (GadgetManager->IsCombatEquipped() && !GadgetManager->TryToUnequipCombat()) return;
+
+
+ FActorSpawnParameters spawnParams;
+ spawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
+ FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true);
+
+ bHasRifle = true;
+ AActor* SecondaryWeaponActor = GetWorld()->SpawnActor(SecondaryWeaponClass, spawnParams);
+ SecondaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint"));
+ SecondaryWeapon = Cast(SecondaryWeaponActor);
+}
+
+//Calls the fire function in the baseWeaponClass
+void AEndlessVendettaCharacter::FireCaller()
+{
+ if (IsValid(PrimaryWeapon))
+ {
+ PrimaryWeapon->Fire();
+ }
+ if (IsValid(SecondaryWeapon))
+ {
+ SecondaryWeapon->Fire();
+ }
+}
+
+void AEndlessVendettaCharacter::StopFire()
+{
+ if (IsValid(PrimaryWeapon))
+ {
+ PrimaryWeapon->CancelFire();
+ }
+ if (IsValid(SecondaryWeapon))
+ {
+ SecondaryWeapon->CancelFire();
+ }
+}
+
+void AEndlessVendettaCharacter::GunRightClick()
+{
+ if (IsValid(PrimaryWeapon) && !bIsScoped)
+ {
+ for (UActorComponent* actorComp : this->GetComponentsByTag(UArrowComponent::StaticClass(), FName("ScopedLocationArrow")))
+ {
+ ScopedLocationArrow = Cast(actorComp);
+ break;
+ }
+ if (!IsValid(ScopedLocationArrow)) return;
+ PrimaryWeapon->SetActorLocation(ScopedLocationArrow->GetComponentLocation());
+ bIsScoped = true;
+ PrimaryWeapon->WeaponScopedFire();
+ this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually
+ }
+ if (IsValid(SecondaryWeapon) && !bIsScoped)
+ {
+ for (UActorComponent* actorComp : this->GetComponentsByTag(UArrowComponent::StaticClass(), FName("ScopedLocationArrow")))
+ {
+ ScopedLocationArrow = Cast(actorComp);
+ break;
+ }
+ if (!IsValid(ScopedLocationArrow)) return;
+ bIsScoped = true;
+ SecondaryWeapon->WeaponScopedFire();
+ SecondaryWeapon->SetActorLocation(ScopedLocationArrow->GetComponentLocation());
+ this->GetFirstPersonCameraComponent()->SetFieldOfView(50); //change this number to a number you can change in editor eventually
+ }
+}
+
+void AEndlessVendettaCharacter::StopGunRightClick()
+{
+ if (IsValid(PrimaryWeapon))
+ {
+ bIsScoped = false;
+ PrimaryWeapon->WeaponScopedFire();
+ PrimaryWeapon->SetActorRelativeLocation(FVector(0,0,0));
+ this->GetFirstPersonCameraComponent()->SetFieldOfView(90);
+ }
+ if (IsValid(SecondaryWeapon))
+ {
+ bIsScoped = false;
+ SecondaryWeapon->WeaponScopedFire();
+ SecondaryWeapon->SetActorRelativeLocation(FVector(0,0,0));
+ this->GetFirstPersonCameraComponent()->SetFieldOfView(90);
+ }
+}
+
+void AEndlessVendettaCharacter::GunReload()
+{
+ if (IsValid(PrimaryWeapon))
+ {
+ PrimaryWeapon->WeaponReload();
+ }
+ if (IsValid(SecondaryWeapon))
+ {
+ SecondaryWeapon->WeaponReload();
}
}
@@ -99,6 +339,7 @@ void AEndlessVendettaCharacter::Look(const FInputActionValue& Value)
}
}
+
void AEndlessVendettaCharacter::SetHasRifle(bool bNewHasRifle)
{
bHasRifle = bNewHasRifle;
@@ -107,4 +348,4 @@ void AEndlessVendettaCharacter::SetHasRifle(bool bNewHasRifle)
bool AEndlessVendettaCharacter::GetHasRifle()
{
return bHasRifle;
-}
\ No newline at end of file
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h
index 667db81c..3fb99716 100644
--- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h
+++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h
@@ -3,10 +3,14 @@
#pragma once
#include "CoreMinimal.h"
+#include "WeaponSystem/BaseWeaponClass.h"
#include "GameFramework/Character.h"
#include "InputActionValue.h"
+#include "Components/ArrowComponent.h"
+#include "GadgetSystem/GadgetManager.h"
#include "EndlessVendettaCharacter.generated.h"
+class UWeaponInventory;
class UInputComponent;
class USkeletalMeshComponent;
class USceneComponent;
@@ -29,25 +33,59 @@ class AEndlessVendettaCharacter : public ACharacter
/** MappingContext */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
- class UInputMappingContext* DefaultMappingContext;
+ UInputMappingContext* DefaultMappingContext;
/** Jump Input Action */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
- class UInputAction* JumpAction;
+ UInputAction* JumpAction;
/** Move Input Action */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
- class UInputAction* MoveAction;
+ UInputAction* MoveAction;
+ // Gadget Actions
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ UInputAction* ReconAction;
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ UInputAction* CombatAction;
+
+ /** Weapon Equip Action */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ UInputAction* EquipPrimaryWeapon;
+
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ UInputAction* EquipSecondaryWeapon;
+
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ class UInputAction* TapShootAction;
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ class UInputAction* GunAimInAction;
+
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ class UInputAction* GunReloadAction;
+
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
+ UInputAction* CrouchAction;
+
public:
AEndlessVendettaCharacter();
+ UPROPERTY(EditDefaultsOnly, Category = "Stats")
+ float CurrentHealth = 100.0f;
+ UPROPERTY(EditDefaultsOnly, Category = "Stats")
+ float MaxHealth = 100.0f;
+ UPROPERTY(EditDefaultsOnly, Category = "Stats")
+ float DefaultHealth = 100.0f;
+
protected:
- virtual void BeginPlay();
+ virtual void BeginPlay() override;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Gadget")
+ TSubclassOf GadgetManagerClass;
+ AGadgetManager* GadgetManager;
public:
-
/** Look Input Action */
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
class UInputAction* LookAction;
@@ -64,6 +102,35 @@ public:
UFUNCTION(BlueprintCallable, Category = Weapon)
bool GetHasRifle();
+ UPROPERTY(EditAnywhere, Category = "Weapons")
+ TSubclassOf PrimaryWeaponClass;
+
+ UPROPERTY(EditAnywhere, Category = "Weapons")
+ TSubclassOf SecondaryWeaponClass;
+
+ ABaseWeaponClass* PrimaryWeapon;
+ ABaseWeaponClass* SecondaryWeapon;
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ void FireCaller();
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ void GunRightClick();
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ void StopGunRightClick();
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ void GunReload();
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ void StopFire();
+
+ UArrowComponent* ScopedLocationArrow;
+
+ UPROPERTY(EditAnywhere, Category = "Dont Touch")
+ bool bIsScoped;
+
protected:
/** Called for movement input */
void Move(const FInputActionValue& Value);
@@ -71,17 +138,29 @@ protected:
/** Called for looking input */
void Look(const FInputActionValue& Value);
+ void ToggleRecon();
+ void ToggleCombat();
+
+ void EquipPrimary();
+ void EquipSecondary();
+
+
protected:
// APawn interface
virtual void SetupPlayerInputComponent(UInputComponent* InputComponent) override;
// End of APawn interface
public:
- /** Returns Mesh1P subobject **/
+ UFUNCTION(BlueprintCallable, Category = "Stealth")
+ void SetCrouch();
+ UFUNCTION(BlueprintCallable, Category = "Stealth")
+ void SetUnCrouch();
+
+ /** Returns Mesh1P Sub-object **/
USkeletalMeshComponent* GetMesh1P() const { return Mesh1P; }
- /** Returns FirstPersonCameraComponent subobject **/
+ /** Returns FirstPersonCameraComponent Sub-object **/
UCameraComponent* GetFirstPersonCameraComponent() const { return FirstPersonCameraComponent; }
-
+ UFUNCTION(BlueprintCallable, Category = "Damage Control")
+ virtual float TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override;
};
-
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp
index c6255c57..bbba7bcd 100644
--- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp
+++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp
@@ -3,12 +3,38 @@
#include "EndlessVendettaGameMode.h"
#include "EndlessVendettaCharacter.h"
#include "UObject/ConstructorHelpers.h"
+#include "EndlessVendetta/AI/EnemyCharacter.h"
+#include "EndlessVendetta/AI/AIControlHub.h"
+#include "Kismet/GameplayStatics.h"
+#include "Engine/DamageEvents.h"
-AEndlessVendettaGameMode::AEndlessVendettaGameMode()
- : Super()
+AEndlessVendettaGameMode::AEndlessVendettaGameMode() : Super()
{
// set default pawn class to our Blueprinted character
static ConstructorHelpers::FClassFinder PlayerPawnClassFinder(TEXT("/Game/FirstPerson/Blueprints/BP_FirstPersonCharacter"));
DefaultPawnClass = PlayerPawnClassFinder.Class;
}
+
+void AEndlessVendettaGameMode::KillAllEnemies()
+{
+ TArray EnemyCharacters;
+ UGameplayStatics::GetAllActorsOfClass(GetWorld(), AEnemyCharacter::StaticClass(), EnemyCharacters);
+ for (AActor* EnemyActor : EnemyCharacters)
+ {
+ AEnemyCharacter* EnemyCharacter = Cast(EnemyActor);
+ EnemyCharacter->TakeDamage(EnemyCharacter->MaxHealth, FDamageEvent(), GetWorld()->GetFirstPlayerController(), GetWorld()->GetFirstPlayerController()->GetOwner());
+ }
+}
+
+void AEndlessVendettaGameMode::SetLocalAIAlertLevel(int NewAlertLevel)
+{
+ TArray AIControlHubActors;
+ UGameplayStatics::GetAllActorsOfClass(GetWorld(), AAIControlHub::StaticClass(), AIControlHubActors);
+ for (AActor* AIControlHubActor : AIControlHubActors)
+ {
+ AAIControlHub* AIControlHub = Cast(AIControlHubActor);
+ AIControlHub->SetPlayerLastKnownLocation();
+ AIControlHub->SetAlertLevel(NewAlertLevel);
+ }
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h
index 97d6b063..420ab589 100644
--- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h
+++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h
@@ -13,7 +13,10 @@ class AEndlessVendettaGameMode : public AGameModeBase
public:
AEndlessVendettaGameMode();
+
+ UFUNCTION(Exec, Category = ExecFunctions)
+ void KillAllEnemies();
+
+ UFUNCTION(Exec, Category = ExecFunctions)
+ void SetLocalAIAlertLevel(int NewAlertLevel);
};
-
-
-
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaProjectile.cpp b/EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/EndlessVendettaProjectile.cpp
similarity index 100%
rename from EndlessVendetta/Source/EndlessVendetta/EndlessVendettaProjectile.cpp
rename to EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/EndlessVendettaProjectile.cpp
diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaProjectile.h b/EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/EndlessVendettaProjectile.h
similarity index 100%
rename from EndlessVendetta/Source/EndlessVendetta/EndlessVendettaProjectile.h
rename to EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/EndlessVendettaProjectile.h
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_PickUpComponent.cpp b/EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_PickUpComponent.cpp
similarity index 100%
rename from EndlessVendetta/Source/EndlessVendetta/TP_PickUpComponent.cpp
rename to EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_PickUpComponent.cpp
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_PickUpComponent.h b/EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_PickUpComponent.h
similarity index 95%
rename from EndlessVendetta/Source/EndlessVendetta/TP_PickUpComponent.h
rename to EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_PickUpComponent.h
index a59366e7..62b5655a 100644
--- a/EndlessVendetta/Source/EndlessVendetta/TP_PickUpComponent.h
+++ b/EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_PickUpComponent.h
@@ -4,7 +4,7 @@
#include "CoreMinimal.h"
#include "Components/SphereComponent.h"
-#include "EndlessVendettaCharacter.h"
+#include "EndlessVendetta/EndlessVendettaCharacter.h"
#include "TP_PickUpComponent.generated.h"
// Declaration of the delegate that will be called when someone picks this up
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_WeaponComponent.cpp b/EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_WeaponComponent.cpp
similarity index 98%
rename from EndlessVendetta/Source/EndlessVendetta/TP_WeaponComponent.cpp
rename to EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_WeaponComponent.cpp
index bd7c0deb..50dfa1d8 100644
--- a/EndlessVendetta/Source/EndlessVendetta/TP_WeaponComponent.cpp
+++ b/EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_WeaponComponent.cpp
@@ -2,7 +2,7 @@
#include "TP_WeaponComponent.h"
-#include "EndlessVendettaCharacter.h"
+#include "EndlessVendetta/EndlessVendettaCharacter.h"
#include "EndlessVendettaProjectile.h"
#include "GameFramework/PlayerController.h"
#include "Camera/PlayerCameraManager.h"
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_WeaponComponent.h b/EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_WeaponComponent.h
similarity index 100%
rename from EndlessVendetta/Source/EndlessVendetta/TP_WeaponComponent.h
rename to EndlessVendetta/Source/EndlessVendetta/FirstPersonTemplateClasses/TP_WeaponComponent.h
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/CombatGadget.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/CombatGadget.cpp
new file mode 100644
index 00000000..55976a01
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/CombatGadget.cpp
@@ -0,0 +1,5 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "CombatGadget.h"
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/CombatGadget.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/CombatGadget.h
new file mode 100644
index 00000000..7175c889
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/CombatGadget.h
@@ -0,0 +1,17 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GadgetBase.h"
+#include "CombatGadget.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API ACombatGadget : public AGadgetBase
+{
+ GENERATED_BODY()
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.cpp
new file mode 100644
index 00000000..a028af77
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.cpp
@@ -0,0 +1,92 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "GadgetBase.h"
+
+#include "EnhancedInputComponent.h"
+#include "EnhancedInputSubsystems.h"
+
+// Sets default values
+AGadgetBase::AGadgetBase()
+{
+ // 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 AGadgetBase::BeginPlay()
+{
+ Super::BeginPlay();
+
+ PlayerController = GetWorld()->GetFirstPlayerController();
+}
+
+// Called every frame
+void AGadgetBase::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+
+void AGadgetBase::Equip()
+{
+ SetActorRelativeLocation(EquippedOffset);
+ Equipped = true;
+
+
+
+ UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer());
+ Subsystem->AddMappingContext(GadgetMappingContext, 2);
+ UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerController->InputComponent);
+ EnhancedInputComponent->BindAction(ActivateAction, ETriggerEvent::Started, this, &AGadgetBase::Activate);
+}
+
+bool AGadgetBase::Unequip()
+{
+ if (GadgetInUse && !UnequippableWhenInUse) return false;
+
+ SetActorRelativeLocation(UnequippedOffset);
+ Equipped = false;
+
+ UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer());
+ Subsystem->RemoveMappingContext(GadgetMappingContext);
+ UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerController->InputComponent);
+ EnhancedInputComponent->ClearActionBindings();
+
+ return true;
+}
+
+void AGadgetBase::Activate()
+{
+ StartInUseTimer();
+}
+
+void AGadgetBase::FinishedUsing()
+{
+ UE_LOG(LogTemp, Warning, TEXT("Gadget is no longer being used"));
+
+ GadgetInUse = false;
+ InUseHandle.Invalidate();
+
+ StartGadgetCooldown();
+}
+
+// -------------- Timers --------------
+
+void AGadgetBase::StartGadgetCooldown()
+{
+ GadgetOnCooldown = true;
+ GetWorld()->GetTimerManager().SetTimer(CooldownHandle, this, &AGadgetBase::ReadyGadget, CooldownTime, false);
+}
+
+void AGadgetBase::StartInUseTimer()
+{
+ UE_LOG(LogTemp, Warning, TEXT("Gadget In Use Timer Started"));
+
+ GadgetInUse = true;
+ GetWorld()->GetTimerManager().SetTimer(InUseHandle, this, &AGadgetBase::FinishedUsing, GadgetMaxUptime, false);
+}
+
+
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.h
new file mode 100644
index 00000000..a0b65dce
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetBase.h
@@ -0,0 +1,93 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "EnhancedInputSubsystemInterface.h"
+#include "GameFramework/Actor.h"
+#include "GadgetBase.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API AGadgetBase : public AActor
+{
+ GENERATED_BODY()
+
+ APlayerController* PlayerController;
+
+ FTimerHandle CooldownHandle;
+ void StartGadgetCooldown();
+ bool GadgetOnCooldown = false;
+
+ FTimerHandle InUseHandle;
+ void StartInUseTimer();
+ bool GadgetInUse = false;
+
+ void ReadyGadget()
+ {
+ UE_LOG(LogTemp, Warning, TEXT("Gadget is now ready to be used again"));
+ GadgetOnCooldown = false;
+ }
+
+protected:
+ UPROPERTY(EditDefaultsOnly, Category = "Gadget")
+ FVector EquippedOffset = FVector(0, 0, 0);
+
+ UPROPERTY(EditDefaultsOnly, Category = "Gadget")
+ FRotator GadgetRotation = FRotator(0, 0, 0);
+
+ UPROPERTY(EditDefaultsOnly, CAtegory = "Gadget")
+ FVector UnequippedOffset = FVector(0, 0, -1000);
+
+ UPROPERTY(EditDefaultsOnly, cATEGORY = "Gadget")
+ float GadgetMaxUptime;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Gadget")
+ float CooldownTime;
+
+ UPROPERTY(EditDefaultsOnly, CAtegory = "Gadget")
+ bool UnequippableWhenInUse = false;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Gadget")
+ UInputMappingContext* GadgetMappingContext;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Gadget")
+ UInputAction* ActivateAction;
+
+ // Used by child classes to run custom gadget behaviour
+ virtual void Activate();
+
+ // Starts Cooldown and automatically unequips gadget, used by child classes to implement custom behaviour
+ virtual void FinishedUsing();
+
+ bool GadgetCantBeUsed()
+ {
+ return GadgetOnCooldown|| GadgetInUse;
+ }
+
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+public:
+ bool Equipped = false;
+
+ void Equip();
+
+ // Return true if unequip succeeds
+ bool Unequip();
+
+ FVector GetUnequippedOffset()
+ {
+ return UnequippedOffset;
+ }
+
+ FRotator GetGadgetSpawnRotation()
+ {
+ return GadgetRotation;
+ }
+ // Sets default values for this actor's properties
+ AGadgetBase();
+
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/Explosive.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/Explosive.cpp
new file mode 100644
index 00000000..71262298
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/Explosive.cpp
@@ -0,0 +1,90 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "Explosive.h"
+
+#include "CollisionDebugDrawingPublic.h"
+#include "Kismet/KismetMathLibrary.h"
+#include "Engine/DamageEvents.h"
+#include "EndlessVendetta/AI/AICharacter.h"
+
+// Sets default values
+AExplosive::AExplosive()
+{
+ // 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 AExplosive::BeginPlay()
+{
+ Super::BeginPlay();
+
+ if (ExplosionDelayInSeconds <= 0)
+ {
+ Explosion();
+ return;
+ }
+
+ FTimerHandle ExplosionHandle;
+ GetWorld()->GetTimerManager().SetTimer(ExplosionHandle, this, &AExplosive::Explosion, ExplosionDelayInSeconds);
+}
+
+// Called every frame
+void AExplosive::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+
+void AExplosive::Explosion()
+{
+ float PitchAngleIncrement = 180.f / ShrapnelPitchDensity;
+ float YawAngleIncrement = 360.f / ShrapnelYawDensity;
+
+ FHitResult OutHit;
+ FCollisionQueryParams QueryParams = FCollisionQueryParams::DefaultQueryParam;
+ QueryParams.bTraceComplex = false;
+ QueryParams.AddIgnoredActor(this);
+ FVector LT_Start = GetActorLocation();
+
+ for(int y = 1; y <= ShrapnelPitchDensity; y++)
+ {
+ for (int x = 1; x <= ShrapnelYawDensity; x++)
+ {
+ FRotator ShrapnelRotation = FRotator(-90.f + (y * PitchAngleIncrement), x * YawAngleIncrement, 0.f);
+ FVector LT_End = LT_Start + (UKismetMathLibrary::GetForwardVector(ShrapnelRotation) * ShrapnelTravelDistance);
+ bool HitSomething = GetWorld()->LineTraceSingleByChannel(OutHit, LT_Start, LT_End, ECC_Camera, QueryParams);
+
+ if (DrawDebugLines) DrawShrapnelDebugLines(HitSomething, LT_Start, LT_End, OutHit.ImpactPoint);
+ if (!HitSomething || !OutHit.GetActor()->ActorHasTag(FName("Enemy")) || OutHit.GetActor()->ActorHasTag(FName("Dead"))) continue;
+
+ float HitDistance = FVector::Distance(LT_Start, OutHit.ImpactPoint);
+ float DamageToApply = ShrapnelDamage;
+ if (HitDistance > ShrapnelDamageFalloffDistance)
+ {
+ // Damage linearly decrease from falloff distance to maximum travel distance, using straight line equation y = mx + c
+ float Magnitude = ShrapnelDamage / (ShrapnelDamageFalloffDistance - ShrapnelTravelDistance);
+ float DMG_Intercept = ShrapnelDamage - (Magnitude * ShrapnelDamageFalloffDistance);
+ DamageToApply = (Magnitude * HitDistance) + DMG_Intercept;
+ }
+ // When merged, call philips take damage function here
+ UE_LOG(LogTemp, Warning, TEXT("A shrapnel piece hit %s, dealing %f damage"), *OutHit.GetActor()->GetName(), DamageToApply);
+ Cast(OutHit.GetActor())->TakeDamage(DamageToApply, FPointDamageEvent(), GetWorld()->GetFirstPlayerController(), this);
+ }
+ }
+ PlayExplosionEffects();
+}
+
+void AExplosive::DrawShrapnelDebugLines(bool HitSomething, FVector StartVector, FVector EndVector, FVector ImpactPoint)
+{
+ if (!HitSomething)
+ {
+ DrawDebugLine(GetWorld(), StartVector, EndVector, FColor::Green, false, 5, 0, 2);
+ return;
+ }
+ DrawDebugLine(GetWorld(), ImpactPoint, EndVector, FColor::Red, false, 5, 0, 2);
+ DrawDebugLine(GetWorld(), StartVector, ImpactPoint, FColor::Green, false, 5, 0, 2);
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/Explosive.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/Explosive.h
new file mode 100644
index 00000000..4ffb2806
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/Explosive.h
@@ -0,0 +1,63 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Actor.h"
+#include "Explosive.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API AExplosive : public AActor
+{
+ GENERATED_BODY()
+
+ void DrawShrapnelDebugLines(bool HitSomething, FVector StartVector, FVector EndVector, FVector ImpactPoint);
+
+protected:
+ // Maximum amount of damage dealt by an individual piece of shrapnel
+ UPROPERTY(EditDefaultsOnly, Category = "Explosion")
+ float ShrapnelDamage = 10;
+
+ // Number of shrapnel pieces uniformly spread around the Y axis
+ UPROPERTY(EditDefaultsOnly, Category = "Explosion")
+ int ShrapnelPitchDensity = 40;
+
+ // Number of shrapnel pieces uniformly spread around the Z axis
+ UPROPERTY(EditDefaultsOnly, Category = "Explosion")
+ int ShrapnelYawDensity = 40;
+
+ // How far shrapnel should travel from origin point, given its not obstructed along its path
+ UPROPERTY(EditDefaultsOnly, Category = "Explosion")
+ float ShrapnelTravelDistance = 600;
+
+ // After what distance travelled should shrapnel damage start to decrease
+ UPROPERTY(EditDefaultsOnly, Category = "Explosion")
+ float ShrapnelDamageFalloffDistance = 200;
+
+ // Delay from spawning in before explosion happens
+ UPROPERTY(EditDefaultsOnly, Category = "Explosion")
+ float ExplosionDelayInSeconds = 0;
+
+ /**
+ * Should debug lines be drawn to show planned travel trajectory of each
+ * shrapnel piece in red, and actual travelled shrapnel trajectory in green
+ */
+ UPROPERTY(EditAnywhere, Category = "Explosion")
+ bool DrawDebugLines = false;
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Explosion")
+ void PlayExplosionEffects();
+
+ void Explosion();
+
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+public:
+ // Sets default values for this actor's properties
+ AExplosive();
+
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/OverloadModule/OverloadModule.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/OverloadModule/OverloadModule.cpp
new file mode 100644
index 00000000..c89568ee
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/OverloadModule/OverloadModule.cpp
@@ -0,0 +1,129 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "OverloadModule.h"
+
+#include "Components/SphereComponent.h"
+#include "GameFramework/Character.h"
+
+void AOverloadModule::BeginPlay()
+{
+ Super::BeginPlay();
+
+ this->SetActorTickInterval(0.2);
+ PlayerChar = GetWorld()->GetFirstPlayerController()->GetCharacter();
+ PlayerCam = Cast(PlayerChar->GetComponentByClass(UCameraComponent::StaticClass()));
+}
+
+
+void AOverloadModule::Tick(float DeltaSeconds)
+{
+ Super::Tick(DeltaSeconds);
+
+ if (GadgetCantBeUsed()) return;
+ CheckForPotentialHackTarget();
+}
+
+void AOverloadModule::CheckForPotentialHackTarget()
+{
+ FHitResult OutHit;
+ FVector LT_Start = PlayerCam->GetComponentLocation();
+ FVector LT_End = PlayerCam->GetComponentLocation() + (PlayerCam->GetForwardVector() * DeadBodyCheckDistance);
+
+ //DrawDebugLine(GetWorld(), LT_Start, LT_End, FColor::Red, false, 0.2, 0, 1);
+
+ FCollisionQueryParams QueryParams = FCollisionQueryParams::DefaultQueryParam;
+ QueryParams.AddIgnoredActor(PlayerChar);
+ if (!GetWorld()->LineTraceSingleByChannel(OutHit, LT_Start, LT_End, ECC_Camera, QueryParams) || !(OutHit.GetActor()->ActorHasTag(FName("Enemy")) && OutHit.GetActor()->ActorHasTag(FName("Dead"))))
+ {
+ PotentialHackTarget = nullptr;
+ DisplayNeedADeadEnemy();
+ return;
+ }
+
+ if (HackedEnemies.Contains(OutHit.GetActor()->GetUniqueID()))
+ {
+ PotentialHackTarget = nullptr;
+ DisplayAlreadyHacked();
+ return;
+ }
+
+ //DrawDebugLine(GetWorld(), LT_Start, OutHit.ImpactPoint, FColor::Green, false, 0.2, 0, 1);
+ PotentialHackTarget = OutHit.GetActor();
+ DisplayFoundPotentialTarget();
+}
+
+
+void AOverloadModule::Activate()
+{
+ if (GadgetCantBeUsed() || !IsValid(PotentialHackTarget)) return;
+
+ Super::Activate();
+ HackedEnemies.Add(PotentialHackTarget->GetUniqueID());
+ ExplodeClosestAliveEnemy();
+ PlayHackingAnim(GadgetMaxUptime);
+}
+
+void AOverloadModule::FinishedUsing()
+{
+ IsValid(ClosestEnemy) ? DisplayHackingSuccess() : DisplayHackingFailure();
+ SpawnExplosiveOnActor(ClosestEnemy);
+ Super::FinishedUsing();
+ PlayRechargingAnim(CooldownTime);
+}
+
+void AOverloadModule::ExplodeClosestAliveEnemy()
+{
+ FTransform EmptyTransform;
+ USphereComponent* SphereCollision = Cast(AddComponentByClass(USphereComponent::StaticClass(), false, EmptyTransform, false));
+
+ SphereCollision->SetSphereRadius(AreaOfEffectInMeters * 100, true);
+
+ TArray OverlappingActors;
+ TArray EnemiesInRadius;
+
+ // Find all living enemies within the radius
+ SphereCollision->GetOverlappingActors(OverlappingActors, ACharacter::StaticClass());
+ for (AActor* OverlappingActor : OverlappingActors)
+ {
+ if (OverlappingActor->ActorHasTag(FName("Enemy")) && !OverlappingActor->ActorHasTag(FName("Dead"))) EnemiesInRadius.Add(OverlappingActor);
+ }
+
+ if (EnemiesInRadius.IsEmpty())
+ {
+ ClosestEnemy = nullptr;
+ SphereCollision->DestroyComponent();
+ return;
+ }
+
+ // Find the closest Enemy in radius
+ ClosestEnemy = EnemiesInRadius[0];
+ float Dist = FVector::Distance(PlayerChar->GetActorLocation(), ClosestEnemy->GetActorLocation());
+ if (EnemiesInRadius.Num() < 2)
+ {
+ SphereCollision->DestroyComponent();
+ return;
+ }
+
+ for (int i = 1; i < EnemiesInRadius.Num(); i++)
+ {
+ float ConsideredDist = FVector::Distance(PlayerChar->GetActorLocation(), EnemiesInRadius[i]->GetActorLocation());
+ if (ConsideredDist <= Dist)
+ {
+ ClosestEnemy = EnemiesInRadius[i];
+ Dist = ConsideredDist;
+ }
+ }
+
+ SphereCollision->DestroyComponent();
+
+}
+
+void AOverloadModule::SpawnExplosiveOnActor(AActor* ActortoExplode)
+{
+ if (!IsValid(ActortoExplode)) return;
+ FActorSpawnParameters SpawnParams;
+ SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
+ GetWorld()->SpawnActor(Explosive, ActortoExplode->GetActorLocation(), ActortoExplode->GetActorRotation(), SpawnParams);
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/OverloadModule/OverloadModule.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/OverloadModule/OverloadModule.h
new file mode 100644
index 00000000..59ffdd3a
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Combat/OverloadModule/OverloadModule.h
@@ -0,0 +1,75 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Camera/CameraComponent.h"
+#include "EndlessVendetta/GadgetSystem/CombatGadget.h"
+#include "EndlessVendetta/GadgetSystem/GadgetClasses/Combat/Explosive.h"
+#include "OverloadModule.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API AOverloadModule : public ACombatGadget
+{
+ GENERATED_BODY()
+
+ ACharacter* PlayerChar;
+
+ UCameraComponent* PlayerCam;
+
+ AActor* PotentialHackTarget;
+
+ AActor* ClosestEnemy;
+
+ // An Array of previously hacked enemies, stops player from hacking the same Dead Enemy
+ TArray HackedEnemies;
+
+ virtual void BeginPlay() override;
+
+ virtual void Tick(float DeltaSeconds) override;
+
+ virtual void Activate() override;
+
+ virtual void FinishedUsing() override;
+
+ void CheckForPotentialHackTarget();
+
+ void ExplodeClosestAliveEnemy();
+
+ void SpawnExplosiveOnActor(AActor* ActortoExplode);
+
+protected:
+ UPROPERTY(EditDefaultsOnly, Category = "Overload Module")
+ float AreaOfEffectInMeters = 20;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Overload Module")
+ float DeadBodyCheckDistance = 250;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Overload Module")
+ TSubclassOf Explosive;
+
+// --------------- Display Functions ---------------
+ UFUNCTION(BlueprintImplementableEvent, Category = "Overload Module")
+ void DisplayAlreadyHacked();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Overload Module")
+ void DisplayNeedADeadEnemy();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Overload Module")
+ void DisplayFoundPotentialTarget();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Overload Module")
+ void PlayHackingAnim(float Loadingtime);
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Overload Module")
+ void DisplayHackingFailure();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Overload Module")
+ void DisplayHackingSuccess();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Overload Module")
+ void PlayRechargingAnim(float RechargingTime);
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleCombatClass.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleCombatClass.cpp
new file mode 100644
index 00000000..4e759791
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleCombatClass.cpp
@@ -0,0 +1,34 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "ExampleCombatClass.h"
+
+void AExampleCombatClass::BeginPlay()
+{
+ Super::BeginPlay();
+
+ SetActorTickEnabled(false);
+}
+
+
+void AExampleCombatClass::Tick(float DeltaSeconds)
+{
+ Super::Tick(DeltaSeconds);
+
+ UE_LOG(LogTemp, Warning, TEXT("Example Combat is being used..."));
+}
+
+void AExampleCombatClass::Activate()
+{
+ if (GadgetCantBeUsed()) return;
+
+ Super::Activate();
+ SetActorTickEnabled(true);
+}
+
+void AExampleCombatClass::FinishedUsing()
+{
+ SetActorTickEnabled(false);
+
+ Super::FinishedUsing();
+}
\ No newline at end of file
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleCombatClass.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleCombatClass.h
new file mode 100644
index 00000000..d53cfefb
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleCombatClass.h
@@ -0,0 +1,24 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "EndlessVendetta/GadgetSystem/CombatGadget.h"
+#include "ExampleCombatClass.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API AExampleCombatClass : public ACombatGadget
+{
+ GENERATED_BODY()
+
+ virtual void BeginPlay() override;
+
+ virtual void Tick(float DeltaSeconds) override;
+
+ virtual void Activate() override;
+
+ virtual void FinishedUsing() override;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleReconClass.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleReconClass.cpp
new file mode 100644
index 00000000..cfa574cf
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleReconClass.cpp
@@ -0,0 +1,35 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "ExampleReconClass.h"
+
+void AExampleReconClass::BeginPlay()
+{
+ Super::BeginPlay();
+ SetActorTickEnabled(false);
+}
+
+
+void AExampleReconClass::Tick(float DeltaSeconds)
+{
+ Super::Tick(DeltaSeconds);
+
+ UE_LOG(LogTemp, Warning, TEXT("Example Recon is being used..."));
+}
+
+void AExampleReconClass::Activate()
+{
+ if (GadgetCantBeUsed()) return;
+
+ Super::Activate();
+ SetActorTickEnabled(true);
+}
+
+void AExampleReconClass::FinishedUsing()
+{
+ SetActorTickEnabled(false);
+
+ Super::FinishedUsing();
+}
+
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleReconClass.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleReconClass.h
new file mode 100644
index 00000000..7abc52af
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/ExampleReconClass.h
@@ -0,0 +1,25 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "EndlessVendetta/GadgetSystem/ReconGadget.h"
+#include "ExampleReconClass.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API AExampleReconClass : public AReconGadget
+{
+ GENERATED_BODY()
+
+ virtual void BeginPlay() override;
+
+ virtual void Tick(float DeltaSeconds) override;
+
+ virtual void Activate() override;
+
+ virtual void FinishedUsing() override;
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/PhoneRinging.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/PhoneRinging.cpp
new file mode 100644
index 00000000..c3117259
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/PhoneRinging.cpp
@@ -0,0 +1,27 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "PhoneRinging.h"
+
+// Sets default values
+APhoneRinging::APhoneRinging()
+{
+ // 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 APhoneRinging::BeginPlay()
+{
+ Super::BeginPlay();
+
+}
+
+// Called every frame
+void APhoneRinging::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/PhoneRinging.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/PhoneRinging.h
new file mode 100644
index 00000000..dd9f8cdc
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/PhoneRinging.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 "PhoneRinging.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API APhoneRinging : public AActor
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this actor's properties
+ APhoneRinging();
+
+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/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/RingModule.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/RingModule.cpp
new file mode 100644
index 00000000..d282dd8a
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/RingModule.cpp
@@ -0,0 +1,102 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "RingModule.h"
+
+#include "Components/SphereComponent.h"
+#include "GameFramework/Character.h"
+
+void ARingModule::BeginPlay()
+{
+ Super::BeginPlay();
+
+ this->SetActorTickInterval(0.2);
+ PlayerChar = GetWorld()->GetFirstPlayerController()->GetCharacter();
+ PlayerCam = Cast(PlayerChar->GetComponentByClass(UCameraComponent::StaticClass()));
+}
+
+void ARingModule::Tick(float DeltaSeconds)
+{
+ Super::Tick(DeltaSeconds);
+
+ if (GadgetCantBeUsed()) return;
+ CheckForPotentialHackTarget();
+}
+
+void ARingModule::CheckForPotentialHackTarget()
+{
+ FHitResult OutHit;
+ FVector LT_Start = PlayerCam->GetComponentLocation();
+ FVector LT_End = PlayerCam->GetComponentLocation() + (PlayerCam->GetForwardVector() * DeadBodyCheckDistance);
+
+ //DrawDebugLine(GetWorld(), LT_Start, LT_End, FColor::Red, false, 0.2, 0, 1);
+
+ FCollisionQueryParams QueryParams = FCollisionQueryParams::DefaultQueryParam;
+ QueryParams.AddIgnoredActor(PlayerChar);
+ if (!GetWorld()->LineTraceSingleByChannel(OutHit, LT_Start, LT_End, ECC_Camera, QueryParams) || !(OutHit.GetActor()->ActorHasTag(FName("Enemy")) && OutHit.GetActor()->ActorHasTag(FName("Dead"))))
+ {
+ PotentialHackTarget = nullptr;
+ DisplayNeedADeadEnemy();
+ return;
+ }
+
+ if (HackedEnemies.Contains(OutHit.GetActor()->GetUniqueID()))
+ {
+ PotentialHackTarget = nullptr;
+ DisplayAlreadyHacked();
+ return;
+ }
+
+ //DrawDebugLine(GetWorld(), LT_Start, OutHit.ImpactPoint, FColor::Green, false, 0.2, 0, 1);
+ PotentialHackTarget = OutHit.GetActor();
+ DisplayFoundPotentialTarget();
+}
+
+
+void ARingModule::Activate()
+{
+ if (GadgetCantBeUsed() || !IsValid(PotentialHackTarget)) return;
+
+ Super::Activate();
+ HackedEnemies.Add(PotentialHackTarget->GetUniqueID());
+ PlayHackingAnim(GadgetMaxUptime);
+}
+
+void ARingModule::FinishedUsing()
+{
+ SpawnRingingPhoneForAllNearbyEnemies() ? DisplayHackingSuccess() : DisplayHackingFailure();
+ Super::FinishedUsing();
+ PlayRechargingAnim(CooldownTime);
+}
+
+bool ARingModule::SpawnRingingPhoneForAllNearbyEnemies()
+{
+ FTransform EmptyTransform;
+ USphereComponent* SphereCollision = Cast(AddComponentByClass(USphereComponent::StaticClass(), false, EmptyTransform, false));
+ SphereCollision->SetSphereRadius(AreaOfEffectInMeters * 100, true);
+
+ TArray OverlappingActors;
+ TArray EnemiesInRadius;
+
+ SphereCollision->GetOverlappingActors(OverlappingActors, ACharacter::StaticClass());
+ for (AActor* OverlappingActor : OverlappingActors)
+ {
+ if (OverlappingActor->ActorHasTag(FName("Enemy")) && !OverlappingActor->ActorHasTag(FName("Dead"))) EnemiesInRadius.Add(OverlappingActor);
+ }
+
+ if (EnemiesInRadius.IsEmpty())
+ {
+ SphereCollision->DestroyComponent();
+ return false;
+ }
+
+ FActorSpawnParameters SpawnParams;
+ SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
+ FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true);
+ for (AActor* Enemy : EnemiesInRadius)
+ {
+ AActor* SpawnedPhone = GetWorld()->SpawnActor(PhoneRingingClass, Enemy->GetActorLocation(), Enemy->GetActorRotation(), SpawnParams);
+ SpawnedPhone->AttachToComponent(Enemy->GetRootComponent(), AttachmentRules);
+ }
+ return true;
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/RingModule.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/RingModule.h
new file mode 100644
index 00000000..68dfb294
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/RingModule/RingModule.h
@@ -0,0 +1,72 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "PhoneRinging.h"
+#include "EndlessVendetta/GadgetSystem/ReconGadget.h"
+#include "Camera/CameraComponent.h"
+#include "RingModule.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API ARingModule : public AReconGadget
+{
+ GENERATED_BODY()
+
+ ACharacter* PlayerChar;
+
+ UCameraComponent* PlayerCam;
+
+ AActor* PotentialHackTarget;
+
+ // An Array of previously hacked enemies, stops player from hacking the same Dead Enemy
+ TArray HackedEnemies;
+
+ virtual void BeginPlay() override;
+
+ virtual void Tick(float DeltaSeconds) override;
+
+ virtual void Activate() override;
+
+ virtual void FinishedUsing() override;
+
+ void CheckForPotentialHackTarget();
+
+ // Returns false if there are no nearby enemies
+ bool SpawnRingingPhoneForAllNearbyEnemies();
+
+protected:
+ UPROPERTY(EditDefaultsOnly, Category = "Ring Module")
+ float AreaOfEffectInMeters = 20;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Ring Module")
+ float DeadBodyCheckDistance = 250;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Ring Module")
+ TSubclassOf PhoneRingingClass;
+
+ // --------------- Display Functions ---------------
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ring Module")
+ void DisplayAlreadyHacked();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ring Module")
+ void DisplayNeedADeadEnemy();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ring Module")
+ void DisplayFoundPotentialTarget();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ring Module")
+ void PlayHackingAnim(float Loadingtime);
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ring Module")
+ void DisplayHackingFailure();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ring Module")
+ void DisplayHackingSuccess();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Ring Module")
+ void PlayRechargingAnim(float RechargingTime);
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLink.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLink.cpp
new file mode 100644
index 00000000..1dbe1dd7
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLink.cpp
@@ -0,0 +1,87 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "VisionLink.h"
+
+#include "CollisionDebugDrawingPublic.h"
+#include "Kismet/KismetMathLibrary.h"
+#include "Camera/CameraComponent.h"
+#include "VisionLinkEnemyLOSTest.h"
+#include "GameFramework/Character.h"
+
+void AVisionLink::BeginPlay()
+{
+ Super::BeginPlay();
+ SetActorTickEnabled(false);
+ CooldownLength = CooldownTime;
+ InUseDuration = GadgetMaxUptime;
+
+ if (NumberOfPingPulses <= 0) NumberOfPingPulses = 1;
+ TimeInbetweenPingPulses = GadgetMaxUptime / (float)NumberOfPingPulses;
+}
+
+void AVisionLink::Activate()
+{
+ if (GadgetCantBeUsed()) return;
+
+ Super::Activate();
+
+ NumOfPingPulsesLeftInThisCycle = NumberOfPingPulses;
+ VisionLinkActivated();
+ SendOutPingPulse();
+}
+
+void AVisionLink::FinishedUsing()
+{
+ VisionLinkRecharging();
+
+ Super::FinishedUsing();
+}
+
+void AVisionLink::SendOutPingPulse()
+{
+ NumOfPingPulsesLeftInThisCycle--;
+ UpdatePulsesRemaining(NumOfPingPulsesLeftInThisCycle);
+ if (NumOfPingPulsesLeftInThisCycle < 0) return;
+
+ GetWorld()->GetTimerManager().SetTimer(PulseHandle, this, &AVisionLink::SendOutPingPulse, TimeInbetweenPingPulses, false);
+ PlayPingPulseAnim(TimeInbetweenPingPulses);
+
+ UCameraComponent* PlayerCamComp = Cast(GetWorld()->GetFirstPlayerController()->GetCharacter()->GetComponentByClass(UCameraComponent::StaticClass()));
+ TArray ActorsToIgnore;
+ ActorsToIgnore.Add(GetWorld()->GetFirstPlayerController()->GetCharacter());
+ TestLOS(PlayerCamComp->GetComponentTransform(), ActorsToIgnore);
+}
+
+void AVisionLink::TestLOS(FTransform StartingPos, TArray &ActorsToIgnore)
+{
+ float H_DegreeIncrement = (float)H_FOV / (float)LT_Horizontal_Density;
+ float V_DegreeIncrement = (float)V_FOV / (float)LT_Vertical_Density;
+ float H_StartingRot = StartingPos.GetRotation().Rotator().Yaw - ((float)H_FOV / 2.0);
+ float V_StartingRot = StartingPos.GetRotation().Rotator().Pitch - ((float)V_FOV / 2.0);
+
+ for (int H_Increment = 1; H_Increment <= LT_Horizontal_Density; H_Increment++)
+ {
+ for (int V_Increment = 1; V_Increment <= LT_Vertical_Density; V_Increment++)
+ {
+ FHitResult outHit;
+ FCollisionQueryParams QueryParams = FCollisionQueryParams::DefaultQueryParam;
+ QueryParams.bTraceComplex = true;
+ QueryParams.AddIgnoredActors(ActorsToIgnore);
+
+ FRotator LT_Rot = FRotator(V_StartingRot + (V_Increment * V_DegreeIncrement), H_StartingRot + (H_Increment * H_DegreeIncrement), StartingPos.GetRotation().Rotator().Roll);
+ FVector LT_EndPoint = StartingPos.GetLocation() + UKismetMathLibrary::GetForwardVector(LT_Rot) * LT_Distance;
+
+ if (!GetWorld()->LineTraceSingleByChannel(outHit, StartingPos.GetLocation(), LT_EndPoint, ECC_Camera, QueryParams)) continue;
+
+ AActor* HitActor = outHit.GetActor();
+ if (!HitActor->ActorHasTag(FName("Enemy"))) continue;
+
+ //DrawDebugLine(GetWorld(), outHit.TraceStart, outHit.ImpactPoint, FColor::Blue, false, 3, 0, 3);
+ ActorsToIgnore.Add(HitActor);
+ SpawnPing(HitActor->GetTransform());
+ TestLOS(HitActor->GetTransform(), ActorsToIgnore);
+ }
+ }
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLink.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLink.h
new file mode 100644
index 00000000..2a3b7789
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLink.h
@@ -0,0 +1,75 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "VisionLinkEnemyLOSTest.h"
+#include "EndlessVendetta/GadgetSystem/ReconGadget.h"
+#include "VisionLink.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API AVisionLink : public AReconGadget
+{
+ GENERATED_BODY()
+
+ int NumOfPingPulsesLeftInThisCycle;
+
+ float TimeInbetweenPingPulses;
+
+ FTimerHandle PulseHandle;
+
+ void SendOutPingPulse();
+
+ void TestLOS(FTransform StartingPos, TArray &ActorsToIgnore);
+
+ virtual void BeginPlay() override;
+
+ virtual void Activate() override;
+
+ virtual void FinishedUsing() override;
+
+protected:
+ UPROPERTY(EditDefaultsOnly, Category = "Vision Link")
+ int NumberOfPingPulses = 1;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Vision Link")
+ int LT_Horizontal_Density = 80;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Vision Link")
+ int LT_Vertical_Density = 25;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Vision Link")
+ float LT_Distance = 4000;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Vision Link")
+ float H_FOV = 75;
+
+ UPROPERTY(EditDefaultsOnly, Category = "Vision Link")
+ float V_FOV = 25;
+
+ UPROPERTY(BlueprintReadOnly, Category = "Vision Link")
+ float CooldownLength;
+
+ UPROPERTY(BlueprintReadOnly, Category = "Vision Link")
+ float InUseDuration;
+
+ // Updates UI with time to next Pulse
+ UFUNCTION(BlueprintImplementableEvent, Category = "Vision Link")
+ void PlayPingPulseAnim(float PulseDuration);
+
+ // Updates UI with pulses remaining
+ UFUNCTION(BlueprintImplementableEvent, Category = "Vision Link")
+ void UpdatePulsesRemaining(int PulsesRemaining);
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Vision Link")
+ void VisionLinkActivated();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Vision Link")
+ void VisionLinkRecharging();
+
+ UFUNCTION(BlueprintImplementableEvent, Category = "Vision Link")
+ void SpawnPing(FTransform PingSpawnTransform);
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLinkEnemyLOSTest.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLinkEnemyLOSTest.cpp
new file mode 100644
index 00000000..eb11bf58
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLinkEnemyLOSTest.cpp
@@ -0,0 +1,74 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "VisionLinkEnemyLOSTest.h"
+
+#include "Components/BoxComponent.h"
+#include "Kismet/KismetMathLibrary.h"
+
+// Sets default values
+AVisionLinkEnemyLOSTest::AVisionLinkEnemyLOSTest()
+{
+ // 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 AVisionLinkEnemyLOSTest::BeginPlay()
+{
+ Super::BeginPlay();
+
+}
+
+// Called every frame
+void AVisionLinkEnemyLOSTest::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+
+void AVisionLinkEnemyLOSTest::TestLOS(TArray EnemiesInLink, AActor* LOSActor)
+{
+ // Get all overlapping Actors
+ UBoxComponent* CollisionBox = Cast(GetComponentByClass(UBoxComponent::StaticClass()));
+ if (!IsValid(CollisionBox))
+ {
+ Destroy();
+ return;
+ }
+ TArray OverlappingEnemies;
+ CollisionBox->GetOverlappingActors(OverlappingEnemies);
+ if (OverlappingEnemies.IsEmpty())
+ {
+ Destroy();
+ return;
+ }
+
+ for (int i = 0; i < OverlappingEnemies.Num(); i++)
+ {
+ // Overlapping Enemies Array should only contain enemies which aren't already in the link
+ if (!OverlappingEnemies[i]->ActorHasTag(FName("Enemy")) || EnemiesInLink.Contains(OverlappingEnemies[i]->GetUniqueID()))
+ {
+ UE_LOG(LogTemp, Warning, TEXT("enemy name: %s"), *OverlappingEnemies[i]->GetName());
+ OverlappingEnemies.RemoveAt(i);
+ }
+ }
+ if (OverlappingEnemies.IsEmpty())
+ {
+ Destroy();
+ return;
+ }
+
+ /*for (AActor* Enemy : OverlappingEnemies)
+ {
+ FRotator LookAtRotation = UKismetMathLibrary::FindLookAtRotation(LOSActor->GetActorLocation(), Enemy->GetActorLocation());
+ UE_LOG(LogTemp, Warning, TEXT("Look at Rotation: %f"), LookAtRotation.Yaw);
+ }*/
+
+ Destroy();
+
+
+}
+
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLinkEnemyLOSTest.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLinkEnemyLOSTest.h
new file mode 100644
index 00000000..add35b97
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetClasses/Recon/VisionLink/VisionLinkEnemyLOSTest.h
@@ -0,0 +1,30 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Actor.h"
+#include "VisionLinkEnemyLOSTest.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API AVisionLinkEnemyLOSTest : public AActor
+{
+ GENERATED_BODY()
+
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+public:
+ UPROPERTY(EditDefaultsOnly, Category = "Vision Link")
+ float SpawnOffset = 0;
+
+ // Sets default values for this actor's properties
+ AVisionLinkEnemyLOSTest();
+
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ void TestLOS(TArray EnemiesInLink, AActor* LOS_Actor);
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetManager.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetManager.cpp
new file mode 100644
index 00000000..8f7c6aa0
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetManager.cpp
@@ -0,0 +1,47 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "GadgetManager.h"
+
+// Sets default values
+AGadgetManager::AGadgetManager()
+{
+ // 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 AGadgetManager::BeginPlay()
+{
+ Super::BeginPlay();
+
+}
+
+// Called every frame
+void AGadgetManager::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+
+void AGadgetManager::SpawnGadgets(USceneComponent* PlayersCameraComponent)
+{
+ if (!IsValid(ReconClass) || !IsValid(CombatClass)) UE_LOG(LogTemp, Fatal, TEXT("Recon or Combat class hasn't been set"));
+
+ FActorSpawnParameters SpawnParams;
+ SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
+ const FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true);
+
+ AActor* SpawnedActor = GetWorld()->SpawnActor(ReconClass, GetActorLocation(), GetActorRotation(), SpawnParams);
+ ReconGadget = Cast(SpawnedActor);
+ SpawnedActor->AttachToComponent(PlayersCameraComponent, AttachmentRules);
+ SpawnedActor->SetActorRelativeLocation(ReconGadget->GetUnequippedOffset());
+ SpawnedActor->SetActorRelativeRotation(ReconGadget->GetGadgetSpawnRotation());
+
+ SpawnedActor = GetWorld()->SpawnActor(CombatClass, GetActorLocation(), GetActorRotation(), SpawnParams);
+ CombatGadget = Cast(SpawnedActor);
+ SpawnedActor->AttachToComponent(PlayersCameraComponent, AttachmentRules);
+ SpawnedActor->SetActorRelativeLocation(CombatGadget->GetUnequippedOffset());
+ SpawnedActor->SetActorRelativeRotation(CombatGadget->GetGadgetSpawnRotation());
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetManager.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetManager.h
new file mode 100644
index 00000000..686b2516
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/GadgetManager.h
@@ -0,0 +1,69 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "CombatGadget.h"
+#include "ReconGadget.h"
+#include "GameFramework/Actor.h"
+#include "GadgetManager.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API AGadgetManager : public AActor
+{
+ GENERATED_BODY()
+
+ AReconGadget* ReconGadget;
+ ACombatGadget* CombatGadget;
+
+protected:
+ UPROPERTY(EditDefaultsOnly, Category = "Gadget")
+ TSubclassOf ReconClass;
+ UPROPERTY(EditDefaultsOnly, Category = "Gadget")
+ TSubclassOf CombatClass;
+
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+public:
+ void SpawnGadgets(USceneComponent* PlayersCameraComponent);
+
+ // Sets default values for this actor's properties
+ AGadgetManager();
+
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ void EquipRecon()
+ {
+ ReconGadget->Equip();
+ }
+
+ void EquipCombat()
+ {
+ CombatGadget->Equip();
+ }
+
+ bool IsReconEquipped()
+ {
+ return ReconGadget->Equipped;
+ }
+
+ bool IsCombatEquipped()
+ {
+ return CombatGadget->Equipped;
+ }
+
+ bool TryToUnequipRecon()
+ {
+ if (ReconGadget->Equipped) return ReconGadget->Unequip();
+ return false;
+ }
+
+ bool TryToUnequipCombat()
+ {
+ if (CombatGadget->Equipped) return CombatGadget->Unequip();
+ return false;
+ }
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/ReconGadget.cpp b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/ReconGadget.cpp
new file mode 100644
index 00000000..03c10623
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/ReconGadget.cpp
@@ -0,0 +1,5 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "ReconGadget.h"
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/ReconGadget.h b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/ReconGadget.h
new file mode 100644
index 00000000..7122d3bb
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/GadgetSystem/ReconGadget.h
@@ -0,0 +1,17 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GadgetBase.h"
+#include "ReconGadget.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API AReconGadget : public AGadgetBase
+{
+ GENERATED_BODY()
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPerson.h b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPerson.h
new file mode 100644
index 00000000..ddbf2e22
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPerson.h
@@ -0,0 +1,5 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonCharacter.cpp
new file mode 100644
index 00000000..61708391
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonCharacter.cpp
@@ -0,0 +1,129 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "TP_ThirdPersonCharacter.h"
+#include "Camera/CameraComponent.h"
+#include "Components/CapsuleComponent.h"
+#include "Components/InputComponent.h"
+#include "GameFramework/CharacterMovementComponent.h"
+#include "GameFramework/Controller.h"
+#include "GameFramework/SpringArmComponent.h"
+#include "EnhancedInputComponent.h"
+#include "EnhancedInputSubsystems.h"
+
+
+//////////////////////////////////////////////////////////////////////////
+// ATP_ThirdPersonCharacter
+
+ATP_ThirdPersonCharacter::ATP_ThirdPersonCharacter()
+{
+ // Set size for collision capsule
+ GetCapsuleComponent()->InitCapsuleSize(42.f, 96.0f);
+
+ // Don't rotate when the controller rotates. Let that just affect the camera.
+ bUseControllerRotationPitch = false;
+ bUseControllerRotationYaw = false;
+ bUseControllerRotationRoll = false;
+
+ // Configure character movement
+ GetCharacterMovement()->bOrientRotationToMovement = true; // Character moves in the direction of input...
+ GetCharacterMovement()->RotationRate = FRotator(0.0f, 500.0f, 0.0f); // ...at this rotation rate
+
+ // Note: For faster iteration times these variables, and many more, can be tweaked in the Character Blueprint
+ // instead of recompiling to adjust them
+ GetCharacterMovement()->JumpZVelocity = 700.f;
+ GetCharacterMovement()->AirControl = 0.35f;
+ GetCharacterMovement()->MaxWalkSpeed = 500.f;
+ GetCharacterMovement()->MinAnalogWalkSpeed = 20.f;
+ GetCharacterMovement()->BrakingDecelerationWalking = 2000.f;
+
+ // Create a camera boom (pulls in towards the player if there is a collision)
+ CameraBoom = CreateDefaultSubobject(TEXT("CameraBoom"));
+ CameraBoom->SetupAttachment(RootComponent);
+ CameraBoom->TargetArmLength = 400.0f; // The camera follows at this distance behind the character
+ CameraBoom->bUsePawnControlRotation = true; // Rotate the arm based on the controller
+
+ // Create a follow camera
+ FollowCamera = CreateDefaultSubobject(TEXT("FollowCamera"));
+ FollowCamera->SetupAttachment(CameraBoom, USpringArmComponent::SocketName); // Attach the camera to the end of the boom and let the boom adjust to match the controller orientation
+ FollowCamera->bUsePawnControlRotation = false; // Camera does not rotate relative to arm
+
+ // Note: The skeletal mesh and anim blueprint references on the Mesh component (inherited from Character)
+ // are set in the derived blueprint asset named ThirdPersonCharacter (to avoid direct content references in C++)
+}
+
+void ATP_ThirdPersonCharacter::BeginPlay()
+{
+ // Call the base class
+ Super::BeginPlay();
+
+ //Add Input Mapping Context
+ if (APlayerController* PlayerController = Cast(Controller))
+ {
+ if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer()))
+ {
+ Subsystem->AddMappingContext(DefaultMappingContext, 0);
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////
+// Input
+
+void ATP_ThirdPersonCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent)
+{
+ // Set up action bindings
+ if (UEnhancedInputComponent* EnhancedInputComponent = CastChecked(PlayerInputComponent)) {
+
+ //Jumping
+ EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Triggered, this, &ACharacter::Jump);
+ EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping);
+
+ //Moving
+ EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ATP_ThirdPersonCharacter::Move);
+
+ //Looking
+ EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &ATP_ThirdPersonCharacter::Look);
+
+ }
+
+}
+
+void ATP_ThirdPersonCharacter::Move(const FInputActionValue& Value)
+{
+ // input is a Vector2D
+ FVector2D MovementVector = Value.Get();
+
+ if (Controller != nullptr)
+ {
+ // find out which way is forward
+ const FRotator Rotation = Controller->GetControlRotation();
+ const FRotator YawRotation(0, Rotation.Yaw, 0);
+
+ // get forward vector
+ const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
+
+ // get right vector
+ const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
+
+ // add movement
+ AddMovementInput(ForwardDirection, MovementVector.Y);
+ AddMovementInput(RightDirection, MovementVector.X);
+ }
+}
+
+void ATP_ThirdPersonCharacter::Look(const FInputActionValue& Value)
+{
+ // input is a Vector2D
+ FVector2D LookAxisVector = Value.Get();
+
+ if (Controller != nullptr)
+ {
+ // add yaw and pitch input to controller
+ AddControllerYawInput(LookAxisVector.X);
+ AddControllerPitchInput(LookAxisVector.Y);
+ }
+}
+
+
+
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonCharacter.h b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonCharacter.h
new file mode 100644
index 00000000..77f7869f
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonCharacter.h
@@ -0,0 +1,66 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Character.h"
+#include "InputActionValue.h"
+#include "TP_ThirdPersonCharacter.generated.h"
+
+
+UCLASS(config=Game)
+class ATP_ThirdPersonCharacter : public ACharacter
+{
+ GENERATED_BODY()
+
+ /** Camera boom positioning the camera behind the character */
+ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true"))
+ class USpringArmComponent* CameraBoom;
+
+ /** Follow camera */
+ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true"))
+ class UCameraComponent* FollowCamera;
+
+ /** MappingContext */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
+ class UInputMappingContext* DefaultMappingContext;
+
+ /** Jump Input Action */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
+ class UInputAction* JumpAction;
+
+ /** Move Input Action */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
+ class UInputAction* MoveAction;
+
+ /** Look Input Action */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
+ class UInputAction* LookAction;
+
+public:
+ ATP_ThirdPersonCharacter();
+
+
+protected:
+
+ /** Called for movement input */
+ void Move(const FInputActionValue& Value);
+
+ /** Called for looking input */
+ void Look(const FInputActionValue& Value);
+
+
+protected:
+ // APawn interface
+ virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
+
+ // To add mapping context
+ virtual void BeginPlay();
+
+public:
+ /** Returns CameraBoom subobject **/
+ FORCEINLINE class USpringArmComponent* GetCameraBoom() const { return CameraBoom; }
+ /** Returns FollowCamera subobject **/
+ FORCEINLINE class UCameraComponent* GetFollowCamera() const { return FollowCamera; }
+};
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonGameMode.cpp b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonGameMode.cpp
new file mode 100644
index 00000000..aa7ce003
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonGameMode.cpp
@@ -0,0 +1,15 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "TP_ThirdPersonGameMode.h"
+#include "TP_ThirdPersonCharacter.h"
+#include "UObject/ConstructorHelpers.h"
+
+ATP_ThirdPersonGameMode::ATP_ThirdPersonGameMode()
+{
+ // set default pawn class to our Blueprinted character
+ static ConstructorHelpers::FClassFinder PlayerPawnBPClass(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter"));
+ if (PlayerPawnBPClass.Class != NULL)
+ {
+ DefaultPawnClass = PlayerPawnBPClass.Class;
+ }
+}
diff --git a/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonGameMode.h b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonGameMode.h
new file mode 100644
index 00000000..bf3f6900
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/TP_ThirdPerson/TP_ThirdPersonGameMode.h
@@ -0,0 +1,19 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/GameModeBase.h"
+#include "TP_ThirdPersonGameMode.generated.h"
+
+UCLASS(minimalapi)
+class ATP_ThirdPersonGameMode : public AGameModeBase
+{
+ GENERATED_BODY()
+
+public:
+ ATP_ThirdPersonGameMode();
+};
+
+
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp
new file mode 100644
index 00000000..d20c1ae8
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp
@@ -0,0 +1,225 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "BaseWeaponClass.h"
+
+#include "AIHelpers.h"
+#include "EndlessVendetta/EndlessVendettaCharacter.h"
+#include "Kismet/KismetMathLibrary.h"
+#include "Components/CapsuleComponent.h"
+#include "Kismet/GameplayStatics.h"
+#include "Engine/DamageEvents.h"
+#include "EndlessVendetta/AI/EnemyCharacter.h"
+
+
+// Sets default values
+ABaseWeaponClass::ABaseWeaponClass()
+{
+ // 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 ABaseWeaponClass::BeginPlay()
+{
+ Super::BeginPlay();
+
+ collisionParams.AddIgnoredActor(playerInWorld);
+ collisionParams.AddIgnoredActor(this);
+
+ // Attempt to find the player character
+ APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0);
+ playerInWorld = Cast(PlayerController->GetCharacter());
+
+ endlessVendettaChar = Cast(playerInWorld);
+
+ for (UActorComponent* actorComp : playerInWorld->GetComponentsByTag(UArrowComponent::StaticClass(), FName("GunStart")))
+ {
+ GunStartArrow = Cast(actorComp);
+ break;
+ }
+
+ if (!playerControllerRef)
+ {
+ playerControllerRef = UGameplayStatics::GetPlayerController(GetWorld(), 0);
+ }
+
+ originalMagnitude = recoilMagnitude;
+ originalMaxAngleLeft = recoilMaxAngleLeft;
+ originalMaxAngleRight = recoilMaxAngleRight;
+ originalMinMultiplier = recoilMinMultiplier;
+
+ currentAmmoCount = MagazineSize;
+
+ UE_LOG(LogTemp, Display, TEXT("crnnt ammo: %d"), MagazineSize);
+}
+
+// Called every frame
+void ABaseWeaponClass::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+ if (playerInWorld)
+ {
+ ApplyRecoil(DeltaTime);
+ }
+ UE_LOG(LogTemp, Display, TEXT("currnt pitch: %f"), currentPitch);
+ if (currentPitch < 0 && bStopShooting)
+ {
+ float increment = currentPitch * DeltaTime * 8;
+ currentPitch -= increment;
+ playerInWorld->AddControllerPitchInput(-increment);
+ }
+}
+
+
+// Recoil Handling ////////////////////////////////////////////////////////////////////////////////////////////////////////////
+void ABaseWeaponClass::GenerateRecoilVector()
+{
+ float angle = FMath::RandRange(recoilMaxAngleLeft, -recoilMaxAngleRight); //randomg recoil vector angle between left and right
+ float recMag = recoilMagnitude * 252.f; //converting degrees to controller units
+ float tempMag = -FMath::RandRange(recMag * recoilMinMultiplier, recMag); // recoil magnitude
+
+ recoilResultYaw = FMath::Sin(FMath::DegreesToRadians(angle));
+ recoilResultPitch = FMath::Cos(FMath::DegreesToRadians(angle));
+
+ if (bulletCountShoot >= howMnyShotsTillRclStop)
+ {
+ recoilResultPitch = 0;
+ }
+ //scaling direction to magnitude
+ recoilResultPitch *= -tempMag;
+ recoilResultYaw *= tempMag;
+
+ //reset recoil to 0 of curve
+ recoilTime = 0;
+}
+
+void ABaseWeaponClass::ApplyRecoil(float DeltaTime)
+{
+ if (recoilTime < 0.3)
+ {
+ float amplitude = RecoilCurve->GetFloatValue(recoilTime); //get current value of curve in time
+ recoilTime += DeltaTime;
+ if (bulletCountShoot <= 3)
+ {
+ playerInWorld->AddControllerPitchInput(GetRecoilPitch(amplitude, recoilTime));
+ currentPitch += GetRecoilPitch(amplitude,recoilTime);
+ }
+ playerInWorld->AddControllerPitchInput(FMath::RandRange(-5 * DeltaTime, 5* DeltaTime));
+ GunStartArrow->AddRelativeRotation(FRotator(-GetRecoilPitch(amplitude, recoilTime), 0, 0));
+ playerInWorld->AddControllerYawInput(GetRecoilYaw(amplitude, recoilTime));
+ UpdateSamples(amplitude, recoilTime);
+ }
+}
+
+
+void ABaseWeaponClass::nullSamples()
+{
+ recoilCurvet = 0;
+ recoilCurvez1 = 0;
+}
+
+float ABaseWeaponClass::GetRecoilPitch(float Amp, float Time)
+{
+ //Using the trapez method and we are getting the surface under the curve, each trapezoid consist of square and right triangle
+ float lower = recoilCurvez1 < Amp ? recoilCurvez1 : Amp; //get which point is common for both triangle and square of trapezoid
+ //lower point
+ float mult = (Time - recoilCurvet) * lower; //getting surface of square
+ mult += (Time - recoilCurvet) * (Amp - recoilCurvez1) / 2.0f; //getting and adding surface of triangle
+ return (recoilResultPitch * mult) / playerControllerRef->InputPitchScale_DEPRECATED; //calculating and return recoil force for current frame
+}
+
+
+//Same as getrecoilpitch
+float ABaseWeaponClass::GetRecoilYaw(float Amp, float Time)
+{
+ float lower = recoilCurvez1 < Amp ? recoilCurvez1 : Amp;
+ float mult = (Time - recoilCurvet) * lower;
+
+ mult += (Time - recoilCurvet) * (Amp - recoilCurvez1) / 2.0f;
+ return (recoilResultYaw * mult) / playerControllerRef->InputYawScale_DEPRECATED;
+}
+
+void ABaseWeaponClass::UpdateSamples(float Amp, float Time)
+{
+ recoilCurvez1 = Amp;
+ recoilCurvet = Time;
+}
+
+// Fire handling //////////////////////////////////////////////////////////////////////////////////////////////////////////
+void ABaseWeaponClass::ClickDetectionTimer()
+{
+ GetWorldTimerManager().SetTimer(timerHandle, this, &ABaseWeaponClass::Fire, 1 / FireRate, false);
+}
+
+void ABaseWeaponClass::CancelFire()
+{
+ GetWorldTimerManager().ClearTimer(timerHandle);
+ if (bulletCountShoot <= 0) return;
+ UE_LOG(LogTemp, Display, TEXT("FireCancelled"));
+ bulletCountShoot = 0;
+ GunStartArrow->SetRelativeRotation(FRotator(0));
+ //playerInWorld->GetController()->SetControlRotation(FRotator(0, playerInWorld->GetActorRotation().Yaw, playerInWorld->GetActorRotation().Roll));
+ bStopShooting = true;
+ nullSamples();
+}
+
+void ABaseWeaponClass::Fire()
+{
+ if(currentAmmoCount > 0)
+ {
+ //do damage fallof based off distance
+ traceStart = GunStartArrow->GetComponentLocation();
+ traceEnd = traceStart + (GunStartArrow->GetForwardVector() * BulletDistance);
+ if (GetWorldTimerManager().IsTimerActive(timerHandle)) return;
+ GetWorld()->LineTraceSingleByChannel(outHit, traceStart, traceEnd, ECC_Visibility, collisionParams);
+ DrawDebugLine(this->GetWorld(), traceStart, traceEnd, FColor::Black , false, 0.2f, 0U, 0.2f);
+ playerControllerRef->PlayerCameraManager->StartCameraShake(CameraShakeClass, 1);
+ currentAmmoCount -= 1;
+ GenerateRecoilVector();
+ ClickDetectionTimer();
+ bulletCountShoot += 1;
+ bStopShooting = false;
+ if (outHit.bBlockingHit)
+ {
+ if (!Cast(outHit.GetActor())) return;
+ Cast(outHit.GetActor())->TakeDamage(WeaponDamage, FPointDamageEvent(), GetWorld()->GetFirstPlayerController(), this);
+ }
+ }
+ else if(currentAmmoCount <= 0)
+ {
+ UE_LOG(LogTemp, Display, TEXT("No ammo, Ammo count: %d"), currentAmmoCount);
+ }
+
+}
+
+void ABaseWeaponClass::WeaponScopedFire()
+{
+ if (endlessVendettaChar->bIsScoped)
+ {
+ recoilMagnitude = scopedRecoilMag;
+ recoilMaxAngleLeft = scopedMaxAngleLeft;
+ recoilMaxAngleRight = scopedMaxAngleRight;
+ recoilMinMultiplier = scopedMinMultiplier;
+
+ }
+ else
+ {
+ recoilMagnitude = originalMagnitude;
+ recoilMaxAngleLeft = originalMaxAngleLeft;
+ recoilMaxAngleRight = originalMaxAngleRight;
+ recoilMinMultiplier = originalMinMultiplier;
+ }
+}
+
+void ABaseWeaponClass::WeaponReload()
+{
+ if(MagazineSize > currentAmmoCount)
+ {
+ UE_LOG(LogTemp, Display, TEXT("Weapon Reloading: mag size: %d"), MagazineSize);
+ currentAmmoCount = MagazineSize;
+ }
+}
+
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h
new file mode 100644
index 00000000..00541047
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h
@@ -0,0 +1,164 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "WeaponItemClass.h"
+#include "Components/ArrowComponent.h"
+#include "Kismet/KismetMathLibrary.h"
+#include "BaseWeaponClass.generated.h"
+
+class AEndlessVendettaCharacter;
+class UCapsuleComponent;
+
+UCLASS()
+class ENDLESSVENDETTA_API ABaseWeaponClass : public AActor
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this actor's properties
+ ABaseWeaponClass();
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+ void ApplyRecoil(float DeltaTime);
+
+ void GenerateRecoilVector();
+
+ void nullSamples();
+
+ //recoil previous curve
+ float recoilCurvez1 = 0;
+
+ //recoil previous curve time
+ float recoilCurvet = 0;
+
+ float recoilTime = 0;
+
+ float recoilResultPitch = 0;
+ float recoilResultYaw = 0;
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ UPROPERTY(EditAnywhere)
+ FName WeaponName;
+
+ UPROPERTY(EditAnywhere)
+ int WeaponDamage;
+
+ UPROPERTY(EditAnywhere)
+ float FireRate;
+
+ UPROPERTY(EditAnywhere, BlueprintReadWrite)
+ int MagazineSize;
+
+ //how many bullets until the recoil stops going up
+ UPROPERTY(EditAnywhere)
+ int howMnyShotsTillRclStop;
+
+ UPROPERTY(BlueprintReadWrite)
+ int currentAmmoCount;
+
+ UPROPERTY(EditAnywhere, BlueprintReadWrite)
+ UTexture2D* WeaponImage;
+
+ UPROPERTY(EditAnywhere, Category = "ScopedFire")
+ float scopedRecoilMag;
+
+ UPROPERTY(EditAnywhere, Category = "ScopedFire")
+ float scopedMaxAngleLeft;
+
+ UPROPERTY(EditAnywhere, Category = "ScopedFire")
+ float scopedMaxAngleRight;
+
+ UPROPERTY(EditAnywhere, Category = "ScopedFire")
+ float scopedMinMultiplier;
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ virtual void Fire();
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ virtual void ClickDetectionTimer();
+
+ virtual void CancelFire();
+
+ UPROPERTY(VisibleAnywhere)
+ ACharacter* playerInWorld;
+
+ AEndlessVendettaCharacter* endlessVendettaChar;
+
+ APlayerController* playerControllerRef;
+
+ FTimerHandle timerHandle;
+
+ bool bFirstBulletShot = false;
+
+ UPROPERTY(EditAnywhere)
+ TSubclassOf CameraShakeClass;
+
+ /* How far the gun goes up*/
+ UPROPERTY(EditAnywhere, Category = "Recoil")
+ float recoilMagnitude;
+
+ UPROPERTY(EditAnywhere, Category = "Recoil")
+ float recoilMaxAngleLeft;
+
+ UPROPERTY(EditAnywhere, Category = "Recoil")
+ float recoilMaxAngleRight;
+
+ UPROPERTY(EditAnywhere, Category = "Recoil")
+ float recoilMinMultiplier;
+
+ UPROPERTY(EditAnywhere, Category = "Recoil")
+ class UCurveFloat* RecoilCurve;
+
+ UFUNCTION(BlueprintCallable, Category = "Recoil")
+ float GetRecoilPitch(float Amp, float Time);
+
+ UFUNCTION(BlueprintCallable, Category = "Recoil")
+ float GetRecoilYaw(float Amp, float Time);
+
+ UFUNCTION(BlueprintCallable, Category = "Recoil")
+ void UpdateSamples(float Amp, float Time);
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ void WeaponScopedFire();
+
+ UFUNCTION(BlueprintCallable, Category = "Weapons")
+ void WeaponReload();
+
+ FHitResult outHit;
+ FVector traceStart;
+ FVector traceEnd;
+ FVector newTraceEnd;
+ FCollisionQueryParams collisionParams;
+
+ //UFUNCTION(BlueprintCallable, Category = "Weapons")
+ //void RecoilVerticalLimit(FHitResult Outhit);
+
+ UPROPERTY(EditAnywhere)
+ int bulletCountShoot; //Gets how many bullets shot per
+
+
+protected:
+ UArrowComponent* GunStartArrow;
+ bool bStopShooting = false;
+
+private:
+
+ UPROPERTY(EditAnywhere)
+ float BulletDistance;
+
+ float originalMagnitude;
+ float originalMaxAngleLeft;
+ float originalMaxAngleRight;
+ float originalMinMultiplier;
+
+ float currentPitch;
+
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/PistolClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/PistolClass.cpp
new file mode 100644
index 00000000..0e91083a
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/PistolClass.cpp
@@ -0,0 +1,48 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "PistolClass.h"
+
+
+// Sets default values
+APistolClass::APistolClass()
+{
+ // 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 APistolClass::BeginPlay()
+{
+ Super::BeginPlay();
+
+}
+
+// Called every frame
+void APistolClass::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+}
+
+void APistolClass::Fire()
+{
+ Super::Fire();
+ UE_LOG(LogTemp, Display, TEXT("Testing overrides: Pistol has been fired"));
+}
+
+void APistolClass::ClickDetectionTimer()
+{
+ Super::ClickDetectionTimer();
+}
+
+void APistolClass::CancelFire()
+{
+ if (bulletCountShoot <= 0) return;
+ UE_LOG(LogTemp, Display, TEXT("FireCancelled"));
+ bulletCountShoot = 0;
+ GunStartArrow->SetRelativeRotation(FRotator(0));
+ //playerInWorld->GetController()->SetControlRotation(FRotator(0, playerInWorld->GetActorRotation().Yaw, playerInWorld->GetActorRotation().Roll));
+ bStopShooting = true;
+ nullSamples();
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/PistolClass.h b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/PistolClass.h
new file mode 100644
index 00000000..0ddb7290
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/PistolClass.h
@@ -0,0 +1,29 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "BaseWeaponClass.h"
+#include "PistolClass.generated.h"
+
+UCLASS()
+class ENDLESSVENDETTA_API APistolClass : public ABaseWeaponClass
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this actor's properties
+ APistolClass();
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ virtual void Fire() override;
+ virtual void ClickDetectionTimer() override;
+ virtual void CancelFire() override;
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponCameraShake.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponCameraShake.cpp
new file mode 100644
index 00000000..03a594a9
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponCameraShake.cpp
@@ -0,0 +1,4 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "WeaponCameraShake.h"
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponCameraShake.h b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponCameraShake.h
new file mode 100644
index 00000000..604113b5
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponCameraShake.h
@@ -0,0 +1,16 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+
+#include "WeaponCameraShake.generated.h"
+
+/**
+ *
+ */
+UCLASS()
+class ENDLESSVENDETTA_API UWeaponCameraShake : public UCameraShakeBase
+{
+ GENERATED_BODY()
+};
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponItemClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponItemClass.cpp
new file mode 100644
index 00000000..32f68147
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponItemClass.cpp
@@ -0,0 +1,39 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "WeaponItemClass.h"
+
+
+// Sets default values
+AWeaponItemClass::AWeaponItemClass()
+{
+ // 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 AWeaponItemClass::BeginPlay()
+{
+ Super::BeginPlay();
+
+}
+
+// Called every frame
+void AWeaponItemClass::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+}
+
+//Called from WeaponInventory actor component class
+void AWeaponItemClass::Equip()
+{
+ GetWorld();
+ UE_LOG(LogTemp, Display, TEXT("World Player is in: %s"), GetWorld());
+}
+
+//Called from WeaponInventory actor component class
+void AWeaponItemClass::Unequip(ABaseWeaponClass* PickedUpWeapon)
+{
+ //same as equip but
+}
+
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponItemClass.h b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponItemClass.h
new file mode 100644
index 00000000..0ab0f0a6
--- /dev/null
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/WeaponItemClass.h
@@ -0,0 +1,34 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Actor.h"
+#include "WeaponItemClass.generated.h"
+
+class ABaseWeaponClass;
+
+UCLASS()
+class ENDLESSVENDETTA_API AWeaponItemClass : public AActor
+{
+ GENERATED_BODY()
+
+public:
+ // Sets default values for this actor's properties
+ AWeaponItemClass();
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+ UFUNCTION()
+ void Equip();
+
+ UFUNCTION()
+ void Unequip(ABaseWeaponClass* PickedUpWeapon);
+
+};
diff --git a/UE5 Layout/Phil_s_UE5_Layout.ini b/UE5 Layout/Phil_s_UE5_Layout.ini
new file mode 100644
index 00000000..abba7c93
--- /dev/null
+++ b/UE5 Layout/Phil_s_UE5_Layout.ini
@@ -0,0 +1,30 @@
+[EditorLayouts]
+LayoutName=NSLOCTEXT("LayoutNamespace", "Phil_s_UE5_Layout", "Phil's UE5 Layout")
+LayoutDescription=NSLOCTEXT("LayoutNamespace", "", "")
+UnrealEd_Layout_v1.5=("Type": "Layout","Name": "UnrealEd_Layout_v1.5","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 2,"Type": "Stack","HideTabWell": false,"ForegroundTab": "LevelEditor","Tabs": [("TabId": "LevelEditor","TabState": "OpenedTab"),("TabId": "DockedToolkit","TabState": "ClosedTab"),("TabId": "ProjectSettings","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Automatic","WindowSize_X": 2236,"WindowSize_Y": 909.99993896484375,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "ContentBrowser1Tab","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Specified","WindowPosition_X": -1058,"WindowPosition_Y": 229,"WindowSize_X": 1000,"WindowSize_Y": 600,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "WidgetReflector","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Specified","WindowPosition_X": 9,"WindowPosition_Y": 186,"WindowSize_X": 1644,"WindowSize_Y": 600,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "MessageLog","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Specified","WindowPosition_X": 457,"WindowPosition_Y": 213,"WindowSize_X": 1000,"WindowSize_Y": 600,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "ReferenceViewer","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Specified","WindowPosition_X": 455,"WindowPosition_Y": 227,"WindowSize_X": 1000,"WindowSize_Y": 600,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "ProjectLauncher","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Specified","WindowPosition_X": 0,"WindowPosition_Y": 58,"WindowSize_X": 1914,"WindowSize_Y": 910,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "EditorSettings","TabState": "ClosedTab"),("TabId": "PluginsEditor","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Specified","WindowPosition_X": 134,"WindowPosition_Y": 74,"WindowSize_X": 1650,"WindowSize_Y": 900,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "BridgeTab","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Vertical","WindowPlacement": "Placement_Specified","WindowPosition_X": 0,"WindowPosition_Y": 58,"WindowSize_X": 1914,"WindowSize_Y": 910,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "StandaloneToolkit","TabState": "ClosedTab")]),("SizeCoefficient": 0.34999999403953552,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "MergeTool","TabState": "ClosedTab")])])])
+LevelEditor_Layout_v1.8=("Type": "Layout","Name": "LevelEditor_Layout_v1.8","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 1,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.75,"Type": "Splitter","Orientation": "Orient_Horizontal","Nodes": [("SizeCoefficient": 0.30000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "TopLeftModeTab","TabState": "ClosedTab"),("TabId": "LevelEditorToolBox","TabState": "ClosedTab")]),("SizeCoefficient": 1.1499999761581421,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": true,"ForegroundTab": "None","Tabs": [("TabId": "LevelEditorToolBar","TabState": "OpenedTab")]),("SizeCoefficient": 1,"Type": "Stack","HideTabWell": true,"ForegroundTab": "None","Tabs": [("TabId": "EditorModeToolbar","TabState": "ClosedTab")]),("SizeCoefficient": 1,"Type": "Splitter","Orientation": "Orient_Horizontal","Nodes": [("SizeCoefficient": 1.5425490140914917,"Type": "Stack","HideTabWell": true,"ForegroundTab": "LevelEditorViewport","Tabs": [("TabId": "LevelEditorViewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.45745047926902771,"Type": "Stack","HideTabWell": false,"ForegroundTab": "PlacementBrowser","Tabs": [("TabId": "PlacementBrowser","TabState": "OpenedTab")])])])]),("SizeCoefficient": 0.40000000596046448,"Type": "Splitter","Orientation": "Orient_Horizontal","Nodes": [("SizeCoefficient": 0.41683539748191833,"Type": "Stack","HideTabWell": false,"ForegroundTab": "ContentBrowserTab1","Tabs": [("TabId": "EmbeddedSequenceID","TabState": "ClosedTab"),("TabId": "ContentBrowserTab1","TabState": "OpenedTab"),("TabId": "OutputLog","TabState": "OpenedTab"),("TabId": "Sequencer","TabState": "ClosedTab")]),("SizeCoefficient": 0.38316473364830017,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "ContentBrowserTab2","TabState": "ClosedTab")])])]),("SizeCoefficient": 0.30000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "TakeRecorder","TabState": "ClosedTab")]),("SizeCoefficient": 0.25,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.56138122081756592,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "TopRightModeTab","TabState": "ClosedTab"),("TabId": "LevelEditorLayerBrowser","TabState": "ClosedTab")]),("SizeCoefficient": 0.83861857652664185,"Type": "Stack","HideTabWell": false,"ForegroundTab": "LevelEditorSceneOutliner","Tabs": [("TabId": "BottomRightModeTab","TabState": "ClosedTab"),("TabId": "LevelEditorSelectionDetails","TabState": "OpenedTab"),("TabId": "WorldBrowserPartitionEditor","TabState": "ClosedTab"),("TabId": "WorldSettingsTab","TabState": "ClosedTab"),("TabId": "LevelEditorSceneOutliner","TabState": "OpenedTab")])])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Specified","WindowPosition_X": 457,"WindowPosition_Y": 213,"WindowSize_X": 1000,"WindowSize_Y": 600,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "WorldBrowserDetails","TabState": "ClosedTab")])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_Specified","WindowPosition_X": 457,"WindowPosition_Y": 213,"WindowSize_X": 1000,"WindowSize_Y": 600,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "WorldBrowserHierarchy","TabState": "ClosedTab")])])])
+WidgetBlueprintEditor_Designer_Layout_v4_8=("Type": "Layout","Name": "WidgetBlueprintEditor_Designer_Layout_v4_8","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.15000000596046448,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "WidgetTemplates","Tabs": [("TabId": "WidgetTemplates","TabState": "OpenedTab"),("TabId": "WidgetLibrary","TabState": "OpenedTab")]),("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "SlateHierarchy","Tabs": [("TabId": "SlateHierarchy","TabState": "OpenedTab"),("TabId": "BindWidget","TabState": "OpenedTab")])]),("SizeCoefficient": 0.85000002384185791,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.69999998807907104,"Type": "Splitter","Orientation": "Orient_Horizontal","Nodes": [("SizeCoefficient": 0.05000000074505806,"Type": "Stack","HideTabWell": true,"ForegroundTab": "None","Tabs": [("TabId": "TopLeftModeTab","TabState": "ClosedTab")]),("SizeCoefficient": 0.80000001192092896,"Type": "Stack","HideTabWell": true,"ForegroundTab": "SlatePreview","Tabs": [("TabId": "SlatePreview","TabState": "OpenedTab")]),("SizeCoefficient": 0.34999999403953552,"Type": "Stack","HideTabWell": false,"ForegroundTab": "WidgetDetails","Tabs": [("TabId": "WidgetDetails","TabState": "OpenedTab")])]),("SizeCoefficient": 0.30000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Animations","Tabs": [("TabId": "Animations","TabState": "OpenedTab"),("TabId": "EmbeddedSequenceID","TabState": "ClosedTab"),("TabId": "CompilerResults","TabState": "ClosedTab")])])]),("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Vertical","WindowPlacement": "Placement_Specified","WindowPosition_X": 573,"WindowPosition_Y": 306,"WindowSize_X": 768,"WindowSize_Y": 413,"bIsMaximized": false,"Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "SequencerGraphEditor","TabState": "ClosedTab")])])])
+Blueprints_Unified_Components_v7=("Type": "Layout","Name": "Blueprints_Unified_Components_v7","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.15000000596046448,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.30000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "ConstructionScriptEditor","Tabs": [("TabId": "ConstructionScriptEditor","TabState": "OpenedTab")]),("SizeCoefficient": 0.69999998807907104,"Type": "Stack","HideTabWell": false,"ForegroundTab": "MyBlueprint","Tabs": [("TabId": "MyBlueprint","TabState": "OpenedTab")])]),("SizeCoefficient": 0.60000002384185791,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.80000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "SCSViewport","Tabs": [("TabId": "SCSViewport","TabState": "OpenedTab"),("TabId": "Document","TabState": "ClosedTab")]),("SizeCoefficient": 0.20000000298023224,"Type": "Stack","HideTabWell": false,"ForegroundTab": "FindResults","Tabs": [("TabId": "EmbeddedSequenceID","TabState": "ClosedTab"),("TabId": "CompilerResults","TabState": "OpenedTab"),("TabId": "FindResults","TabState": "OpenedTab"),("TabId": "BookmarkList","TabState": "ClosedTab")])]),("SizeCoefficient": 0.25,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Inspector","Tabs": [("TabId": "Inspector","TabState": "OpenedTab"),("TabId": "PaletteList","TabState": "ClosedTab")])])])
+Standalone_TextureEditor_Layout_v5=("Type": "Layout","Name": "Standalone_TextureEditor_Layout_v5","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": true,"ForegroundTab": "TextureEditor_Viewport","Tabs": [("TabId": "TextureEditor_Viewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.33000001311302185,"Type": "Stack","HideTabWell": false,"ForegroundTab": "TextureEditor_Properties","Tabs": [("TabId": "TextureEditor_Properties","TabState": "OpenedTab"),("TabId": "TextureEditor_Oodle","TabState": "OpenedTab")])])])
+Standalone_BlueprintDefaults_Layout_v7=("Type": "Layout","Name": "Standalone_BlueprintDefaults_Layout_v7","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Vertical","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": true,"ForegroundTab": "DefaultEditor","Tabs": [("TabId": "DefaultEditor","TabState": "OpenedTab")])])])
+Blueprints_Unified_v5=("Type": "Layout","Name": "Blueprints_Unified_v5","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.15000000596046448,"Type": "Stack","HideTabWell": false,"ForegroundTab": "MyBlueprint","Tabs": [("TabId": "MyBlueprint","TabState": "OpenedTab")]),("SizeCoefficient": 0.60000002384185791,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.80000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Document","Tabs": [("TabId": "Document","TabState": "ClosedTab")]),("SizeCoefficient": 0.20000000298023224,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "EmbeddedSequenceID","TabState": "ClosedTab"),("TabId": "CompilerResults","TabState": "ClosedTab"),("TabId": "FindResults","TabState": "ClosedTab"),("TabId": "BookmarkList","TabState": "ClosedTab")])]),("SizeCoefficient": 0.25,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Inspector","Tabs": [("TabId": "Inspector","TabState": "OpenedTab"),("TabId": "PaletteList","TabState": "ClosedTab")])])])
+Standalone_SimpleAssetEditor_Layout_v4=("Type": "Layout","Name": "Standalone_SimpleAssetEditor_Layout_v4","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Vertical","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "GenericEditor_Properties","Tabs": [("TabId": "GenericEditor_Properties","TabState": "OpenedTab")])])])
+Standalone_DataTableEditor_Layout_v6=("Type": "Layout","Name": "Standalone_DataTableEditor_Layout_v6","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Vertical","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "DataTableEditor_DataTable","Tabs": [("TabId": "DataTableEditor_DataTable","TabState": "OpenedTab"),("TabId": "DataTableEditor_DataTableDetails","TabState": "OpenedTab")]),("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "DataTableEditor_RowEditor","Tabs": [("TabId": "DataTableEditor_RowEditor","TabState": "OpenedTab")])])])
+WidgetBlueprintEditor_Graph_Layout_v2x1=("Type": "Layout","Name": "WidgetBlueprintEditor_Graph_Layout_v2x1","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.15000000596046448,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "MyBlueprint","Tabs": [("TabId": "MyBlueprint","TabState": "OpenedTab")]),("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Inspector","Tabs": [("TabId": "Inspector","TabState": "OpenedTab")])]),("SizeCoefficient": 0.69999998807907104,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.80000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Document","Tabs": [("TabId": "Document","TabState": "ClosedTab")]),("SizeCoefficient": 0.20000000298023224,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "EmbeddedSequenceID","TabState": "ClosedTab"),("TabId": "CompilerResults","TabState": "ClosedTab"),("TabId": "FindResults","TabState": "ClosedTab")])]),("SizeCoefficient": 0.15000000596046448,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "PaletteList","TabState": "ClosedTab")])])])
+Stanalone_AnimationBlueprintEditMode_Layout_v1.4=("Type": "Layout","Name": "Stanalone_AnimationBlueprintEditMode_Layout_v1.4","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.25,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": true,"ForegroundTab": "Viewport","Tabs": [("TabId": "Viewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "MyBlueprint","Tabs": [("TabId": "AnimCurveViewerTab","TabState": "ClosedTab"),("TabId": "SkeletonTreeView","TabState": "ClosedTab"),("TabId": "PoseWatchManager","TabState": "OpenedTab"),("TabId": "MyBlueprint","TabState": "OpenedTab")])]),("SizeCoefficient": 0.55000001192092896,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.80000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Document","Tabs": [("TabId": "Document","TabState": "ClosedTab")]),("SizeCoefficient": 0.20000000298023224,"Type": "Stack","HideTabWell": false,"ForegroundTab": "CompilerResults","Tabs": [("TabId": "CompilerResults","TabState": "OpenedTab"),("TabId": "FindResults","TabState": "ClosedTab")])]),("SizeCoefficient": 0.20000000298023224,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Inspector","Tabs": [("TabId": "Inspector","TabState": "OpenedTab"),("TabId": "AdvancedPreviewTab","TabState": "OpenedTab"),("TabId": "PersonaSequenceRecorderSettings","TabState": "ClosedTab"),("TabId": "AnimBlueprintParentPlayerEditor","TabState": "ClosedTab")]),("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "SequenceBrowser","Tabs": [("TabId": "AnimBlueprintPreviewEditor","TabState": "OpenedTab"),("TabId": "SequenceBrowser","TabState": "OpenedTab"),("TabId": "SkeletonSlotNames","TabState": "ClosedTab")])])])])
+Standalone_MaterialEditor_Layout_v13=("Type": "Layout","Name": "Standalone_MaterialEditor_Layout_v13","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.14999999105930328,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": true,"ForegroundTab": "MaterialEditor_Preview","Tabs": [("TabId": "MaterialEditor_Preview","TabState": "OpenedTab")]),("SizeCoefficient": 1,"Type": "Stack","HideTabWell": false,"ForegroundTab": "MaterialEditor_MaterialProperties","Tabs": [("TabId": "MaterialEditor_MaterialProperties","TabState": "OpenedTab"),("TabId": "MaterialEditor_PreviewSettings","TabState": "ClosedTab"),("TabId": "MaterialEditor_ParameterDefaults","TabState": "OpenedTab"),("TabId": "MaterialEditor_CustomPrimitiveData","TabState": "ClosedTab"),("TabId": "MaterialInstanceEditor_MaterialLayerProperties","TabState": "ClosedTab")])]),("SizeCoefficient": 0.59999996423721313,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.80000001192092896,"Type": "Stack","HideTabWell": true,"ForegroundTab": "Document","Tabs": [("TabId": "Document","TabState": "OpenedTab")]),("SizeCoefficient": 0.20000000298023224,"Type": "Stack","HideTabWell": false,"ForegroundTab": "OldMaterialStats_Grid","Tabs": [("TabId": "MaterialStats_Grid","TabState": "ClosedTab"),("TabId": "OldMaterialStats_Grid","TabState": "OpenedTab"),("TabId": "MaterialEditor_Find","TabState": "ClosedTab")])]),("SizeCoefficient": 0.14999999105930328,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "MaterialEditor_Palette","TabState": "SidebarTab","SidebarLocation": "Right","SidebarCoeff": 0.14000000059604645,"SidebarPinned": false)])])])
+Standalone_StaticMeshEditor_Layout_v6=("Type": "Layout","Name": "Standalone_StaticMeshEditor_Layout_v6","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.73684209585189819,"Type": "Stack","HideTabWell": true,"ForegroundTab": "StaticMeshEditor_Viewport","Tabs": [("TabId": "StaticMeshEditor_Viewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.26315790414810181,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.69999998807907104,"Type": "Stack","HideTabWell": false,"ForegroundTab": "StaticMeshEditor_Properties","Tabs": [("TabId": "StaticMeshEditor_Properties","TabState": "OpenedTab"),("TabId": "StaticMeshEditor_SocketManager","TabState": "OpenedTab"),("TabId": "TopLeftModeTab","TabState": "ClosedTab")]),("SizeCoefficient": 0.30000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "None","Tabs": [("TabId": "StaticMeshEditor_SocketManager","TabState": "OpenedTab"),("TabId": "TopLeftModeTab","TabState": "ClosedTab"),("TabId": "StaticMeshEditor_Collision","TabState": "ClosedTab")])])])])
+Standalone_SkeletalMeshEditor_Layout_v3.4=("Type": "Layout","Name": "Standalone_SkeletalMeshEditor_Layout_v3.4","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.17999999225139618,"Type": "Stack","HideTabWell": false,"ForegroundTab": "SkeletonTreeView","Tabs": [("TabId": "AnimAssetPropertiesTab","TabState": "OpenedTab"),("TabId": "SkeletonTreeView","TabState": "OpenedTab")]),("SizeCoefficient": 0.54000002145767212,"Type": "Stack","HideTabWell": true,"ForegroundTab": "Viewport","Tabs": [("TabId": "Viewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.17999999225139618,"Type": "Stack","HideTabWell": false,"ForegroundTab": "MorphTargetsTab","Tabs": [("TabId": "MorphTargetsTab","TabState": "OpenedTab"),("TabId": "DetailsTab","TabState": "ClosedTab"),("TabId": "ToolBoxDetailsTab","TabState": "ClosedTab"),("TabId": "AdvancedPreviewTab","TabState": "OpenedTab"),("TabId": "PersonaSequenceRecorderSettings","TabState": "ClosedTab")])])])
+Standalone_AnimationEditor_Layout_v1.4=("Type": "Layout","Name": "Standalone_AnimationEditor_Layout_v1.4","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.17999999225139618,"Type": "Stack","HideTabWell": false,"ForegroundTab": "AnimAssetPropertiesTab","Tabs": [("TabId": "SkeletonTreeView","TabState": "OpenedTab"),("TabId": "AnimAssetPropertiesTab","TabState": "OpenedTab")]),("SizeCoefficient": 0.54000002145767212,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.60000002384185791,"Type": "Stack","HideTabWell": true,"ForegroundTab": "Viewport","Tabs": [("TabId": "Viewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.40000000596046448,"Type": "Stack","HideTabWell": true,"ForegroundTab": "Document","Tabs": [("TabId": "Document","TabState": "ClosedTab"),("TabId": "CurveEditor","TabState": "ClosedTab")])]),("SizeCoefficient": 0.17999999225139618,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.60000002384185791,"Type": "Stack","HideTabWell": false,"ForegroundTab": "DetailsTab","Tabs": [("TabId": "DetailsTab","TabState": "OpenedTab"),("TabId": "AdvancedPreviewTab","TabState": "OpenedTab"),("TabId": "PersonaSequenceRecorderSettings","TabState": "ClosedTab")]),("SizeCoefficient": 0.40000000596046448,"Type": "Stack","HideTabWell": false,"ForegroundTab": "SequenceBrowser","Tabs": [("TabId": "SequenceBrowser","TabState": "OpenedTab"),("TabId": "AnimMontageSections","TabState": "ClosedTab"),("TabId": "AnimCurveViewerTab","TabState": "ClosedTab"),("TabId": "SkeletonSlotNames","TabState": "ClosedTab")])])])])
+Standalone_SkeletonEditor_Layout_v1.3=("Type": "Layout","Name": "Standalone_SkeletonEditor_Layout_v1.3","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.17999999225139618,"Type": "Stack","HideTabWell": false,"ForegroundTab": "SkeletonTreeView","Tabs": [("TabId": "SkeletonTreeView","TabState": "OpenedTab"),("TabId": "RetargetManager","TabState": "ClosedTab")]),("SizeCoefficient": 0.54000002145767212,"Type": "Stack","HideTabWell": true,"ForegroundTab": "Viewport","Tabs": [("TabId": "Viewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.17999999225139618,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "AdvancedPreviewTab","Tabs": [("TabId": "DetailsTab","TabState": "OpenedTab"),("TabId": "AdvancedPreviewTab","TabState": "OpenedTab"),("TabId": "PersonaSequenceRecorderSettings","TabState": "ClosedTab")]),("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "SkeletonAnimNotifies","Tabs": [("TabId": "SkeletonAnimNotifies","TabState": "OpenedTab"),("TabId": "SequenceBrowser","TabState": "OpenedTab"),("TabId": "AnimCurveViewerTab","TabState": "OpenedTab"),("TabId": "SkeletonSlotNames","TabState": "ClosedTab")])])])])
+Standalone_PhysicsAssetEditor_Layout_v5.3=("Type": "Layout","Name": "Standalone_PhysicsAssetEditor_Layout_v5.3","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.17999999225139618,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.60000002384185791,"Type": "Stack","HideTabWell": false,"ForegroundTab": "SkeletonTreeView","Tabs": [("TabId": "SkeletonTreeView","TabState": "OpenedTab")]),("SizeCoefficient": 0.40000000596046448,"Type": "Stack","HideTabWell": false,"ForegroundTab": "PhysicsAssetGraphView","Tabs": [("TabId": "PhysicsAssetGraphView","TabState": "OpenedTab")])]),("SizeCoefficient": 0.54000002145767212,"Type": "Stack","HideTabWell": true,"ForegroundTab": "Viewport","Tabs": [("TabId": "Viewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.17999999225139618,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.60000002384185791,"Type": "Stack","HideTabWell": false,"ForegroundTab": "DetailsTab","Tabs": [("TabId": "DetailsTab","TabState": "OpenedTab"),("TabId": "AdvancedPreviewTab","TabState": "OpenedTab"),("TabId": "PersonaSequenceRecorderSettings","TabState": "ClosedTab")]),("SizeCoefficient": 0.40000000596046448,"Type": "Stack","HideTabWell": false,"ForegroundTab": "PhysicsAssetTools","Tabs": [("TabId": "PhysicsAssetTools","TabState": "OpenedTab"),("TabId": "PhysicsAssetProfilesView","TabState": "OpenedTab")])])])])
+UVEditorLayout2=("Type": "Layout","Name": "UVEditorLayout2","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.20000000298023224,"Type": "Stack","HideTabWell": true,"ForegroundTab": "None","Tabs": [("TabId": "TopLeftModeTab","TabState": "ClosedTab")]),("SizeCoefficient": 0.40000000596046448,"Type": "Stack","HideTabWell": true,"ForegroundTab": "BaseAssetToolkit_Viewport","Tabs": [("TabId": "BaseAssetToolkit_Viewport","TabState": "OpenedTab")]),("SizeCoefficient": 0.40000000596046448,"Type": "Stack","HideTabWell": true,"ForegroundTab": "UVEditor_LivePreviewTab","Tabs": [("TabId": "UVEditor_LivePreviewTab","TabState": "OpenedTab")])])])
+Standalone_SoundCueEditor_Layout_v5=("Type": "Layout","Name": "Standalone_SoundCueEditor_Layout_v5","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.20249998569488525,"Type": "Stack","HideTabWell": true,"ForegroundTab": "SoundCueEditor_Properties","Tabs": [("TabId": "SoundCueEditor_Properties","TabState": "OpenedTab")]),("SizeCoefficient": 0.58499997854232788,"Type": "Stack","HideTabWell": true,"ForegroundTab": "SoundCueEditor_GraphCanvas","Tabs": [("TabId": "SoundCueEditor_GraphCanvas","TabState": "OpenedTab")]),("SizeCoefficient": 0.11249999701976776,"Type": "Stack","HideTabWell": true,"ForegroundTab": "SoundCueEditor_Palette","Tabs": [("TabId": "SoundCueEditor_Palette","TabState": "OpenedTab")])])])
+Standalone_BehaviorTree_Layout_v2=("Type": "Layout","Name": "Standalone_BehaviorTree_Layout_v2","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.69999998807907104,"Type": "Stack","HideTabWell": false,"ForegroundTab": "Document","Tabs": [("TabId": "Document","TabState": "ClosedTab")]),("SizeCoefficient": 0.30000001192092896,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.60000002384185791,"Type": "Stack","HideTabWell": false,"ForegroundTab": "BehaviorTreeEditor_Properties","Tabs": [("TabId": "BehaviorTreeEditor_Properties","TabState": "OpenedTab"),("TabId": "BehaviorTreeEditor_Search","TabState": "ClosedTab")]),("SizeCoefficient": 0.40000000596046448,"Type": "Stack","HideTabWell": false,"ForegroundTab": "BehaviorTreeEditor_Blackboard","Tabs": [("TabId": "BehaviorTreeEditor_Blackboard","TabState": "OpenedTab")])])])])
+WidgetReflector_Layout_NoStats_v2=("Type": "Layout","Name": "WidgetReflector_Layout_NoStats_v2","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Vertical","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 1,"Type": "Stack","HideTabWell": true,"ForegroundTab": "WidgetReflector.SlateOptionsTab","Tabs": [("TabId": "WidgetReflector.SlateOptionsTab","TabState": "OpenedTab")]),("SizeCoefficient": 1,"Type": "Splitter","Orientation": "Orient_Horizontal","Nodes": [("SizeCoefficient": 1,"Type": "Splitter","Orientation": "Orient_Vertical","Nodes": [("SizeCoefficient": 0.69999998807907104,"Type": "Stack","HideTabWell": true,"ForegroundTab": "WidgetReflector.WidgetHierarchyTab","Tabs": [("TabId": "WidgetReflector.WidgetHierarchyTab","TabState": "OpenedTab")]),("SizeCoefficient": 0.30000001192092896,"Type": "Stack","HideTabWell": true,"ForegroundTab": "None","Tabs": [("TabId": "WidgetReflector.SnapshotWidgetPickerTab","TabState": "ClosedTab"),("TabId": "WidgetReflector.WidgetEventsTab","TabState": "ClosedTab"),("TabId": "WidgetReflector.HittestGridTab","TabState": "ClosedTab"),("TabId": "WidgetReflector.WidgetList","TabState": "ClosedTab")])]),("SizeCoefficient": 0.30000001192092896,"Type": "Stack","HideTabWell": true,"ForegroundTab": "WidgetReflector.WidgetDetailsTab","Tabs": [("TabId": "WidgetReflector.WidgetDetailsTab","TabState": "OpenedTab")])])])])
+Standalone_MaterialInstanceEditor_Layout_v8=("Type": "Layout","Name": "Standalone_MaterialInstanceEditor_Layout_v8","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.62999999523162842,"Type": "Stack","HideTabWell": true,"ForegroundTab": "MaterialInstanceEditor_Preview","Tabs": [("TabId": "MaterialInstanceEditor_Preview","TabState": "OpenedTab"),("TabId": "MaterialInstanceEditor_PreviewSettings","TabState": "ClosedTab")]),("SizeCoefficient": 0.27000001072883606,"Type": "Stack","HideTabWell": false,"ForegroundTab": "MaterialInstanceEditor_MaterialProperties","Tabs": [("TabId": "MaterialInstanceEditor_MaterialProperties","TabState": "OpenedTab"),("TabId": "MaterialInstanceEditor_MaterialLayerProperties","TabState": "OpenedTab")])])])
+None=("Type": "Layout","Name": "None","PrimaryAreaIndex": -1,"Areas": [])
+Standalone_ControlRigEditMode_Layout_v1.5=("Type": "Layout","Name": "Standalone_ControlRigEditMode_Layout_v1.5","PrimaryAreaIndex": -1,"Areas": [])
+Standalone_BlackboardEditor_Layout_v2=("Type": "Layout","Name": "Standalone_BlackboardEditor_Layout_v2","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "BehaviorTreeEditor_BlackboardEditor","Tabs": [("TabId": "BehaviorTreeEditor_BlackboardEditor","TabState": "OpenedTab")]),("SizeCoefficient": 0.5,"Type": "Stack","HideTabWell": false,"ForegroundTab": "BehaviorTreeEditor_BlackboardProperties","Tabs": [("TabId": "BehaviorTreeEditor_BlackboardProperties","TabState": "OpenedTab")])])])
+Standalone_EnvironmentQuery_Layout_v2=("Type": "Layout","Name": "Standalone_EnvironmentQuery_Layout_v2","PrimaryAreaIndex": 0,"Areas": [("SizeCoefficient": 1,"Type": "Area","Orientation": "Orient_Horizontal","WindowPlacement": "Placement_NoWindow","Nodes": [("SizeCoefficient": 0.69999998807907104,"Type": "Stack","HideTabWell": false,"ForegroundTab": "EnvironmentQueryEditor_UpdateGraph","Tabs": [("TabId": "EnvironmentQueryEditor_UpdateGraph","TabState": "OpenedTab")]),("SizeCoefficient": 0.30000001192092896,"Type": "Stack","HideTabWell": false,"ForegroundTab": "EnvironmentQueryEditor_Properties","Tabs": [("TabId": "EnvironmentQueryEditor_Properties","TabState": "OpenedTab"),("TabId": "EnvironmentQueryEditor_Profiler","TabState": "OpenedTab")])])])
+