diff --git a/.hemtt/launch.toml b/.hemtt/launch.toml
index ff6bdadd3b9..22ca0704a1d 100644
--- a/.hemtt/launch.toml
+++ b/.hemtt/launch.toml
@@ -3,6 +3,18 @@ workshop = [
"450814997", # CBA_A3
]
+[adt]
+extends = "default"
+workshop = [
+ "3499977893", # ADT
+]
+
+[zen]
+extends = "default"
+workshop = [
+ "1779063631", # ZEN
+]
+
[rhs]
extends = "default"
workshop = [
@@ -26,22 +38,29 @@ workshop = [
"1369691841", # Community Factions Project
]
-[wardrobe]
+[aegis]
extends = "default"
+workshop = [
+ "949252631", # Aegis
+]
+dlc = [
+ "ws", # Western Sahara
+]
+
+[wardrobe]
+extends = "adt"
mission = "Wardrobe.VR"
workshop = [
- "3499977893", # Advanced Developer Tools
"1779063631", # ZEN
# "751965892", # ACRE
-# "623475643", # eden enhanced
+# "623475643", # 3den Enhanced
]
[sogns]
-extends = "default"
+extends = "adt"
dlc = ["vn"]
workshop = [
"623475643", # 3den Enhanced
- "3499977893", # Advanced Developer Tools
"3083451905", # S.O.G. Nickel Steel
"1779063631", # Zeus Enhanced
]
diff --git a/Cargo.lock b/Cargo.lock
index c2bf60b05b5..c6fad5407d3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -31,6 +31,12 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "anyhow"
+version = "1.0.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
+
[[package]]
name = "arboard"
version = "3.6.1"
@@ -53,9 +59,9 @@ dependencies = [
[[package]]
name = "arma-rs"
-version = "1.11.15"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a187c0f0594c3cef75b79cba42022e841da290092777486318d6d5d164f74d2"
+checksum = "4ae6e1d467f4fa3b57a5eca567551abd8638c57af7db4ac4b53c6a5aa1fff761"
dependencies = [
"arma-rs-proc",
"crossbeam-channel",
@@ -66,14 +72,14 @@ dependencies = [
"state",
"uuid",
"winapi",
- "windows 0.61.3",
+ "windows 0.62.2",
]
[[package]]
name = "arma-rs-proc"
-version = "1.11.1"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf67c0d0c7a59275e5ac4f3fce0cbdbcf3ba12e47bc30be6a3327d6a1bc151f8"
+checksum = "8a6f278bb879949843757ff56f4495fa2c86fe27092c57a0c8428702501cb5fe"
dependencies = [
"proc-macro2",
"quote",
@@ -88,21 +94,21 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "bitflags"
-version = "2.10.0"
+version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
+checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
[[package]]
name = "bumpalo"
-version = "3.19.0"
+version = "3.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
+checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
[[package]]
name = "bytemuck"
-version = "1.24.0"
+version = "1.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
+checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
[[package]]
name = "byteorder-lite"
@@ -112,9 +118,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
[[package]]
name = "cc"
-version = "1.2.49"
+version = "1.2.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215"
+checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -188,9 +194,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
[[package]]
name = "dispatch2"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
+checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
dependencies = [
"bitflags",
"objc2",
@@ -213,6 +219,12 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
[[package]]
name = "errno"
version = "0.3.14"
@@ -260,20 +272,26 @@ dependencies = [
[[package]]
name = "find-msvc-tools"
-version = "0.1.5"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
+checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
[[package]]
name = "flate2"
-version = "1.1.5"
+version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
+checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
dependencies = [
"crc32fast",
"miniz_oxide",
]
+[[package]]
+name = "foldhash"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
+
[[package]]
name = "form_urlencoded"
version = "1.2.2"
@@ -303,14 +321,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
dependencies = [
"rustix",
- "windows-link 0.2.1",
+ "windows-link",
]
[[package]]
name = "getrandom"
-version = "0.2.16"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
"libc",
@@ -329,11 +347,24 @@ dependencies = [
"wasip2",
]
+[[package]]
+name = "getrandom"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasip2",
+ "wasip3",
+]
+
[[package]]
name = "git2"
-version = "0.20.3"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e2b37e2f62729cdada11f0e6b3b6fe383c69c29fc619e391223e12856af308c"
+checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b"
dependencies = [
"bitflags",
"libc",
@@ -355,6 +386,27 @@ dependencies = [
"zerocopy",
]
+[[package]]
+name = "hashbrown"
+version = "0.15.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
+dependencies = [
+ "foldhash",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
[[package]]
name = "icu_collections"
version = "2.1.1"
@@ -436,6 +488,12 @@ dependencies = [
"zerovec",
]
+[[package]]
+name = "id-arena"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
+
[[package]]
name = "idna"
version = "1.1.0"
@@ -471,11 +529,23 @@ dependencies = [
"tiff",
]
+[[package]]
+name = "indexmap"
+version = "2.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.16.1",
+ "serde",
+ "serde_core",
+]
+
[[package]]
name = "itoa"
-version = "1.0.15"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
[[package]]
name = "jobserver"
@@ -489,9 +559,9 @@ dependencies = [
[[package]]
name = "js-sys"
-version = "0.3.83"
+version = "0.3.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
+checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
dependencies = [
"once_cell",
"wasm-bindgen",
@@ -503,11 +573,17 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+[[package]]
+name = "leb128fmt"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
+
[[package]]
name = "libc"
-version = "0.2.178"
+version = "0.2.182"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
+checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
[[package]]
name = "libgit2-sys"
@@ -539,9 +615,9 @@ dependencies = [
[[package]]
name = "libz-sys"
-version = "1.1.23"
+version = "1.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7"
+checksum = "4735e9cbde5aac84a5ce588f6b23a90b9b0b528f6c5a8db8a4aff300463a0839"
dependencies = [
"cc",
"libc",
@@ -557,9 +633,9 @@ checksum = "2c7721e472624c9aaad27a5eb6b7c9c6045c7a396f2efb6dabaec1b640d5e89b"
[[package]]
name = "linux-raw-sys"
-version = "0.11.0"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
[[package]]
name = "litemap"
@@ -608,9 +684,9 @@ dependencies = [
[[package]]
name = "memchr"
-version = "2.7.6"
+version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
+checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
[[package]]
name = "miniz_oxide"
@@ -652,9 +728,9 @@ dependencies = [
[[package]]
name = "objc2"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
+checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
dependencies = [
"objc2-encode",
]
@@ -767,7 +843,7 @@ dependencies = [
"libc",
"redox_syscall",
"smallvec",
- "windows-link 0.2.1",
+ "windows-link",
]
[[package]]
@@ -778,9 +854,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "pin-project-lite"
-version = "0.2.16"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
[[package]]
name = "pkg-config"
@@ -790,9 +866,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "png"
-version = "0.18.0"
+version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
+checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
dependencies = [
"bitflags",
"crc32fast",
@@ -819,11 +895,21 @@ dependencies = [
"zerocopy",
]
+[[package]]
+name = "prettyplease"
+version = "0.2.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
+dependencies = [
+ "proc-macro2",
+ "syn",
+]
+
[[package]]
name = "proc-macro2"
-version = "1.0.103"
+version = "1.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
dependencies = [
"unicode-ident",
]
@@ -845,9 +931,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
[[package]]
name = "quote"
-version = "1.0.42"
+version = "1.0.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
+checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
dependencies = [
"proc-macro2",
]
@@ -885,7 +971,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
- "getrandom 0.2.16",
+ "getrandom 0.2.17",
]
[[package]]
@@ -919,9 +1005,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.13"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
+checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
dependencies = [
"aho-corasick",
"memchr",
@@ -930,15 +1016,15 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.8.8"
+version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
+checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
[[package]]
name = "rustix"
-version = "1.1.2"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
+checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
dependencies = [
"bitflags",
"errno",
@@ -953,12 +1039,6 @@ version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
-[[package]]
-name = "ryu"
-version = "1.0.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
-
[[package]]
name = "scoped-tls"
version = "1.0.1"
@@ -971,6 +1051,12 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+[[package]]
+name = "semver"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
+
[[package]]
name = "seq-macro"
version = "0.3.6"
@@ -1009,15 +1095,15 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.145"
+version = "1.0.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
+checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
dependencies = [
"itoa",
"memchr",
- "ryu",
"serde",
"serde_core",
+ "zmij",
]
[[package]]
@@ -1064,9 +1150,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.111"
+version = "2.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
+checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
dependencies = [
"proc-macro2",
"quote",
@@ -1119,9 +1205,9 @@ dependencies = [
[[package]]
name = "tracing"
-version = "0.1.43"
+version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647"
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
dependencies = [
"pin-project-lite",
"tracing-attributes",
@@ -1141,9 +1227,9 @@ dependencies = [
[[package]]
name = "tracing-core"
-version = "0.1.35"
+version = "0.1.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c"
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
dependencies = [
"once_cell",
"valuable",
@@ -1180,15 +1266,21 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.22"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]]
name = "url"
-version = "2.5.7"
+version = "2.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
+checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
dependencies = [
"form_urlencoded",
"idna",
@@ -1204,11 +1296,11 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "uuid"
-version = "1.19.0"
+version = "1.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a"
+checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb"
dependencies = [
- "getrandom 0.3.4",
+ "getrandom 0.4.1",
"js-sys",
"wasm-bindgen",
]
@@ -1233,18 +1325,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
name = "wasip2"
-version = "1.0.1+wasi-0.2.4"
+version = "1.0.2+wasi-0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
+checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasip3"
+version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
dependencies = [
"wit-bindgen",
]
[[package]]
name = "wasm-bindgen"
-version = "0.2.106"
+version = "0.2.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
+checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
dependencies = [
"cfg-if",
"once_cell",
@@ -1255,9 +1356,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.106"
+version = "0.2.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
+checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -1265,9 +1366,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.106"
+version = "0.2.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
+checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
dependencies = [
"bumpalo",
"proc-macro2",
@@ -1278,13 +1379,47 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.106"
+version = "0.2.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
+checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
dependencies = [
"unicode-ident",
]
+[[package]]
+name = "wasm-encoder"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
+dependencies = [
+ "leb128fmt",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasm-metadata"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
+dependencies = [
+ "anyhow",
+ "indexmap",
+ "wasm-encoder",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasmparser"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
+dependencies = [
+ "bitflags",
+ "hashbrown 0.15.5",
+ "indexmap",
+ "semver",
+]
+
[[package]]
name = "weezl"
version = "0.1.12"
@@ -1322,38 +1457,16 @@ dependencies = [
"windows-targets 0.48.5",
]
-[[package]]
-name = "windows"
-version = "0.61.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
-dependencies = [
- "windows-collections 0.2.0",
- "windows-core 0.61.2",
- "windows-future 0.2.1",
- "windows-link 0.1.3",
- "windows-numerics 0.2.0",
-]
-
[[package]]
name = "windows"
version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
dependencies = [
- "windows-collections 0.3.2",
- "windows-core 0.62.2",
- "windows-future 0.3.2",
- "windows-numerics 0.3.1",
-]
-
-[[package]]
-name = "windows-collections"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
-dependencies = [
- "windows-core 0.61.2",
+ "windows-collections",
+ "windows-core",
+ "windows-future",
+ "windows-numerics",
]
[[package]]
@@ -1362,20 +1475,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
dependencies = [
- "windows-core 0.62.2",
-]
-
-[[package]]
-name = "windows-core"
-version = "0.61.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
-dependencies = [
- "windows-implement",
- "windows-interface",
- "windows-link 0.1.3",
- "windows-result 0.3.4",
- "windows-strings 0.4.2",
+ "windows-core",
]
[[package]]
@@ -1386,20 +1486,9 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
dependencies = [
"windows-implement",
"windows-interface",
- "windows-link 0.2.1",
- "windows-result 0.4.1",
- "windows-strings 0.5.1",
-]
-
-[[package]]
-name = "windows-future"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
-dependencies = [
- "windows-core 0.61.2",
- "windows-link 0.1.3",
- "windows-threading 0.1.0",
+ "windows-link",
+ "windows-result",
+ "windows-strings",
]
[[package]]
@@ -1408,9 +1497,9 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
dependencies = [
- "windows-core 0.62.2",
- "windows-link 0.2.1",
- "windows-threading 0.2.1",
+ "windows-core",
+ "windows-link",
+ "windows-threading",
]
[[package]]
@@ -1435,45 +1524,20 @@ dependencies = [
"syn",
]
-[[package]]
-name = "windows-link"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
-
[[package]]
name = "windows-link"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
-[[package]]
-name = "windows-numerics"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
-dependencies = [
- "windows-core 0.61.2",
- "windows-link 0.1.3",
-]
-
[[package]]
name = "windows-numerics"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
dependencies = [
- "windows-core 0.62.2",
- "windows-link 0.2.1",
-]
-
-[[package]]
-name = "windows-result"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
-dependencies = [
- "windows-link 0.1.3",
+ "windows-core",
+ "windows-link",
]
[[package]]
@@ -1482,16 +1546,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
- "windows-link 0.2.1",
-]
-
-[[package]]
-name = "windows-strings"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
-dependencies = [
- "windows-link 0.1.3",
+ "windows-link",
]
[[package]]
@@ -1500,7 +1555,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
dependencies = [
- "windows-link 0.2.1",
+ "windows-link",
]
[[package]]
@@ -1518,7 +1573,7 @@ version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
dependencies = [
- "windows-link 0.2.1",
+ "windows-link",
]
[[package]]
@@ -1542,7 +1597,7 @@ version = "0.53.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
dependencies = [
- "windows-link 0.2.1",
+ "windows-link",
"windows_aarch64_gnullvm 0.53.1",
"windows_aarch64_msvc 0.53.1",
"windows_i686_gnu 0.53.1",
@@ -1553,22 +1608,13 @@ dependencies = [
"windows_x86_64_msvc 0.53.1",
]
-[[package]]
-name = "windows-threading"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
-dependencies = [
- "windows-link 0.1.3",
-]
-
[[package]]
name = "windows-threading"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
dependencies = [
- "windows-link 0.2.1",
+ "windows-link",
]
[[package]]
@@ -1663,9 +1709,91 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
[[package]]
name = "wit-bindgen"
-version = "0.46.0"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
+checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
+dependencies = [
+ "wit-bindgen-rust-macro",
+]
+
+[[package]]
+name = "wit-bindgen-core"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
+dependencies = [
+ "anyhow",
+ "heck",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-bindgen-rust"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
+dependencies = [
+ "anyhow",
+ "heck",
+ "indexmap",
+ "prettyplease",
+ "syn",
+ "wasm-metadata",
+ "wit-bindgen-core",
+ "wit-component",
+]
+
+[[package]]
+name = "wit-bindgen-rust-macro"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
+dependencies = [
+ "anyhow",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wit-bindgen-core",
+ "wit-bindgen-rust",
+]
+
+[[package]]
+name = "wit-component"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
+dependencies = [
+ "anyhow",
+ "bitflags",
+ "indexmap",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "wasm-encoder",
+ "wasm-metadata",
+ "wasmparser",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-parser"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
+dependencies = [
+ "anyhow",
+ "id-arena",
+ "indexmap",
+ "log",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "unicode-xid",
+ "wasmparser",
+]
[[package]]
name = "writeable"
@@ -1715,18 +1843,18 @@ dependencies = [
[[package]]
name = "zerocopy"
-version = "0.8.31"
+version = "0.8.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3"
+checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.31"
+version = "0.8.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
+checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953"
dependencies = [
"proc-macro2",
"quote",
@@ -1787,6 +1915,12 @@ dependencies = [
"syn",
]
+[[package]]
+name = "zmij"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+
[[package]]
name = "zune-core"
version = "0.4.12"
diff --git a/addons/compat_aegis/compat_aegis_smoke/CfgGlasses.hpp b/addons/compat_aegis/compat_aegis_smoke/CfgGlasses.hpp
new file mode 100644
index 00000000000..63015b076e7
--- /dev/null
+++ b/addons/compat_aegis/compat_aegis_smoke/CfgGlasses.hpp
@@ -0,0 +1,41 @@
+class CfgGlasses {
+ class None;
+
+ class G_Combat_Goggles_blk_F: None {
+ ace_irritants_eyes_protection = 1;
+ };
+
+ class G_Balaclava_light_blk_F: None {
+ ace_irritants_breathing_protection = 0.4;
+ };
+ class G_Balaclava_light_G_blk_F: G_Balaclava_light_blk_F {
+ ace_irritants_eyes_protection = 1;
+ };
+ class G_Balaclava_light_eaf_F;
+ class G_Balaclava_light_G_eaf_F: G_Balaclava_light_eaf_F {
+ ace_irritants_eyes_protection = 1;
+ };
+ class G_Balaclava_light_mtp_F;
+ class G_Balaclava_light_G_mtp_F: G_Balaclava_light_mtp_F {
+ ace_irritants_eyes_protection = 1;
+ };
+ class G_Balaclava_light_tropic_F;
+ class G_Balaclava_light_G_tropic_F: G_Balaclava_light_tropic_F {
+ ace_irritants_eyes_protection = 1;
+ };
+ class G_Balaclava_light_wdl_F;
+ class G_Balaclava_light_G_wdl_F: G_Balaclava_light_wdl_F {
+ ace_irritants_eyes_protection = 1;
+ };
+
+ class G_Balaclava_TI_blk_F: None {
+ ace_irritants_breathing_protection = 0.4;
+ };
+ class G_Balaclava_TI_G_blk_F: G_Balaclava_TI_blk_F {
+ ace_irritants_eyes_protection = 1;
+ };
+ class G_Balaclava_TI_tna_F;
+ class G_Balaclava_TI_G_tna_F: G_Balaclava_TI_tna_F {
+ ace_irritants_eyes_protection = 1;
+ };
+};
diff --git a/addons/compat_aegis/compat_aegis_smoke/config.cpp b/addons/compat_aegis/compat_aegis_smoke/config.cpp
new file mode 100644
index 00000000000..be9c09f88c5
--- /dev/null
+++ b/addons/compat_aegis/compat_aegis_smoke/config.cpp
@@ -0,0 +1,24 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+ class SUBADDON {
+ name = COMPONENT_NAME;
+ units[] = {};
+ weapons[] = {};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {
+ "A3_Aegis_Characters_F_Aegis_Facewear",
+ "ace_smoke",
+ };
+ skipWhenMissingDependencies = 1;
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"BrettMayson"};
+ url = ECSTRING(main,URL);
+ VERSION_CONFIG;
+
+ // this prevents any patched class from requiring this addon
+ addonRootClass = "A3_Characters_F";
+ };
+};
+
+#include "CfgGlasses.hpp"
diff --git a/addons/compat_aegis/compat_aegis_smoke/script_component.hpp b/addons/compat_aegis/compat_aegis_smoke/script_component.hpp
new file mode 100644
index 00000000000..cafc3b0288d
--- /dev/null
+++ b/addons/compat_aegis/compat_aegis_smoke/script_component.hpp
@@ -0,0 +1,3 @@
+#define SUBCOMPONENT smoke
+#define SUBCOMPONENT_BEAUTIFIED Smoke
+#include "..\script_component.hpp"
diff --git a/addons/compat_cup_units/compat_cup_smoke/CfgGlasses.hpp b/addons/compat_cup_units/compat_cup_smoke/CfgGlasses.hpp
new file mode 100644
index 00000000000..2e91862b6df
--- /dev/null
+++ b/addons/compat_cup_units/compat_cup_smoke/CfgGlasses.hpp
@@ -0,0 +1,80 @@
+#define PROTECT(var1,eyes,breathing) class var1: None { \
+ ace_irritants_eyes_protection = eyes; \
+ ace_irritants_breathing_protection = breathing; \
+}
+
+class CfgGlasses {
+ class None;
+
+ class CUP_RUS_Balaclava_blk: None {
+ ace_irritants_breathing_protection = 0.4;
+ };
+
+ class CUP_G_Ratnik_Balaclava_base: None {
+ ace_irritants_breathing_protection = 0.4;
+ };
+
+ PROTECT(CUP_G_ESS_BLK_Dark,1,0);
+ PROTECT(CUP_G_ESS_BLK_Ember,1,0);
+ PROTECT(CUP_G_ESS_BLK,1,0);
+ PROTECT(CUP_G_ESS_CBR_Dark,1,0);
+ PROTECT(CUP_G_ESS_CBR_Ember,1,0);
+ PROTECT(CUP_G_ESS_CBR,1,0);
+ PROTECT(CUP_G_ESS_RGR_Dark,1,0);
+ PROTECT(CUP_G_ESS_RGR_Ember,1,0);
+ PROTECT(CUP_G_ESS_RGR,1,0);
+ PROTECT(CUP_G_ESS_KHK_Dark,1,0);
+ PROTECT(CUP_G_ESS_KHK_Ember,1,0);
+ PROTECT(CUP_G_ESS_KHK,1,0);
+ PROTECT(CUP_G_ESS_BLK_Facewrap_Black,1,0.4);
+ PROTECT(CUP_G_ESS_RGR_Facewrap_Ranger,1,0.4);
+ PROTECT(CUP_G_ESS_CBR_Facewrap_Red,1,0.4);
+ PROTECT(CUP_G_ESS_RGR_Facewrap_Skull,1,0.4);
+ PROTECT(CUP_G_ESS_KHK_Facewrap_Tan,1,0.4);
+ PROTECT(CUP_G_ESS_RGR_Facewrap_Tropical,1,0.4);
+ PROTECT(CUP_G_ESS_KHK_Facewrap_White,1,0.4);
+ PROTECT(CUP_G_ESS_BLK_Facewrap_Black_GPS,1,0.4);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Blk,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Grn,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Red,1,0);
+ PROTECT(CUP_G_ESS_KHK_Scarf_Tan,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_White,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Face_Blk,1,0.4);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Face_Grn,1,0.4);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Face_Red,1,0.4);
+ PROTECT(CUP_G_ESS_KHK_Scarf_Face_Tan,1,0.4);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Face_White,1,0.4);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Blk_Beard,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Blk_Beard_Blonde,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Grn_Beard,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Grn_Beard_Blonde,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Red_Beard,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Red_Beard_Blonde,1,0);
+ PROTECT(CUP_G_ESS_KHK_Scarf_Tan_Beard,1,0);
+ PROTECT(CUP_G_ESS_KHK_Scarf_Tan_Beard_Blonde,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_White_Beard,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_White_Beard_Blonde,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Grn_GPS,1,0);
+ PROTECT(CUP_G_ESS_KHK_Scarf_Tan_GPS,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_White_GPS,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Face_Grn_GPS,1,0.4);
+ PROTECT(CUP_G_ESS_KHK_Scarf_Face_Tan_GPS,1,0.4);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Face_White_GPS,1,0.4);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Grn_GPS_Beard,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_Grn_GPS_Beard_Blonde,1,0);
+ PROTECT(CUP_G_ESS_KHK_Scarf_Tan_GPS_Beard,1,0);
+ PROTECT(CUP_G_ESS_KHK_Scarf_Tan_GPS_Beard_Blonde,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_White_GPS_Beard,1,0);
+ PROTECT(CUP_G_ESS_BLK_Scarf_White_GPS_Beard_Blonde,1,0);
+ PROTECT(CUP_G_PMC_Facewrap_Black_Glasses_Dark_Headset,0,0.4);
+ PROTECT(CUP_G_PMC_Facewrap_Black_Glasses_Dark,0,0.4);
+ PROTECT(CUP_PMC_Facewrap_Black,0,0.4);
+ PROTECT(CUP_G_PMC_Facewrap_Tan_Glasses_Dark_Headset,0,0.4);
+ PROTECT(CUP_G_PMC_Facewrap_Tropical_Glasses_Dark_Headset,0,0.4);
+ PROTECT(CUP_G_PMC_Facewrap_Winter_Glasses_Dark_Headset,0,0.4);
+ PROTECT(CUP_G_Scarf_Face_Blk,0,0.4);
+ PROTECT(CUP_G_Scarf_Face_Grn,0,0.4);
+ PROTECT(CUP_G_Scarf_Face_Red,0,0.4);
+ PROTECT(CUP_G_Scarf_Face_Tan,0,0.4);
+ PROTECT(CUP_G_Scarf_Face_White,0,0.4);
+};
diff --git a/addons/compat_cup_units/compat_cup_smoke/config.cpp b/addons/compat_cup_units/compat_cup_smoke/config.cpp
new file mode 100644
index 00000000000..6f833154da5
--- /dev/null
+++ b/addons/compat_cup_units/compat_cup_smoke/config.cpp
@@ -0,0 +1,23 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+ class SUBADDON {
+ name = COMPONENT_NAME;
+ units[] = {};
+ weapons[] = {};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {
+ "ace_smoke",
+ "CUP_Creatures_Military_RussiaModern_Headgear",
+ "CUP_Creatures_Military_USArmy",
+ };
+ skipWhenMissingDependencies = 1;
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"BrettMayson"};
+ url = ECSTRING(main,URL);
+ VERSION_CONFIG;
+ addonRootClass = QUOTE(ADDON);
+ };
+};
+
+#include "CfgGlasses.hpp"
diff --git a/addons/compat_cup_units/compat_cup_smoke/script_component.hpp b/addons/compat_cup_units/compat_cup_smoke/script_component.hpp
new file mode 100644
index 00000000000..cafc3b0288d
--- /dev/null
+++ b/addons/compat_cup_units/compat_cup_smoke/script_component.hpp
@@ -0,0 +1,3 @@
+#define SUBCOMPONENT smoke
+#define SUBCOMPONENT_BEAUTIFIED Smoke
+#include "..\script_component.hpp"
diff --git a/addons/compat_ws/compat_ws_smoke/CfgWeapons.hpp b/addons/compat_ws/compat_ws_smoke/CfgWeapons.hpp
new file mode 100644
index 00000000000..e03d3247fbc
--- /dev/null
+++ b/addons/compat_ws/compat_ws_smoke/CfgWeapons.hpp
@@ -0,0 +1,11 @@
+class CfgWeapons {
+ class lxWS_H_turban_01_black;
+ class lxWS_H_turban_03_black: lxWS_H_turban_01_black {
+ ace_irritants_breathing_protection = 0.4;
+ };
+
+ class H_Shemag_khk;
+ class H_turban_02_mask_black_lxws: H_Shemag_khk {
+ ace_irritants_breathing_protection = 0.4;
+ };
+};
diff --git a/addons/compat_ws/compat_ws_smoke/config.cpp b/addons/compat_ws/compat_ws_smoke/config.cpp
new file mode 100644
index 00000000000..61a8c70dfcc
--- /dev/null
+++ b/addons/compat_ws/compat_ws_smoke/config.cpp
@@ -0,0 +1,24 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+ class SUBADDON {
+ name = COMPONENT_NAME;
+ units[] = {};
+ weapons[] = {};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {
+ "data_f_lxWS_Loadorder",
+ "ace_smoke",
+ };
+ skipWhenMissingDependencies = 1;
+ author = ECSTRING(common,ACETeam);
+ authors[] = {"BrettMayson"};
+ url = ECSTRING(main,URL);
+ VERSION_CONFIG;
+
+ // this prevents any patched class from requiring this addon
+ addonRootClass = "A3_Characters_F";
+ };
+};
+
+#include "CfgWeapons.hpp"
diff --git a/addons/compat_ws/compat_ws_smoke/script_component.hpp b/addons/compat_ws/compat_ws_smoke/script_component.hpp
new file mode 100644
index 00000000000..cafc3b0288d
--- /dev/null
+++ b/addons/compat_ws/compat_ws_smoke/script_component.hpp
@@ -0,0 +1,3 @@
+#define SUBCOMPONENT smoke
+#define SUBCOMPONENT_BEAUTIFIED Smoke
+#include "..\script_component.hpp"
diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml
index 9eab8e109cb..3ced27a2450 100644
--- a/addons/hearing/stringtable.xml
+++ b/addons/hearing/stringtable.xml
@@ -491,36 +491,36 @@
ЕЛЕКТРОННИЙ
- Volume muffling
- Snížení hlasitosti
- Atténuation du volume
- Atenuación de volumen
- Attenuazione del volume
- Tłumienie głośności
- Abafamento de Volume
- Глушение звука
+ Volume Muffling
+ Snížení Hlasitosti
+ Atténuation Du Volume
+ Atenuación De Volumen
+ Attenuazione Del Volume
+ Tłumienie Głośności
+ Abafamento De Volume
+ Глушение Звука
Lautstärkedämpfung
소리 차음도
音量の抑制
進低音量
降低音量
- Глушіння звуку
+ Глушіння Звуку
- Hearing protection
- Ochrana sluchu
- Protection auditive
- Protección auditiva
- Protezione uditiva
- Ochrona słuchu
+ Hearing Protection
+ Ochrana Sluchu
+ Protection Auditive
+ Protección Auditiva
+ Protezione Uditiva
+ Ochrona Słuchu
Proteção Auditiva
- Защита слуха
+ Защита Слуха
Gehörschutz
청력 보호
聴覚保護
聽力保護
听力保护
- Захист слуху
+ Захист Слуху
Volume when unconscious.
diff --git a/addons/irritants/$PBOPREFIX$ b/addons/irritants/$PBOPREFIX$
new file mode 100644
index 00000000000..03cecd91b77
--- /dev/null
+++ b/addons/irritants/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\irritants
diff --git a/addons/irritants/ACE_Arsenal_Stats.hpp b/addons/irritants/ACE_Arsenal_Stats.hpp
new file mode 100644
index 00000000000..313b9f6ee11
--- /dev/null
+++ b/addons/irritants/ACE_Arsenal_Stats.hpp
@@ -0,0 +1,20 @@
+class EGVAR(arsenal,stats) {
+ class statBase;
+ class GVAR(breathing_protection): statBase {
+ scope = 2;
+ displayName = CSTRING(statBreatingProtection);
+ showBar = 1;
+ condition = QUOTE(getNumber (_this select 1 >> QQGVAR(Breathing_Protection)) > 0);
+ barStatement = QUOTE(getNumber (_this select 1 >> QQGVAR(Breathing_Protection)));
+ tabs[] = {{6,7}, {}};
+ };
+
+ class GVAR(eyes_protection): statBase {
+ scope = 2;
+ displayName = CSTRING(statEyesProtection);
+ showBar = 1;
+ condition = QUOTE(getNumber (_this select 1 >> QQGVAR(Eyes_Protection)) > 0);
+ barStatement = QUOTE(getNumber (_this select 1 >> QQGVAR(Eyes_Protection)));
+ tabs[] = {{6,7}, {}};
+ };
+};
diff --git a/addons/irritants/CfgEventHandlers.hpp b/addons/irritants/CfgEventHandlers.hpp
new file mode 100644
index 00000000000..e90bed419e7
--- /dev/null
+++ b/addons/irritants/CfgEventHandlers.hpp
@@ -0,0 +1,15 @@
+class Extended_PreStart_EventHandlers {
+ class ADDON {
+ init = QUOTE(call COMPILE_FILE(XEH_preStart));
+ };
+};
+class Extended_PreInit_EventHandlers {
+ class ADDON {
+ init = QUOTE(call COMPILE_FILE(XEH_preInit));
+ };
+};
+class Extended_PostInit_EventHandlers {
+ class ADDON {
+ init = QUOTE(call COMPILE_FILE(XEH_postInit));
+ };
+};
diff --git a/addons/irritants/CfgGlasses.hpp b/addons/irritants/CfgGlasses.hpp
new file mode 100644
index 00000000000..d7ee9a1f65d
--- /dev/null
+++ b/addons/irritants/CfgGlasses.hpp
@@ -0,0 +1,53 @@
+class CfgGlasses {
+ class None;
+
+ class G_AirPurifyingRespirator_01_base_F: None {
+ GVAR(Eyes_Protection) = 1;
+ GVAR(Breathing_Protection) = 1;
+ };
+
+ class G_Balaclava_blk: None {
+ GVAR(Breathing_Protection) = 0.2;
+ };
+ class G_Balaclava_combat: G_Balaclava_blk {
+ GVAR(Eyes_Protection) = 1;
+ };
+ class G_Balaclava_lowprofile: G_Balaclava_blk {
+ GVAR(Eyes_Protection) = 1;
+ };
+
+ class G_Combat: None {
+ GVAR(Eyes_Protection) = 1;
+ };
+ class G_Lowprofile: None {
+ GVAR(Eyes_Protection) = 1;
+ };
+
+ class G_RegulatorMask_base_F: None {
+ GVAR(Eyes_Protection) = 1;
+ GVAR(Breathing_Protection) = 1;
+ };
+
+ class G_Respirator_base_F: None {
+ GVAR(Breathing_Protection) = 0.8;
+ };
+
+ class G_EyeProtectors_base_F: None {
+ GVAR(Eyes_Protection) = 0.2;
+ };
+
+ class G_Balaclava_TI_blk_F: None {
+ GVAR(Breathing_Protection) = 0.4;
+ };
+ class G_Balaclava_TI_G_blk_F: G_Balaclava_TI_blk_F {
+ GVAR(Eyes_Protection) = 1;
+ };
+ class G_Balaclava_TI_tna_F;
+ class G_Balaclava_TI_G_tna_F: G_Balaclava_TI_tna_F {
+ GVAR(Eyes_Protection) = 1;
+ };
+
+ class G_Blindfold_01_base_F: None {
+ GVAR(Eyes_Protection) = 0.6;
+ };
+};
diff --git a/addons/irritants/CfgVehicles.hpp b/addons/irritants/CfgVehicles.hpp
new file mode 100644
index 00000000000..1156ab97e97
--- /dev/null
+++ b/addons/irritants/CfgVehicles.hpp
@@ -0,0 +1,67 @@
+class CfgVehicles {
+ class Truck_01_base_F;
+ class B_Truck_01_transport_F: Truck_01_base_F {
+ GVAR(seats)[] = {
+ {0}, // Driver is enclosed
+ {1, 1}, // Gunners are exposed
+ {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
+ };
+ };
+
+ class Heli_Transport_04_base_F;
+ class O_Heli_Transport_04_bench_F: Heli_Transport_04_base_F {
+ GVAR(seats)[] = {
+ {0}, // Pilot is enclosed
+ {0, 0, 1, 1, 1, 1, 1, 1, 1, 1}, // Crew is enclosed, passengers are exposed
+ };
+ };
+
+ class Heli_light_03_base_F;
+ class Heli_light_03_unarmed_base_F: Heli_light_03_base_F {
+ GVAR(seats)[] = {0}; // All seats are enclosed
+ };
+
+ class Heli_Light_02_base_F;
+ class Heli_Light_02_dynamicLoadout_base_F: Heli_Light_02_base_F {
+ GVAR(seats)[] = {0}; // All seats are enclosed
+ };
+
+ class Heli_Attack_01_base_F;
+ class Heli_Attack_01_dynamicLoadout_base_F: Heli_Attack_01_base_F {
+ GVAR(seats)[] = {0}; // All seats are enclosed
+ };
+
+ class Helicopter_Base_H;
+ class Heli_Transport_02_base_F: Helicopter_Base_H {
+ GVAR(seats)[] = {0}; // All seats are enclosed
+ };
+
+ class Car_F;
+ class Offroad_01_base_F: Car_F {
+ GVAR(seats)[] = {1}; // All seats are exposed
+ };
+ class Hatchback_01_base_F: Car_F {
+ GVAR(seats)[] = {1};
+ };
+ class SUV_01_base_F: Car_F {
+ GVAR(seats)[] = {1};
+ };
+ class Van_01_base_F: Car_F {
+ GVAR(seats)[] = {1};
+ };
+ class Van_02_base_F: Car_F {
+ GVAR(seats)[] = {1};
+ };
+ class Tractor_01_base_F: Car_F {
+ GVAR(seats)[] = {1};
+ };
+
+ class Truck_02_base_F;
+ class C_Truck_02_covered_F: Truck_02_base_F {
+ GVAR(seats)[] = {
+ {0}, // Driver is enclosed
+ {1, 1}, // Gunners are exposed
+ {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
+ };
+ };
+};
diff --git a/addons/irritants/CfgWeapons.hpp b/addons/irritants/CfgWeapons.hpp
new file mode 100644
index 00000000000..74fc3494864
--- /dev/null
+++ b/addons/irritants/CfgWeapons.hpp
@@ -0,0 +1,17 @@
+class CfgWeapons {
+ class H_HelmetB;
+ class H_HelmetO_ViperSP_hex_F: H_HelmetB {
+ GVAR(Eyes_Protection) = 1;
+ };
+
+ class H_PilotHelmetFighter_B: H_HelmetB {
+ GVAR(Breathing_Protection) = 1;
+ GVAR(Eyes_Protection) = 1;
+ };
+
+ class H_HelmetB_camo;
+ class H_RacingHelmet_1_F: H_HelmetB_camo {
+ GVAR(Breathing_Protection) = 0.3;
+ GVAR(Eyes_Protection) = 0.7;
+ };
+};
diff --git a/addons/irritants/XEH_PREP.hpp b/addons/irritants/XEH_PREP.hpp
new file mode 100644
index 00000000000..cf418699af1
--- /dev/null
+++ b/addons/irritants/XEH_PREP.hpp
@@ -0,0 +1,4 @@
+PREP(isInSmoke);
+PREP(isOpenVehicle);
+PREP(isOpenSeat);
+PREP(smoke_pfh);
diff --git a/addons/irritants/XEH_postInit.sqf b/addons/irritants/XEH_postInit.sqf
new file mode 100644
index 00000000000..682ae45ae87
--- /dev/null
+++ b/addons/irritants/XEH_postInit.sqf
@@ -0,0 +1,22 @@
+#include "script_component.hpp"
+
+if (!hasInterface) exitWith {};
+GVAR(ppHandleDynamicBlur) = ppEffectCreate ["DynamicBlur", 500];
+GVAR(ppHandleColorCorrections) = ppEffectCreate ["ColorCorrections", 1500];
+
+["featureCamera", {
+ params ["", "_newCamera"];
+ private _showEffects = (_newCamera == "") && {GVAR(smoke_pfh) != -1};
+ GVAR(ppHandleDynamicBlur) ppEffectEnable _showEffects;
+ GVAR(ppHandleColorCorrections) ppEffectEnable _showEffects;
+}] call CBA_fnc_addPlayerEventHandler;
+
+["loadout", {
+ params ["_unit"];
+ if !(local _unit) exitWith {};
+ private _config = configFile >> "CfgGlasses" >> goggles _unit;
+ private _breathing = getNumber (_config >> QGVAR(Breathing_Protection));
+ _unit setVariable [QGVAR(breathingProtection), _breathing, true];
+ private _eyes = getNumber (_config >> QGVAR(Eyes_Protection));
+ _unit setVariable [QGVAR(eyesProtection), _eyes, true];
+}, true] call CBA_fnc_addPlayerEventHandler;
diff --git a/addons/irritants/XEH_preInit.sqf b/addons/irritants/XEH_preInit.sqf
new file mode 100644
index 00000000000..2903d5c00bf
--- /dev/null
+++ b/addons/irritants/XEH_preInit.sqf
@@ -0,0 +1,13 @@
+#include "script_component.hpp"
+
+ADDON = false;
+
+#include "XEH_PREP.hpp"
+
+#include "initSettings.inc.sqf"
+
+GVAR(smoke_pfh) = -1;
+GVAR(openVehicleCache) = createHashMap;
+GVAR(openSeatCache) = createHashMap;
+
+ADDON = true;
diff --git a/addons/irritants/XEH_preStart.sqf b/addons/irritants/XEH_preStart.sqf
new file mode 100644
index 00000000000..a51262a37b9
--- /dev/null
+++ b/addons/irritants/XEH_preStart.sqf
@@ -0,0 +1,2 @@
+#include "script_component.hpp"
+#include "XEH_PREP.hpp"
diff --git a/addons/irritants/config.cpp b/addons/irritants/config.cpp
new file mode 100644
index 00000000000..bfe59b1f77e
--- /dev/null
+++ b/addons/irritants/config.cpp
@@ -0,0 +1,18 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+ class ADDON {
+ name = QUOTE(COMPONENT);
+ units[] = {};
+ weapons[] = {};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {"ace_main"};
+ VERSION_CONFIG;
+ };
+};
+
+#include "ACE_Arsenal_Stats.hpp"
+#include "CfgEventHandlers.hpp"
+#include "CfgGlasses.hpp"
+#include "CfgVehicles.hpp"
+#include "CfgWeapons.hpp"
diff --git a/addons/irritants/functions/fnc_isInSmoke.sqf b/addons/irritants/functions/fnc_isInSmoke.sqf
new file mode 100644
index 00000000000..cc97f72b32d
--- /dev/null
+++ b/addons/irritants/functions/fnc_isInSmoke.sqf
@@ -0,0 +1,48 @@
+#include "..\script_component.hpp"
+/*
+ * Author: BrettMayson
+ * Check if a unit is in smoke (or any thick particle effect that has `blockAIVisibility`)
+ *
+ * Arguments:
+ * 0: Unit