one final recommendation (this is a new one of mine) --- if you have an attr_reader for ammunition_reserves, it works well to only refer to it by the ammunition_reserves method.

```ruby
  if amount <= ammunition_reserves
```

Why? Because later you can move ammunition_reserves from an instance variable to another object... And you could

```ruby
def ammunition_reserves
  Reserves.calculate_ammunition(self)
end
```

and the `request_ammunition` method wouldn't know the difference.