From 86e5b9fffbefcd45d9d991c7d423ebbe1b5a4c48 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Thu, 18 Dec 2025 22:30:44 -0800 Subject: [PATCH] compute strength from quality at display time blueprint looks up skill and calculates strength validation checks quality range instead of strength value --- .../api/v1/collection_artifact_blueprint.rb | 28 ++++++++++++++++--- .../concerns/artifact_skill_validations.rb | 12 ++++---- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/app/blueprints/api/v1/collection_artifact_blueprint.rb b/app/blueprints/api/v1/collection_artifact_blueprint.rb index ba9caa1..2ffd632 100644 --- a/app/blueprints/api/v1/collection_artifact_blueprint.rb +++ b/app/blueprints/api/v1/collection_artifact_blueprint.rb @@ -18,13 +18,33 @@ module Api end field :skills do |obj| - [obj.skill1, obj.skill2, obj.skill3, obj.skill4].map do |skill| + [ + [obj.skill1, 1], + [obj.skill2, 2], + [obj.skill3, 3], + [obj.skill4, 4] + ].map do |skill, slot| next nil if skill.blank? || skill == {} + # Determine skill group based on slot + group = case slot + when 1, 2 then 1 # Group I + when 3 then 2 # Group II + when 4 then 3 # Group III + end + + # Look up skill and compute strength from quality + modifier = skill['modifier'] + quality = skill['quality'] || 1 + level = skill['level'] || 1 + + artifact_skill = ArtifactSkill.find_skill(group, modifier) + strength = artifact_skill&.strength_for_quality(quality) + { - modifier: skill['modifier'], - strength: skill['strength'], - level: skill['level'] + modifier: modifier, + strength: strength, + level: level } end end diff --git a/app/models/concerns/artifact_skill_validations.rb b/app/models/concerns/artifact_skill_validations.rb index a6e12c5..4173f61 100644 --- a/app/models/concerns/artifact_skill_validations.rb +++ b/app/models/concerns/artifact_skill_validations.rb @@ -24,11 +24,11 @@ module ArtifactSkillValidations return if quirk_artifact? modifier = skill_data['modifier'] - strength = skill_data['strength'] + quality = skill_data['quality'] skill_level = skill_data['level'] - unless modifier && strength && skill_level - errors.add(slot_name, 'must have modifier, strength, and level') + unless modifier && quality && skill_level + errors.add(slot_name, 'must have modifier, quality, and level') return end @@ -43,9 +43,9 @@ module ArtifactSkillValidations return end - # Validate strength is a valid base value for this skill - unless skill_def.valid_strength?(strength) - errors.add(slot_name, "has invalid base strength #{strength}") + # Validate quality is in valid range (1-5) + unless (1..5).cover?(quality) + errors.add(slot_name, "has invalid quality #{quality}") end end