From 8d235bbc5131c8818ff630ec7be04513b13facd0 Mon Sep 17 00:00:00 2001 From: Alec Date: Fri, 11 Apr 2025 16:18:48 -0700 Subject: [PATCH] Add setting to disable damage flash Adds a new boolean setting for the client under Accessibility in a new section called Damage See https://github.com/luanti-org/luanti/issues/15805 for more information --- builtin/common/settings/dlg_settings.lua | 2 ++ builtin/settingtypes.txt | 5 +++++ src/client/game.cpp | 6 ++++-- src/defaultsettings.cpp | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/builtin/common/settings/dlg_settings.lua b/builtin/common/settings/dlg_settings.lua index b43d9ebdc..76d4dda49 100644 --- a/builtin/common/settings/dlg_settings.lua +++ b/builtin/common/settings/dlg_settings.lua @@ -161,6 +161,8 @@ local function load() { heading = fgettext_ne("Movement") }, "arm_inertia", "view_bobbing_amount", + { heading = fgettext_ne("Damage") }, + "hurt_flash_enabled" }, }) diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 825a85b97..d46e1f7b6 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -332,6 +332,11 @@ arm_inertia (Arm inertia) bool true # For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double. view_bobbing_amount (View bobbing factor) float 1.0 0.0 7.9 +[**Damage] + +# Flashing of the screen when taking damage. +hurt_flash_enabled (Damage flash) bool true + [**Camera] # Field of view in degrees. diff --git a/src/client/game.cpp b/src/client/game.cpp index ee6cd0af4..7efad0cce 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -2616,8 +2616,10 @@ void Game::handleClientEvent_PlayerDamage(ClientEvent *event, CameraOrientation player->getCAO()->getProperties().hp_max : PLAYER_MAX_HP_DEFAULT; f32 damage_ratio = event->player_damage.amount / hp_max; - runData.damage_flash += 95.0f + 64.f * damage_ratio; - runData.damage_flash = MYMIN(runData.damage_flash, 127.0f); + if (g_settings->getBool("hurt_flash_enabled")) { + runData.damage_flash += 95.0f + 64.f * damage_ratio; + runData.damage_flash = MYMIN(runData.damage_flash, 127.0f); + } player->hurt_tilt_timer = 1.5f; player->hurt_tilt_strength = diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 205fe5934..6d10bbac4 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -306,6 +306,7 @@ void set_default_settings() settings->setDefault("show_entity_selectionbox", "false"); settings->setDefault("ambient_occlusion_gamma", "1.8"); settings->setDefault("arm_inertia", "true"); + settings->setDefault("hurt_flash_enabled", "true"); settings->setDefault("show_nametag_backgrounds", "true"); settings->setDefault("show_block_bounds_radius_near", "4"); settings->setDefault("transparency_sorting_group_by_buffers", "true");