From 02ca7905d32411b9f124cb0a338f80dbb84d300b Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Wed, 31 Dec 2025 19:00:17 -0800 Subject: [PATCH] add game_skill_ids for befoulment modifiers --- ...251230000001_seed_weapon_stat_modifiers.rb | 15 ++++---- ...230000003_add_befoulment_game_skill_ids.rb | 38 +++++++++++++++++++ db/seeds/weapon_stat_modifiers.rb | 16 ++++---- 3 files changed, 54 insertions(+), 15 deletions(-) create mode 100644 db/data/20251230000003_add_befoulment_game_skill_ids.rb diff --git a/db/data/20251230000001_seed_weapon_stat_modifiers.rb b/db/data/20251230000001_seed_weapon_stat_modifiers.rb index 507b023..b7887be 100644 --- a/db/data/20251230000001_seed_weapon_stat_modifiers.rb +++ b/db/data/20251230000001_seed_weapon_stat_modifiers.rb @@ -32,14 +32,15 @@ class SeedWeaponStatModifiers < ActiveRecord::Migration[8.0] ] befoulments = [ - { slug: 'befoul_atk_down', name_en: 'ATK Down', name_jp: '攻撃力DOWN', category: 'befoulment', stat: 'atk', polarity: -1, suffix: '%', base_min: -12, base_max: -6, game_skill_id: nil }, + # Befoulments - game_skill_ids from game data (2873-2881, 2876 doesn't exist) + { slug: 'befoul_atk_down', name_en: 'ATK Down', name_jp: '攻撃力DOWN', category: 'befoulment', stat: 'atk', polarity: -1, suffix: '%', base_min: -12, base_max: -6, game_skill_id: 2873 }, + { slug: 'befoul_ability_dmg_down', name_en: 'Ability DMG Down', name_jp: 'アビリティダメージDOWN', category: 'befoulment', stat: 'ability_dmg', polarity: -1, suffix: '%', base_min: -50, base_max: -50, game_skill_id: 2874 }, + { slug: 'befoul_ca_dmg_down', name_en: 'CA DMG Down', name_jp: '奥義ダメージDOWN', category: 'befoulment', stat: 'ca_dmg', polarity: -1, suffix: '%', base_min: -38, base_max: -26, game_skill_id: 2875 }, + { slug: 'befoul_da_ta_down', name_en: 'DA/TA Down', name_jp: '連撃率DOWN', category: 'befoulment', stat: 'da_ta', polarity: -1, suffix: '%', base_min: -22, base_max: -19, game_skill_id: 2877 }, + { slug: 'befoul_debuff_down', name_en: 'Debuff Success Down', name_jp: '弱体成功率DOWN', category: 'befoulment', stat: 'debuff_success', polarity: -1, suffix: '%', base_min: -16, base_max: -6, game_skill_id: 2878 }, + { slug: 'befoul_hp_down', name_en: 'Max HP Down', name_jp: '最大HP減少', category: 'befoulment', stat: 'hp', polarity: -1, suffix: '%', base_min: -50, base_max: -26, game_skill_id: 2879 }, { slug: 'befoul_def_down', name_en: 'DEF Down', name_jp: '防御力DOWN', category: 'befoulment', stat: 'def', polarity: -1, suffix: '%', base_min: -25, base_max: -21, game_skill_id: 2880 }, - { slug: 'befoul_da_ta_down', name_en: 'DA/TA Down', name_jp: '連撃率DOWN', category: 'befoulment', stat: 'da_ta', polarity: -1, suffix: '%', base_min: -22, base_max: -19, game_skill_id: nil }, - { slug: 'befoul_ca_dmg_down', name_en: 'CA DMG Down', name_jp: '奥義ダメージDOWN', category: 'befoulment', stat: 'ca_dmg', polarity: -1, suffix: '%', base_min: -38, base_max: -26, game_skill_id: nil }, - { slug: 'befoul_dot', name_en: 'Damage Over Time', name_jp: '毎ターンダメージ', category: 'befoulment', stat: 'dot', polarity: -1, suffix: '%', base_min: 6, base_max: 16, game_skill_id: nil }, - { slug: 'befoul_hp_down', name_en: 'Max HP Down', name_jp: '最大HP減少', category: 'befoulment', stat: 'hp', polarity: -1, suffix: '%', base_min: -50, base_max: -26, game_skill_id: nil }, - { slug: 'befoul_debuff_down', name_en: 'Debuff Success Down', name_jp: '弱体成功率DOWN', category: 'befoulment', stat: 'debuff_success', polarity: -1, suffix: '%', base_min: -16, base_max: -6, game_skill_id: nil }, - { slug: 'befoul_ability_dmg_down', name_en: 'Ability DMG Down', name_jp: 'アビリティダメージDOWN', category: 'befoulment', stat: 'ability_dmg', polarity: -1, suffix: '%', base_min: -50, base_max: -50, game_skill_id: nil } + { slug: 'befoul_dot', name_en: 'Damage Over Time', name_jp: '毎ターンダメージ', category: 'befoulment', stat: 'dot', polarity: -1, suffix: '%', base_min: 6, base_max: 16, game_skill_id: 2881 } ] now = Time.current diff --git a/db/data/20251230000003_add_befoulment_game_skill_ids.rb b/db/data/20251230000003_add_befoulment_game_skill_ids.rb new file mode 100644 index 0000000..b8469c0 --- /dev/null +++ b/db/data/20251230000003_add_befoulment_game_skill_ids.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class AddBefoulmentGameSkillIds < ActiveRecord::Migration[8.0] + # Befoulment game_skill_id mapping from game data: + # 2873: ex_skill_atk_down | ATK Lowered + # 2874: ex_skill_ab_atk_down | Skill DMG Lowered + # 2875: ex_skill_sp_atk_down | C.A. DMG Lowered + # 2876: (doesn't exist) + # 2877: ex_skill_ta_down | Multiattack Rate Lowered + # 2878: ex_skill_ailment_enhance_down | Debuff Success Rate Lowered + # 2879: ex_skill_hp_down | HP Cut + # 2880: ex_skill_def_down | Def Lowered (already mapped) + # 2881: ex_skill_turn_damage | Turn DMG + + BEFOULMENT_GAME_SKILL_IDS = { + 'befoul_atk_down' => 2873, + 'befoul_ability_dmg_down' => 2874, + 'befoul_ca_dmg_down' => 2875, + 'befoul_da_ta_down' => 2877, + 'befoul_debuff_down' => 2878, + 'befoul_hp_down' => 2879, + 'befoul_def_down' => 2880, # Already set, but include for completeness + 'befoul_dot' => 2881 + }.freeze + + def up + BEFOULMENT_GAME_SKILL_IDS.each do |slug, game_skill_id| + WeaponStatModifier.where(slug: slug).update_all(game_skill_id: game_skill_id) + end + end + + def down + # Clear game_skill_ids for befoulments (except def_down which was already set) + BEFOULMENT_GAME_SKILL_IDS.except('befoul_def_down').each_key do |slug| + WeaponStatModifier.where(slug: slug).update_all(game_skill_id: nil) + end + end +end diff --git a/db/seeds/weapon_stat_modifiers.rb b/db/seeds/weapon_stat_modifiers.rb index ad4e0a1..5667da6 100644 --- a/db/seeds/weapon_stat_modifiers.rb +++ b/db/seeds/weapon_stat_modifiers.rb @@ -36,15 +36,15 @@ ax_skills = [ ] befoulments = [ - # Befoulments - game_skill_ids will be populated as we discover them - { slug: 'befoul_atk_down', name_en: 'ATK Down', name_jp: '攻撃力DOWN', category: 'befoulment', stat: 'atk', polarity: -1, suffix: '%', base_min: -12, base_max: -6, game_skill_id: nil }, + # Befoulments - game_skill_ids from game data (2873-2881, 2876 doesn't exist) + { slug: 'befoul_atk_down', name_en: 'ATK Down', name_jp: '攻撃力DOWN', category: 'befoulment', stat: 'atk', polarity: -1, suffix: '%', base_min: -12, base_max: -6, game_skill_id: 2873 }, + { slug: 'befoul_ability_dmg_down', name_en: 'Ability DMG Down', name_jp: 'アビリティダメージDOWN', category: 'befoulment', stat: 'ability_dmg', polarity: -1, suffix: '%', base_min: -50, base_max: -50, game_skill_id: 2874 }, + { slug: 'befoul_ca_dmg_down', name_en: 'CA DMG Down', name_jp: '奥義ダメージDOWN', category: 'befoulment', stat: 'ca_dmg', polarity: -1, suffix: '%', base_min: -38, base_max: -26, game_skill_id: 2875 }, + { slug: 'befoul_da_ta_down', name_en: 'DA/TA Down', name_jp: '連撃率DOWN', category: 'befoulment', stat: 'da_ta', polarity: -1, suffix: '%', base_min: -22, base_max: -19, game_skill_id: 2877 }, + { slug: 'befoul_debuff_down', name_en: 'Debuff Success Down', name_jp: '弱体成功率DOWN', category: 'befoulment', stat: 'debuff_success', polarity: -1, suffix: '%', base_min: -16, base_max: -6, game_skill_id: 2878 }, + { slug: 'befoul_hp_down', name_en: 'Max HP Down', name_jp: '最大HP減少', category: 'befoulment', stat: 'hp', polarity: -1, suffix: '%', base_min: -50, base_max: -26, game_skill_id: 2879 }, { slug: 'befoul_def_down', name_en: 'DEF Down', name_jp: '防御力DOWN', category: 'befoulment', stat: 'def', polarity: -1, suffix: '%', base_min: -25, base_max: -21, game_skill_id: 2880 }, - { slug: 'befoul_da_ta_down', name_en: 'DA/TA Down', name_jp: '連撃率DOWN', category: 'befoulment', stat: 'da_ta', polarity: -1, suffix: '%', base_min: -22, base_max: -19, game_skill_id: nil }, - { slug: 'befoul_ca_dmg_down', name_en: 'CA DMG Down', name_jp: '奥義ダメージDOWN', category: 'befoulment', stat: 'ca_dmg', polarity: -1, suffix: '%', base_min: -38, base_max: -26, game_skill_id: nil }, - { slug: 'befoul_dot', name_en: 'Damage Over Time', name_jp: '毎ターンダメージ', category: 'befoulment', stat: 'dot', polarity: -1, suffix: '%', base_min: 6, base_max: 16, game_skill_id: nil }, - { slug: 'befoul_hp_down', name_en: 'Max HP Down', name_jp: '最大HP減少', category: 'befoulment', stat: 'hp', polarity: -1, suffix: '%', base_min: -50, base_max: -26, game_skill_id: nil }, - { slug: 'befoul_debuff_down', name_en: 'Debuff Success Down', name_jp: '弱体成功率DOWN', category: 'befoulment', stat: 'debuff_success', polarity: -1, suffix: '%', base_min: -16, base_max: -6, game_skill_id: nil }, - { slug: 'befoul_ability_dmg_down', name_en: 'Ability DMG Down', name_jp: 'アビリティダメージDOWN', category: 'befoulment', stat: 'ability_dmg', polarity: -1, suffix: '%', base_min: -50, base_max: -50, game_skill_id: nil } + { slug: 'befoul_dot', name_en: 'Damage Over Time', name_jp: '毎ターンダメージ', category: 'befoulment', stat: 'dot', polarity: -1, suffix: '%', base_min: 6, base_max: 16, game_skill_id: 2881 } ] (ax_skills + befoulments).each do |attrs|