Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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'

Expand Down Expand Up @@ -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)
Expand All @@ -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 = {
Expand Down Expand Up @@ -357,3 +377,6 @@ mod.dot_toggle = function()
end

mod.set_hit_marker_duration()

func(self, unit, effect_template, biggest_hit, parameters, ...)
end)
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -262,101 +266,101 @@ 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"),
["range"] = {0, 255},
["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,
},
},
},
Expand All @@ -373,23 +377,23 @@ 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,
["widget_type"] = "numeric",
["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,
["widget_type"] = "numeric",
["text"] = mod:localize("blue"),
["tooltip"] = mod:localize("custom_blue_tooltip"),
["range"] = {0, 255},
["default_value"] = 53,
["default_value"] = 0,
},
},
},
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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,
},
{
Expand All @@ -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,
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down