* add weapon_stat_modifiers table for ax skills and befoulments * add fk columns for ax modifiers and befoulments, replace has_ax_skills with augment_type * update models for weapon_stat_modifier fks and befoulments * update blueprints for weapon_stat_modifier serialization * update import service for weapon_stat_modifier fks and befoulments * add weapon_stat_modifiers controller and update params for fks * update tests and factories for weapon_stat_modifier fks * fix remaining has_ax_skills and ax_modifier references * add ax_modifier and befoulment_modifier to eager loading * fix ax modifier column naming and migration approach * add game_skill_ids for befoulment modifiers
126 lines
No EOL
4.4 KiB
Ruby
126 lines
No EOL
4.4 KiB
Ruby
FactoryBot.define do
|
|
factory :collection_weapon do
|
|
association :user
|
|
association :weapon
|
|
uncap_level { 3 }
|
|
transcendence_step { 0 }
|
|
awakening { nil }
|
|
awakening_level { 1 }
|
|
element { nil } # Only used for element-changeable weapons
|
|
|
|
# AX skills (FK to weapon_stat_modifiers)
|
|
ax_modifier1 { nil }
|
|
ax_strength1 { nil }
|
|
ax_modifier2 { nil }
|
|
ax_strength2 { nil }
|
|
|
|
# Befoulment (FK to weapon_stat_modifiers)
|
|
befoulment_modifier { nil }
|
|
befoulment_strength { nil }
|
|
exorcism_level { 0 }
|
|
|
|
# Weapon keys
|
|
weapon_key1 { nil }
|
|
weapon_key2 { nil }
|
|
weapon_key3 { nil }
|
|
weapon_key4 { nil }
|
|
|
|
# Trait for max uncap
|
|
trait :max_uncap do
|
|
uncap_level { 5 }
|
|
end
|
|
|
|
# Trait for transcended weapon
|
|
trait :transcended do
|
|
uncap_level { 5 }
|
|
transcendence_step { 5 }
|
|
after(:build) do |collection_weapon|
|
|
collection_weapon.weapon = FactoryBot.create(:weapon, :transcendable)
|
|
end
|
|
end
|
|
|
|
# Trait for max transcendence
|
|
trait :max_transcended do
|
|
uncap_level { 5 }
|
|
transcendence_step { 10 }
|
|
after(:build) do |collection_weapon|
|
|
collection_weapon.weapon = FactoryBot.create(:weapon, :transcendable)
|
|
end
|
|
end
|
|
|
|
# Trait for weapon with awakening
|
|
trait :with_awakening do
|
|
after(:build) do |collection_weapon|
|
|
collection_weapon.awakening = Awakening.where(object_type: 'Weapon').first ||
|
|
FactoryBot.create(:awakening, object_type: 'Weapon')
|
|
collection_weapon.awakening_level = 5
|
|
end
|
|
end
|
|
|
|
# Trait for weapon with keys
|
|
trait :with_keys do
|
|
after(:build) do |collection_weapon|
|
|
# Use an Opus weapon since it supports keys
|
|
collection_weapon.weapon = FactoryBot.create(:weapon, :opus)
|
|
# Create weapon keys that are compatible with Opus weapons
|
|
collection_weapon.weapon_key1 = FactoryBot.create(:weapon_key, :opus_key)
|
|
collection_weapon.weapon_key2 = FactoryBot.create(:weapon_key, :opus_key)
|
|
collection_weapon.weapon_key3 = FactoryBot.create(:weapon_key, :opus_key)
|
|
end
|
|
end
|
|
|
|
# Trait for weapon with all 4 keys (Opus/Draconics)
|
|
trait :with_four_keys do
|
|
with_keys
|
|
after(:build) do |collection_weapon|
|
|
# Opus weapon is already set by :with_keys trait
|
|
collection_weapon.weapon_key4 = FactoryBot.create(:weapon_key, :opus_key)
|
|
end
|
|
end
|
|
|
|
# Trait for AX weapon with skills
|
|
trait :with_ax do
|
|
ax_strength1 { 3.5 }
|
|
ax_strength2 { 10.0 }
|
|
after(:build) do |collection_weapon|
|
|
collection_weapon.ax_modifier1 = WeaponStatModifier.find_by(slug: 'ax_atk') ||
|
|
FactoryBot.create(:weapon_stat_modifier, :ax_atk)
|
|
collection_weapon.ax_modifier2 = WeaponStatModifier.find_by(slug: 'ax_hp') ||
|
|
FactoryBot.create(:weapon_stat_modifier, :ax_hp)
|
|
end
|
|
end
|
|
|
|
# Trait for Odiant weapon with befoulment
|
|
trait :with_befoulment do
|
|
befoulment_strength { 23.0 }
|
|
exorcism_level { 2 }
|
|
after(:build) do |collection_weapon|
|
|
collection_weapon.befoulment_modifier = WeaponStatModifier.find_by(slug: 'befoul_def_down') ||
|
|
FactoryBot.create(:weapon_stat_modifier, :befoul_def_down)
|
|
end
|
|
end
|
|
|
|
# Trait for element-changed weapon (Revans weapons)
|
|
trait :element_changed do
|
|
element { rand(0..5) } # Random element 0-5
|
|
end
|
|
|
|
# Trait for fully upgraded weapon
|
|
trait :maxed do
|
|
uncap_level { 5 }
|
|
transcendence_step { 10 }
|
|
after(:build) do |collection_weapon|
|
|
# Create a transcendable Opus weapon for full key support
|
|
opus_series = WeaponSeries.find_by(slug: 'dark-opus') || FactoryBot.create(:weapon_series, :opus)
|
|
collection_weapon.weapon = FactoryBot.create(:weapon, :transcendable, weapon_series: opus_series)
|
|
collection_weapon.awakening = Awakening.where(object_type: 'Weapon').first ||
|
|
FactoryBot.create(:awakening, object_type: 'Weapon')
|
|
collection_weapon.awakening_level = 10
|
|
# Create keys compatible with Opus weapons
|
|
collection_weapon.weapon_key1 = FactoryBot.create(:weapon_key, :opus_key)
|
|
collection_weapon.weapon_key2 = FactoryBot.create(:weapon_key, :opus_key)
|
|
collection_weapon.weapon_key3 = FactoryBot.create(:weapon_key, :opus_key)
|
|
end
|
|
end
|
|
end
|
|
end |