In the games, Dragonite had plenty of weaknesses, starting with its uneven stat distribution.
Dragonite's unbalanced base stats and slow Speed were already common knowledge. As a pseudo-legendary, its base stat total of 600 should have made it formidable, yet it was "malnourished." Its two defensive stats were 95 and 100, and its Hidden Ability was Multiscale, which halved the damage it took from attacks while it was at full HP. That gave it dependable bulk, but bulk was all it offered.
Its offensive stats were awkward. It had 134 Attack, but also 100 Special Attack, which was neither high enough nor low enough. Meanwhile, its Speed was 80, another awkward middle ground, leaving it unsuited to Trick Room teams or a role as a Tailwind setter. Those two middling stats thoroughly undermined it.
Next came Dragonite's moves. Moves determined a Pokémon's ceiling, and Dragonite's movepool likewise sealed its decline. Despite all the generations it had been through, most of its new moves were attacks, and overly ordinary attacks at that. Blizzard, Draco Meteor, Earthquake, Dragon Pulse, Thunder, and so on offered no effective control.
Dragonite clearly had enough bulk to run an attrition set with Dragon Tail and Stealth Rock, supplemented by weather. But that would require Dragonite to have a weather-setting Ability, and Dragonite could not learn Stealth Rock either.
Besides that, Dragonite's moves meshed so poorly with weather that it never quite fit anywhere. Some people had tried Dragon Dance Dragonite, but the results were not particularly impressive; it was slow and took too long to get going. If I had to say how to use Dragonite, I could only draw on the experience of earlier players and their many experiments: Dragonite fit rain teams best. Even then, plenty of thought had to go into its held