def METHOD_NAME(self, state: CollectionState) -> bool:
    world: MessengerWorld = state.multiworld.worlds[self.player]
    cost = self.cost
    METHOD_NAME = state.has("Shards", self.player, min(cost, world.total_shards))
    if "Figurine" in self.name:
        METHOD_NAME = state.has("Money Wrench", self.player) and METHOD_NAME\
            and state.can_reach("Money Wrench", "Location", self.player)
    return METHOD_NAME