Disallow adding arbitrary weapons to Extra slots

This commit is contained in:
Justin Edmund 2022-12-25 00:23:27 -08:00
parent ec25230bc5
commit adbb5b6c7d
3 changed files with 32 additions and 0 deletions

View file

@ -20,6 +20,7 @@ module Api
rescue_from Api::V1::FavoriteAlreadyExistsError, with: :render_unprocessable_entity_response
rescue_from Api::V1::NoJobProvidedError, with: :render_unprocessable_entity_response
rescue_from Api::V1::TooManySkillsOfTypeError, with: :render_unprocessable_entity_response
rescue_from Api::V1::IncompatibleWeaponForPositionError, with: :render_unprocessable_entity_response
rescue_from Api::V1::UnauthorizedError, with: :render_unauthorized_response
rescue_from ActionController::ParameterMissing, with: :render_unprocessable_entity_response

View file

@ -16,6 +16,10 @@ module Api
# Set up conflict_position in case it is used
conflict_position = nil
if [9, 10, 11].include?(weapon_params[:position].to_i) && ![11, 16, 17, 28, 29].include?(incoming_weapon.series)
raise Api::V1::IncompatibleWeaponForPositionError.new(weapon: incoming_weapon)
end
# 1. If the weapon has a limit
# 2. If the weapon does not match a weapon already in grid
# 3. If the incoming weapon has a limit and other weapons of the same series are in grid

View file

@ -0,0 +1,27 @@
# frozen_string_literal: true
module Api
module V1
class IncompatibleWeaponForPositionError < GranblueError
def http_status
422
end
def code
'incompatible_weapon_for_position'
end
def message
'A weapon of this series cannot be added to Additional Weapons'
end
def to_hash
{
message: message,
code: code,
weapon: @data[:weapon]
}
end
end
end
end