diff --git a/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization.lua b/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization.lua index 622ffe8..24e285d 100644 --- a/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization.lua +++ b/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization.lua @@ -1,5 +1,9 @@ local mod = get_mod("CrosshairCustomization") +mod:hook(GenericHitReactionExtension, "_execute_effect", function(func, self, unit, effect_template, biggest_hit, parameters, ...) + local damage_type = biggest_hit[DamageDataIndex.DAMAGE_TYPE] + local mod = get_mod("CrosshairCustomization") + local pl = require'pl.import_into'() local tablex = require'pl.tablex' @@ -94,22 +98,6 @@ mod:hook_safe(CrosshairUI, "configure_hit_marker_color_and_size", function (self local hm_rot_texture = hit_marker.style.rotating_texture local hm_color = hm_rot_texture.color - if not is_armored and not friendly_fire and not is_critical then - if mod:get(mod.SETTING_NAMES.HIT_MARKERS_COLOR_GROUP) then - hm_color[2] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_RED) - hm_color[3] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_GREEN) - hm_color[4] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_BLUE) - else - local color = mod.get_color() - hm_color[2] = color[2] - hm_color[3] = color[3] - hm_color[4] = color[4] - end - - hm_color[1] = 0 - end - - -- change the headshot hit marker color if is_armored then if mod:get(mod.SETTING_NAMES.HIT_MARKERS_ARMORED_COLOR_GROUP) then hm_color[2] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_ARMORED_RED) @@ -122,24 +110,56 @@ mod:hook_safe(CrosshairUI, "configure_hit_marker_color_and_size", function (self hm_color[3] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_FF_GREEN) hm_color[4] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_FF_BLUE) end - elseif is_critical - and hit_marker_data._mod_is_crit_proc + end + + local color_set = false + + if is_critical and not friendly_fire and hit_marker_data._mod_is_crit_proc and not (damage_type == "arrow_poison_dot" or damage_type == "bleed" or damage_type == "burninating") and mod:get(mod.SETTING_NAMES.HIT_MARKERS_HS_AND_CRIT_COLOR_GROUP) then hm_color[2] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_HS_AND_CRIT_RED) hm_color[3] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_HS_AND_CRIT_GREEN) hm_color[4] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_HS_AND_CRIT_BLUE) - elseif is_critical + color_set = true + + elseif is_critical and not friendly_fire and not (damage_type == "arrow_poison_dot" or damage_type == "bleed" or damage_type == "burninating") and mod:get(mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_COLOR_GROUP) then hm_color[2] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_RED) hm_color[3] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_GREEN) hm_color[4] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_BLUE) - elseif hit_marker_data._mod_is_crit_proc + color_set = true + + elseif hit_marker_data._mod_is_crit_proc and not friendly_fire and not (damage_type == "arrow_poison_dot" or damage_type == "bleed" or damage_type == "burninating") and mod:get(mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_COLOR_GROUP) then hm_color[2] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_RED) hm_color[3] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_GREEN) hm_color[4] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_BLUE) + color_set = true + end + + if not color_set and not friendly_fire and (damage_type == "arrow_poison_dot" or damage_type == "bleed" or damage_type == "burninating") then + if mod:get(mod.SETTING_NAMES.HIT_MARKERS_DOT_COLOR_GROUP) then + hm_color[2] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_DOT_RED) + hm_color[3] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_DOT_GREEN) + hm_color[4] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_DOT_BLUE) + else + local color = mod.get_color() + hm_color[2] = color[2] + hm_color[3] = color[3] + hm_color[4] = color[4] + end + + hm_color[1] = 0 + end + + if not color_set and not friendly_fire and added_dot then + if mod:get(mod.SETTING_NAMES.HIT_MARKERS_COLOR_GROUP) then + hm_color[2] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_RED) + hm_color[3] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_GREEN) + hm_color[4] = mod:get(mod.SETTING_NAMES.HIT_MARKERS_BLUE) + end end + -- change hit marker size local hit_marker_width = mod:get(mod.SETTING_NAMES.HIT_MARKERS_SIZE) hm_rot_texture.size = { @@ -357,3 +377,6 @@ mod.dot_toggle = function() end mod.set_hit_marker_duration() + + func(self, unit, effect_template, biggest_hit, parameters, ...) +end) diff --git a/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization_data.lua b/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization_data.lua index 05803f6..93e0410 100644 --- a/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization_data.lua +++ b/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization_data.lua @@ -44,6 +44,10 @@ mod.SETTING_NAMES = { HIT_MARKERS_ALPHA = "HIT_MARKERS_ALPHA", HIT_MARKERS_GROUP = "HIT_MARKERS_GROUP", HIT_MARKERS_DURATION = "HIT_MARKERS_DURATION", + HIT_MARKERS_DOT_COLOR_GROUP = "HIT_MARKERS_DOT_COLOR_GROUP", + HIT_MARKERS_DOT_RED = "HIT_MARKERS_DOT_RED", + HIT_MARKERS_DOT_GREEN = "HIT_MARKERS_DOT_GREEN", + HIT_MARKERS_DOT_BLUE = "HIT_MARKERS_DOT_BLUE", HIT_MARKERS_CRITICAL_COLOR_GROUP = "HIT_MARKERS_CRITICAL_COLOR_GROUP", HIT_MARKERS_CRITICAL_RED = "HIT_MARKERS_CRITICAL_RED", HIT_MARKERS_CRITICAL_GREEN = "HIT_MARKERS_CRITICAL_GREEN", @@ -262,47 +266,47 @@ mod_data.options_widgets = { }, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_COLOR_GROUP, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_DOT_COLOR_GROUP, ["widget_type"] = "checkbox", - ["text"] = mod:localize("HIT_MARKERS_CRITICAL_COLOR_GROUP"), - ["tooltip"] = mod:localize("HIT_MARKERS_CRITICAL_COLOR_GROUP_T"), + ["text"] = mod:localize("HIT_MARKERS_DOT_COLOR_GROUP"), + ["tooltip"] = mod:localize("HIT_MARKERS_DOT_COLOR_GROUP_T"), ["default_value"] = false, ["sub_widgets"] = { { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_RED, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_DOT_RED, ["widget_type"] = "numeric", ["text"] = mod:localize("red"), ["tooltip"] = mod:localize("custom_red_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 255, + ["default_value"] = 170, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_GREEN, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_DOT_GREEN, ["widget_type"] = "numeric", ["text"] = mod:localize("green"), ["tooltip"] = mod:localize("custom_green_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 161, + ["default_value"] = 25, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_BLUE, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_DOT_BLUE, ["widget_type"] = "numeric", ["text"] = mod:localize("blue"), ["tooltip"] = mod:localize("custom_blue_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 53, + ["default_value"] = 255, }, }, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_COLOR_GROUP, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_COLOR_GROUP, ["widget_type"] = "checkbox", - ["text"] = mod:localize("HIT_MARKERS_CRITICAL_PROC_COLOR_GROUP"), - ["tooltip"] = mod:localize("HIT_MARKERS_CRITICAL_PROC_COLOR_GROUP_T"), + ["text"] = mod:localize("HIT_MARKERS_CRITICAL_COLOR_GROUP"), + ["tooltip"] = mod:localize("HIT_MARKERS_CRITICAL_COLOR_GROUP_T"), ["default_value"] = false, ["sub_widgets"] = { { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_RED, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_RED, ["widget_type"] = "numeric", ["text"] = mod:localize("red"), ["tooltip"] = mod:localize("custom_red_tooltip"), @@ -310,53 +314,53 @@ mod_data.options_widgets = { ["default_value"] = 255, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_GREEN, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_GREEN, ["widget_type"] = "numeric", ["text"] = mod:localize("green"), ["tooltip"] = mod:localize("custom_green_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 255, + ["default_value"] = 161, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_BLUE, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_BLUE, ["widget_type"] = "numeric", ["text"] = mod:localize("blue"), ["tooltip"] = mod:localize("custom_blue_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 255, + ["default_value"] = 53, }, }, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_FF_COLOR_GROUP, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_COLOR_GROUP, ["widget_type"] = "checkbox", - ["text"] = mod:localize("HIT_MARKERS_FF_COLOR_GROUP"), - ["tooltip"] = mod:localize("HIT_MARKERS_FF_COLOR_GROUP_T"), + ["text"] = mod:localize("HIT_MARKERS_CRITICAL_PROC_COLOR_GROUP"), + ["tooltip"] = mod:localize("HIT_MARKERS_CRITICAL_PROC_COLOR_GROUP_T"), ["default_value"] = false, ["sub_widgets"] = { { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_FF_RED, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_RED, ["widget_type"] = "numeric", ["text"] = mod:localize("red"), ["tooltip"] = mod:localize("custom_red_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 50, + ["default_value"] = 255, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_FF_GREEN, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_GREEN, ["widget_type"] = "numeric", ["text"] = mod:localize("green"), ["tooltip"] = mod:localize("custom_green_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 205, + ["default_value"] = 25, }, { - ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_FF_BLUE, + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_CRITICAL_PROC_BLUE, ["widget_type"] = "numeric", ["text"] = mod:localize("blue"), ["tooltip"] = mod:localize("custom_blue_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 50, + ["default_value"] = 25, }, }, }, @@ -373,7 +377,7 @@ mod_data.options_widgets = { ["text"] = mod:localize("red"), ["tooltip"] = mod:localize("custom_red_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 255, + ["default_value"] = 0, }, { ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_HS_AND_CRIT_GREEN, @@ -381,7 +385,7 @@ mod_data.options_widgets = { ["text"] = mod:localize("green"), ["tooltip"] = mod:localize("custom_green_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 161, + ["default_value"] = 0, }, { ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_HS_AND_CRIT_BLUE, @@ -389,7 +393,7 @@ mod_data.options_widgets = { ["text"] = mod:localize("blue"), ["tooltip"] = mod:localize("custom_blue_tooltip"), ["range"] = {0, 255}, - ["default_value"] = 53, + ["default_value"] = 0, }, }, }, @@ -426,6 +430,39 @@ mod_data.options_widgets = { }, }, }, + { + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_FF_COLOR_GROUP, + ["widget_type"] = "checkbox", + ["text"] = mod:localize("HIT_MARKERS_FF_COLOR_GROUP"), + ["tooltip"] = mod:localize("HIT_MARKERS_FF_COLOR_GROUP_T"), + ["default_value"] = false, + ["sub_widgets"] = { + { + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_FF_RED, + ["widget_type"] = "numeric", + ["text"] = mod:localize("red"), + ["tooltip"] = mod:localize("custom_red_tooltip"), + ["range"] = {0, 255}, + ["default_value"] = 50, + }, + { + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_FF_GREEN, + ["widget_type"] = "numeric", + ["text"] = mod:localize("green"), + ["tooltip"] = mod:localize("custom_green_tooltip"), + ["range"] = {0, 255}, + ["default_value"] = 205, + }, + { + ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_FF_BLUE, + ["widget_type"] = "numeric", + ["text"] = mod:localize("blue"), + ["tooltip"] = mod:localize("custom_blue_tooltip"), + ["range"] = {0, 255}, + ["default_value"] = 50, + }, + }, + }, { ["setting_name"] = mod.SETTING_NAMES.HIT_MARKERS_SIZE, ["widget_type"] = "numeric", @@ -458,7 +495,7 @@ mod_data.options_widgets = { ["text"] = mod:localize("IGNORE_FF_TRESHOLD"), ["tooltip"] = mod:localize("IGNORE_FF_TRESHOLD_T"), ["range"] = {0, 50}, - ["unit_text"] = " dmg", + ["decimals_number"] = 1, ["default_value"] = 0, }, { @@ -467,7 +504,7 @@ mod_data.options_widgets = { ["text"] = mod:localize("IGNORE_TRESHOLD"), ["tooltip"] = mod:localize("IGNORE_TRESHOLD_T"), ["range"] = {0, 50}, - ["unit_text"] = " dmg", + ["decimals_number"] = 1, ["default_value"] = 0, }, }, diff --git a/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization_localization.lua b/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization_localization.lua index acb82a1..b6994dd 100644 --- a/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization_localization.lua +++ b/CrosshairCustomization/scripts/mods/CrosshairCustomization/CrosshairCustomization_localization.lua @@ -146,7 +146,13 @@ return { HIT_MARKERS_COLOR_GROUP_T = { en = "Set RGB color of the hit markers." }, - HIT_MARKERS_CRITICAL_COLOR_GROUP = { + HIT_MARKERS_DOT_COLOR_GROUP = { + en = "DoT Hit Markers Color" + }, + HIT_MARKERS_DOT_COLOR_GROUP_T = { + en = "Set RGB color of the DoT hit markers." + }, + HIT_MARKERS_CRITICAL_COLOR_GROUP = { en = "Headshot Hit Markers Color" }, HIT_MARKERS_CRITICAL_COLOR_GROUP_T = {