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 + * + * Return Value: + * Is the unit in smoke? + * + * Example: + * [player] call ace_irritants_fnc_isInSmoke + * + * Public: Yes + */ + +params [["_unit", objNull, [objNull]]]; + +private _vehicle = objectParent _unit; + +if (!isNull _vehicle && {!([_vehicle, _unit] call FUNC(isOpenSeat))}) exitWith { false }; + +private _coverage = 0; + +private _eyePos = eyePos _unit; +private _z = [0,3] select (stance _unit == "PRONE"); +private _positions = [ + [_eyePos, _eyePos vectorAdd [5, 0, _z], _unit], + [_eyePos, _eyePos vectorAdd [-5, 0, _z], _unit], + [_eyePos, _eyePos vectorAdd [0, 5, _z], _unit], + [_eyePos, _eyePos vectorAdd [0, -5, _z], _unit] +]; + +{ + private _intersect = lineIntersectsSurfaces _x; + if (_intersect isNotEqualTo []) then { + _x set [1, _intersect select 0]; + } else { + _x set [1, [_x#1,0,objNull]]; + }; + if ((_x#0) distance (_x#1#0) < 0.1) then { + _coverage = _coverage + 1; + } else { + _coverage = _coverage + ([objectParent _unit, "VIEW", _x#1#2] checkVisibility [_x#0, _x#1#0]); + }; +} forEach _positions; +_coverage < ((count _positions) / 3) diff --git a/addons/irritants/functions/fnc_isOpenSeat.sqf b/addons/irritants/functions/fnc_isOpenSeat.sqf new file mode 100644 index 00000000000..67e6461c27d --- /dev/null +++ b/addons/irritants/functions/fnc_isOpenSeat.sqf @@ -0,0 +1,68 @@ +#include "..\script_component.hpp" +/* + * Author: BrettMayson + * Check if a seat is open and thus susceptible to smoke entering, may not be accurate for vehicles with top coverings + * + * Arguments: + * 0: Vehicle + * 1: Unit + * + * Return Value: + * Is the seat open? + * + * Example: + * [_vehicle, _unit] call ace_irritants_fnc_isOpenSeat + * + * Public: Yes + */ + +params [ + ["_vehicle", objNull, [objNull]], + ["_unit", objNull, [objNull]] +]; + +if (_vehicle isEqualTo objNull || _unit isEqualTo objNull) exitWith { true }; + +if (isTurnedOut _unit) exitWith { true }; + +private _class = typeOf _vehicle; + +private _key = _vehicle unitTurret _unit; +if (count _key >= 1) then { + _key = [_key select 0]; +} else { + _key = [-2, _vehicle getCargoIndex _unit]; +}; + +private _open = -1; +if (_class in GVAR(openSeatCache)) then { + private _cache = GVAR(openSeatCache) get _class; + if (_key in _cache) then { + _open = _cache get _key; + }; +}; +if (_open isNotEqualTo -1) exitWith { _open }; + +private _config = getArray (configOf _vehicle >> QGVAR(seats)); +if (_config isNotEqualTo []) exitWith { + if (count _config == 1) exitWith { _config isEqualTo [1] }; + private _path = switch (_key select 0) do { + case -2: { [2, _key select 1] }; // cargo + case -1: { [0, 0] }; // driver + default { [1, _key select 0] }; // turret + }; + private _subConfig = _config select (_path select 0); + if (typeName _subConfig == "SCALAR") exitWith { _subConfig == 1 }; + _subConfig select (_path select 1) == 1 +}; + +if ([_vehicle] call FUNC(isOpenVehicle)) exitWith { true }; + +private _eyePos = eyePos _unit; +private _intersect = lineIntersectsSurfaces [_eyePos, _eyePos vectorAdd [0, 0, 1], _unit]; +private _open = (_intersect findIf { _x#2 == _vehicle }) == -1; // No intersection with vehicle roof + +private _cache = GVAR(openSeatCache) getOrDefaultCall [_class, { createHashMap }, true]; +_cache set [_key, _open]; + +_open diff --git a/addons/irritants/functions/fnc_isOpenVehicle.sqf b/addons/irritants/functions/fnc_isOpenVehicle.sqf new file mode 100644 index 00000000000..c2367c5415a --- /dev/null +++ b/addons/irritants/functions/fnc_isOpenVehicle.sqf @@ -0,0 +1,38 @@ +#include "..\script_component.hpp" +/* + * Author: BrettMayson + * Check if a vehicle is open and thus susceptible to smoke entering + * + * Arguments: + * 0: Vehicle + * + * Return Value: + * Is the vehicle open? + * + * Example: + * [vehicle player] call ace_irritants_fnc_isOpenVehicle + * + * Public: Yes + */ + +params [ + ["_vehicle", objNull, [objNull]] +]; + +if (_vehicle isEqualTo objNull) exitWith { true }; + +private _class = typeOf _vehicle; + +if (_class in GVAR(openVehicleCache)) exitWith { GVAR(openVehicleCache) get _class }; + +private _attenuation = getText(configFile >> "CfgVehicles" >> _class >> "attenuationEffectType"); +if (_attenuation == "") exitWith { true }; + +private _attenuation = configFile >> "AttenuationEffects" >> _attenuation; +private _open = [0,1] findIf { + private _equalizer = getArray(_attenuation >> format ["Equalizer%1", _x] >> "gain"); + _equalizer isEqualTo [1,1,1,1] +} != -1; + +GVAR(openVehicleCache) set [_class, _open]; +_open diff --git a/addons/irritants/functions/fnc_smoke_pfh.sqf b/addons/irritants/functions/fnc_smoke_pfh.sqf new file mode 100644 index 00000000000..4e77d2ffca1 --- /dev/null +++ b/addons/irritants/functions/fnc_smoke_pfh.sqf @@ -0,0 +1,82 @@ +#include "..\script_component.hpp" +/* + * Author: BrettMayson + * Per Frame Handler that updates smoke effects on units + * + * Arguments: + * 0: Unit + * + * Return Value: + * Nothing + * + * Example: + * [{ + * [player] call ace_irritants_fnc_pfh + * }] call CBA_fnc_addPerFrameHandler + * + * Public: No + */ + +params ["_unit"]; + +if (isGamePaused) exitWith {}; + +#define EFFECT_RATE 0.3 +#define RECOVERY_RATE -0.075 + +private _isInSmoke = [_unit] call FUNC(isInSmoke); + +private _change = (if (_isInSmoke) then { + EFFECT_RATE * GVAR(smoke_effectFactor) +} else { + RECOVERY_RATE * GVAR(smoke_recoveryFactor) +}) * PFH_INTERVAL; + +private _fnc_updateLevel = { + params ["_level", "_protect"]; + private _innerChange = if (_protect == 1 && _isInSmoke) then { + RECOVERY_RATE * GVAR(smoke_recoveryFactor) * PFH_INTERVAL + } else { + _change + }; + private _newLevel = (_level + _innerChange) min 1 max 0; + if (_protect != 0 && _protect != 1) then { + _newLevel = _newLevel * (1 - _protect); + }; + _newLevel +}; + +// Eyes +private _levelEyes = _unit getVariable [QGVAR(smoke_eyesLevel), 0]; +private _eyesProtect = _unit getVariable [QGVAR(eyesProtection), 0]; +_levelEyes = [_levelEyes, _eyesProtect] call _fnc_updateLevel; +_unit setVariable [QGVAR(smoke_eyesLevel), _levelEyes]; + +private _dynamicBlurValue = linearConversion [0.05, 1, _levelEyes, 0, 0.8, true]; +private _colorCorrectionsValue = linearConversion [0.05, 1, _levelEyes, 1, 0.6, true]; + +if (_unit == ace_player) then { + GVAR(ppHandleDynamicBlur) ppEffectAdjust [_dynamicBlurValue]; + GVAR(ppHandleColorCorrections) ppEffectAdjust [1,1,0,[0,0,0,0],[0.8, 0.8, 0.8, _colorCorrectionsValue],[1,1,1,0]]; + + GVAR(ppHandleDynamicBlur) ppEffectCommit PFH_INTERVAL; + GVAR(ppHandleColorCorrections) ppEffectCommit PFH_INTERVAL; +}; + +// Breathing +private _levelBreathing = _unit getVariable [QGVAR(smoke_breathingLevel), 0]; +private _breathProtect = _unit getVariable [QGVAR(breathingProtection), 0]; +_levelBreathing = [_levelBreathing, _breathProtect] call _fnc_updateLevel; +_unit setVariable [QGVAR(smoke_breathingLevel), _levelBreathing]; + +if !(isNil QEFUNC(medical_vitals,addSpO2DutyFactor)) then { + private _breathingEffectiveness = linearConversion [0.2, 1, _levelBreathing, 1, 0.6, true]; + [QUOTE(ADDON), _breathingEffectiveness] call EFUNC(medical_vitals,addSpO2DutyFactor); +}; + +// Event +private _smoked = _unit getVariable [QGVAR(smoked), false]; +if (_isInSmoke != _smoked) then { + _unit setVariable [QGVAR(smoked), _isInSmoke, true]; + [QGVAR(smoked), _isInSmoke] call CBA_fnc_localEvent; +}; diff --git a/addons/irritants/initSettings.inc.sqf b/addons/irritants/initSettings.inc.sqf new file mode 100644 index 00000000000..c7796dfe44f --- /dev/null +++ b/addons/irritants/initSettings.inc.sqf @@ -0,0 +1,47 @@ +private _category = format ["ACE %1", localize LSTRING(DisplayName)]; + +[ + QGVAR(smoke_enabled), "CHECKBOX", + [LSTRING(smoke_enabled_DisplayName), LSTRING(smoke_enabled_Description)], + [_category, localize LSTRING(smoke_DisplayName)], + true, + 1, + { + [QGVAR(smoke_enabled), _this] call EFUNC(common,cbaSettings_settingChanged); + if (!hasInterface) exitWith {}; + private _showEffects = _this && !EGVAR(common,OldIsCamera); + GVAR(ppHandleDynamicBlur) ppEffectEnable _showEffects; + GVAR(ppHandleColorCorrections) ppEffectEnable _showEffects; + if (_this) then { + if (GVAR(smoke_pfh) == -1) then { + GVAR(smoke_pfh) = [{ + [ace_player] call FUNC(smoke_pfh); + }, PFH_INTERVAL] call CBA_fnc_addPerFrameHandler; + }; + } else { + if (GVAR(smoke_pfh) != -1) then { + [GVAR(smoke_pfh)] call CBA_fnc_removePerFrameHandler; + GVAR(smoke_pfh) = -1; + if (!isNil QEFUNC(medical_vitals,removeSpO2DutyFactor)) then { [QUOTE(ADDON)] call EFUNC(medical_vitals,removeSpO2DutyFactor); }; + }; + }; + } +] call CBA_fnc_addSetting; + +[ + QGVAR(smoke_effectFactor), "SLIDER", + [LSTRING(smoke_effectFactor_DisplayName), LSTRING(smoke_effectFactor_Description)], + [_category, localize LSTRING(smoke_DisplayName)], + [0, 1, 0.5, 0, true], + 1, + {[QGVAR(smoke_effectFactor), _this] call EFUNC(common,cbaSettings_settingChanged)} +] call CBA_fnc_addSetting; + +[ + QGVAR(smoke_recoveryFactor), "SLIDER", + [LSTRING(smoke_recoveryFactor_DisplayName), LSTRING(smoke_recoveryFactor_Description)], + [_category, localize LSTRING(smoke_DisplayName)], + [0, 1, 0.5, 0, true], + 1, + {[QGVAR(smoke_recoveryFactor), _this] call EFUNC(common,cbaSettings_settingChanged)} +] call CBA_fnc_addSetting; diff --git a/addons/irritants/script_component.hpp b/addons/irritants/script_component.hpp new file mode 100644 index 00000000000..662dc841b2d --- /dev/null +++ b/addons/irritants/script_component.hpp @@ -0,0 +1,19 @@ +#define COMPONENT irritants +#define COMPONENT_BEAUTIFIED Irritants +#include "\z\ace\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_IRRITANTS + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_IRRITANTS + #define DEBUG_SETTINGS DEBUG_SETTINGS_IRRITANTS +#endif + +#include "\z\ace\addons\main\script_macros.hpp" + +#define PFH_INTERVAL 0.2 diff --git a/addons/irritants/stringtable.xml b/addons/irritants/stringtable.xml new file mode 100644 index 00000000000..223f70aad21 --- /dev/null +++ b/addons/irritants/stringtable.xml @@ -0,0 +1,165 @@ + + + + + Irritants + Dráždivé látky + Irritants + Irritantes + Agenti irritanti + Drażniące substancje + Irritantes + Раздражители + Reizstoffe + 자극제 + 刺激物 + 刺激物 + 刺激物 + Роздратування + + + Smoke Effects + Kouřové efekty + Effets de fumée + Efectos de humo + Effetti del fumo + Efekty dymu + Efeitos de Fumaça + Эффекты дыма + Rauch Effekte + 연기 효과 + 煙エフェクト + 烟雾效果 + 烟雾效果 + Ефекти диму + + + Adjusts the rate of smoke effect. Lower values increase the duration that can be spent in smoke. + Upravuje rychlost kouřového efektu. Nižší hodnoty prodlužují dobu, kterou lze strávit v kouři. + Modifie la vitesse de l'effet de fumée. Des valeurs plus basses augmentent la durée pendant laquelle on peut rester dans la fumée. + Ajusta la velocidad del efecto de humo. Los valores más bajos aumentan la duración que se puede pasar en el humo. + Regola la velocità dell'effetto fumo. Valori più bassi aumentano la durata che si può trascorrere nel fumo. + Dostosowuje szybkość efektu dymu. Niższe wartości zwiększają czas, jaki można spędzić w dymie. + Ajusta a taxa do efeito de fumaça. Valores mais baixos aumentam a duração que pode ser passada na fumaça. + Регулирует скорость эффекта дыма. Более низкие значения увеличивают продолжительность пребывания в дыму. + Passt die Geschwindigkeit des Raucheffekts an. Niedrigere Werte erhöhen die Dauer, die man im Rauch verbringen kann. + 연기 효과의 속도를 조정합니다. 낮은 값은 연기 속에서 보낼 수 있는 시간을 늘립니다. + 煙エフェクトの速度を調整します。値が低いほど、煙の中で過ごせる時間が長くなります。 + 调整烟雾效果的速率。较低的值会增加在烟雾中停留的时间。 + 调整烟雾效果的速率。较低的值会增加在烟雾中停留的时间。 + Регулює швидкість ефекту диму. Нижчі значення збільшують тривалість перебування в диму. + + + Effect Factor + Faktor efektu + Facteur d'effet + Factor de efecto + Fattore di effetto + Czynnik efektu + Fator de Efeito + Коэффициент эффекта + Effekt Faktor + 효과 계수 + エフェクトファクター + 效果系数 + 效果系数 + Фактор ефекту + + + Enable / Disable Smoke Effects + Povolit / Zakázat kouřové efekty + Activer / Désactiver les effets de fumée + Activar / Desactivar los efectos de humo + Abilita / Disabilita gli effetti del fumo + Włącz / Wyłącz efekty dymu + Ativar / Desativar Efeitos de Fumaça + Включить / Выключить эффекты дыма + Rauch Effekte Ein- / Ausschalten + 연기 효과 활성화 / 비활성화 + 煙エフェクトの有効化 / 無効化 + 启用 / 禁用 烟雾效果 + 启用 / 禁用 烟雾效果 + Увімкнути / Вимкнути ефекти диму + + + Enabled + Povoleno + Activé + Activada + Abilitata + Włączone + Ativado + Включена + Aktiv + 활성화 + 有効化 + 啟用 + 启用 + Увімкнено + + + Adjusts the rate of recovery from smoke effects. Higher values increase the rate of recovery after leaving smoke. + Upravuje rychlost zotavení z kouřových efektů. Vyšší hodnoty zvyšují rychlost zotavení po opuštění kouře. + Modifie la vitesse de récupération des effets de fumée. Des valeurs plus élevées augmentent la vitesse de récupération après avoir quitté la fumée. + Ajusta la velocidad de recuperación de los efectos del humo. Los valores más altos aumentan la velocidad de recuperación después de salir del humo. + Regola la velocità di recupero dagli effetti del fumo. Valori più alti aumentano la velocità di recupero dopo aver lasciato il fumo. + Dostosowuje szybkość regeneracji po efektach dymu. Wyższe wartości zwiększają szybkość regeneracji po opuszczeniu dymu. + Ajusta a taxa de recuperação dos efeitos da fumaça. Valores mais altos aumentam a taxa de recuperação após sair da fumaça. + Регулирует скорость восстановления от эффектов дыма. Более высокие значения увеличивают скорость восстановления после выхода из дыма. + Passt die Erholungsgeschwindigkeit von Raucheffekten an. Höhere Werte erhöhen die Erholungsrate nach dem Verlassen des Rauchs. + 연기 효과에서 회복 속도를 조정합니다. 높은 값은 연기를 떠난 후 회복 속도를 증가시킵니다. + 煙エフェクトからの回復速度を調整します。値が高いほど、煙から離れた後の回復速度が速くなります。 + 调整从烟雾效果中恢复的速率。较高的值会增加离开烟雾后的恢复速率。 + 调整从烟雾效果中恢复的速率。较高的值会增加离开烟雾后的恢复速率。 + Регулює швидкість відновлення від ефектів диму. Вищі значення збільшують швидкість відновлення після виходу з диму. + + + Recovery Factor + Faktor zotavení + Facteur de récupération + Factor de recuperación + Fattore di recupero + Czynnik regeneracji + Fator de Recuperação + Коэффициент восстановления + Erholungsfaktor + 회복 계수 + 回復ファクター + 恢复系数 + 恢复系数 + Фактор відновлення + + + Breathing Protection + Ochrana dýchání + Protection respiratoire + Protección respiratoria + Protezione respiratoria + Ochrona oddychania + Proteção Respiratória + Защита дыхания + Atemschutz + 호흡 보호 + 呼吸保護 + 呼吸保护 + 呼吸保护 + Захист дихання + + + Eye Protection + Ochrana očí + Protection des yeux + Protección ocular + Protezione degli occhi + Ochrona oczu + Proteção Ocular + Защита глаз + Augenschutz + 눈 보호 + 目の保護 + 眼睛保护 + 眼睛保护 + Захист очей + + + diff --git a/addons/medical_vitals/functions/fnc_addSpO2DutyFactor.sqf b/addons/medical_vitals/functions/fnc_addSpO2DutyFactor.sqf index 0c85ae3fa55..69573b9dff9 100644 --- a/addons/medical_vitals/functions/fnc_addSpO2DutyFactor.sqf +++ b/addons/medical_vitals/functions/fnc_addSpO2DutyFactor.sqf @@ -16,6 +16,10 @@ * Public: No */ params [["_id", "", [""]], ["_factor", 1, [0, {}]]]; -if (_id == "" || {_factor isEqualTo 1}) exitWith {}; +if (_id == "") exitWith {}; + +if (_factor isEqualTo 1) exitWith { + [_id] call FUNC(removeSpO2DutyFactor); +}; GVAR(spo2DutyList) set [_id, _factor];