diff --git a/addons/all_in_one/addon.gproj b/addons/all_in_one/addon.gproj
index b1f4cd728..05a3ab058 100755
--- a/addons/all_in_one/addon.gproj
+++ b/addons/all_in_one/addon.gproj
@@ -3,7 +3,7 @@ GameProject {
GUID "60C4E0B49618CC62"
TITLE "ACE All in One"
Dependencies {
- "58D0FB3206B6F859" "60C4CE4888FF4621" "60E573C9B04CC408" "5DBD560C5148E1DA" "5EB744C5F42E0800" "60C53A9372ED3964" "606C369BAC3F6CC3" "60C4C12DAE90727B" "65860252A17554C7" "60EAEA0389DB3CC2" "611CB1D409001EB0" "61B7763A8AEB53B7" "646D52AF8BB3FF15" "61226BB18D360BDD" "64475DC102F2BDA4" "62F802951CC8A37E"
+ "58D0FB3206B6F859" "60C4CE4888FF4621" "60E573C9B04CC408" "5DBD560C5148E1DA" "5EB744C5F42E0800" "60C53A9372ED3964" "606C369BAC3F6CC3" "60C4C12DAE90727B" "65860252A17554C7" "60EAEA0389DB3CC2" "611CB1D409001EB0" "61B7763A8AEB53B7" "646D52AF8BB3FF15" "61226BB18D360BDD" "64475DC102F2BDA4" "62F802951CC8A37E" "68FB692D96F504B5"
}
Configurations {
GameProjectConfig PC {
@@ -19,4 +19,4 @@ GameProject {
GameProjectConfig HEADLESS {
}
}
-}
\ No newline at end of file
+}
diff --git a/addons/all_in_one/dev.gproj b/addons/all_in_one/dev.gproj
index e661dd2f6..53518ad26 100644
--- a/addons/all_in_one/dev.gproj
+++ b/addons/all_in_one/dev.gproj
@@ -3,7 +3,7 @@ GameProject {
GUID "65AD7BE594439A52"
TITLE "ACE All in One Dev"
Dependencies {
- "58D0FB3206B6F859" "65AD7D0D9941A380" "65AD7C139EB4C1A1" "65AD7C379CBD394D" "65AD7BCC9F6B3B4E" "65AD7CF69FAF1FDD" "65AD7D2E9866FA6E" "6586079789278413" "65B343F799FB521B" "65AD7CE59E8DB349" "65AD7D4099944EBD" "65AD7D1E9EEAFA53" "65AD7C249E4ECDFB" "65AD7CB89F219E38" "65AD7C75826B46C6" "65AD7CD09CAEC4E2"
+ "58D0FB3206B6F859" "65AD7D0D9941A380" "65AD7C139EB4C1A1" "65AD7C379CBD394D" "65AD7BCC9F6B3B4E" "65AD7CF69FAF1FDD" "65AD7D2E9866FA6E" "6586079789278413" "65B343F799FB521B" "65AD7CE59E8DB349" "65AD7D4099944EBD" "65AD7D1E9EEAFA53" "65AD7C249E4ECDFB" "65AD7CB89F219E38" "65AD7C75826B46C6" "65AD7CD09CAEC4E2" "68FC0EDE9F677A3C"
}
Configurations {
GameProjectConfig PC {
@@ -19,4 +19,4 @@ GameProject {
GameProjectConfig HEADLESS {
}
}
-}
\ No newline at end of file
+}
diff --git a/addons/scopes/Configs/System/chimeraInputCommon.conf b/addons/scopes/Configs/System/chimeraInputCommon.conf
new file mode 100644
index 000000000..560872ecc
--- /dev/null
+++ b/addons/scopes/Configs/System/chimeraInputCommon.conf
@@ -0,0 +1,102 @@
+ActionManager {
+ Actions {
+ Action ACE_VerticalZeroingUp {
+ Type AnalogRelative
+ InputSource InputSourceSum "{68F803CCB717067B}" {
+ Sources {
+ InputSourceCombo "{68F803CCB717F0E5}" {
+ FilterPreset "up"
+ Sources {
+ InputSourceValue "{68F803CCB717F0ED}" {
+ Input "keyboard:KC_LSHIFT"
+ }
+ InputSourceValue "{68F803CCB717F0D2}" {
+ Input "keyboard:KC_PRIOR"
+ Filter InputFilterRepeat "{68F9110F776125C0}" {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ Action ACE_VerticalZeroingDown {
+ Type AnalogRelative
+ InputSource InputSourceSum "{68F918F948FDD933}" {
+ Sources {
+ InputSourceCombo "{68F918F948FDB017}" {
+ FilterPreset "down"
+ Sources {
+ InputSourceValue "{68F918F948FDB014}" {
+ Input "keyboard:KC_LSHIFT"
+ }
+ InputSourceValue "{68F918F948FDB01A}" {
+ Input "keyboard:KC_NEXT"
+ Filter InputFilterRepeat "{68F918F948FDB01D}" {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ Action ACE_HorizontalZeroingRight {
+ Type AnalogRelative
+ InputSource InputSourceSum "{68F83C3C13E8E275}" {
+ Sources {
+ InputSourceCombo "{68F83C3C13E8D2C7}" {
+ FilterPreset "right"
+ Sources {
+ InputSourceValue "{68F83C3C13E8D2CF}" {
+ Input "keyboard:KC_LCONTROL"
+ }
+ InputSourceValue "{68F83C3C13E8D232}" {
+ Input "keyboard:KC_PRIOR"
+ Filter InputFilterRepeat "{68F83C3C13E8D23B}" {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ Action ACE_HorizontalZeroingLeft {
+ Type AnalogRelative
+ InputSource InputSourceSum "{68F83C3C037A065C}" {
+ Sources {
+ InputSourceCombo "{68F83C3C037A064A}" {
+ FilterPreset "left"
+ Sources {
+ InputSourceValue "{68F83C3C037A0648}" {
+ Input "keyboard:KC_LCONTROL"
+ }
+ InputSourceValue "{68F83C3C037A064D}" {
+ Input "keyboard:KC_NEXT"
+ Filter InputFilterRepeat "{68F83C3C037A05B3}" {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ Contexts {
+ ActionContext CharacterWeaponContext {
+ ActionRefs +{
+ "ACE_VerticalZeroingUp"
+ "ACE_VerticalZeroingDown"
+ "ACE_HorizontalZeroingRight"
+ "ACE_HorizontalZeroingLeft"
+ }
+ }
+ ActionContext CharacterWeaponAimContext {
+ ActionRefs +{
+ "ACE_VerticalZeroingUp"
+ "ACE_VerticalZeroingDown"
+ "ACE_HorizontalZeroingRight"
+ "ACE_HorizontalZeroingLeft"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Configs/System/chimeraInputCommon.conf.meta b/addons/scopes/Configs/System/chimeraInputCommon.conf.meta
new file mode 100644
index 000000000..f1e7b1a2d
--- /dev/null
+++ b/addons/scopes/Configs/System/chimeraInputCommon.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{795184CF9AD764DB}Configs/System/chimeraInputCommon.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Configs/System/keyBindingMenu.conf b/addons/scopes/Configs/System/keyBindingMenu.conf
new file mode 100644
index 000000000..4676a92f7
--- /dev/null
+++ b/addons/scopes/Configs/System/keyBindingMenu.conf
@@ -0,0 +1,32 @@
+SCR_KeyBindingMenuConfig {
+ m_KeyBindingCategories {
+ SCR_KeyBindingCategory "{60C72E6BAD884638}" {
+ m_KeyBindingEntries {
+ SCR_KeyBindingEntry "{68F951238C2255D8}" {
+ m_sActionName "separator"
+ m_sDisplayName "#ACE_Scopes-AddonName"
+ }
+ SCR_KeyBindingEntry "{68F9512C565D085E}" {
+ m_sActionName "ACE_VerticalZeroingUp"
+ m_sDisplayName "#ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ m_sPreset "up"
+ }
+ SCR_KeyBindingEntry "{68F95123FFE65133}" {
+ m_sActionName "ACE_VerticalZeroingDown"
+ m_sDisplayName "#ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ m_sPreset "down"
+ }
+ SCR_KeyBindingEntry "{68F95123F70B833E}" {
+ m_sActionName "ACE_HorizontalZeroingRight"
+ m_sDisplayName "#ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ m_sPreset "right"
+ }
+ SCR_KeyBindingEntry "{68F95123E2444070}" {
+ m_sActionName "ACE_HorizontalZeroingLeft"
+ m_sDisplayName "#ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ m_sPreset "left"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Configs/System/keyBindingMenu.conf.meta b/addons/scopes/Configs/System/keyBindingMenu.conf.meta
new file mode 100644
index 000000000..f54af760a
--- /dev/null
+++ b/addons/scopes/Configs/System/keyBindingMenu.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{4EE7794C9A3F11EF}Configs/System/keyBindingMenu.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.cs_cz.conf b/addons/scopes/Language/ACE_Scopes_localization.cs_cz.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.cs_cz.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.cs_cz.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.cs_cz.conf.meta
new file mode 100644
index 000000000..aaeb84996
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.cs_cz.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{38E8EBB86E0D97A1}Language/ACE_Scopes_localization.cs_cz.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.de_de.conf b/addons/scopes/Language/ACE_Scopes_localization.de_de.conf
new file mode 100644
index 000000000..ca70eadc7
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.de_de.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Zielfernrohre"
+ "Seite nach links korrigieren"
+ "Seite nach rechts korrigieren"
+ "Höhe nach unten korrigieren"
+ "Höhe nach oben korrigieren"
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.de_de.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.de_de.conf.meta
new file mode 100644
index 000000000..b71372719
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.de_de.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{ED96F18B7DAE8681}Language/ACE_Scopes_localization.de_de.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.en_us.conf b/addons/scopes/Language/ACE_Scopes_localization.en_us.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.en_us.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.en_us.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.en_us.conf.meta
new file mode 100644
index 000000000..3c8a2bf1e
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.en_us.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{B3667BC0175D8380}Language/ACE_Scopes_localization.en_us.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.es_es.conf b/addons/scopes/Language/ACE_Scopes_localization.es_es.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.es_es.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.es_es.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.es_es.conf.meta
new file mode 100644
index 000000000..43995328a
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.es_es.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{762A3649F95FE89F}Language/ACE_Scopes_localization.es_es.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.fr_fr.conf b/addons/scopes/Language/ACE_Scopes_localization.fr_fr.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.fr_fr.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.fr_fr.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.fr_fr.conf.meta
new file mode 100644
index 000000000..156eba4d3
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.fr_fr.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{CD82C37E1FDC0B9D}Language/ACE_Scopes_localization.fr_fr.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.it_it.conf b/addons/scopes/Language/ACE_Scopes_localization.it_it.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.it_it.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.it_it.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.it_it.conf.meta
new file mode 100644
index 000000000..77eb1fe71
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.it_it.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{4D9E4C4AB2FE8864}Language/ACE_Scopes_localization.it_it.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.ja_jp.conf b/addons/scopes/Language/ACE_Scopes_localization.ja_jp.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.ja_jp.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.ja_jp.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.ja_jp.conf.meta
new file mode 100644
index 000000000..4f9c684ba
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.ja_jp.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{5D85F1D88C8FB8CF}Language/ACE_Scopes_localization.ja_jp.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.ko_kr.conf b/addons/scopes/Language/ACE_Scopes_localization.ko_kr.conf
new file mode 100644
index 000000000..fc66b6a1c
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.ko_kr.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "조준경"
+ "왼쪽으로 영점 조정"
+ "오른쪽으로 영점 조정"
+ "아래로 영점 조정"
+ "위로 영점 조정"
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.ko_kr.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.ko_kr.conf.meta
new file mode 100644
index 000000000..26999f972
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.ko_kr.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{FD3BD9741FA2BBF0}Language/ACE_Scopes_localization.ko_kr.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.pl_pl.conf b/addons/scopes/Language/ACE_Scopes_localization.pl_pl.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.pl_pl.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.pl_pl.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.pl_pl.conf.meta
new file mode 100644
index 000000000..ddbb9baa8
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.pl_pl.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{A14A7F8EA14D278C}Language/ACE_Scopes_localization.pl_pl.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.pt_br.conf b/addons/scopes/Language/ACE_Scopes_localization.pt_br.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.pt_br.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.pt_br.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.pt_br.conf.meta
new file mode 100644
index 000000000..b61b06acb
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.pt_br.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{743DE5429AB3ED36}Language/ACE_Scopes_localization.pt_br.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.ru_ru.conf b/addons/scopes/Language/ACE_Scopes_localization.ru_ru.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.ru_ru.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.ru_ru.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.ru_ru.conf.meta
new file mode 100644
index 000000000..b53ef557f
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.ru_ru.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{217CF1EA07CA8840}Language/ACE_Scopes_localization.ru_ru.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.st b/addons/scopes/Language/ACE_Scopes_localization.st
new file mode 100644
index 000000000..b65fc3eb4
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.st
@@ -0,0 +1,54 @@
+StringTable {
+ ItemClassName "CustomStringTableItem"
+ Items {
+ CustomStringTableItem "{68FC0664618BD07D}" {
+ Id "ACE_Scopes-AddonName"
+ Target_en_us "Scopes"
+ Target_de_de "Zielfernrohre"
+ Target_ko_kr "조준경"
+ Modified 1761348539
+ Author "Kexanone"
+ LastChanged "Psycool"
+ }
+ CustomStringTableItem "{68FC0667C6ED8F01}" {
+ Id "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ Target_en_us "Adjust windage left"
+ Target_de_de "Seite nach links korrigieren"
+ Target_ko_kr "왼쪽으로 영점 조정"
+ Target_zh_cn "風偏向左修正"
+ Modified 1769405228
+ Author "Kexanone"
+ LastChanged "YuanYu"
+ }
+ CustomStringTableItem "{68FC0667C09FF0EF}" {
+ Id "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ Target_en_us "Adjust windage right"
+ Target_de_de "Seite nach rechts korrigieren"
+ Target_ko_kr "오른쪽으로 영점 조정"
+ Target_zh_cn "風偏向右修正"
+ Modified 1769405233
+ Author "Kexanone"
+ LastChanged "YuanYu"
+ }
+ CustomStringTableItem "{68FC0667CA80F035}" {
+ Id "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ Target_en_us "Adjust elevation down"
+ Target_de_de "Höhe nach unten korrigieren"
+ Target_ko_kr "아래로 영점 조정"
+ Target_zh_cn "高低向下修正"
+ Modified 1769405240
+ Author "Kexanone"
+ LastChanged "YuanYu"
+ }
+ CustomStringTableItem "{68FC0667D7F52473}" {
+ Id "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ Target_en_us "Adjust elevation up "
+ Target_de_de "Höhe nach oben korrigieren"
+ Target_ko_kr "위로 영점 조정"
+ Target_zh_cn "高低向上修正"
+ Modified 1769405250
+ Author "Kexanone"
+ LastChanged "YuanYu"
+ }
+ }
+}
diff --git a/addons/scopes/Language/ACE_Scopes_localization.st.meta b/addons/scopes/Language/ACE_Scopes_localization.st.meta
new file mode 100644
index 000000000..36d2d776c
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.st.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{B8CB0ED6EE7E75B6}Language/ACE_Scopes_localization.st"
+ Configurations {
+ StringTableResourceClass PC {
+ }
+ StringTableResourceClass XBOX_ONE : PC {
+ }
+ StringTableResourceClass XBOX_SERIES : PC {
+ }
+ StringTableResourceClass PS4 : PC {
+ }
+ StringTableResourceClass PS5 : PC {
+ }
+ StringTableResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.uk_ua.conf b/addons/scopes/Language/ACE_Scopes_localization.uk_ua.conf
new file mode 100644
index 000000000..2bc4d1979
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.uk_ua.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "Adjust windage left"
+ "Adjust windage right"
+ "Adjust elevation down"
+ "Adjust elevation up "
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.uk_ua.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.uk_ua.conf.meta
new file mode 100644
index 000000000..203ccc4de
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.uk_ua.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{AB24A41C6BE43615}Language/ACE_Scopes_localization.uk_ua.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Language/ACE_Scopes_localization.zh_cn.conf b/addons/scopes/Language/ACE_Scopes_localization.zh_cn.conf
new file mode 100644
index 000000000..72023e54e
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.zh_cn.conf
@@ -0,0 +1,16 @@
+StringTableRuntime {
+ Ids {
+ "ACE_Scopes-AddonName"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingLeft_Name"
+ "ACE_Scopes-KeyBind_ACE_HorizontalZeroingRight_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingDown_Name"
+ "ACE_Scopes-KeyBind_VerticalZeroingUp_Name"
+ }
+ Texts {
+ "Scopes"
+ "風偏向左修正"
+ "風偏向右修正"
+ "高低向下修正"
+ "高低向上修正"
+ }
+}
diff --git a/addons/scopes/Language/ACE_Scopes_localization.zh_cn.conf.meta b/addons/scopes/Language/ACE_Scopes_localization.zh_cn.conf.meta
new file mode 100644
index 000000000..da947b05b
--- /dev/null
+++ b/addons/scopes/Language/ACE_Scopes_localization.zh_cn.conf.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{7194CA215244E608}Language/ACE_Scopes_localization.zh_cn.conf"
+ Configurations {
+ CONFResourceClass PC {
+ }
+ CONFResourceClass XBOX_ONE : PC {
+ }
+ CONFResourceClass XBOX_SERIES : PC {
+ }
+ CONFResourceClass PS4 : PC {
+ }
+ CONFResourceClass PS5 : PC {
+ }
+ CONFResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_No32/Optic_No32_base.et b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_No32/Optic_No32_base.et
new file mode 100644
index 000000000..2b15cf132
--- /dev/null
+++ b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_No32/Optic_No32_base.et
@@ -0,0 +1,8 @@
+GameEntity : "{966B4E5523D2F166}Prefabs/Weapons/Attachments/Optics/WeaponOptic_Base.et" {
+ ID "4BA426CBAED42A14"
+ components {
+ SCR_2DPIPSightsComponent "{5D0CC83435B55855}" {
+ m_fACE_EffectiveVerticalZeroingScale 1.103
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_No32/Optic_No32_base.et.meta b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_No32/Optic_No32_base.et.meta
new file mode 100644
index 000000000..52425e8f4
--- /dev/null
+++ b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_No32/Optic_No32_base.et.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{543B0B77624E6949}Prefabs/Weapons/Attachments/Optics/Optic_No32/Optic_No32_base.et"
+ Configurations {
+ EntityTemplateResourceClass PC {
+ }
+ EntityTemplateResourceClass XBOX_ONE : PC {
+ }
+ EntityTemplateResourceClass XBOX_SERIES : PC {
+ }
+ EntityTemplateResourceClass PS4 : PC {
+ }
+ EntityTemplateResourceClass PS5 : PC {
+ }
+ EntityTemplateResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_PSO1/Optic_PSO1_base.et b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_PSO1/Optic_PSO1_base.et
new file mode 100644
index 000000000..5f84b6f6d
--- /dev/null
+++ b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_PSO1/Optic_PSO1_base.et
@@ -0,0 +1,8 @@
+GameEntity : "{966B4E5523D2F166}Prefabs/Weapons/Attachments/Optics/WeaponOptic_Base.et" {
+ ID "4BA426CBAED42A14"
+ components {
+ SCR_2DPIPSightsComponent "{5D0CC83435B55855}" {
+ m_fACE_EffectiveVerticalZeroingScale 0.94
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_PSO1/Optic_PSO1_base.et.meta b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_PSO1/Optic_PSO1_base.et.meta
new file mode 100644
index 000000000..cb8a70952
--- /dev/null
+++ b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_PSO1/Optic_PSO1_base.et.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{AB71C533945104AE}Prefabs/Weapons/Attachments/Optics/Optic_PSO1/Optic_PSO1_base.et"
+ Configurations {
+ EntityTemplateResourceClass PC {
+ }
+ EntityTemplateResourceClass XBOX_ONE : PC {
+ }
+ EntityTemplateResourceClass XBOX_SERIES : PC {
+ }
+ EntityTemplateResourceClass PS4 : PC {
+ }
+ EntityTemplateResourceClass PS5 : PC {
+ }
+ EntityTemplateResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_SB_PM/Optic_SB_PM_base.et b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_SB_PM/Optic_SB_PM_base.et
new file mode 100644
index 000000000..2b15cf132
--- /dev/null
+++ b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_SB_PM/Optic_SB_PM_base.et
@@ -0,0 +1,8 @@
+GameEntity : "{966B4E5523D2F166}Prefabs/Weapons/Attachments/Optics/WeaponOptic_Base.et" {
+ ID "4BA426CBAED42A14"
+ components {
+ SCR_2DPIPSightsComponent "{5D0CC83435B55855}" {
+ m_fACE_EffectiveVerticalZeroingScale 1.103
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_SB_PM/Optic_SB_PM_base.et.meta b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_SB_PM/Optic_SB_PM_base.et.meta
new file mode 100644
index 000000000..eee07481a
--- /dev/null
+++ b/addons/scopes/Prefabs/Weapons/Attachments/Optics/Optic_SB_PM/Optic_SB_PM_base.et.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{5F60DD9A6D25A62C}Prefabs/Weapons/Attachments/Optics/Optic_SB_PM/Optic_SB_PM_base.et"
+ Configurations {
+ EntityTemplateResourceClass PC {
+ }
+ EntityTemplateResourceClass XBOX_ONE : PC {
+ }
+ EntityTemplateResourceClass XBOX_SERIES : PC {
+ }
+ EntityTemplateResourceClass PS4 : PC {
+ }
+ EntityTemplateResourceClass PS5 : PC {
+ }
+ EntityTemplateResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Prefabs/World/Game/UISoundEntity.et b/addons/scopes/Prefabs/World/Game/UISoundEntity.et
new file mode 100644
index 000000000..637ad9c4a
--- /dev/null
+++ b/addons/scopes/Prefabs/World/Game/UISoundEntity.et
@@ -0,0 +1,10 @@
+SCR_UISoundEntity {
+ ID "52EAE81F331179B8"
+ components {
+ SimpleSoundComponent "{52EAE81FCD04D30C}" {
+ Filenames + {
+ "{11D58F8D3A0FAB47}Sounds/UI/ACE_Scopes_UI.acp"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Prefabs/World/Game/UISoundEntity.et.meta b/addons/scopes/Prefabs/World/Game/UISoundEntity.et.meta
new file mode 100644
index 000000000..cbf628b8f
--- /dev/null
+++ b/addons/scopes/Prefabs/World/Game/UISoundEntity.et.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{292486B7CA9C67BE}Prefabs/World/Game/UISoundEntity.et"
+ Configurations {
+ EntityTemplateResourceClass PC {
+ }
+ EntityTemplateResourceClass XBOX_ONE : PC {
+ }
+ EntityTemplateResourceClass XBOX_SERIES : PC {
+ }
+ EntityTemplateResourceClass PS4 : PC {
+ }
+ EntityTemplateResourceClass PS5 : PC {
+ }
+ EntityTemplateResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Sounds/UI/ACE_Scopes_UI.acp b/addons/scopes/Sounds/UI/ACE_Scopes_UI.acp
new file mode 100644
index 000000000..f56791e2a
--- /dev/null
+++ b/addons/scopes/Sounds/UI/ACE_Scopes_UI.acp
@@ -0,0 +1,72 @@
+AudioClass {
+ sounds {
+ SoundClass "2057" {
+ id 2057
+ name "ACE_SCOPES_SOUND_CLICK"
+ version 5
+ tl -26.118 -126.1
+ ins {
+ ConnectionsClass "con:64" {
+ id 64
+ links {
+ ConnectionClass "1028:65" {
+ id 1028
+ port 65
+ }
+ }
+ }
+ }
+ outState 5131
+ outStatePort 26631
+ }
+ }
+ mixers {
+ MixerClass "5131" {
+ id 5131
+ name "OutputState"
+ version 4
+ tl 184.337 -126.823
+ res "{AF08E302CF8BA2E6}Sounds/FinalMix_UI_Music.afm"
+ ins {
+ ConnectionsClass "con:26631" {
+ id 26631
+ links {
+ ConnectionClass "2057:65" {
+ id 2057
+ port 65
+ }
+ }
+ }
+ }
+ pi {
+ 2 0
+ }
+ path "{AF08E302CF8BA2E6}Sounds/FinalMix_UI_Music.afm"
+ inputs {
+ "Music" "UI"
+ }
+ visiblePorts {
+ 26631
+ }
+ }
+ }
+ banks_local {
+ BankLocalClass "1028" {
+ id 1028
+ name "ACE_Scopes_Click"
+ version 7
+ tl -269.065 -127.169
+ Volume -14
+ "Pitch variance" 0.15
+ Samples {
+ AudioBankSampleClass "ACE_Scopes_Click.wav" {
+ Filename "{DEEF73DABEB92B94}Sounds/UI/Samples/ACE_Scopes_Click.wav"
+ Probability 100
+ Index 0
+ SampleMetadata ""
+ }
+ }
+ }
+ }
+ version 1
+}
\ No newline at end of file
diff --git a/addons/scopes/Sounds/UI/ACE_Scopes_UI.acp.meta b/addons/scopes/Sounds/UI/ACE_Scopes_UI.acp.meta
new file mode 100644
index 000000000..30e5dfcb3
--- /dev/null
+++ b/addons/scopes/Sounds/UI/ACE_Scopes_UI.acp.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{11D58F8D3A0FAB47}Sounds/UI/ACE_Scopes_UI.acp"
+ Configurations {
+ AudioProjectResourceClass PC {
+ }
+ AudioProjectResourceClass XBOX_ONE : PC {
+ }
+ AudioProjectResourceClass XBOX_SERIES : PC {
+ }
+ AudioProjectResourceClass PS4 : PC {
+ }
+ AudioProjectResourceClass PS5 : PC {
+ }
+ AudioProjectResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/Sounds/UI/Samples/ACE_Scopes_Click.wav b/addons/scopes/Sounds/UI/Samples/ACE_Scopes_Click.wav
new file mode 100644
index 000000000..efc08e62d
Binary files /dev/null and b/addons/scopes/Sounds/UI/Samples/ACE_Scopes_Click.wav differ
diff --git a/addons/scopes/Sounds/UI/Samples/ACE_Scopes_Click.wav.meta b/addons/scopes/Sounds/UI/Samples/ACE_Scopes_Click.wav.meta
new file mode 100644
index 000000000..946abe619
--- /dev/null
+++ b/addons/scopes/Sounds/UI/Samples/ACE_Scopes_Click.wav.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{DEEF73DABEB92B94}Sounds/UI/Samples/ACE_Scopes_Click.wav"
+ Configurations {
+ WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" {
+ }
+ WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" {
+ }
+ WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" {
+ }
+ WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" {
+ }
+ WAVResourceClass PS5 : "{A584A3B556D4A981}Configs/System/ResourceTypes/PS5/Sound.conf" {
+ }
+ WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/UI/layouts/HUD/WeaponInfo/WeaponInfo.layout b/addons/scopes/UI/layouts/HUD/WeaponInfo/WeaponInfo.layout
new file mode 100644
index 000000000..e33d83f04
--- /dev/null
+++ b/addons/scopes/UI/layouts/HUD/WeaponInfo/WeaponInfo.layout
@@ -0,0 +1,96 @@
+FrameWidgetClass {
+ {
+ VerticalLayoutWidgetClass "{5876BC8CDCDF5238}" {
+ Prefab "{5876BC8CDCDF5238}"
+ {
+ HorizontalLayoutWidgetClass "{5876BC8CDCDF5222}" {
+ Prefab "{5876BC8CDCDF5222}"
+ {
+ HorizontalLayoutWidgetClass "{68F932CB50826113}" {
+ Name "m_ACE_Zeroing"
+ Slot LayoutSlot "{68F932CB50826109}" {
+ }
+ {
+ RichTextWidgetClass "{68F932CB4F4874CE}" {
+ Name "m_ACE_ZeroingLabel"
+ Slot LayoutSlot "{68F932C39DC6D17E}" {
+ HorizontalAlign 2
+ VerticalAlign 1
+ }
+ Text "ELEV"\
+ "WIND"
+ "Font Size" 18
+ "Min Font Size" 18
+ "Vertical Alignment" Center
+ FontProperties FontProperties "{68F918FFEC54CC67}" {
+ Font "{EABA4FE9D014CCEF}UI/Fonts/RobotoCondensed/RobotoCondensed_Bold.fnt"
+ ShadowSize 10
+ ShadowColor 0 0 0 0.7
+ }
+ }
+ SizeLayoutWidgetClass "{68F932CA169C82FB}" {
+ Name "SizeLayout0"
+ Slot LayoutSlot "{68F932CA169C82D0}" {
+ HorizontalAlign 2
+ VerticalAlign 1
+ Padding 0 0 2 0
+ }
+ AllowMinDesiredWidth 1
+ MinDesiredWidth 40
+ {
+ RichTextWidgetClass "{68F918FF98D3155B}" {
+ Name "m_ACE_ZeroingText"
+ Slot AlignableSlot "{68F932CA08E82885}" {
+ HorizontalAlign 2
+ VerticalAlign 1
+ }
+ Text "0.0"\
+ "0.1"
+ "Font Size" 18
+ "Min Font Size" 18
+ "Horizontal Alignment" Right
+ "Vertical Alignment" Center
+ FontProperties FontProperties "{68F918FFEC54CC67}" {
+ Font "{EABA4FE9D014CCEF}UI/Fonts/RobotoCondensed/RobotoCondensed_Bold.fnt"
+ ShadowSize 10
+ ShadowColor 0 0 0 0.7
+ }
+ }
+ }
+ }
+ SizeLayoutWidgetClass "{68F951284D1442DA}" {
+ Name "SizeLayout1"
+ Slot LayoutSlot "{68F932CA169C82D0}" {
+ HorizontalAlign 2
+ VerticalAlign 1
+ }
+ AllowMinDesiredWidth 1
+ MinDesiredWidth 25
+ {
+ RichTextWidgetClass "{68F951284D1442D8}" {
+ Name "m_ACE_ZeroingSuffix"
+ Slot AlignableSlot "{68F932CA08E82885}" {
+ HorizontalAlign 0
+ VerticalAlign 1
+ }
+ Text ""\
+ "R"
+ "Font Size" 18
+ "Min Font Size" 18
+ "Vertical Alignment" Center
+ FontProperties FontProperties "{68F918FFEC54CC67}" {
+ Font "{EABA4FE9D014CCEF}UI/Fonts/RobotoCondensed/RobotoCondensed_Bold.fnt"
+ ShadowSize 10
+ ShadowColor 0 0 0 0.7
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/UI/layouts/HUD/WeaponInfo/WeaponInfo.layout.meta b/addons/scopes/UI/layouts/HUD/WeaponInfo/WeaponInfo.layout.meta
new file mode 100644
index 000000000..8a5e36e5d
--- /dev/null
+++ b/addons/scopes/UI/layouts/HUD/WeaponInfo/WeaponInfo.layout.meta
@@ -0,0 +1,17 @@
+MetaFileClass {
+ Name "{8170DE93810F928A}UI/layouts/HUD/WeaponInfo/WeaponInfo.layout"
+ Configurations {
+ LayoutResourceClass PC {
+ }
+ LayoutResourceClass XBOX_ONE : PC {
+ }
+ LayoutResourceClass XBOX_SERIES : PC {
+ }
+ LayoutResourceClass PS4 : PC {
+ }
+ LayoutResourceClass PS5 : PC {
+ }
+ LayoutResourceClass HEADLESS : PC {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/addon.gproj b/addons/scopes/addon.gproj
new file mode 100644
index 000000000..0257befdf
--- /dev/null
+++ b/addons/scopes/addon.gproj
@@ -0,0 +1,83 @@
+GameProject {
+ ID "ACE_Scopes"
+ GUID "68FB692D96F504B5"
+ TITLE "ACE Scopes"
+ Dependencies {
+ "60C4CE4888FF4621" "58D0FB3206B6F859"
+ }
+ Configurations {
+ GameProjectConfig PC {
+ WidgetManagerSettings WidgetManagerSettings "{AC4BE58770485E02}" {
+ StringTables {
+ StringTableDefinition "{68FC0667B9ECCBB7}" {
+ StringTableSource "{B8CB0ED6EE7E75B6}Language/ACE_Scopes_localization.st"
+ Languages {
+ LanguageDefinition "{68FC0667BE703420}" {
+ Code "cs_cz"
+ StringTableRuntime "{38E8EBB86E0D97A1}Language/ACE_Scopes_localization.cs_cz.conf"
+ }
+ LanguageDefinition "{68FC0667BE703453}" {
+ Code "de_de"
+ StringTableRuntime "{ED96F18B7DAE8681}Language/ACE_Scopes_localization.de_de.conf"
+ }
+ LanguageDefinition "{68FC0667BE703445}" {
+ Code "en_us"
+ StringTableRuntime "{B3667BC0175D8380}Language/ACE_Scopes_localization.en_us.conf"
+ }
+ LanguageDefinition "{68FC0667BE7033B5}" {
+ Code "es_es"
+ StringTableRuntime "{762A3649F95FE89F}Language/ACE_Scopes_localization.es_es.conf"
+ }
+ LanguageDefinition "{68FC0667BE7033AB}" {
+ Code "fr_fr"
+ StringTableRuntime "{CD82C37E1FDC0B9D}Language/ACE_Scopes_localization.fr_fr.conf"
+ }
+ LanguageDefinition "{68FC0667BE70339D}" {
+ Code "it_it"
+ StringTableRuntime "{4D9E4C4AB2FE8864}Language/ACE_Scopes_localization.it_it.conf"
+ }
+ LanguageDefinition "{68FC0667BE7033D8}" {
+ Code "ja_jp"
+ StringTableRuntime "{5D85F1D88C8FB8CF}Language/ACE_Scopes_localization.ja_jp.conf"
+ }
+ LanguageDefinition "{68FC0667BE703333}" {
+ Code "ko_kr"
+ StringTableRuntime "{FD3BD9741FA2BBF0}Language/ACE_Scopes_localization.ko_kr.conf"
+ }
+ LanguageDefinition "{68FC0667BE703322}" {
+ Code "pl_pl"
+ StringTableRuntime "{A14A7F8EA14D278C}Language/ACE_Scopes_localization.pl_pl.conf"
+ }
+ LanguageDefinition "{68FC0667BE703310}" {
+ Code "pt_br"
+ StringTableRuntime "{743DE5429AB3ED36}Language/ACE_Scopes_localization.pt_br.conf"
+ }
+ LanguageDefinition "{68FC0667BE70330E}" {
+ Code "ru_ru"
+ StringTableRuntime "{217CF1EA07CA8840}Language/ACE_Scopes_localization.ru_ru.conf"
+ }
+ LanguageDefinition "{68FC0667BE70321E}" {
+ Code "uk_ua"
+ StringTableRuntime "{AB24A41C6BE43615}Language/ACE_Scopes_localization.uk_ua.conf"
+ }
+ LanguageDefinition "{68FC0667BE70320C}" {
+ Code "zh_cn"
+ StringTableRuntime "{7194CA215244E608}Language/ACE_Scopes_localization.zh_cn.conf"
+ }
+ }
+ }
+ }
+ }
+ }
+ GameProjectConfig XBOX_ONE {
+ }
+ GameProjectConfig XBOX_SERIES {
+ }
+ GameProjectConfig PS4 {
+ }
+ GameProjectConfig PS5 {
+ }
+ GameProjectConfig HEADLESS {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/dev.gproj b/addons/scopes/dev.gproj
new file mode 100644
index 000000000..7c33c3945
--- /dev/null
+++ b/addons/scopes/dev.gproj
@@ -0,0 +1,83 @@
+GameProject {
+ ID "ACE_Scopes_Dev"
+ GUID "68FC0EDE9F677A3C"
+ TITLE "ACE Scopes Dev"
+ Dependencies {
+ "58D0FB3206B6F859" "65AD7D0D9941A380"
+ }
+ Configurations {
+ GameProjectConfig PC {
+ WidgetManagerSettings WidgetManagerSettings "{AC4BE58770485E02}" {
+ StringTables {
+ StringTableDefinition "{68FC0667B9ECCBB7}" {
+ StringTableSource "{B8CB0ED6EE7E75B6}Language/ACE_Scopes_localization.st"
+ Languages {
+ LanguageDefinition "{68FC0667BE703420}" {
+ Code "cs_cz"
+ StringTableRuntime "{38E8EBB86E0D97A1}Language/ACE_Scopes_localization.cs_cz.conf"
+ }
+ LanguageDefinition "{68FC0667BE703453}" {
+ Code "de_de"
+ StringTableRuntime "{ED96F18B7DAE8681}Language/ACE_Scopes_localization.de_de.conf"
+ }
+ LanguageDefinition "{68FC0667BE703445}" {
+ Code "en_us"
+ StringTableRuntime "{B3667BC0175D8380}Language/ACE_Scopes_localization.en_us.conf"
+ }
+ LanguageDefinition "{68FC0667BE7033B5}" {
+ Code "es_es"
+ StringTableRuntime "{762A3649F95FE89F}Language/ACE_Scopes_localization.es_es.conf"
+ }
+ LanguageDefinition "{68FC0667BE7033AB}" {
+ Code "fr_fr"
+ StringTableRuntime "{CD82C37E1FDC0B9D}Language/ACE_Scopes_localization.fr_fr.conf"
+ }
+ LanguageDefinition "{68FC0667BE70339D}" {
+ Code "it_it"
+ StringTableRuntime "{4D9E4C4AB2FE8864}Language/ACE_Scopes_localization.it_it.conf"
+ }
+ LanguageDefinition "{68FC0667BE7033D8}" {
+ Code "ja_jp"
+ StringTableRuntime "{5D85F1D88C8FB8CF}Language/ACE_Scopes_localization.ja_jp.conf"
+ }
+ LanguageDefinition "{68FC0667BE703333}" {
+ Code "ko_kr"
+ StringTableRuntime "{FD3BD9741FA2BBF0}Language/ACE_Scopes_localization.ko_kr.conf"
+ }
+ LanguageDefinition "{68FC0667BE703322}" {
+ Code "pl_pl"
+ StringTableRuntime "{A14A7F8EA14D278C}Language/ACE_Scopes_localization.pl_pl.conf"
+ }
+ LanguageDefinition "{68FC0667BE703310}" {
+ Code "pt_br"
+ StringTableRuntime "{743DE5429AB3ED36}Language/ACE_Scopes_localization.pt_br.conf"
+ }
+ LanguageDefinition "{68FC0667BE70330E}" {
+ Code "ru_ru"
+ StringTableRuntime "{217CF1EA07CA8840}Language/ACE_Scopes_localization.ru_ru.conf"
+ }
+ LanguageDefinition "{68FC0667BE70321E}" {
+ Code "uk_ua"
+ StringTableRuntime "{AB24A41C6BE43615}Language/ACE_Scopes_localization.uk_ua.conf"
+ }
+ LanguageDefinition "{68FC0667BE70320C}" {
+ Code "zh_cn"
+ StringTableRuntime "{7194CA215244E608}Language/ACE_Scopes_localization.zh_cn.conf"
+ }
+ }
+ }
+ }
+ }
+ }
+ GameProjectConfig XBOX_ONE {
+ }
+ GameProjectConfig XBOX_SERIES {
+ }
+ GameProjectConfig PS4 {
+ }
+ GameProjectConfig PS5 {
+ }
+ GameProjectConfig HEADLESS {
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/scopes/license.txt b/addons/scopes/license.txt
new file mode 100644
index 000000000..6ebf24cf1
--- /dev/null
+++ b/addons/scopes/license.txt
@@ -0,0 +1,18 @@
+ACE Anvil - An experimental realism mod for Arma Reforger
+Copyright (C) 2024 acemod
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+When publishing a derivative of this product you may not use a name that
+might create the impression that your version is an official release.
+
+A full copy of this license can be found at the following address:
+https://github.com/acemod/ACE-Anvil/blob/master/LICENSE.
diff --git a/addons/scopes/scripts/Game/ACE_Scopes/Character/SCR_CharacterControllerComponent.c b/addons/scopes/scripts/Game/ACE_Scopes/Character/SCR_CharacterControllerComponent.c
new file mode 100644
index 000000000..41af83ddc
--- /dev/null
+++ b/addons/scopes/scripts/Game/ACE_Scopes/Character/SCR_CharacterControllerComponent.c
@@ -0,0 +1,56 @@
+//------------------------------------------------------------------------------------------------
+modded class SCR_CharacterControllerComponent : CharacterControllerComponent
+{
+ //------------------------------------------------------------------------------------------------
+ protected override void OnControlledByPlayer(IEntity owner, bool controlled)
+ {
+ super.OnControlledByPlayer(owner, controlled);
+
+ if (controlled && owner == SCR_PlayerController.GetLocalControlledEntity())
+ {
+ GetGame().GetInputManager().AddActionListener("ACE_VerticalZeroingUp", EActionTrigger.DOWN, ACE_VerticalZeroingUp);
+ GetGame().GetInputManager().AddActionListener("ACE_VerticalZeroingDown", EActionTrigger.DOWN, ACE_VerticalZeroingDown);
+ GetGame().GetInputManager().AddActionListener("ACE_HorizontalZeroingRight", EActionTrigger.DOWN, ACE_HorizontalZeroingRight);
+ GetGame().GetInputManager().AddActionListener("ACE_HorizontalZeroingLeft", EActionTrigger.DOWN, ACE_HorizontalZeroingLeft);
+ }
+ else
+ {
+ GetGame().GetInputManager().RemoveActionListener("ACE_VerticalZeroingUp", EActionTrigger.DOWN, ACE_VerticalZeroingUp);
+ GetGame().GetInputManager().RemoveActionListener("ACE_VerticalZeroingDown", EActionTrigger.DOWN, ACE_VerticalZeroingDown);
+ GetGame().GetInputManager().RemoveActionListener("ACE_HorizontalZeroingRight", EActionTrigger.DOWN, ACE_HorizontalZeroingRight);
+ GetGame().GetInputManager().RemoveActionListener("ACE_HorizontalZeroingLeft", EActionTrigger.DOWN, ACE_HorizontalZeroingLeft);
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------
+ protected void ACE_VerticalZeroingUp(float value = 0.0, EActionTrigger reason = 0)
+ {
+ SCR_2DOpticsComponent optics = SCR_2DOpticsComponent.Cast(GetWeaponManagerComponent().GetCurrentSights());
+ if (optics)
+ optics.ACE_AdjustZeroings(verticalChange: 0.1);
+ }
+
+ //------------------------------------------------------------------------------------------------
+ protected void ACE_VerticalZeroingDown(float value = 0.0, EActionTrigger reason = 0)
+ {
+ SCR_2DOpticsComponent optics = SCR_2DOpticsComponent.Cast(GetWeaponManagerComponent().GetCurrentSights());
+ if (optics)
+ optics.ACE_AdjustZeroings(verticalChange: -0.1);
+ }
+
+ //------------------------------------------------------------------------------------------------
+ protected void ACE_HorizontalZeroingRight(float value = 0.0, EActionTrigger reason = 0)
+ {
+ SCR_2DOpticsComponent optics = SCR_2DOpticsComponent.Cast(GetWeaponManagerComponent().GetCurrentSights());
+ if (optics)
+ optics.ACE_AdjustZeroings(horizontalChange: 0.1);
+ }
+
+ //------------------------------------------------------------------------------------------------
+ protected void ACE_HorizontalZeroingLeft(float value = 0.0, EActionTrigger reason = 0)
+ {
+ SCR_2DOpticsComponent optics = SCR_2DOpticsComponent.Cast(GetWeaponManagerComponent().GetCurrentSights());
+ if (optics)
+ optics.ACE_AdjustZeroings(horizontalChange: -0.1);
+ }
+}
diff --git a/addons/scopes/scripts/Game/ACE_Scopes/UI/HUD/WeaponInfo/SCR_WeaponInfo.c b/addons/scopes/scripts/Game/ACE_Scopes/UI/HUD/WeaponInfo/SCR_WeaponInfo.c
new file mode 100644
index 000000000..600067fa6
--- /dev/null
+++ b/addons/scopes/scripts/Game/ACE_Scopes/UI/HUD/WeaponInfo/SCR_WeaponInfo.c
@@ -0,0 +1,52 @@
+//------------------------------------------------------------------------------------------------
+modded class SCR_WeaponInfo : SCR_InfoDisplayExtended
+{
+ //------------------------------------------------------------------------------------------------
+ override protected void OnMuzzleChanged(BaseWeaponComponent weapon, BaseMuzzleComponent muzzle, BaseMuzzleComponent prevMuzzle)
+ {
+ super.OnMuzzleChanged(weapon, muzzle, prevMuzzle);
+ ACE_UpdateZeroingIndicator();
+ }
+
+ //------------------------------------------------------------------------------------------------
+ override protected void OnAttachmentChanged(WeaponComponent weapon, bool isAttached, IEntity attachmentEntity)
+ {
+ super.OnAttachmentChanged(weapon, isAttached, attachmentEntity);
+ ACE_UpdateZeroingIndicator();
+ }
+
+ //------------------------------------------------------------------------------------------------
+ void ACE_UpdateZeroingIndicator()
+ {
+ if (!m_WeaponState || !m_Widgets)
+ return;
+
+ if (!m_WeaponState.m_Sights)
+ {
+ m_Widgets.m_wACE_Zeroing.SetVisible(false);
+ return;
+ }
+
+ m_eWeaponStateEvent |= EWeaponFeature.ZEROING;
+
+ float horizontalZeroing;
+ float verticalZeroing;
+ m_WeaponState.m_Sights.ACE_GetZeroings(horizontalZeroing, verticalZeroing);
+
+ m_Widgets.m_wACE_Zeroing.SetVisible(true);
+ string verticalZeroingText = verticalZeroing.ToString(lenDec: 1);
+ string horizontalZeroingText = Math.AbsFloat(horizontalZeroing).ToString(lenDec: 1);
+
+ string horizontalZeroingSuffix;
+ if (float.AlmostEqual(horizontalZeroing, 0.0))
+ horizontalZeroingSuffix = "";
+ else if (horizontalZeroing > 0.0)
+ horizontalZeroingSuffix = "R";
+ else
+ horizontalZeroingSuffix = "L";
+
+ m_Widgets.m_wACE_ZeroingText.SetText(string.Format("%1\n%2", verticalZeroingText, horizontalZeroingText));
+ m_Widgets.m_wACE_ZeroingSuffix.SetText(string.Format("\n%1", horizontalZeroingSuffix));
+ AnimateWidget_ColorFlash(m_Widgets.m_wZeroing, EWeaponFeature.ZEROING);
+ }
+}
diff --git a/addons/scopes/scripts/Game/ACE_Scopes/UI/HUD/WeaponInfo/SCR_WeaponInfoWidgets.c b/addons/scopes/scripts/Game/ACE_Scopes/UI/HUD/WeaponInfo/SCR_WeaponInfoWidgets.c
new file mode 100644
index 000000000..707ae0be4
--- /dev/null
+++ b/addons/scopes/scripts/Game/ACE_Scopes/UI/HUD/WeaponInfo/SCR_WeaponInfoWidgets.c
@@ -0,0 +1,17 @@
+//------------------------------------------------------------------------------------------------
+modded class SCR_WeaponInfoWidgets
+{
+ Widget m_wACE_Zeroing;
+ RichTextWidget m_wACE_ZeroingText;
+ RichTextWidget m_wACE_ZeroingSuffix;
+
+ //------------------------------------------------------------------------------------------------
+ override bool Init(Widget root)
+ {
+ super.Init(root);
+ m_wACE_Zeroing = root.FindAnyWidget("m_ACE_Zeroing");
+ m_wACE_ZeroingText = RichTextWidget.Cast(root.FindAnyWidget("m_ACE_ZeroingText"));
+ m_wACE_ZeroingSuffix = RichTextWidget.Cast(root.FindAnyWidget("m_ACE_ZeroingSuffix"));
+ return true;
+ }
+}
diff --git a/addons/scopes/thumbnail.png b/addons/scopes/thumbnail.png
new file mode 100644
index 000000000..3d4283142
Binary files /dev/null and b/addons/scopes/thumbnail.png differ
diff --git a/docs/src/content/docs/components/scopes.mdx b/docs/src/content/docs/components/scopes.mdx
new file mode 100644
index 000000000..3da3d2e74
--- /dev/null
+++ b/docs/src/content/docs/components/scopes.mdx
@@ -0,0 +1,28 @@
+---
+title: Scopes
+---
+
+Allows scopes to be adjusted in elevation and windage in mrads.
+
+## Usage
+
+### Adjust Scope Zeroings
+
+- Adjust elevation up with LShift+Page Up (ACE default)
+- Adjust elevation down with LShift+Page Down (ACE default)
+- Adjust windage right with LCtrl+Page Up (ACE default)
+- Adjust windage left with LCtrl+Page Down (ACE default)
+
+## Modded Optics Support
+
+### Base Requirements
+
+- `SCR_2DOpticsComponent` or derived classes with at least two entries in `Sights Ranges` on the optics prefab.
+
+### Fine-Tuning Elevations
+
+Elevations can be fine-tuned with `ACE Effective Vertical Zeroing Scale` attribute on `SCR_2DOpticsComponent`.
+For instance, if the ballistic table reports 10.0 mrads for 800 m, but the actual elevation from testing is 9.4 mrad, one should set the scale to 9.4 / 10.0 = 0.94.
+This will make +1.0 mrad elevation adjustments effectively take +0.94 mrad and in return 10.0 mrad becomes accurate for 800 m.
+While deriving the scale from a single range can work if the picked range is far, e.g. 800 m, a linear fit for various ranges will be more accurate.
+Diag tools in the workbench can come in handy for this (see [weapon optic creation tutorial](https://community.bistudio.com/wiki/Arma_Reforger:Weapon_Optic_Creation#Diagnostic_tools)).
\ No newline at end of file