diff --git a/Data.lua b/Data.lua index 38ccf11..6dc2a35 100644 --- a/Data.lua +++ b/Data.lua @@ -12,11 +12,15 @@ AltSystem.Data.SkillLevels = { ["Master"] = 4, } --- The "Inept" entry is always the first (default) skill +-- The "Base roll" entry is always the first (default) skill +local BASE_ROLL_ENTRY = { name = "Base roll", level = "Base", modifier = 0 } + +-- The "Inept" entry is always the second skill local UNSKILLED_ENTRY = { name = "Inept", level = "Inept", modifier = -4 } -- Default/fallback skill list used when no TRP3 profile skills are found local DEFAULT_SKILLS = { + { name = "Base roll", level = "Base", modifier = 0 }, { name = "Inept", level = "Inept", modifier = -4 }, { name = "Novice Skill", level = "Novice", modifier = -2 }, { name = "Adept Skill", level = "Adept", modifier = 0 }, @@ -56,12 +60,13 @@ local function ParseSkillLevel(numericValue) end -- Fetch skills from the current TRP3 profile's personality traits. --- Returns an array of skill entries, always starting with "Inept". +-- Returns an array of skill entries, always starting with "Base roll" and "Inept". -- Falls back to the default list if no profile or no valid skills are found. function AltSystem.Data:RefreshSkills() local skills = {} - -- Always add Inept as the first entry + -- Always add Base roll as the first entry, then Inept + table.insert(skills, { name = BASE_ROLL_ENTRY.name, level = BASE_ROLL_ENTRY.level, modifier = BASE_ROLL_ENTRY.modifier }) table.insert(skills, { name = UNSKILLED_ENTRY.name, level = UNSKILLED_ENTRY.level, modifier = UNSKILLED_ENTRY.modifier }) local foundAny = false @@ -89,7 +94,7 @@ function AltSystem.Data:RefreshSkills() end end - -- If no valid skills were found, use the default fallback list (skip first "Inept" since we already added it) + -- If no valid skills were found, use the default fallback list if not foundAny then skills = {} for _, skill in ipairs(DEFAULT_SKILLS) do diff --git a/Roll.lua b/Roll.lua index 9fb29c5..49e890c 100644 --- a/Roll.lua +++ b/Roll.lua @@ -123,12 +123,16 @@ function AltSystem:CalculateAndDisplayResult(rollType, rollValue) local modifiers = {} + local isBaseRoll = skill and skill.name == "Base roll" + if rollType == "attack" then -- Attack Roll = roll + skill modifier + item modifier total = rollValue + skillMod + itemMod - breakdown = breakdown .. "\nSkill: " .. FormatModifier(skillMod) - table.insert(modifiers, { name = skill and skill.name or "Skill", value = skillMod }) + if not isBaseRoll then + breakdown = breakdown .. "\nSkill: " .. FormatModifier(skillMod) + table.insert(modifiers, { name = skill and skill.name or "Skill", value = skillMod }) + end if itemMod ~= 0 then breakdown = breakdown .. " | Item: " .. FormatModifier(itemMod) table.insert(modifiers, { name = item and item.name or "Item", value = itemMod }) @@ -143,8 +147,10 @@ function AltSystem:CalculateAndDisplayResult(rollType, rollValue) total = rollValue + skillMod + itemMod + defenseMod + shieldMod - breakdown = breakdown .. "\nSkill: " .. FormatModifier(skillMod) - table.insert(modifiers, { name = skill and skill.name or "Skill", value = skillMod }) + if not isBaseRoll then + breakdown = breakdown .. "\nSkill: " .. FormatModifier(skillMod) + table.insert(modifiers, { name = skill and skill.name or "Skill", value = skillMod }) + end if itemMod ~= 0 then breakdown = breakdown .. " | Item: " .. FormatModifier(itemMod) table.insert(modifiers, { name = item and item.name or "Item", value = itemMod }) diff --git a/UI.lua b/UI.lua index 74c45d4..8b7e8d8 100644 --- a/UI.lua +++ b/UI.lua @@ -16,7 +16,7 @@ local function BuildSkillOptions() for _, skill in ipairs(AltSystem.Data.Skills) do local sign = skill.modifier >= 0 and "+" or "" local text - if skill.level == "Inept" then + if skill.level == "Base" or skill.level == "Inept" then text = skill.name .. " (" .. sign .. skill.modifier .. ")" else text = skill.name .. " (" .. skill.level .. " " .. sign .. skill.modifier .. ")"