Add logic for transcending weapons
This commit is contained in:
parent
86ea169319
commit
8f28e34217
1 changed files with 36 additions and 4 deletions
|
|
@ -73,18 +73,50 @@ module Api
|
||||||
|
|
||||||
def update_uncap_level
|
def update_uncap_level
|
||||||
weapon = GridWeapon.find(weapon_params[:id])
|
weapon = GridWeapon.find(weapon_params[:id])
|
||||||
|
object = weapon.weapon
|
||||||
|
max_uncap_level = max_uncap_level(object)
|
||||||
|
|
||||||
render_unauthorized_response if current_user && (weapon.party.user != current_user)
|
render_unauthorized_response if current_user && (weapon.party.user != current_user)
|
||||||
|
|
||||||
weapon.uncap_level = weapon_params[:uncap_level]
|
greater_than_max_uncap = weapon_params[:uncap_level].to_i > max_uncap_level
|
||||||
return unless weapon.save!
|
can_be_transcended = object.transcendence && weapon_params[:transcendence_step] && weapon_params[:transcendence_step]&.to_i&.positive?
|
||||||
|
|
||||||
render json: GridWeaponBlueprint.render(weapon, view: :nested, root: :grid_weapon),
|
uncap_level = if greater_than_max_uncap || can_be_transcended
|
||||||
status: :created
|
max_uncap_level
|
||||||
|
else
|
||||||
|
weapon_params[:uncap_level]
|
||||||
|
end
|
||||||
|
|
||||||
|
transcendence_step = if object.transcendence && weapon_params[:transcendence_step]
|
||||||
|
weapon_params[:transcendence_step]
|
||||||
|
else
|
||||||
|
0
|
||||||
|
end
|
||||||
|
|
||||||
|
weapon.update!(
|
||||||
|
uncap_level: uncap_level,
|
||||||
|
transcendence_step: transcendence_step
|
||||||
|
)
|
||||||
|
|
||||||
|
return unless weapon.persisted?
|
||||||
|
|
||||||
|
render json: GridWeaponBlueprint.render(weapon, view: :nested, root: :grid_weapon)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def max_uncap_level(weapon)
|
||||||
|
if weapon.flb && !weapon.ulb && !weapon.transcendence
|
||||||
|
4
|
||||||
|
elsif weapon.ulb && !weapon.transcendence
|
||||||
|
5
|
||||||
|
elsif weapon.transcendence
|
||||||
|
6
|
||||||
|
else
|
||||||
|
3
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def check_weapon_compatibility
|
def check_weapon_compatibility
|
||||||
return if compatible_with_position?(incoming_weapon, weapon_params[:position])
|
return if compatible_with_position?(incoming_weapon, weapon_params[:position])
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue