hensei-api/spec/factories/collection_weapons.rb

100 lines
No EOL
3 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
ax_modifier1 { nil }
ax_strength1 { nil }
ax_modifier2 { nil }
ax_strength2 { nil }
# 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|
# Create weapon keys that are compatible with any weapon
collection_weapon.weapon_key1 = FactoryBot.create(:weapon_key, :universal_key)
collection_weapon.weapon_key2 = FactoryBot.create(:weapon_key, :universal_key)
collection_weapon.weapon_key3 = FactoryBot.create(:weapon_key, :universal_key)
end
end
# Trait for weapon with all 4 keys (Opus/Draconics)
trait :with_four_keys do
with_keys
after(:build) do |collection_weapon|
collection_weapon.weapon = FactoryBot.create(:weapon, :opus) # Opus weapon supports 4 keys
collection_weapon.weapon_key4 = FactoryBot.create(:weapon_key, :universal_key)
end
end
# Trait for AX weapon with skills
trait :with_ax do
ax_modifier1 { 1 } # Attack modifier
ax_strength1 { 3.5 }
ax_modifier2 { 2 } # HP modifier
ax_strength2 { 10.0 }
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 }
with_keys
after(:build) do |collection_weapon|
collection_weapon.weapon = FactoryBot.create(:weapon, :transcendable)
collection_weapon.awakening = Awakening.where(object_type: 'Weapon').first ||
FactoryBot.create(:awakening, object_type: 'Weapon')
collection_weapon.awakening_level = 10
end
end
end
end