From 7116e402b947e2fdc68090937d5b86472938d61b Mon Sep 17 00:00:00 2001 From: pkuzic Date: Fri, 25 Sep 2026 05:36:47 +0100 Subject: [PATCH 1/3] MONKEY (wind): add shared WarcraftXL wind field Port the stateless gust and veer profile, scale it from live weather, and publish one sample through the WindField resource and MonkeyFrame each frame. Add the foliageWind tier CVar, High preset value, and Advanced Graphics row. Co-Authored-By: GPT-5.6 Sol (Codex) --- crates/benilla-app/assets/ui/OptionsFrame.xml | 39 +++- crates/benilla-app/src/cvars.rs | 27 ++- crates/benilla-app/src/monkey_gfx.rs | 38 +++- crates/benilla-world/src/lib.rs | 1 + crates/benilla-world/src/wind/mod.rs | 201 ++++++++++++++++++ crates/benilla-world/src/world_plugins.rs | 2 + 6 files changed, 294 insertions(+), 14 deletions(-) create mode 100644 crates/benilla-world/src/wind/mod.rs diff --git a/crates/benilla-app/assets/ui/OptionsFrame.xml b/crates/benilla-app/assets/ui/OptionsFrame.xml index a54f95cb..1ae5a5e8 100644 --- a/crates/benilla-app/assets/ui/OptionsFrame.xml +++ b/crates/benilla-app/assets/ui/OptionsFrame.xml @@ -521,12 +521,16 @@ interiorDarkness = "Interior Darkness", -- MONKEY (p0 skyDither) skyDither = "Sky Dithering", + -- MONKEY (wind) + foliageWind = "Foliage Wind", + windGrass = "Grass", + windTrees = "Grass + Trees", yards = "%d yd", tips = { LIGHTING_QUALITY = "Sets character, world, indoor torch and outdoor torch shadows; dynamic " .. "interior lighting; moon shadows; volumetric fog; water quality; lava glow; fire and spell brightness; fire flicker; " - .. "and night and interior darkness. Low, Medium and High also set shadow " + .. "foliage wind; and night and interior darkness. Low, Medium and High also set shadow " .. "resolution; Medium and High also set resident and moving torch shadow counts.\n\n" .. "Off restores the original client's look: Classic water, no volumetric fog, lava glow or synthesised fire lights, " .. "night gain 1.0 and interior gain 1.0. All other settings, including " @@ -617,6 +621,11 @@ SKY_DITHER = "Adds a faint noise to the final image so smooth sky and fog gradients do not " .. "break into visible bands. Off is the original client's look. Practically free.", + -- MONKEY (wind) + FOLIAGE_WIND = + "Grass bends in two travelling wind waves and parts around nearby characters. " + .. "Grass + Trees also gives classified tree and bush foliage a gentle sway.\n\n" + .. "Off makes no vertex displacement and restores the unchanged image. Tree shadows stay static.", }, }, ruRU = { @@ -651,6 +660,10 @@ interiorDarkness = "Темнота помещений", -- MONKEY (p0 skyDither) skyDither = "Дизеринг неба", + -- MONKEY (wind) + foliageWind = "Ветер листвы", + windGrass = "Трава", + windTrees = "Трава + деревья", yards = "%d ярд.", tips = { LIGHTING_QUALITY = @@ -756,6 +769,11 @@ "Добавляет едва заметный шум в итоговое изображение, чтобы плавные переходы цвета " .. "неба и тумана не распадались на полосы. Выключено — вид оригинального клиента. " .. "Почти ничего не стоит.", + -- MONKEY (wind) + FOLIAGE_WIND = + "Трава гнётся двумя бегущими волнами ветра и расступается вокруг персонажей. " + .. "Трава + деревья также добавляет мягкое качание листвы деревьев и кустов.\n\n" + .. "Выключено не смещает вершины и восстанавливает исходный вид. Тени деревьев остаются неподвижными.", }, }, } @@ -816,6 +834,8 @@ "RowNightDarkness", "RowInteriorDarkness", -- MONKEY (p0 skyDither) "RowSkyDither", + -- MONKEY (wind): appended for conflict-free lane merges. + "RowFoliageWind", }, -- Player Guild Names is a child of Player Names, as in 1.12 (l.702-708). Nameplates = { @@ -2854,6 +2874,23 @@ "BENILLA_TOOLTIP_SKY_DITHER") + + + + + + + + OptionsRow_OnLoad(self, "foliageWind", + BENILLA_ADVGFX.foliageWind, + "BENILLA_TOOLTIP_FOLIAGE_WIND") + OptionsDropdownRow_Setup(self, { + { text = BENILLA_ADVGFX.qOff, value = "0" }, + { text = BENILLA_ADVGFX.windGrass, value = "1" }, + { text = BENILLA_ADVGFX.windTrees, value = "2" }, + }) + +